diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-13 21:05:37 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-13 21:05:37 +0000 |
commit | 56879f932544d7752b9a9b5f8e0f3be24d3dcda3 (patch) | |
tree | 06c6a8d4a03a6b1e882fa50195d7c6fdacd97688 /chrome/browser/renderer_host | |
parent | 947e3bef0848003abd87afb93a90f4f6637549d3 (diff) | |
download | chromium_src-56879f932544d7752b9a9b5f8e0f3be24d3dcda3.zip chromium_src-56879f932544d7752b9a9b5f8e0f3be24d3dcda3.tar.gz chromium_src-56879f932544d7752b9a9b5f8e0f3be24d3dcda3.tar.bz2 |
Make DOMStorageDispatcherHost be a message filter (and rename it accordingly). It now derives from BrowserMessageFilter and hence gets message dispatching to different threads for free.
Review URL: http://codereview.chromium.org/5722003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69049 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/renderer_host')
3 files changed, 10 insertions, 16 deletions
diff --git a/chrome/browser/renderer_host/browser_render_process_host.cc b/chrome/browser/renderer_host/browser_render_process_host.cc index aff7ee6..f38401e 100644 --- a/chrome/browser/renderer_host/browser_render_process_host.cc +++ b/chrome/browser/renderer_host/browser_render_process_host.cc @@ -39,6 +39,7 @@ #include "chrome/browser/file_system/file_system_dispatcher_host.h" #include "chrome/browser/gpu_process_host.h" #include "chrome/browser/history/history.h" +#include "chrome/browser/in_process_webkit/dom_storage_message_filter.h" #include "chrome/browser/io_thread.h" #include "chrome/browser/mime_registry_message_filter.h" #include "chrome/browser/platform_util.h" @@ -396,6 +397,7 @@ void BrowserRenderProcessHost::CreateMessageFilters() { channel_->AddFilter(new AudioRendererHost()); channel_->AddFilter( new AppCacheDispatcherHost(profile()->GetRequestContext(), id())); + channel_->AddFilter(new DOMStorageMessageFilter(id(), profile())); channel_->AddFilter(new PepperFileMessageFilter(id(), profile())); channel_->AddFilter(new speech_input::SpeechInputDispatcherHost(id())); channel_->AddFilter( diff --git a/chrome/browser/renderer_host/resource_message_filter.cc b/chrome/browser/renderer_host/resource_message_filter.cc index fe88078..ceda6a3 100644 --- a/chrome/browser/renderer_host/resource_message_filter.cc +++ b/chrome/browser/renderer_host/resource_message_filter.cc @@ -25,7 +25,6 @@ #include "chrome/browser/geolocation/geolocation_permission_context.h" #include "chrome/browser/gpu_process_host.h" #include "chrome/browser/host_zoom_map.h" -#include "chrome/browser/in_process_webkit/dom_storage_dispatcher_host.h" #include "chrome/browser/in_process_webkit/indexed_db_dispatcher_host.h" #include "chrome/browser/metrics/histogram_synchronizer.h" #include "chrome/browser/nacl_host/nacl_process_host.h" @@ -247,8 +246,6 @@ ResourceMessageFilter::ResourceMessageFilter( media_request_context_(profile->GetRequestContextForMedia()), extensions_request_context_(profile->GetRequestContextForExtensions()), render_widget_helper_(render_widget_helper), - ALLOW_THIS_IN_INITIALIZER_LIST(dom_storage_dispatcher_host_( - new DOMStorageDispatcherHost(this, profile->GetWebKitContext()))), ALLOW_THIS_IN_INITIALIZER_LIST(indexed_db_dispatcher_host_( new IndexedDBDispatcherHost(this, profile))), notification_prefs_( @@ -259,11 +256,11 @@ ResourceMessageFilter::ResourceMessageFilter( render_widget_helper, &RenderWidgetHelper::GetNextRoutingID)), ALLOW_THIS_IN_INITIALIZER_LIST(geolocation_dispatcher_host_( GeolocationDispatcherHostOld::New( - this->id(), profile->GetGeolocationPermissionContext()))) { + this->id(), profile->GetGeolocationPermissionContext()))), + webkit_context_(profile->GetWebKitContext()) { request_context_ = profile_->GetRequestContext(); DCHECK(request_context_); DCHECK(media_request_context_); - DCHECK(dom_storage_dispatcher_host_.get()); render_widget_helper_->Init(id(), resource_dispatcher_host_); #if defined(OS_CHROMEOS) @@ -278,9 +275,6 @@ ResourceMessageFilter::~ResourceMessageFilter() { // This function should be called on the IO thread. DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - // Tell the DOM Storage dispatcher host to stop sending messages via us. - dom_storage_dispatcher_host_->Shutdown(); - // Tell the Indexed DB dispatcher host to stop sending messages via us. indexed_db_dispatcher_host_->Shutdown(); @@ -311,7 +305,6 @@ void ResourceMessageFilter::OnChannelConnected(int32 peer_pid) { set_handle(peer_handle); WorkerService::GetInstance()->Initialize(resource_dispatcher_host_); - dom_storage_dispatcher_host_->Init(id(), handle()); indexed_db_dispatcher_host_->Init(id(), handle()); } @@ -337,7 +330,6 @@ bool ResourceMessageFilter::OnMessageReceived(const IPC::Message& msg) { bool msg_is_ok = true; bool handled = resource_dispatcher_host_->OnMessageReceived(msg, this, &msg_is_ok) || - dom_storage_dispatcher_host_->OnMessageReceived(msg, &msg_is_ok) || indexed_db_dispatcher_host_->OnMessageReceived(msg) || mp_dispatcher->OnMessageReceived( msg, this, next_route_id_callback(), &msg_is_ok) || @@ -564,8 +556,9 @@ URLRequestContext* ResourceMessageFilter::GetRequestContext( void ResourceMessageFilter::OnMsgCreateWindow( const ViewHostMsg_CreateWindow_Params& params, int* route_id, int64* cloned_session_storage_namespace_id) { - *cloned_session_storage_namespace_id = dom_storage_dispatcher_host_-> - CloneSessionStorage(params.session_storage_namespace_id); + *cloned_session_storage_namespace_id = + webkit_context_->dom_storage_context()->CloneSessionStorage( + params.session_storage_namespace_id); render_widget_helper_->CreateNewWindow(params.opener_id, params.user_gesture, params.window_container_type, diff --git a/chrome/browser/renderer_host/resource_message_filter.h b/chrome/browser/renderer_host/resource_message_filter.h index 5d30051..2b7a214 100644 --- a/chrome/browser/renderer_host/resource_message_filter.h +++ b/chrome/browser/renderer_host/resource_message_filter.h @@ -23,6 +23,7 @@ #include "base/string16.h" #include "base/task.h" #include "build/build_config.h" +#include "chrome/browser/in_process_webkit/webkit_context.h" #include "chrome/browser/net/resolve_proxy_msg_helper.h" #include "chrome/browser/renderer_host/resource_dispatcher_host.h" #include "chrome/common/content_settings.h" @@ -32,7 +33,6 @@ #include "third_party/WebKit/WebKit/chromium/public/WebPopupType.h" class ChromeURLRequestContext; -class DOMStorageDispatcherHost; struct FontDescriptor; class GeolocationDispatcherHostOld; class HostZoomMap; @@ -430,9 +430,6 @@ class ResourceMessageFilter : public IPC::ChannelProxy::MessageFilter, scoped_refptr<RenderWidgetHelper> render_widget_helper_; - // Handles DOM Storage related messages. - scoped_refptr<DOMStorageDispatcherHost> dom_storage_dispatcher_host_; - // Handles Indexed Database related messages. scoped_refptr<IndexedDBDispatcherHost> indexed_db_dispatcher_host_; @@ -459,6 +456,8 @@ class ResourceMessageFilter : public IPC::ChannelProxy::MessageFilter, // Used to handle geolocation-related messages. scoped_refptr<GeolocationDispatcherHostOld> geolocation_dispatcher_host_; + scoped_refptr<WebKitContext> webkit_context_; + DISALLOW_COPY_AND_ASSIGN(ResourceMessageFilter); }; |