diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-21 18:48:12 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-21 18:48:12 +0000 |
commit | ed425140a40a065214916fe306fb06841e1d2f85 (patch) | |
tree | 4144d5f8c7d0e88f355610fe7e2c62d5a7ec9580 /content/browser | |
parent | 453a17823de86dc75e39d0d24d271e953c9ffedb (diff) | |
download | chromium_src-ed425140a40a065214916fe306fb06841e1d2f85.zip chromium_src-ed425140a40a065214916fe306fb06841e1d2f85.tar.gz chromium_src-ed425140a40a065214916fe306fb06841e1d2f85.tar.bz2 |
Fix a regression in sending the content settings data from r85247. The content settings needs to be sent on the IO thread, doing it on the UI thread introduces a race condition.
Review URL: http://codereview.chromium.org/7163008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89868 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser')
6 files changed, 27 insertions, 17 deletions
diff --git a/content/browser/renderer_host/async_resource_handler.cc b/content/browser/renderer_host/async_resource_handler.cc index 21986e8..aaaedf0 100644 --- a/content/browser/renderer_host/async_resource_handler.cc +++ b/content/browser/renderer_host/async_resource_handler.cc @@ -17,6 +17,7 @@ #include "content/browser/renderer_host/resource_dispatcher_host_delegate.h" #include "content/browser/renderer_host/resource_dispatcher_host_request_info.h" #include "content/browser/renderer_host/resource_message_filter.h" +#include "content/browser/resource_context.h" #include "content/common/resource_response.h" #include "content/common/resource_messages.h" #include "content/common/view_messages.h" @@ -79,11 +80,9 @@ AsyncResourceHandler::AsyncResourceHandler( ResourceMessageFilter* filter, int routing_id, const GURL& url, - HostZoomMap* host_zoom_map, ResourceDispatcherHost* resource_dispatcher_host) : filter_(filter), routing_id_(routing_id), - host_zoom_map_(host_zoom_map), rdh_(resource_dispatcher_host), next_buffer_size_(kInitialReadBufSize) { } @@ -106,7 +105,7 @@ bool AsyncResourceHandler::OnRequestRedirected(int request_id, net::URLRequest* request = rdh_->GetURLRequest( GlobalRequestID(filter_->child_id(), request_id)); if (rdh_->delegate()) - rdh_->delegate()->OnRequestRedirected(request, response); + rdh_->delegate()->OnRequestRedirected(request, response, filter_); DevToolsNetLogObserver::PopulateResponseInfo(request, response); return filter_->Send(new ResourceMsg_ReceivedRedirect( @@ -124,16 +123,20 @@ bool AsyncResourceHandler::OnResponseStarted(int request_id, GlobalRequestID(filter_->child_id(), request_id)); if (rdh_->delegate()) - rdh_->delegate()->OnResponseStarted(request, response); + rdh_->delegate()->OnResponseStarted(request, response, filter_); DevToolsNetLogObserver::PopulateResponseInfo(request, response); + const content::ResourceContext& resource_context = + filter_->resource_context(); + HostZoomMap* host_zoom_map = resource_context.host_zoom_map(); + ResourceDispatcherHostRequestInfo* info = rdh_->InfoForRequest(request); - if (info->resource_type() == ResourceType::MAIN_FRAME && host_zoom_map_) { + if (info->resource_type() == ResourceType::MAIN_FRAME && host_zoom_map) { GURL request_url(request->url()); filter_->Send(new ViewMsg_SetZoomLevelForLoadingURL( info->route_id(), - request_url, host_zoom_map_->GetZoomLevel(net::GetHostOrSpecFromURL( + request_url, host_zoom_map->GetZoomLevel(net::GetHostOrSpecFromURL( request_url)))); } diff --git a/content/browser/renderer_host/async_resource_handler.h b/content/browser/renderer_host/async_resource_handler.h index ea33a19..bfef818 100644 --- a/content/browser/renderer_host/async_resource_handler.h +++ b/content/browser/renderer_host/async_resource_handler.h @@ -22,7 +22,6 @@ class AsyncResourceHandler : public ResourceHandler { AsyncResourceHandler(ResourceMessageFilter* filter, int routing_id, const GURL& url, - HostZoomMap* host_zoom_map, ResourceDispatcherHost* resource_dispatcher_host); // ResourceHandler implementation: diff --git a/content/browser/renderer_host/resource_dispatcher_host.cc b/content/browser/renderer_host/resource_dispatcher_host.cc index 6c19527..2fcdca3 100644 --- a/content/browser/renderer_host/resource_dispatcher_host.cc +++ b/content/browser/renderer_host/resource_dispatcher_host.cc @@ -408,8 +408,7 @@ void ResourceDispatcherHost::BeginRequest( filter_, request_data.url, sync_result, this); } else { handler = new AsyncResourceHandler( - filter_, route_id, request_data.url, resource_context.host_zoom_map(), - this); + filter_, route_id, request_data.url, this); } // The RedirectToFileResourceHandler depends on being next in the chain. diff --git a/content/browser/renderer_host/resource_dispatcher_host_delegate.cc b/content/browser/renderer_host/resource_dispatcher_host_delegate.cc index 849b6a4..784dd42 100644 --- a/content/browser/renderer_host/resource_dispatcher_host_delegate.cc +++ b/content/browser/renderer_host/resource_dispatcher_host_delegate.cc @@ -68,9 +68,13 @@ bool ResourceDispatcherHostDelegate::ShouldForceDownloadResource( } void ResourceDispatcherHostDelegate::OnResponseStarted( - net::URLRequest* request, ResourceResponse* response) { + net::URLRequest* request, + ResourceResponse* response, + ResourceMessageFilter* filter) { } void ResourceDispatcherHostDelegate::OnRequestRedirected( - net::URLRequest* request, ResourceResponse* response) { + net::URLRequest* request, + ResourceResponse* response, + ResourceMessageFilter* filter) { } diff --git a/content/browser/renderer_host/resource_dispatcher_host_delegate.h b/content/browser/renderer_host/resource_dispatcher_host_delegate.h index bd25993..694d36c 100644 --- a/content/browser/renderer_host/resource_dispatcher_host_delegate.h +++ b/content/browser/renderer_host/resource_dispatcher_host_delegate.h @@ -13,6 +13,7 @@ class GURL; class ResourceDispatcherHostLoginDelegate; class ResourceHandler; +class ResourceMessageFilter; struct ResourceHostMsg_Request; struct ResourceResponse; @@ -90,12 +91,16 @@ class ResourceDispatcherHostDelegate { const GURL& url, const std::string& mime_type); // Informs the delegate that a response has started. - virtual void OnResponseStarted(net::URLRequest* request, - ResourceResponse* response); + virtual void OnResponseStarted( + net::URLRequest* request, + ResourceResponse* response, + ResourceMessageFilter* filter); // Informs the delegate that a request has been redirected. - virtual void OnRequestRedirected(net::URLRequest* request, - ResourceResponse* response); + virtual void OnRequestRedirected( + net::URLRequest* request, + ResourceResponse* response, + ResourceMessageFilter* filter); protected: ResourceDispatcherHostDelegate(); diff --git a/content/browser/renderer_host/sync_resource_handler.cc b/content/browser/renderer_host/sync_resource_handler.cc index 6599e22..d0dd937 100644 --- a/content/browser/renderer_host/sync_resource_handler.cc +++ b/content/browser/renderer_host/sync_resource_handler.cc @@ -42,7 +42,7 @@ bool SyncResourceHandler::OnRequestRedirected(int request_id, net::URLRequest* request = rdh_->GetURLRequest( GlobalRequestID(filter_->child_id(), request_id)); if (rdh_->delegate()) - rdh_->delegate()->OnRequestRedirected(request, response); + rdh_->delegate()->OnRequestRedirected(request, response, filter_); DevToolsNetLogObserver::PopulateResponseInfo(request, response); // TODO(darin): It would be much better if this could live in WebCore, but @@ -61,7 +61,7 @@ bool SyncResourceHandler::OnResponseStarted(int request_id, net::URLRequest* request = rdh_->GetURLRequest( GlobalRequestID(filter_->child_id(), request_id)); if (rdh_->delegate()) - rdh_->delegate()->OnResponseStarted(request, response); + rdh_->delegate()->OnResponseStarted(request, response, filter_); DevToolsNetLogObserver::PopulateResponseInfo(request, response); |