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

Unified Diff: extensions/browser/extension_message_filter.cc

Issue 2886923002: [extension SW]: Support event listener registration and event dispatching. (Closed)
Patch Set: fix DCHECK Created 3 years, 7 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
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..91c46acfb7aa70672acb0827f6a278859e09706a 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;
@@ -151,10 +152,16 @@ void ExtensionMessageFilter::OnExtensionAddListener(
if (!process)
return;
+ EventRouter* event_router = GetEventRouter();
if (crx_file::id_util::IdIsValid(extension_id)) {
- GetEventRouter()->AddEventListener(event_name, process, extension_id);
+ if (worker_thread_id != kNonWorkerThreadId) {
+ event_router->AddServiceWorkerEventListener(
+ event_name, process, extension_id, worker_thread_id);
+ } else {
+ event_router->AddEventListener(event_name, process, extension_id);
+ }
} else if (listener_url.is_valid()) {
- GetEventRouter()->AddEventListenerForURL(event_name, process, listener_url);
+ event_router->AddEventListenerForURL(event_name, process, listener_url);
} else {
NOTREACHED() << "Tried to add an event listener without a valid "
<< "extension ID nor listener URL";
@@ -164,7 +171,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 +182,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 +198,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(

Powered by Google App Engine
This is Rietveld 408576698