4f5076ec46746d758aab97cb9e7a87f519240214
[platform/framework/web/crosswalk.git] / src / content / browser / devtools / renderer_overrides_handler.h
1 // Copyright (c) 2013 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_BROWSER_DEVTOOLS_RENDERER_OVERRIDES_HANDLER_H_
6 #define CONTENT_BROWSER_DEVTOOLS_RENDERER_OVERRIDES_HANDLER_H_
7
8 #include "base/basictypes.h"
9 #include "base/compiler_specific.h"
10 #include "base/memory/ref_counted_memory.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "base/memory/weak_ptr.h"
13 #include "base/time/time.h"
14 #include "cc/output/compositor_frame_metadata.h"
15 #include "content/browser/devtools/devtools_protocol.h"
16 #include "content/common/content_export.h"
17
18 class SkBitmap;
19
20 namespace IPC {
21 class Message;
22 }
23
24 namespace content {
25
26 class DevToolsAgentHost;
27 class DevToolsTracingHandler;
28 class RenderViewHostImpl;
29
30 // Overrides Inspector commands before they are sent to the renderer.
31 // May override the implementation completely, ignore it, or handle
32 // additional browser process implementation details.
33 class CONTENT_EXPORT RendererOverridesHandler
34     : public DevToolsProtocol::Handler {
35  public:
36   explicit RendererOverridesHandler(DevToolsAgentHost* agent);
37   virtual ~RendererOverridesHandler();
38
39   void OnClientDetached();
40   void OnSwapCompositorFrame(const cc::CompositorFrameMetadata& frame_metadata);
41   void OnVisibilityChanged(bool visible);
42   void OnRenderViewHostChanged();
43   bool OnSetTouchEventEmulationEnabled();
44
45  private:
46   void InnerSwapCompositorFrame();
47
48   // DOM domain.
49   scoped_refptr<DevToolsProtocol::Response>
50       GrantPermissionsForSetFileInputFiles(
51           scoped_refptr<DevToolsProtocol::Command> command);
52
53   // Network domain.
54   scoped_refptr<DevToolsProtocol::Response> ClearBrowserCache(
55       scoped_refptr<DevToolsProtocol::Command> command);
56   scoped_refptr<DevToolsProtocol::Response> ClearBrowserCookies(
57       scoped_refptr<DevToolsProtocol::Command> command);
58
59   // Page domain.
60   scoped_refptr<DevToolsProtocol::Response> PageDisable(
61       scoped_refptr<DevToolsProtocol::Command> command);
62   scoped_refptr<DevToolsProtocol::Response> PageHandleJavaScriptDialog(
63       scoped_refptr<DevToolsProtocol::Command> command);
64   scoped_refptr<DevToolsProtocol::Response> PageNavigate(
65       scoped_refptr<DevToolsProtocol::Command> command);
66   scoped_refptr<DevToolsProtocol::Response> PageReload(
67       scoped_refptr<DevToolsProtocol::Command> command);
68   scoped_refptr<DevToolsProtocol::Response> PageGetNavigationHistory(
69       scoped_refptr<DevToolsProtocol::Command> command);
70   scoped_refptr<DevToolsProtocol::Response> PageNavigateToHistoryEntry(
71       scoped_refptr<DevToolsProtocol::Command> command);
72   scoped_refptr<DevToolsProtocol::Response> PageCaptureScreenshot(
73       scoped_refptr<DevToolsProtocol::Command> command);
74   scoped_refptr<DevToolsProtocol::Response> PageCanScreencast(
75       scoped_refptr<DevToolsProtocol::Command> command);
76   scoped_refptr<DevToolsProtocol::Response> PageStartScreencast(
77       scoped_refptr<DevToolsProtocol::Command> command);
78   scoped_refptr<DevToolsProtocol::Response> PageStopScreencast(
79       scoped_refptr<DevToolsProtocol::Command> command);
80   scoped_refptr<DevToolsProtocol::Response> PageQueryUsageAndQuota(
81       scoped_refptr<DevToolsProtocol::Command>);
82
83   void ScreenshotCaptured(
84       scoped_refptr<DevToolsProtocol::Command> command,
85       const unsigned char* png_data,
86       size_t png_size);
87
88   void ScreencastFrameCaptured(
89       const std::string& format,
90       int quality,
91       const cc::CompositorFrameMetadata& metadata,
92       bool success,
93       const SkBitmap& bitmap);
94
95   void PageQueryUsageAndQuotaCompleted(
96      scoped_refptr<DevToolsProtocol::Command>,
97      scoped_ptr<base::DictionaryValue> response_data);
98
99   void NotifyScreencastVisibility(bool visible);
100
101   // Input domain.
102   scoped_refptr<DevToolsProtocol::Response> InputEmulateTouchFromMouseEvent(
103       scoped_refptr<DevToolsProtocol::Command> command);
104
105   RenderViewHostImpl* GetRenderViewHostImpl();
106
107   DevToolsAgentHost* agent_;
108   scoped_refptr<DevToolsProtocol::Command> screencast_command_;
109   bool has_last_compositor_frame_metadata_;
110   cc::CompositorFrameMetadata last_compositor_frame_metadata_;
111   base::TimeTicks last_frame_time_;
112   int capture_retry_count_;
113   base::WeakPtrFactory<RendererOverridesHandler> weak_factory_;
114   DISALLOW_COPY_AND_ASSIGN(RendererOverridesHandler);
115 };
116
117 }  // namespace content
118
119 #endif  // CONTENT_BROWSER_DEVTOOLS_RENDERER_OVERRIDES_HANDLER_H_