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..38c4d31d2eb76affa6120636110eb6666beaf91e 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& url) const { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
+ BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
+ NewRunnableMethod(this, |
+ &ExtensionIOEventRouter::DispatchEventToRenderersOnUIThread, |
+ event_name, event_args, 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& 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_, url); |
+} |