// Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "content/browser/devtools/devtools_external_agent_proxy_impl.h" #include "content/browser/devtools/devtools_agent_host_impl.h" #include "content/browser/devtools/devtools_manager_impl.h" #include "content/public/browser/devtools_external_agent_proxy_delegate.h" namespace content { class DevToolsExternalAgentProxyImpl::ForwardingAgentHost : public DevToolsAgentHostImpl { public: ForwardingAgentHost(DevToolsExternalAgentProxyDelegate* delegate) : delegate_(delegate) { } void ConnectionClosed() { NotifyCloseListener(); } private: virtual ~ForwardingAgentHost() { } // DevToolsAgentHostImpl implementation. virtual void Attach() OVERRIDE { delegate_->Attach(); }; virtual void Detach() OVERRIDE { delegate_->Detach(); }; virtual void DispatchOnInspectorBackend(const std::string& message) OVERRIDE { delegate_->SendMessageToBackend(message); } DevToolsExternalAgentProxyDelegate* delegate_; }; //static DevToolsExternalAgentProxy* DevToolsExternalAgentProxy::Create( DevToolsExternalAgentProxyDelegate* delegate) { return new DevToolsExternalAgentProxyImpl(delegate); } DevToolsExternalAgentProxyImpl::DevToolsExternalAgentProxyImpl( DevToolsExternalAgentProxyDelegate* delegate) : agent_host_(new ForwardingAgentHost(delegate)) { } DevToolsExternalAgentProxyImpl::~DevToolsExternalAgentProxyImpl() { } scoped_refptr DevToolsExternalAgentProxyImpl:: GetAgentHost() { return agent_host_; } void DevToolsExternalAgentProxyImpl::DispatchOnClientHost( const std::string& message) { DevToolsManagerImpl::GetInstance()->DispatchOnInspectorFrontend( agent_host_.get(), message); } void DevToolsExternalAgentProxyImpl::ConnectionClosed() { agent_host_->ConnectionClosed(); } } // content