devtools_agent_host.h revision effb81e5f8246d0db0270817048dc992db66e9fb
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)#ifndef CONTENT_PUBLIC_BROWSER_DEVTOOLS_AGENT_HOST_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CONTENT_PUBLIC_BROWSER_DEVTOOLS_AGENT_HOST_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <vector> 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/basictypes.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/ref_counted.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/common/content_export.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace content { 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class RenderViewHost; 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class WebContents; 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Describes interface for managing devtools agents from browser process. 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class CONTENT_EXPORT DevToolsAgentHost 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : public base::RefCounted<DevToolsAgentHost> { 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns DevToolsAgentHost with a given |id| or NULL of it does not exist. 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static scoped_refptr<DevToolsAgentHost> GetForId(const std::string& id); 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 27effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // Returns DevToolsAgentHost that can be used for inspecting |web_contents|. 28effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // New DevToolsAgentHost will be created if it does not exist. 29effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch static scoped_refptr<DevToolsAgentHost> GetOrCreateFor( 30effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch WebContents* web_contents); 31effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns DevToolsAgentHost that can be used for inspecting |rvh|. 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // New DevToolsAgentHost will be created if it does not exist. 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static scoped_refptr<DevToolsAgentHost> GetOrCreateFor(RenderViewHost* rvh); 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns true iff an instance of DevToolsAgentHost for the |rvh| 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // does exist. 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static bool HasFor(RenderViewHost* rvh); 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns DevToolsAgentHost that can be used for inspecting shared worker 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // with given worker process host id and routing id. 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static scoped_refptr<DevToolsAgentHost> GetForWorker(int worker_process_id, 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int worker_route_id); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static bool IsDebuggerAttached(WebContents* web_contents); 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns a list of all existing RenderViewHost's that can be debugged. 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static std::vector<RenderViewHost*> GetValidRenderViewHosts(); 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Returns true if there is a client attached. 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual bool IsAttached() = 0; 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Starts inspecting element at position (|x|, |y|) in the specified page. 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void InspectElement(int x, int y) = 0; 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns the unique id of the agent. 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual std::string GetId() = 0; 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns render view host instance for this host if any. 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual RenderViewHost* GetRenderViewHost() = 0; 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Temporarily detaches render view host from this host. Must be followed by 637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // a call to ConnectRenderViewHost (may leak the host instance otherwise). 647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual void DisconnectRenderViewHost() = 0; 657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Attaches render view host to this host. 677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual void ConnectRenderViewHost(RenderViewHost* rvh) = 0; 687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) friend class base::RefCounted<DevToolsAgentHost>; 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~DevToolsAgentHost() {} 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace content 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CONTENT_PUBLIC_BROWSER_DEVTOOLS_AGENT_HOST_H_ 77