diff options
author | mpcomplete@google.com <mpcomplete@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-23 18:37:08 +0000 |
---|---|---|
committer | mpcomplete@google.com <mpcomplete@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-23 18:37:08 +0000 |
commit | 1706d76540b092bda26d7101709cf3906e22de91 (patch) | |
tree | 59bda7db915e049b7a5f77e63a355e8f4b0ff52e /chrome/browser/renderer_host | |
parent | dd07d60bc0f068a4749c91b481ccc948e1b00483 (diff) | |
download | chromium_src-1706d76540b092bda26d7101709cf3906e22de91.zip chromium_src-1706d76540b092bda26d7101709cf3906e22de91.tar.gz chromium_src-1706d76540b092bda26d7101709cf3906e22de91.tar.bz2 |
Arrange so ExtensionMessageService::RendererReady is called on the IO thread.
This fixes a bug where it wouldn't notice when a renderer died because it was
observing the notification on the wrong thread. This also simplifies some
logic in ExtensionMessageService.
Review URL: http://codereview.chromium.org/88002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14336 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/renderer_host')
-rw-r--r-- | chrome/browser/renderer_host/resource_message_filter.cc | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/chrome/browser/renderer_host/resource_message_filter.cc b/chrome/browser/renderer_host/resource_message_filter.cc index 71ae0d8..b528819 100644 --- a/chrome/browser/renderer_host/resource_message_filter.cc +++ b/chrome/browser/renderer_host/resource_message_filter.cc @@ -161,8 +161,6 @@ void ResourceMessageFilter::Init(int render_process_id) { render_process_id_ = render_process_id; render_widget_helper_->Init(render_process_id, resource_dispatcher_host_); app_cache_dispatcher_host_->Initialize(this); - ExtensionMessageService::GetInstance(request_context_.get())-> - RendererReady(this); } // Called on the IPC thread: @@ -184,9 +182,21 @@ void ResourceMessageFilter::OnChannelConnected(int32 peer_pid) { NOTREACHED(); } set_handle(peer_handle); + + // Set the process ID if Init hasn't been called yet. This doesn't work in + // single-process mode since peer_pid won't be the special fake PID we use + // for RenderProcessHost in that mode, so we just have to hope that Init + // is called first in that case. + if (render_process_id_ == -1) + render_process_id_ = peer_pid; + // Hook AudioRendererHost to this object after channel is connected so it can // this object for sending messages. audio_renderer_host_->IPCChannelConnected(render_process_id_, handle(), this); + + // Ditto for the ExtensionMessageService. + ExtensionMessageService::GetInstance(request_context_.get())-> + RendererReady(this); } // Called on the IPC thread: |