| 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)
|
|
|