Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2198)

Unified Diff: extensions/browser/extension_message_filter.cc

Issue 411733002: WIP: diff which plumbs through the event URL. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « extensions/browser/extension_message_filter.h ('k') | extensions/common/api/_api_features.json » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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(
« no previous file with comments | « extensions/browser/extension_message_filter.h ('k') | extensions/common/api/_api_features.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698