Chromium Code Reviews| Index: content/renderer/service_worker/embedded_worker_dispatcher.cc |
| diff --git a/content/renderer/service_worker/embedded_worker_dispatcher.cc b/content/renderer/service_worker/embedded_worker_dispatcher.cc |
| index 82a3d339cb806ed733d9d21d139733708cf7ed02..9b818fdacb4a7a293fefcfa1de49bc46c65b8607 100644 |
| --- a/content/renderer/service_worker/embedded_worker_dispatcher.cc |
| +++ b/content/renderer/service_worker/embedded_worker_dispatcher.cc |
| @@ -11,10 +11,12 @@ |
| #include "content/child/scoped_child_process_reference.h" |
| #include "content/child/thread_safe_sender.h" |
| #include "content/child/worker_task_runner.h" |
| +#include "content/common/devtools_messages.h" |
| #include "content/common/service_worker/embedded_worker_messages.h" |
| #include "content/public/common/content_client.h" |
| #include "content/renderer/render_thread_impl.h" |
| #include "content/renderer/service_worker/embedded_worker_context_client.h" |
| +#include "content/renderer/service_worker/embedded_worker_devtools_agent.h" |
| #include "third_party/WebKit/public/platform/WebString.h" |
| #include "third_party/WebKit/public/platform/WebURL.h" |
| #include "third_party/WebKit/public/web/WebEmbeddedWorker.h" |
| @@ -26,16 +28,25 @@ namespace content { |
| // references automatically. |
| class EmbeddedWorkerDispatcher::WorkerWrapper { |
| public: |
| - explicit WorkerWrapper(blink::WebEmbeddedWorker* worker) : worker_(worker) {} |
| + explicit WorkerWrapper(blink::WebEmbeddedWorker* worker) |
| + : worker_(worker), |
| + dev_tools_agent_(new EmbeddedWorkerDevToolsAgent(worker)) {} |
| ~WorkerWrapper() {} |
| blink::WebEmbeddedWorker* worker() { return worker_.get(); } |
| + void OnMessageToDevToolsAgent(const IPC::Message& message); |
|
kinuko
2014/04/29 01:16:09
nit: this can just expose dev_tools_agent() field
horo
2014/04/29 06:13:46
Done.
|
| private: |
| ScopedChildProcessReference process_ref_; |
| scoped_ptr<blink::WebEmbeddedWorker> worker_; |
| + scoped_ptr<EmbeddedWorkerDevToolsAgent> dev_tools_agent_; |
| }; |
| +void EmbeddedWorkerDispatcher::WorkerWrapper::OnMessageToDevToolsAgent( |
| + const IPC::Message& message) { |
| + dev_tools_agent_->OnMessageReceived(message); |
|
kinuko
2014/04/29 01:16:09
maybe DCHECK the return value (to see if it return
horo
2014/04/29 06:13:46
Done in EmbeddedWorkerDispatcher::OnMessageToDevTo
|
| +} |
| + |
| EmbeddedWorkerDispatcher::EmbeddedWorkerDispatcher() : weak_factory_(this) {} |
| EmbeddedWorkerDispatcher::~EmbeddedWorkerDispatcher() {} |
| @@ -46,6 +57,8 @@ bool EmbeddedWorkerDispatcher::OnMessageReceived( |
| IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerDispatcher, message) |
| IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_StartWorker, OnStartWorker) |
| IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_StopWorker, OnStopWorker) |
| + IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_MessageToDevToolsAgent, |
| + OnMessageToDevToolsAgent) |
| IPC_MESSAGE_UNHANDLED(handled = false) |
| IPC_END_MESSAGE_MAP() |
| return handled; |
| @@ -63,13 +76,12 @@ void EmbeddedWorkerDispatcher::OnStartWorker(int embedded_worker_id, |
| const GURL& service_worker_scope, |
| const GURL& script_url) { |
| DCHECK(!workers_.Lookup(embedded_worker_id)); |
| - scoped_ptr<WorkerWrapper> wrapper(new WorkerWrapper( |
| - blink::WebEmbeddedWorker::create( |
| - new EmbeddedWorkerContextClient( |
| - embedded_worker_id, |
| - service_worker_version_id, |
| - service_worker_scope, |
| - script_url), |
| + scoped_ptr<WorkerWrapper> wrapper( |
| + new WorkerWrapper(blink::WebEmbeddedWorker::create( |
| + new EmbeddedWorkerContextClient(embedded_worker_id, |
| + service_worker_version_id, |
| + service_worker_scope, |
| + script_url), |
| NULL))); |
| blink::WebEmbeddedWorkerStartData start_data; |
| @@ -94,4 +106,15 @@ void EmbeddedWorkerDispatcher::OnStopWorker(int embedded_worker_id) { |
| wrapper->worker()->terminateWorkerContext(); |
| } |
| +void EmbeddedWorkerDispatcher::OnMessageToDevToolsAgent( |
| + int embedded_worker_id, |
| + const IPC::Message& message) { |
| + WorkerWrapper* wrapper = workers_.Lookup(embedded_worker_id); |
| + if (!wrapper) { |
| + LOG(WARNING) << "Got OnMessageToDevToolsAgent for nonexistent worker"; |
| + return; |
| + } |
| + wrapper->OnMessageToDevToolsAgent(message); |
| +} |
| + |
| } // namespace content |