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

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: Comments addressed 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
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()));
-}

Powered by Google App Engine
This is Rietveld 408576698