12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/browser/devtools/devtools_agent_host_impl.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <map> 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/basictypes.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/guid.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/lazy_instance.h" 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/browser/devtools/devtools_manager_impl.h" 134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "content/public/browser/browser_thread.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace content { 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace { 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef std::map<std::string, DevToolsAgentHostImpl*> Instances; 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)base::LazyInstance<Instances>::Leaky g_instances = LAZY_INSTANCE_INITIALIZER; 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)DevToolsAgentHostImpl::DevToolsAgentHostImpl() 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : close_listener_(NULL), 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) id_(base::GenerateGUID()) { 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) g_instances.Get()[id_] = this; 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)DevToolsAgentHostImpl::~DevToolsAgentHostImpl() { 304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) g_instances.Get().erase(g_instances.Get().find(id_)); 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_refptr<DevToolsAgentHost> DevToolsAgentHost::GetForId( 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& id) { 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (g_instances == NULL) 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return NULL; 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instances::iterator it = g_instances.Get().find(id); 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (it == g_instances.Get().end()) 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return NULL; 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return it->second; 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)bool DevToolsAgentHostImpl::IsAttached() { 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return !!DevToolsManagerImpl::GetInstance()->GetDevToolsClientHostFor(this); 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DevToolsAgentHostImpl::InspectElement(int x, int y) { 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)std::string DevToolsAgentHostImpl::GetId() { 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return id_; 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)RenderViewHost* DevToolsAgentHostImpl::GetRenderViewHost() { 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return NULL; 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 597dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochvoid DevToolsAgentHostImpl::DisconnectRenderViewHost() {} 607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochvoid DevToolsAgentHostImpl::ConnectRenderViewHost(RenderViewHost* rvh) {} 627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DevToolsAgentHostImpl::NotifyCloseListener() { 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (close_listener_) { 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<DevToolsAgentHostImpl> protect(this); 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) close_listener_->AgentHostClosing(this); 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) close_listener_ = NULL; 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace content 72