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

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 af7dd84a5d7502ab9badbe9398ebb2c1cfcb8d7d..15a1f3f36ad8a29c9d9c8c10539741d7638aeace 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();
Devlin 2017/06/02 14:53:08 hmm... this alone won't work, right? Because if t
lazyboy 2017/06/02 17:58:59 Yes, added a TODO.
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));
}
}
}
@@ -472,7 +473,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.
@@ -891,6 +892,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