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..af92a7a8f4551da4e7ebc898997d631f4cd87d62 100644 |
--- a/content/worker/worker_devtools_agent.cc |
+++ b/content/worker/worker_devtools_agent.cc |
@@ -7,51 +7,98 @@ |
#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 { |
+ |
+template<class T> |
+class WorkerDevToolsAgentImpl : public WorkerDevToolsAgent { |
+ public: |
+ WorkerDevToolsAgentImpl(int route_id, T* webworker) |
+ : WorkerDevToolsAgent(route_id), |
+ webworker_(webworker) {} |
+ |
+ private: |
+ virtual ~WorkerDevToolsAgentImpl() {} |
+ |
+ // Called on the Worker thread. |
+ virtual bool OnMessageReceived(const IPC::Message& message) { |
+ bool handled = true; |
+ IPC_BEGIN_MESSAGE_MAP(WorkerDevToolsAgentImpl, 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 WebKit::WebString& message); |
+ |
+ void OnAttach() { |
+ webworker_->attachDevTools(); |
+ } |
+ |
+ void OnDetach() { |
+ webworker_->detachDevTools(); |
+ } |
+ |
+ void OnDispatchOnInspectorBackend( |
+ const std::string& message) { |
+ webworker_->dispatchDevToolsMessage(WebString::fromUTF8(message)); |
+ } |
+ |
+ T* webworker_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(WorkerDevToolsAgentImpl); |
+}; |
+ |
+ |
+template<> |
+void WorkerDevToolsAgentImpl<WebWorker>::SendDevToolsMessage( |
jam
2011/07/12 18:19:55
nit: it might be easier to read if the constructor
|
+ const WebKit::WebString& message) { |
+ Send(new DevToolsAgentMsg_DispatchMessageFromWorker(route_id_, |
+ message.utf8())); |
} |
-WorkerDevToolsAgent::~WorkerDevToolsAgent() { |
+template<> |
+void WorkerDevToolsAgentImpl<WebSharedWorker>::SendDevToolsMessage( |
+ const WebKit::WebString& message) { |
+ IPC::Message m = DevToolsClientMsg_DispatchOnInspectorFrontend( |
+ message.utf8()); |
+ m.set_routing_id(route_id_); |
+ Send(new DevToolsHostMsg_ForwardToClient(route_id_, m)); |
} |
-// 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; |
+} // namespace |
+ |
+WorkerDevToolsAgent::WorkerDevToolsAgent(int route_id) |
+ : route_id_(route_id) { |
} |
-void WorkerDevToolsAgent::OnAttach() { |
- webworker_->attachDevTools(); |
+WorkerDevToolsAgent* WorkerDevToolsAgent::CreateForDedicatedWorker( |
+ int route_id, |
+ WebWorker* webworker) { |
+ return new WorkerDevToolsAgentImpl<WebWorker>(route_id, webworker); |
} |
-void WorkerDevToolsAgent::OnDetach() { |
- webworker_->detachDevTools(); |
+WorkerDevToolsAgent* WorkerDevToolsAgent::CreateForSharedWorker( |
+ int route_id, |
+ WebSharedWorker* webshared_worker) { |
+ return new WorkerDevToolsAgentImpl<WebSharedWorker>(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())); |
-} |