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

Unified Diff: extensions/browser/extension_message_filter.cc

Issue 2943583002: [extension SW] Support lazy events from extension service workers. (Closed)
Patch Set: sync @tott Created 3 years, 6 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/browser/lazy_background_task_queue.h » ('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 91c46acfb7aa70672acb0827f6a278859e09706a..42ccc9250a81efa04287abafe9521613a587f99a 100644
--- a/extensions/browser/extension_message_filter.cc
+++ b/extensions/browser/extension_message_filter.cc
@@ -90,6 +90,8 @@ void ExtensionMessageFilter::OverrideThreadForMessage(
case ExtensionHostMsg_RemoveListener::ID:
case ExtensionHostMsg_AddLazyListener::ID:
case ExtensionHostMsg_RemoveLazyListener::ID:
+ case ExtensionHostMsg_AddLazyServiceWorkerListener::ID:
+ case ExtensionHostMsg_RemoveLazyServiceWorkerListener::ID:
case ExtensionHostMsg_AddFilteredListener::ID:
case ExtensionHostMsg_RemoveFilteredListener::ID:
case ExtensionHostMsg_ShouldSuspendAck::ID:
@@ -122,6 +124,10 @@ bool ExtensionMessageFilter::OnMessageReceived(const IPC::Message& message) {
OnExtensionAddLazyListener)
IPC_MESSAGE_HANDLER(ExtensionHostMsg_RemoveLazyListener,
OnExtensionRemoveLazyListener)
+ IPC_MESSAGE_HANDLER(ExtensionHostMsg_AddLazyServiceWorkerListener,
+ OnExtensionAddLazyServiceWorkerListener);
+ IPC_MESSAGE_HANDLER(ExtensionHostMsg_RemoveLazyServiceWorkerListener,
+ OnExtensionRemoveLazyServiceWorkerListener);
IPC_MESSAGE_HANDLER(ExtensionHostMsg_AddFilteredListener,
OnExtensionAddFilteredListener)
IPC_MESSAGE_HANDLER(ExtensionHostMsg_RemoveFilteredListener,
@@ -141,7 +147,7 @@ bool ExtensionMessageFilter::OnMessageReceived(const IPC::Message& message) {
void ExtensionMessageFilter::OnExtensionAddListener(
const std::string& extension_id,
- const GURL& listener_url,
+ const GURL& listener_or_worker_scope_url,
const std::string& event_name,
int worker_thread_id) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -154,14 +160,19 @@ void ExtensionMessageFilter::OnExtensionAddListener(
EventRouter* event_router = GetEventRouter();
if (crx_file::id_util::IdIsValid(extension_id)) {
- if (worker_thread_id != kNonWorkerThreadId) {
+ const bool is_service_worker_context =
+ worker_thread_id != kNonWorkerThreadId;
+ if (is_service_worker_context) {
+ DCHECK(listener_or_worker_scope_url.is_valid());
event_router->AddServiceWorkerEventListener(
- event_name, process, extension_id, worker_thread_id);
+ event_name, process, extension_id, listener_or_worker_scope_url,
+ worker_thread_id);
} else {
event_router->AddEventListener(event_name, process, extension_id);
}
- } else if (listener_url.is_valid()) {
- event_router->AddEventListenerForURL(event_name, process, listener_url);
+ } else if (listener_or_worker_scope_url.is_valid()) {
+ event_router->AddEventListenerForURL(event_name, process,
+ listener_or_worker_scope_url);
} else {
NOTREACHED() << "Tried to add an event listener without a valid "
<< "extension ID nor listener URL";
@@ -170,7 +181,7 @@ void ExtensionMessageFilter::OnExtensionAddListener(
void ExtensionMessageFilter::OnExtensionRemoveListener(
const std::string& extension_id,
- const GURL& listener_url,
+ const GURL& listener_or_worker_scope_url,
const std::string& event_name,
int worker_thread_id) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -182,15 +193,19 @@ void ExtensionMessageFilter::OnExtensionRemoveListener(
return;
if (crx_file::id_util::IdIsValid(extension_id)) {
- if (worker_thread_id != kNonWorkerThreadId) {
+ const bool is_service_worker_context =
+ worker_thread_id != kNonWorkerThreadId;
+ if (is_service_worker_context) {
+ DCHECK(listener_or_worker_scope_url.is_valid());
GetEventRouter()->RemoveServiceWorkerEventListener(
- event_name, process, extension_id, worker_thread_id);
+ event_name, process, extension_id, listener_or_worker_scope_url,
+ worker_thread_id);
} else {
GetEventRouter()->RemoveEventListener(event_name, process, extension_id);
}
- } else if (listener_url.is_valid()) {
+ } else if (listener_or_worker_scope_url.is_valid()) {
GetEventRouter()->RemoveEventListenerForURL(event_name, process,
- listener_url);
+ listener_or_worker_scope_url);
} else {
NOTREACHED() << "Tried to remove an event listener without a valid "
<< "extension ID nor listener URL";
@@ -198,35 +213,46 @@ void ExtensionMessageFilter::OnExtensionRemoveListener(
}
void ExtensionMessageFilter::OnExtensionAddLazyListener(
+ const std::string& extension_id,
+ const std::string& event_name) {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+ if (!browser_context_)
+ return;
+ GetEventRouter()->AddLazyEventListener(event_name, extension_id);
+}
+
+void ExtensionMessageFilter::OnExtensionAddLazyServiceWorkerListener(
const std::string& extension_id,
const std::string& event_name,
- int worker_thread_id) {
+ const GURL& service_worker_scope) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
if (!browser_context_)
return;
- if (worker_thread_id == kNonWorkerThreadId) {
- GetEventRouter()->AddLazyEventListener(event_name, extension_id);
- } else {
- GetEventRouter()->AddLazyServiceWorkerEventListener(
- event_name, extension_id, worker_thread_id);
- }
+ GetEventRouter()->AddLazyServiceWorkerEventListener(event_name, extension_id,
+ service_worker_scope);
}
void ExtensionMessageFilter::OnExtensionRemoveLazyListener(
+ const std::string& extension_id,
+ const std::string& event_name) {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+ if (!browser_context_)
+ return;
+
+ GetEventRouter()->RemoveLazyEventListener(event_name, extension_id);
+}
+
+void ExtensionMessageFilter::OnExtensionRemoveLazyServiceWorkerListener(
const std::string& extension_id,
const std::string& event_name,
- int worker_thread_id) {
+ const GURL& worker_scope_url) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
if (!browser_context_)
return;
- if (worker_thread_id == kNonWorkerThreadId) {
- GetEventRouter()->RemoveLazyEventListener(event_name, extension_id);
- } else {
- GetEventRouter()->RemoveLazyServiceWorkerEventListener(
- event_name, extension_id, worker_thread_id);
- }
+ GetEventRouter()->RemoveLazyServiceWorkerEventListener(
+ event_name, extension_id, worker_scope_url);
}
void ExtensionMessageFilter::OnExtensionAddFilteredListener(
« no previous file with comments | « extensions/browser/extension_message_filter.h ('k') | extensions/browser/lazy_background_task_queue.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698