| Index: extensions/browser/extension_message_filter.cc
|
| diff --git a/extensions/browser/extension_message_filter.cc b/extensions/browser/extension_message_filter.cc
|
| index f7e794bf7e5a94a2c086cdddd359ec3fc9dc85d6..e29748ed53c00d62146dd689453789d36ec1682a 100644
|
| --- a/extensions/browser/extension_message_filter.cc
|
| +++ b/extensions/browser/extension_message_filter.cc
|
| @@ -95,6 +95,7 @@ bool ExtensionMessageFilter::OnMessageReceived(const IPC::Message& message) {
|
|
|
| void ExtensionMessageFilter::OnExtensionAddListener(
|
| const std::string& extension_id,
|
| + const GURL& listener_url,
|
| const std::string& event_name) {
|
| RenderProcessHost* process = RenderProcessHost::FromID(render_process_id_);
|
| if (!process)
|
| @@ -102,11 +103,16 @@ void ExtensionMessageFilter::OnExtensionAddListener(
|
| EventRouter* router = EventRouter::Get(browser_context_);
|
| if (!router)
|
| return;
|
| - router->AddEventListener(event_name, process, extension_id);
|
| + // A valid |extension_id| is mutually exclusive to a valid |listener_url|.
|
| + if (!extension_id.empty() && !listener_url.is_valid())
|
| + router->AddEventListener(event_name, process, extension_id);
|
| + if (extension_id.empty() && listener_url.is_valid())
|
| + router->AddEventListenerForURL(event_name, process, listener_url);
|
| }
|
|
|
| void ExtensionMessageFilter::OnExtensionRemoveListener(
|
| const std::string& extension_id,
|
| + const GURL& listener_url,
|
| const std::string& event_name) {
|
| RenderProcessHost* process = RenderProcessHost::FromID(render_process_id_);
|
| if (!process)
|
| @@ -114,7 +120,11 @@ void ExtensionMessageFilter::OnExtensionRemoveListener(
|
| EventRouter* router = EventRouter::Get(browser_context_);
|
| if (!router)
|
| return;
|
| - router->RemoveEventListener(event_name, process, extension_id);
|
| + // A valid |extension_id| is mutually exclusive to a valid |listener_url|.
|
| + if (!extension_id.empty() && !listener_url.is_valid())
|
| + router->RemoveEventListener(event_name, process, extension_id);
|
| + if (extension_id.empty() && listener_url.is_valid())
|
| + router->RemoveEventListenerForURL(event_name, process, listener_url);
|
| }
|
|
|
| void ExtensionMessageFilter::OnExtensionAddLazyListener(
|
|
|