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

Unified Diff: extensions/renderer/dispatcher.cc

Issue 2886923002: [extension SW]: Support event listener registration and event dispatching. (Closed)
Patch Set: address comments 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/renderer/dispatcher.cc
diff --git a/extensions/renderer/dispatcher.cc b/extensions/renderer/dispatcher.cc
index bfcf2d3d9346902046d36a6c6b45ba32c649ac9b..fcd5638419736e2821a1762c1a078e818e39ab88 100644
--- a/extensions/renderer/dispatcher.cc
+++ b/extensions/renderer/dispatcher.cc
@@ -217,6 +217,7 @@ void SendEventListenersIPC(binding::EventListenersChanged changed,
const base::DictionaryValue* filter,
bool was_manual) {
bool lazy = ExtensionFrameHelper::IsContextForEventPage(context);
+ const int worker_thread_id = content::WorkerThread::GetCurrentId();
std::string extension_id = context->GetExtensionID();
content::RenderThread* render_thread = content::RenderThread::Get();
@@ -232,18 +233,18 @@ void SendEventListenersIPC(binding::EventListenersChanged changed,
} else {
if (changed == binding::EventListenersChanged::HAS_LISTENERS) {
render_thread->Send(new ExtensionHostMsg_AddListener(
- extension_id, context->url(), event_name));
+ extension_id, context->url(), event_name, worker_thread_id));
if (lazy) {
- render_thread->Send(
- new ExtensionHostMsg_AddLazyListener(extension_id, event_name));
+ render_thread->Send(new ExtensionHostMsg_AddLazyListener(
+ extension_id, event_name, worker_thread_id));
}
} else {
DCHECK_EQ(binding::EventListenersChanged::NO_LISTENERS, changed);
render_thread->Send(new ExtensionHostMsg_RemoveListener(
- extension_id, context->url(), event_name));
+ extension_id, context->url(), event_name, worker_thread_id));
if (lazy && was_manual) {
- render_thread->Send(
- new ExtensionHostMsg_RemoveLazyListener(extension_id, event_name));
+ render_thread->Send(new ExtensionHostMsg_RemoveLazyListener(
+ extension_id, event_name, worker_thread_id));
}
}
}
@@ -470,7 +471,7 @@ void Dispatcher::DidInitializeServiceWorkerContextOnWorkerThread(
if (ExtensionsClient::Get()->ExtensionAPIEnabledInExtensionServiceWorkers()) {
WorkerThreadDispatcher::Get()->AddWorkerData(service_worker_version_id,
- &source_map_);
+ context, &source_map_);
// TODO(lazyboy): Make sure accessing |source_map_| in worker thread is
// safe.
@@ -889,6 +890,9 @@ void Dispatcher::RegisterNativeHandlers(
}
bool Dispatcher::OnControlMessageReceived(const IPC::Message& message) {
+ if (WorkerThreadDispatcher::Get()->OnControlMessageReceived(message))
+ return true;
+
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(Dispatcher, message)
IPC_MESSAGE_HANDLER(ExtensionMsg_ActivateExtension, OnActivateExtension)

Powered by Google App Engine
This is Rietveld 408576698