• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #ifndef CONTENT_PUBLIC_BROWSER_DEVTOOLS_FRONTEND_HOST_H_
6 #define CONTENT_PUBLIC_BROWSER_DEVTOOLS_FRONTEND_HOST_H_
7 
8 #include <string>
9 
10 #include "content/common/content_export.h"
11 
12 namespace content {
13 
14 class RenderViewHost;
15 
16 // This class dispatches messages between DevTools frontend and Delegate
17 // which is implemented by the embedder.
18 // This allows us to avoid exposing DevTools frontend messages through
19 // the content public API.
20 class DevToolsFrontendHost {
21  public:
22   // Delegate actually handles messages from frontend.
23   class Delegate {
24    public:
~Delegate()25     virtual ~Delegate() {}
26 
27     // Message is coming from frontend to the embedder.
28     virtual void HandleMessageFromDevToolsFrontend(
29         const std::string& message) = 0;
30 
31     // Message is coming from frontend to the backend.
32     // TODO(dgozman): remove this by making one of the possible messages
33     // passed via the method above.
34     virtual void HandleMessageFromDevToolsFrontendToBackend(
35         const std::string& message) = 0;
36   };
37 
38   // Creates a new DevToolsFrontendHost for RenderViewHost where DevTools
39   // frontend is loaded.
40   CONTENT_EXPORT static DevToolsFrontendHost* Create(
41       RenderViewHost* frontend_rvh, Delegate* delegate);
42 
~DevToolsFrontendHost()43   CONTENT_EXPORT virtual ~DevToolsFrontendHost() {}
44 };
45 
46 }  // namespace content
47 
48 #endif  // CONTENT_PUBLIC_BROWSER_DEVTOOLS_FRONTEND_HOST_H_
49