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

Unified Diff: extensions/renderer/worker_thread_dispatcher.cc

Issue 2512233002: [Extensions Bindings] Add ExtensionBindingsSystem interface; hook it up (Closed)
Patch Set: lazyboys Created 4 years, 1 month 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
« no previous file with comments | « extensions/renderer/worker_thread_dispatcher.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: extensions/renderer/worker_thread_dispatcher.cc
diff --git a/extensions/renderer/worker_thread_dispatcher.cc b/extensions/renderer/worker_thread_dispatcher.cc
index 0d189d44fbde279f860e3180b2e70771793c0fbd..432592fea6edd77c1d9f7d02fc5b8b48d5057a9c 100644
--- a/extensions/renderer/worker_thread_dispatcher.cc
+++ b/extensions/renderer/worker_thread_dispatcher.cc
@@ -9,6 +9,8 @@
#include "content/public/child/worker_thread.h"
#include "content/public/renderer/render_thread.h"
#include "extensions/common/extension_messages.h"
+#include "extensions/renderer/extension_bindings_system.h"
+#include "extensions/renderer/js_extension_bindings_system.h"
#include "extensions/renderer/service_worker_data.h"
namespace extensions {
@@ -24,12 +26,22 @@ void OnResponseOnWorkerThread(int request_id,
bool succeeded,
const std::unique_ptr<base::ListValue>& response,
const std::string& error) {
+ // TODO(devlin): Using the RequestSender directly here won't work with
+ // NativeExtensionBindingsSystem (since there is no associated RequestSender
+ // in that case). We should instead be going
+ // ExtensionBindingsSystem::HandleResponse().
ServiceWorkerData* data = g_data_tls.Pointer()->Get();
WorkerThreadDispatcher::GetRequestSender()->HandleWorkerResponse(
request_id, data->service_worker_version_id(), succeeded, *response,
error);
}
+ServiceWorkerData* GetServiceWorkerData() {
+ ServiceWorkerData* data = g_data_tls.Pointer()->Get();
+ DCHECK(data);
+ return data;
+}
+
} // namespace
WorkerThreadDispatcher::WorkerThreadDispatcher() {}
@@ -47,17 +59,20 @@ void WorkerThreadDispatcher::Init(content::RenderThread* render_thread) {
render_thread->AddObserver(this);
}
-V8SchemaRegistry* WorkerThreadDispatcher::GetV8SchemaRegistry() {
- ServiceWorkerData* data = g_data_tls.Pointer()->Get();
- DCHECK(data);
- return data->v8_schema_registry();
+// static
+ExtensionBindingsSystem* WorkerThreadDispatcher::GetBindingsSystem() {
+ return GetServiceWorkerData()->bindings_system();
}
// static
ServiceWorkerRequestSender* WorkerThreadDispatcher::GetRequestSender() {
- ServiceWorkerData* data = g_data_tls.Pointer()->Get();
- DCHECK(data);
- return data->request_sender();
+ return static_cast<ServiceWorkerRequestSender*>(
+ GetBindingsSystem()->GetRequestSender());
+}
+
+// static
+V8SchemaRegistry* WorkerThreadDispatcher::GetV8SchemaRegistry() {
+ return GetServiceWorkerData()->v8_schema_registry();
}
bool WorkerThreadDispatcher::OnControlMessageReceived(
@@ -86,11 +101,17 @@ void WorkerThreadDispatcher::OnResponseWorker(int worker_thread_id,
base::Passed(response.CreateDeepCopy()), error));
}
-void WorkerThreadDispatcher::AddWorkerData(int64_t service_worker_version_id) {
+void WorkerThreadDispatcher::AddWorkerData(
+ int64_t service_worker_version_id,
+ ResourceBundleSourceMap* source_map) {
ServiceWorkerData* data = g_data_tls.Pointer()->Get();
if (!data) {
- ServiceWorkerData* new_data =
- new ServiceWorkerData(this, service_worker_version_id);
+ std::unique_ptr<ExtensionBindingsSystem> bindings_system =
+ base::MakeUnique<JsExtensionBindingsSystem>(
+ source_map, base::MakeUnique<ServiceWorkerRequestSender>(
+ this, service_worker_version_id));
+ ServiceWorkerData* new_data = new ServiceWorkerData(
+ service_worker_version_id, std::move(bindings_system));
g_data_tls.Pointer()->Set(new_data);
}
}
« no previous file with comments | « extensions/renderer/worker_thread_dispatcher.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698