Home | History | Annotate | Download | only in browser
      1 // Copyright (c) 2012 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 #ifndef CONTENT_PUBLIC_BROWSER_DEVTOOLS_HTTP_HANDLER_H_
      6 #define CONTENT_PUBLIC_BROWSER_DEVTOOLS_HTTP_HANDLER_H_
      7 
      8 #include <string>
      9 
     10 #include "content/common/content_export.h"
     11 
     12 class GURL;
     13 
     14 namespace net {
     15 class StreamListenSocketFactory;
     16 class URLRequestContextGetter;
     17 }
     18 
     19 namespace content {
     20 
     21 class DevToolsAgentHost;
     22 class DevToolsHttpHandlerDelegate;
     23 
     24 // This class is used for managing DevTools remote debugging server.
     25 // Clients can connect to the specified ip:port and start debugging
     26 // this browser.
     27 class DevToolsHttpHandler {
     28  public:
     29   // Interface responsible for mapping DevToolsAgentHost instances to/from
     30   // string identifiers.
     31   class DevToolsAgentHostBinding {
     32    public:
     33     virtual ~DevToolsAgentHostBinding() {}
     34 
     35     // Returns the mapping of DevToolsAgentHost to identifier.
     36     virtual std::string GetIdentifier(DevToolsAgentHost* agent_host) = 0;
     37 
     38     // Returns the mapping of identifier to DevToolsAgentHost.
     39     virtual DevToolsAgentHost* ForIdentifier(const std::string& identifier) = 0;
     40   };
     41 
     42   // Returns true if the given protocol version is supported.
     43   CONTENT_EXPORT static bool IsSupportedProtocolVersion(
     44       const std::string& version);
     45 
     46   // Returns frontend resource id for the given resource |name|.
     47   CONTENT_EXPORT static int GetFrontendResourceId(
     48       const std::string& name);
     49 
     50   // Takes ownership over |socket_factory| and |delegate|.
     51   CONTENT_EXPORT static DevToolsHttpHandler* Start(
     52       const net::StreamListenSocketFactory* socket_factory,
     53       const std::string& frontend_url,
     54       DevToolsHttpHandlerDelegate* delegate);
     55 
     56   // Called from the main thread in order to stop protocol handler.
     57   // Automatically destroys the handler instance.
     58   virtual void Stop() = 0;
     59 
     60   // Set the DevToolsAgentHostBinding instance. If no instance is provided the
     61   // default implementation will be used.
     62   virtual void SetDevToolsAgentHostBinding(
     63       DevToolsAgentHostBinding* binding) = 0;
     64 
     65   // Returns the URL for the address to debug |render_view_host|.
     66   virtual GURL GetFrontendURL(DevToolsAgentHost* agent_host) = 0;
     67 
     68  protected:
     69   virtual ~DevToolsHttpHandler() {}
     70 };
     71 
     72 }  // namespace content
     73 
     74 #endif  // CONTENT_PUBLIC_BROWSER_DEVTOOLS_HTTP_HANDLER_H_
     75