Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Unified Diff: content/worker/worker_devtools_agent.cc

Issue 7248076: DevTools: add initial support for shared workers debugging (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Refactored worker_devtools_agent.cc Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/worker/worker_devtools_agent.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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()));
-}
« no previous file with comments | « content/worker/worker_devtools_agent.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698