| 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..2ff069afac9a4cc4ee185f808104c6e106dea82d 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(
|
| + 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(
|
| + route_id_,
|
| + message.utf8());
|
| + 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()));
|
| -}
|
|
|