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 14using blink::WebEmbeddedWorker; 15using blink::WebString; 16 17namespace content { 18 19EmbeddedWorkerDevToolsAgent::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 26EmbeddedWorkerDevToolsAgent::~EmbeddedWorkerDevToolsAgent() { 27 RenderThreadImpl::current()->RemoveEmbeddedWorkerRoute(route_id_); 28} 29 30bool 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 46void EmbeddedWorkerDevToolsAgent::OnAttach(const std::string& host_id) { 47 webworker_->attachDevTools(); 48} 49 50void EmbeddedWorkerDevToolsAgent::OnReattach(const std::string& host_id, 51 const std::string& state) { 52 webworker_->reattachDevTools(WebString::fromUTF8(state)); 53} 54 55void EmbeddedWorkerDevToolsAgent::OnDetach() { 56 webworker_->detachDevTools(); 57} 58 59void EmbeddedWorkerDevToolsAgent::OnDispatchOnInspectorBackend( 60 const std::string& message) { 61 webworker_->dispatchDevToolsMessage(WebString::fromUTF8(message)); 62} 63 64void EmbeddedWorkerDevToolsAgent::OnResumeWorkerContext() { 65 webworker_->resumeWorkerContext(); 66} 67 68} // namespace content 69