| Summary: | XMLHttpRequest.overrideMimeType('text/html') is not an object. at91.com web can't be seen. | ||
|---|---|---|---|
| Product: | [Applications] konqueror | Reporter: | Raúl <rasasi78> |
| Component: | khtml ecma | Assignee: | Konqueror Bugs <konqueror-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | estevam, maksim |
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | unspecified | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
|
Description
Raúl
2007-02-27 12:41:05 UTC
Seems like we need to support this (Mozilla-specific) method... *** Bug 143489 has been marked as a duplicate of this bug. *** SVN commit 656602 by porten:
implemented overrideMimeType() extension
BUG: 142265
M +21 -3 xmlhttprequest.cpp
M +4 -1 xmlhttprequest.h
--- trunk/KDE/kdelibs/khtml/ecma/xmlhttprequest.cpp #656601:656602
@@ -58,6 +58,7 @@
getAllResponseHeaders XMLHttpRequest::GetAllResponseHeaders DontDelete|Function 0
getResponseHeader XMLHttpRequest::GetResponseHeader DontDelete|Function 1
open XMLHttpRequest::Open DontDelete|Function 5
+ overrideMimeType XMLHttpRequest::OverrideMIMEType DontDelete|Function 1
send XMLHttpRequest::Send DontDelete|Function 1
setRequestHeader XMLHttpRequest::SetRequestHeader DontDelete|Function 2
@end
@@ -146,9 +147,12 @@
if (!createdDocument) {
QString mimeType = "text/xml";
- ValueImp *header = getResponseHeader("Content-Type");
- if (header->type() != UndefinedType) {
- mimeType = header->toString(exec).qstring().split(";")[0].trimmed();
+ if (!m_mimeTypeOverride.isEmpty()) {
+ mimeType = m_mimeTypeOverride;
+ } else {
+ ValueImp *header = getResponseHeader("Content-Type");
+ if (header->type() != UndefinedType)
+ mimeType = header->toString(exec).qstring().split(";")[0].trimmed();
}
if (mimeType == "text/xml" || mimeType == "application/xml" || mimeType == "application/xhtml+xml") {
@@ -464,6 +468,11 @@
changeState(XHRS_Uninitialized);
}
+void XMLHttpRequest::overrideMIMEType(const QString& override)
+{
+ m_mimeTypeOverride = override;
+}
+
void XMLHttpRequest::setRequestHeader(const QString& _name, const QString& _value, int& ec)
{
if (m_state != XHRS_Open) {
@@ -792,6 +801,7 @@
return jsUndefined();
}
case XMLHttpRequest::SetRequestHeader:
+ {
if (args.size() < 2)
return throwError(exec, SyntaxError, "Not enough arguments");
JSValue* keyArgument = args[0];
@@ -804,6 +814,14 @@
request->setRequestHeader(key, val, ec);
setDOMException(exec, ec);
return jsUndefined();
+ }
+
+ case XMLHttpRequest::OverrideMIMEType:
+ if (args.size() < 1)
+ return throwError(exec, SyntaxError, "Not enough arguments");
+
+ request->overrideMIMEType(args[0]->toString(exec).qstring());
+ return jsUndefined();
}
return Undefined();
--- trunk/KDE/kdelibs/khtml/ecma/xmlhttprequest.h #656601:656602
@@ -90,7 +90,8 @@
virtual const ClassInfo* classInfo() const { return &info; }
static const ClassInfo info;
enum { Onload, Onreadystatechange, ReadyState, ResponseText, ResponseXML, Status, StatusText, Abort,
- GetAllResponseHeaders, GetResponseHeader, Open, Send, SetRequestHeader };
+ GetAllResponseHeaders, GetResponseHeader, Open, Send, SetRequestHeader,
+ OverrideMIMEType };
private:
friend class XMLHttpRequestProtoFunc;
@@ -116,6 +117,7 @@
void send(const QString& _body, int& ec);
void abort();
void setRequestHeader(const QString& name, const QString& value, int& ec);
+ void overrideMIMEType(const QString& override);
ValueImp *getAllResponseHeaders() const;
ValueImp *getResponseHeader(const QString& name) const;
@@ -127,6 +129,7 @@
QString method;
bool async;
HTTPHeaderMap m_requestHeaders;
+ QString m_mimeTypeOverride;
QString contentType;
KIO::TransferJob * job;
Thanks a lot for solving this bug. I don't know if this is a very common method, but having such a quick response is nice to know, and most important makes konqueror and even better piece of software. |