1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "content/renderer/service_worker/embedded_worker_devtools_agent.h" 6 7 #include "content/child/child_thread.h" 8 #include "content/common/devtools_messages.h" 9 #include "content/renderer/render_thread_impl.h" 10 #include "third_party/WebKit/public/platform/WebCString.h" 11 #include "third_party/WebKit/public/platform/WebString.h" 12 #include "third_party/WebKit/public/web/WebEmbeddedWorker.h" 13 14 using blink::WebEmbeddedWorker; 15 using blink::WebString; 16 17 namespace content { 18 19 EmbeddedWorkerDevToolsAgent::EmbeddedWorkerDevToolsAgent( 20 blink::WebEmbeddedWorker* webworker, 21 int route_id) 22 : webworker_(webworker), route_id_(route_id) { 23 RenderThreadImpl::current()->AddEmbeddedWorkerRoute(route_id_, this); 24 } 25 26 EmbeddedWorkerDevToolsAgent::~EmbeddedWorkerDevToolsAgent() { 27 RenderThreadImpl::current()->RemoveEmbeddedWorkerRoute(route_id_); 28 } 29 30 bool EmbeddedWorkerDevToolsAgent::OnMessageReceived( 31 const IPC::Message& message) { 32 bool handled = true; 33 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerDevToolsAgent, message) 34 IPC_MESSAGE_HANDLER(DevToolsAgentMsg_Attach, OnAttach) 35 IPC_MESSAGE_HANDLER(DevToolsAgentMsg_Reattach, OnReattach) 36 IPC_MESSAGE_HANDLER(DevToolsAgentMsg_Detach, OnDetach) 37 IPC_MESSAGE_HANDLER(DevToolsAgentMsg_DispatchOnInspectorBackend, 38 OnDispatchOnInspectorBackend) 39 IPC_MESSAGE_HANDLER(DevToolsAgentMsg_ResumeWorkerContext, 40 OnResumeWorkerContext) 41 IPC_MESSAGE_UNHANDLED(handled = false) 42 IPC_END_MESSAGE_MAP() 43 return handled; 44 } 45 46 void EmbeddedWorkerDevToolsAgent::OnAttach(const std::string& host_id) { 47 webworker_->attachDevTools(); 48 } 49 50 void EmbeddedWorkerDevToolsAgent::OnReattach(const std::string& host_id, 51 const std::string& state) { 52 webworker_->reattachDevTools(WebString::fromUTF8(state)); 53 } 54 55 void EmbeddedWorkerDevToolsAgent::OnDetach() { 56 webworker_->detachDevTools(); 57 } 58 59 void EmbeddedWorkerDevToolsAgent::OnDispatchOnInspectorBackend( 60 const std::string& message) { 61 webworker_->dispatchDevToolsMessage(WebString::fromUTF8(message)); 62 } 63 64 void EmbeddedWorkerDevToolsAgent::OnResumeWorkerContext() { 65 webworker_->resumeWorkerContext(); 66 } 67 68 } // namespace content 69