summaryrefslogtreecommitdiffstats
path: root/WebKit
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2010-11-19 15:01:47 -0800
committerJohn Reck <jreck@google.com>2010-11-22 08:59:46 -0800
commit787e29b54f206839549283289018384538f050f0 (patch)
tree1ced13b49b0714d7aa28c269db3b23211c5e9f1b /WebKit
parent4ed81ac4810cd587cc2afc3b7f292c1281eca93a (diff)
downloadexternal_webkit-787e29b54f206839549283289018384538f050f0.zip
external_webkit-787e29b54f206839549283289018384538f050f0.tar.gz
external_webkit-787e29b54f206839549283289018384538f050f0.tar.bz2
Fixes the handling of unspecified mime-type
Bug: 3211038 and 3211569 If the server doesn't specify a Content-Type header in the response, there was no mime-type set when using the Chrome HTTP stack. This change fixes it so that it makes a guess based off of the URL extension. Change-Id: I33ef90c1db54bdccb4e143795656f4f9b56572ca
Diffstat (limited to 'WebKit')
-rw-r--r--WebKit/android/WebCoreSupport/WebResponse.cpp18
-rw-r--r--WebKit/android/WebCoreSupport/WebResponse.h2
2 files changed, 20 insertions, 0 deletions
diff --git a/WebKit/android/WebCoreSupport/WebResponse.cpp b/WebKit/android/WebCoreSupport/WebResponse.cpp
index 57e9460..8f68a6a 100644
--- a/WebKit/android/WebCoreSupport/WebResponse.cpp
+++ b/WebKit/android/WebCoreSupport/WebResponse.cpp
@@ -26,9 +26,13 @@
#include "config.h"
#include "WebResponse.h"
+#include "MIMETypeRegistry.h"
+#include "PlatformString.h"
#include "ResourceResponse.h"
#include "ResourceError.h"
+#include <wtf/text/CString.h>
+
using namespace std;
namespace android {
@@ -42,6 +46,8 @@ WebResponse::WebResponse(URLRequest* request)
m_url = request->url().spec();
m_host = request->url().HostNoBrackets();
request->GetMimeType(&m_mime);
+ setMimeType(m_mime);
+
request->GetCharset(&m_encoding);
m_expectedSize = request->GetExpectedContentSize();
@@ -67,6 +73,7 @@ WebResponse::WebResponse(const string &url, const string &mimeType, long long ex
, m_mime(mimeType)
, m_url(url)
{
+ setMimeType(mimeType);
}
WebCore::ResourceResponse WebResponse::createResourceResponse()
@@ -110,6 +117,17 @@ const string& WebResponse::getMimeType() const
return m_mime;
}
+void WebResponse::setMimeType(const std::string &mimeType)
+{
+ if (mimeType.length() == 0 && m_url.length() > 0) {
+ WTF::String wtfMime(m_url.c_str(), m_url.length());
+ wtfMime = WebCore::MIMETypeRegistry::getMIMETypeForPath(wtfMime);
+ m_mime = std::string(wtfMime.utf8().data(), wtfMime.length());
+ } else {
+ m_mime = mimeType;
+ }
+}
+
bool WebResponse::getHeader(const string& header, string* result) const
{
map<string, string>::const_iterator iter = m_headerFields.find(header);
diff --git a/WebKit/android/WebCoreSupport/WebResponse.h b/WebKit/android/WebCoreSupport/WebResponse.h
index 3c7c601..84a93ab 100644
--- a/WebKit/android/WebCoreSupport/WebResponse.h
+++ b/WebKit/android/WebCoreSupport/WebResponse.h
@@ -72,6 +72,8 @@ private:
std::string m_url;
std::map<std::string, std::string> m_headerFields;
+
+ void setMimeType(const std::string &mimeType);
};
} // namespace android