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

Unified Diff: extensions/renderer/dispatcher.cc

Issue 2886923002: [extension SW]: Support event listener registration and event dispatching. (Closed)
Patch Set: removed debug logs 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 429056c9a998cde4a8b943890f35ff2811ad782d..547988a04d33aaa13776e56ab1b586fbeb6d949d 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,23 +233,27 @@ 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));
}
}
}
}
+bool WorkerMightHandleMessage(const IPC::Message& message) {
Devlin 2017/05/24 17:58:25 Do we need this when the WorkerThreadDispatcher al
lazyboy 2017/05/25 01:33:43 Removed.
+ return message.type() == ExtensionMsg_DispatchEvent::ID;
+}
+
base::LazyInstance<WorkerScriptContextSet>::DestructorAtExit
g_worker_script_context_set = LAZY_INSTANCE_INITIALIZER;
@@ -470,7 +475,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.
@@ -887,6 +892,11 @@ void Dispatcher::RegisterNativeHandlers(
}
bool Dispatcher::OnControlMessageReceived(const IPC::Message& message) {
+ if (WorkerMightHandleMessage(message) &&
+ 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