Index: chrome/browser/extensions/extension_io_event_router.cc |
diff --git a/chrome/browser/extensions/extension_io_event_router.cc b/chrome/browser/extensions/extension_io_event_router.cc |
index 5beb4b8ffc59cec47dd3613d769a66f1e81bffea..2c9f234f6d029a0d36dfbe7cd454858b18dc40df 100644 |
--- a/chrome/browser/extensions/extension_io_event_router.cc |
+++ b/chrome/browser/extensions/extension_io_event_router.cc |
@@ -27,6 +27,17 @@ void ExtensionIOEventRouter::DispatchEventToExtension( |
extension_id, event_name, event_args)); |
} |
+void ExtensionIOEventRouter::DispatchEventToRenderers( |
+ const std::string& event_name, |
+ const std::string& event_args, |
+ const GURL& event_url) const { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
+ BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
+ NewRunnableMethod(this, |
+ &ExtensionIOEventRouter::DispatchEventToRenderersOnUIThread, |
+ event_name, event_args, event_url)); |
+} |
+ |
void ExtensionIOEventRouter::DispatchEventOnUIThread( |
const std::string& extension_id, |
const std::string& event_name, |
@@ -41,3 +52,18 @@ void ExtensionIOEventRouter::DispatchEventOnUIThread( |
profile_->GetExtensionEventRouter()->DispatchEventToExtension( |
extension_id, event_name, event_args, profile_, GURL()); |
} |
+ |
+void ExtensionIOEventRouter::DispatchEventToRenderersOnUIThread( |
+ const std::string& event_name, |
+ const std::string& event_args, |
+ const GURL& event_url) const { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ |
+ // If the profile has gone away, we're shutting down. If there's no event |
+ // router, the extension system hasn't been initialized. |
+ if (!profile_ || !profile_->GetExtensionEventRouter()) |
+ return; |
+ |
+ profile_->GetExtensionEventRouter()->DispatchEventToRenderers( |
+ event_name, event_args, profile_, event_url); |
+} |