Chromium Code Reviews| 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..8ead55aa7089d667ef096a97e2b94fe3bd9c152b 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,20 @@ 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 |
| + // native bindings. We should instead be going through the bindings system. |
|
lazyboy
2016/11/19 03:23:01
nit: expand this a bit to make it clearer: as far
Devlin
2016/11/21 19:29:41
Done.
|
| 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 +57,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 +99,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); |
| } |
| } |