summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-23 17:51:19 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-23 17:51:19 +0000
commit43f663c3cec6e516bd8ea085971c24debd34e1ef (patch)
tree0d5c28d0c0b8d81d3c143111eed28ee12e4052ad
parentda5683db1bbf401694c72f7d4216f38249ac2c13 (diff)
downloadchromium_src-43f663c3cec6e516bd8ea085971c24debd34e1ef.zip
chromium_src-43f663c3cec6e516bd8ea085971c24debd34e1ef.tar.gz
chromium_src-43f663c3cec6e516bd8ea085971c24debd34e1ef.tar.bz2
Fix race condition on browser_tests shutdown
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@82798 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/renderer_host/chrome_render_message_filter.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/chrome/browser/renderer_host/chrome_render_message_filter.cc b/chrome/browser/renderer_host/chrome_render_message_filter.cc
index 77aac3c..902570c 100644
--- a/chrome/browser/renderer_host/chrome_render_message_filter.cc
+++ b/chrome/browser/renderer_host/chrome_render_message_filter.cc
@@ -243,7 +243,7 @@ void ChromeRenderMessageFilter::OnExtensionAddListener(
const std::string& extension_id,
const std::string& event_name) {
RenderProcessHost* process = RenderProcessHost::FromID(render_process_id_);
- if (!profile_->GetExtensionEventRouter() || !process)
+ if (!process || !profile_->GetExtensionEventRouter())
return;
profile_->GetExtensionEventRouter()->AddEventListener(
@@ -254,7 +254,7 @@ void ChromeRenderMessageFilter::OnExtensionRemoveListener(
const std::string& extension_id,
const std::string& event_name) {
RenderProcessHost* process = RenderProcessHost::FromID(render_process_id_);
- if (!profile_->GetExtensionEventRouter() || !process)
+ if (!process || !profile_->GetExtensionEventRouter())
return;
profile_->GetExtensionEventRouter()->RemoveEventListener(
@@ -262,6 +262,9 @@ void ChromeRenderMessageFilter::OnExtensionRemoveListener(
}
void ChromeRenderMessageFilter::OnExtensionCloseChannel(int port_id) {
+ if (!RenderProcessHost::FromID(render_process_id_))
+ return; // To guard against crash in browser_tests shutdown.
+
if (profile_->GetExtensionMessageService())
profile_->GetExtensionMessageService()->CloseChannel(port_id);
}