Index: content/worker/worker_devtools_agent.cc |
diff --git a/content/worker/worker_devtools_agent.cc b/content/worker/worker_devtools_agent.cc |
index af00871357b73326316bec9ac0753e3a5583b4cb..96b50195f4b44fc5330b266739d735cf9f67787f 100644 |
--- a/content/worker/worker_devtools_agent.cc |
+++ b/content/worker/worker_devtools_agent.cc |
@@ -7,51 +7,125 @@ |
#include "content/common/devtools_messages.h" |
#include "content/worker/worker_thread.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebCString.h" |
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebSharedWorker.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebWorker.h" |
+using WebKit::WebSharedWorker; |
using WebKit::WebString; |
using WebKit::WebWorker; |
-WorkerDevToolsAgent::WorkerDevToolsAgent(int route_id, WebWorker* webworker) |
- : route_id_(route_id), |
- webworker_(webworker) { |
-} |
+namespace { |
+ |
+class DedicatedWorkerDevToolsAgent : public WorkerDevToolsAgent { |
+ public: |
+ DedicatedWorkerDevToolsAgent(int route_id, WebWorker* webworker) |
+ : WorkerDevToolsAgent(route_id), |
+ webworker_(webworker) {} |
+ |
+ private: |
+ virtual ~DedicatedWorkerDevToolsAgent() {} |
+ |
+ // Called on the Worker thread. |
+ virtual bool OnMessageReceived(const IPC::Message& message) { |
+ bool handled = true; |
+ IPC_BEGIN_MESSAGE_MAP(DedicatedWorkerDevToolsAgent, message) |
+ IPC_MESSAGE_HANDLER(WorkerDevToolsAgentMsg_Attach, OnAttach) |
+ IPC_MESSAGE_HANDLER(WorkerDevToolsAgentMsg_Detach, OnDetach) |
+ IPC_MESSAGE_HANDLER(WorkerDevToolsAgentMsg_DispatchOnInspectorBackend, |
+ OnDispatchOnInspectorBackend) |
+ IPC_MESSAGE_UNHANDLED(handled = false) |
+ IPC_END_MESSAGE_MAP() |
+ return handled; |
+ } |
+ |
+ virtual void SendDevToolsMessage(const WebKit::WebString& message) { |
+ Send(new DevToolsAgentMsg_DispatchMessageFromWorker(route_id_, |
+ message.utf8())); |
+ } |
+ |
+ void OnAttach() { |
+ webworker_->attachDevTools(); |
+ } |
+ |
+ void OnDetach() { |
+ webworker_->detachDevTools(); |
+ } |
+ |
+ void OnDispatchOnInspectorBackend( |
+ const std::string& message) { |
+ webworker_->dispatchDevToolsMessage(WebString::fromUTF8(message)); |
+ } |
+ |
+ WebKit::WebWorker* webworker_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(DedicatedWorkerDevToolsAgent); |
+}; |
-WorkerDevToolsAgent::~WorkerDevToolsAgent() { |
-} |
-// Called on the Worker thread. |
-bool WorkerDevToolsAgent::OnMessageReceived(const IPC::Message& message) { |
- bool handled = true; |
- IPC_BEGIN_MESSAGE_MAP(WorkerDevToolsAgent, message) |
- IPC_MESSAGE_HANDLER(WorkerDevToolsAgentMsg_Attach, OnAttach) |
- IPC_MESSAGE_HANDLER(WorkerDevToolsAgentMsg_Detach, OnDetach) |
- IPC_MESSAGE_HANDLER(WorkerDevToolsAgentMsg_DispatchOnInspectorBackend, |
- OnDispatchOnInspectorBackend) |
- IPC_MESSAGE_UNHANDLED(handled = false) |
- IPC_END_MESSAGE_MAP() |
- return handled; |
+class SharedWorkerDevToolsAgent : public WorkerDevToolsAgent { |
jam
2011/07/08 17:49:09
It's unfortunate that this class is duplicated for
pfeldman
2011/07/11 12:07:16
I think templates won't harm readability of this c
yurys
2011/07/11 15:13:11
WebWorker and WebSharedWorker don't have common an
yurys
2011/07/11 15:13:11
See my response to John.
jam
2011/07/11 16:53:37
You can send DevToolsAgentMsg_DispatchOnInspectorB
yurys
2011/07/12 13:58:46
Done. Converted the class into template and reused
|
+public: |
+ SharedWorkerDevToolsAgent(int route_id, WebSharedWorker* webshared_worker) |
+ : WorkerDevToolsAgent(route_id), |
+ webshared_worker_(webshared_worker) { } |
+ |
+private: |
+ // Called on the Worker thread. |
+ virtual bool OnMessageReceived(const IPC::Message& message) { |
+ bool handled = true; |
+ IPC_BEGIN_MESSAGE_MAP(SharedWorkerDevToolsAgent, message) |
+ IPC_MESSAGE_HANDLER(WorkerDevToolsAgentMsg_Attach, OnAttach) |
+ IPC_MESSAGE_HANDLER(WorkerDevToolsAgentMsg_Detach, OnDetach) |
+ IPC_MESSAGE_HANDLER(DevToolsAgentMsg_DispatchOnInspectorBackend, |
+ OnDispatchOnInspectorBackend) |
+ IPC_MESSAGE_UNHANDLED(handled = false) |
+ IPC_END_MESSAGE_MAP() |
+ return handled; |
+ } |
+ |
+ virtual void SendDevToolsMessage(const WebString& message) { |
+ IPC::Message m = DevToolsClientMsg_DispatchOnInspectorFrontend( |
+ message.utf8()); |
+ m.set_routing_id(route_id_); |
+ Send(new DevToolsHostMsg_ForwardToClient(route_id_, m)); |
+ } |
+ |
+ void OnAttach() { |
+ webshared_worker_->attachDevTools(); |
+ } |
+ void OnDetach() { |
+ webshared_worker_->detachDevTools(); |
+ } |
+ void OnDispatchOnInspectorBackend(const std::string& message) { |
+ webshared_worker_->dispatchDevToolsMessage(WebString::fromUTF8(message)); |
+ } |
+ |
+ WebSharedWorker* webshared_worker_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(SharedWorkerDevToolsAgent); |
+}; |
+ |
+} // namespace |
+ |
+WorkerDevToolsAgent::WorkerDevToolsAgent(int route_id) |
+ : route_id_(route_id) { |
} |
-void WorkerDevToolsAgent::OnAttach() { |
- webworker_->attachDevTools(); |
+WorkerDevToolsAgent* WorkerDevToolsAgent::CreateForDedicatedWorker( |
+ int route_id, |
+ WebKit::WebWorker* webworker) { |
+ return new DedicatedWorkerDevToolsAgent(route_id, webworker); |
} |
-void WorkerDevToolsAgent::OnDetach() { |
- webworker_->detachDevTools(); |
+WorkerDevToolsAgent* WorkerDevToolsAgent::CreateForSharedWorker( |
+ int route_id, WebKit::WebSharedWorker* webshared_worker) { |
+ return new SharedWorkerDevToolsAgent(route_id, webshared_worker); |
} |
-void WorkerDevToolsAgent::OnDispatchOnInspectorBackend( |
- const std::string& message) { |
- webworker_->dispatchDevToolsMessage(WebString::fromUTF8(message)); |
+ |
+WorkerDevToolsAgent::~WorkerDevToolsAgent() { |
} |
bool WorkerDevToolsAgent::Send(IPC::Message* message) { |
return WorkerThread::current()->Send(message); |
} |
- |
-void WorkerDevToolsAgent::SendDevToolsMessage(const WebString& message) { |
- Send(new DevToolsAgentMsg_DispatchMessageFromWorker(route_id_, |
- message.utf8())); |
-} |