summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host
diff options
context:
space:
mode:
authorabarth@chromium.org <abarth@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-28 07:13:19 +0000
committerabarth@chromium.org <abarth@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-28 07:13:19 +0000
commite53db4462779be3af76c63404314afe7a1464657 (patch)
tree9c90fa8655cf542bdc35a4819fea2327804a84ef /chrome/browser/renderer_host
parent06294933c1ae46a2c6aa22bb0b6eac48582330f6 (diff)
downloadchromium_src-e53db4462779be3af76c63404314afe7a1464657.zip
chromium_src-e53db4462779be3af76c63404314afe7a1464657.tar.gz
chromium_src-e53db4462779be3af76c63404314afe7a1464657.tar.bz2
Add the ability to specify a default MIME type when loading a resource. We'll need this to correctly load stylesheets that lack a Content-Type header in standards mode.
We're waiting on https://bugs.webkit.org/show_bug.cgi?id=24904 upstream before this works fully. This change, as it stands, is a no-op. R=wtc BUG=7448 Review URL: http://codereview.chromium.org/55049 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@12739 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/renderer_host')
-rw-r--r--chrome/browser/renderer_host/buffered_resource_handler.cc8
-rw-r--r--chrome/browser/renderer_host/resource_dispatcher_host.cc3
-rw-r--r--chrome/browser/renderer_host/resource_dispatcher_host.h7
3 files changed, 18 insertions, 0 deletions
diff --git a/chrome/browser/renderer_host/buffered_resource_handler.cc b/chrome/browser/renderer_host/buffered_resource_handler.cc
index e8a86ee..3418666 100644
--- a/chrome/browser/renderer_host/buffered_resource_handler.cc
+++ b/chrome/browser/renderer_host/buffered_resource_handler.cc
@@ -180,6 +180,11 @@ bool BufferedResourceHandler::ShouldBuffer(const GURL& url,
bool BufferedResourceHandler::KeepBuffering(int bytes_read) {
DCHECK(read_buffer_);
+
+ ResourceDispatcherHost::ExtraRequestInfo* info =
+ ResourceDispatcherHost::ExtraInfoForRequest(request_);
+ DCHECK(info);
+
if (my_buffer_) {
// We are using our own buffer to read, update the main buffer.
CHECK(bytes_read + bytes_read_ < read_buffer_size_);
@@ -193,6 +198,9 @@ bool BufferedResourceHandler::KeepBuffering(int bytes_read) {
std::string type_hint, new_type;
request_->GetMimeType(&type_hint);
+ if (type_hint.empty())
+ type_hint = info->default_mime_type;
+
if (!net::SniffMimeType(read_buffer_->data(), bytes_read_,
request_->url(), type_hint, &new_type)) {
// SniffMimeType() returns false if there is not enough data to determine
diff --git a/chrome/browser/renderer_host/resource_dispatcher_host.cc b/chrome/browser/renderer_host/resource_dispatcher_host.cc
index 998850d5..8293a3e 100644
--- a/chrome/browser/renderer_host/resource_dispatcher_host.cc
+++ b/chrome/browser/renderer_host/resource_dispatcher_host.cc
@@ -395,6 +395,7 @@ void ResourceDispatcherHost::BeginRequest(
request_id,
request_data.frame_origin,
request_data.main_frame_origin,
+ request_data.default_mime_type,
request_data.resource_type,
upload_size);
extra_info->allow_download =
@@ -531,6 +532,7 @@ void ResourceDispatcherHost::BeginDownload(const GURL& url,
request_id_,
"null", // frame_origin
"null", // main_frame_origin
+ "", // default_mime_type
ResourceType::SUB_RESOURCE,
0 /* upload_size */);
extra_info->allow_download = true;
@@ -585,6 +587,7 @@ void ResourceDispatcherHost::BeginSaveFile(const GURL& url,
request_id_,
"null", // frame_origin
"null", // main_frame_origin
+ "", // default_mime_type
ResourceType::SUB_RESOURCE,
0 /* upload_size */);
// Just saving some resources we need, disallow downloading.
diff --git a/chrome/browser/renderer_host/resource_dispatcher_host.h b/chrome/browser/renderer_host/resource_dispatcher_host.h
index 052c157..07c532c 100644
--- a/chrome/browser/renderer_host/resource_dispatcher_host.h
+++ b/chrome/browser/renderer_host/resource_dispatcher_host.h
@@ -79,6 +79,7 @@ class ResourceDispatcherHost : public URLRequest::Delegate {
int request_id,
std::string frame_origin,
std::string main_frame_origin,
+ std::string default_mime_type,
ResourceType::Type resource_type,
uint64 upload_size)
: resource_handler(handler),
@@ -93,6 +94,7 @@ class ResourceDispatcherHost : public URLRequest::Delegate {
pause_count(0),
frame_origin(frame_origin),
main_frame_origin(main_frame_origin),
+ default_mime_type(default_mime_type),
resource_type(resource_type),
filter_policy(FilterPolicy::DONT_FILTER),
last_load_state(net::LOAD_STATE_IDLE),
@@ -141,6 +143,11 @@ class ResourceDispatcherHost : public URLRequest::Delegate {
// this request.
std::string main_frame_origin;
+ // The MIME type to use if this request lacks a Content-Type response
+ // header. If |default_mime_type| is "", then use the default sniffing
+ // algorithm.
+ std::string default_mime_type;
+
ResourceType::Type resource_type;
// Whether the content for this request should be filtered (on the renderer