diff options
author | abarth@chromium.org <abarth@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-28 07:13:19 +0000 |
---|---|---|
committer | abarth@chromium.org <abarth@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-28 07:13:19 +0000 |
commit | e53db4462779be3af76c63404314afe7a1464657 (patch) | |
tree | 9c90fa8655cf542bdc35a4819fea2327804a84ef /chrome/browser/renderer_host | |
parent | 06294933c1ae46a2c6aa22bb0b6eac48582330f6 (diff) | |
download | chromium_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')
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 |