Chromium Code Reviews| Index: extensions/browser/extension_message_filter.cc |
| diff --git a/extensions/browser/extension_message_filter.cc b/extensions/browser/extension_message_filter.cc |
| index 6bdfac024e5f755f20880373371f1b489ddc93e1..e3b781117e1c7dfd1896b3e72a08437c59781fce 100644 |
| --- a/extensions/browser/extension_message_filter.cc |
| +++ b/extensions/browser/extension_message_filter.cc |
| @@ -142,7 +142,8 @@ bool ExtensionMessageFilter::OnMessageReceived(const IPC::Message& message) { |
| void ExtensionMessageFilter::OnExtensionAddListener( |
| const std::string& extension_id, |
| const GURL& listener_url, |
| - const std::string& event_name) { |
| + const std::string& event_name, |
| + int worker_thread_id) { |
| DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| if (!browser_context_) |
| return; |
| @@ -152,7 +153,12 @@ void ExtensionMessageFilter::OnExtensionAddListener( |
| return; |
| if (crx_file::id_util::IdIsValid(extension_id)) { |
| - GetEventRouter()->AddEventListener(event_name, process, extension_id); |
| + if (worker_thread_id != kNonWorkerThreadId) { |
| + GetEventRouter()->AddServiceWorkerEventListener( |
|
Devlin
2017/06/01 04:54:50
nit: maybe cache EventRouter, here and below. It'
lazyboy
2017/06/01 23:33:29
Done.
|
| + event_name, process, extension_id, worker_thread_id); |
| + } else { |
| + GetEventRouter()->AddEventListener(event_name, process, extension_id); |
| + } |
| } else if (listener_url.is_valid()) { |
| GetEventRouter()->AddEventListenerForURL(event_name, process, listener_url); |
| } else { |
| @@ -164,7 +170,8 @@ void ExtensionMessageFilter::OnExtensionAddListener( |
| void ExtensionMessageFilter::OnExtensionRemoveListener( |
| const std::string& extension_id, |
| const GURL& listener_url, |
| - const std::string& event_name) { |
| + const std::string& event_name, |
| + int worker_thread_id) { |
| DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| if (!browser_context_) |
| return; |
| @@ -174,7 +181,12 @@ void ExtensionMessageFilter::OnExtensionRemoveListener( |
| return; |
| if (crx_file::id_util::IdIsValid(extension_id)) { |
| - GetEventRouter()->RemoveEventListener(event_name, process, extension_id); |
| + if (worker_thread_id != kNonWorkerThreadId) { |
| + GetEventRouter()->RemoveServiceWorkerEventListener( |
| + event_name, process, extension_id, worker_thread_id); |
| + } else { |
| + GetEventRouter()->RemoveEventListener(event_name, process, extension_id); |
| + } |
| } else if (listener_url.is_valid()) { |
| GetEventRouter()->RemoveEventListenerForURL(event_name, process, |
| listener_url); |
| @@ -185,21 +197,35 @@ void ExtensionMessageFilter::OnExtensionRemoveListener( |
| } |
| void ExtensionMessageFilter::OnExtensionAddLazyListener( |
| - const std::string& extension_id, const std::string& event_name) { |
| + const std::string& extension_id, |
| + const std::string& event_name, |
| + int worker_thread_id) { |
| DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| if (!browser_context_) |
| return; |
| - GetEventRouter()->AddLazyEventListener(event_name, extension_id); |
| + if (worker_thread_id == kNonWorkerThreadId) { |
| + GetEventRouter()->AddLazyEventListener(event_name, extension_id); |
| + } else { |
| + GetEventRouter()->AddLazyServiceWorkerEventListener( |
| + event_name, extension_id, worker_thread_id); |
| + } |
| } |
| void ExtensionMessageFilter::OnExtensionRemoveLazyListener( |
| - const std::string& extension_id, const std::string& event_name) { |
| + const std::string& extension_id, |
| + const std::string& event_name, |
| + int worker_thread_id) { |
| DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| if (!browser_context_) |
| return; |
| - GetEventRouter()->RemoveLazyEventListener(event_name, extension_id); |
| + if (worker_thread_id == kNonWorkerThreadId) { |
| + GetEventRouter()->RemoveLazyEventListener(event_name, extension_id); |
| + } else { |
| + GetEventRouter()->RemoveLazyServiceWorkerEventListener( |
| + event_name, extension_id, worker_thread_id); |
| + } |
| } |
| void ExtensionMessageFilter::OnExtensionAddFilteredListener( |