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

Unified Diff: extensions/renderer/worker_thread_dispatcher.cc

Issue 2886923002: [extension SW]: Support event listener registration and event dispatching. (Closed)
Patch Set: fix DCHECK 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/worker_thread_dispatcher.cc
diff --git a/extensions/renderer/worker_thread_dispatcher.cc b/extensions/renderer/worker_thread_dispatcher.cc
index f338575218530f920d8bd0acc06c3db8409cf07c..35d71c1174634b49ad2e05862966bbf93f07b839 100644
--- a/extensions/renderer/worker_thread_dispatcher.cc
+++ b/extensions/renderer/worker_thread_dispatcher.cc
@@ -12,6 +12,7 @@
#include "content/public/renderer/render_thread.h"
#include "extensions/common/extension_messages.h"
#include "extensions/common/feature_switch.h"
+#include "extensions/renderer/dispatcher.h"
#include "extensions/renderer/extension_bindings_system.h"
#include "extensions/renderer/js_extension_bindings_system.h"
#include "extensions/renderer/native_extension_bindings_system.h"
@@ -86,7 +87,8 @@ V8SchemaRegistry* WorkerThreadDispatcher::GetV8SchemaRegistry() {
// static
bool WorkerThreadDispatcher::HandlesMessageOnWorkerThread(
const IPC::Message& message) {
- return message.type() == ExtensionMsg_ResponseWorker::ID;
+ return message.type() == ExtensionMsg_ResponseWorker::ID ||
+ message.type() == ExtensionMsg_DispatchEvent::ID;
}
// static
@@ -101,7 +103,8 @@ bool WorkerThreadDispatcher::OnControlMessageReceived(
if (HandlesMessageOnWorkerThread(message)) {
int worker_thread_id = base::kInvalidThreadId;
bool found = base::PickleIterator(message).ReadInt(&worker_thread_id);
dcheng 2017/06/06 04:55:07 Btw this seems pretty hard to understand. We shoul
lazyboy 2017/06/06 19:12:00 Yes, restored CHECK. This was previously a CHECK.
dcheng 2017/06/06 20:59:55 Something something mojo I think. But in principle
- CHECK(found && worker_thread_id > 0);
+ if (!found || worker_thread_id <= 0)
dcheng 2017/06/05 20:23:15 Why would the worker_thread_id be < 0? Maybe just
lazyboy 2017/06/05 21:12:06 Done.
+ return false;
base::TaskRunner* runner = GetTaskRunnerFor(worker_thread_id);
bool task_posted = runner->PostTask(
FROM_HERE, base::Bind(&WorkerThreadDispatcher::ForwardIPC,
@@ -119,6 +122,7 @@ void WorkerThreadDispatcher::OnMessageReceivedOnWorkerThread(
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(WorkerThreadDispatcher, message)
IPC_MESSAGE_HANDLER(ExtensionMsg_ResponseWorker, OnResponseWorker)
+ IPC_MESSAGE_HANDLER(ExtensionMsg_DispatchEvent, OnDispatchEvent)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
CHECK(handled);
@@ -149,8 +153,18 @@ void WorkerThreadDispatcher::OnResponseWorker(int worker_thread_id,
error);
}
+void WorkerThreadDispatcher::OnDispatchEvent(
+ const ExtensionMsg_DispatchEvent_Params& params,
+ const base::ListValue& event_args) {
+ ServiceWorkerData* data = g_data_tls.Pointer()->Get();
+ DCHECK(data);
+ data->bindings_system()->DispatchEventInContext(
+ params.event_name, &event_args, &params.filtering_info, data->context());
+}
+
void WorkerThreadDispatcher::AddWorkerData(
int64_t service_worker_version_id,
+ ScriptContext* context,
ResourceBundleSourceMap* source_map) {
ServiceWorkerData* data = g_data_tls.Pointer()->Get();
if (!data) {
@@ -164,7 +178,7 @@ void WorkerThreadDispatcher::AddWorkerData(
this, service_worker_version_id));
}
ServiceWorkerData* new_data = new ServiceWorkerData(
- service_worker_version_id, std::move(bindings_system));
+ service_worker_version_id, context, std::move(bindings_system));
g_data_tls.Pointer()->Set(new_data);
}
« extensions/renderer/event_bindings.cc ('K') | « extensions/renderer/worker_thread_dispatcher.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698