summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-13 21:05:37 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-13 21:05:37 +0000
commit56879f932544d7752b9a9b5f8e0f3be24d3dcda3 (patch)
tree06c6a8d4a03a6b1e882fa50195d7c6fdacd97688 /chrome/browser/renderer_host
parent947e3bef0848003abd87afb93a90f4f6637549d3 (diff)
downloadchromium_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')
-rw-r--r--chrome/browser/renderer_host/browser_render_process_host.cc2
-rw-r--r--chrome/browser/renderer_host/resource_message_filter.cc17
-rw-r--r--chrome/browser/renderer_host/resource_message_filter.h7
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);
};