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 |