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.
5 #ifndef CONTENT_RENDERER_DEVTOOLS_DEVTOOLS_AGENT_H_
6 #define CONTENT_RENDERER_DEVTOOLS_DEVTOOLS_AGENT_H_
11 #include "base/atomicops.h"
12 #include "base/basictypes.h"
13 #include "base/memory/weak_ptr.h"
14 #include "base/time/time.h"
15 #include "content/public/common/console_message_level.h"
16 #include "content/public/renderer/render_view_observer.h"
17 #include "third_party/WebKit/public/web/WebDevToolsAgentClient.h"
20 class WebDevToolsAgent;
28 // DevToolsAgent belongs to the inspectable RenderView and provides Glue's
29 // agents with the communication capabilities. All messages from/to Glue's
30 // agents infrastructure are flowing through this communication agent.
31 // There is a corresponding DevToolsClient object on the client side.
32 class DevToolsAgent : public RenderViewObserver,
33 public base::SupportsWeakPtr<DevToolsAgent>,
34 public blink::WebDevToolsAgentClient {
36 explicit DevToolsAgent(RenderViewImpl* render_view);
37 virtual ~DevToolsAgent();
39 // Returns agent instance for its host id.
40 static DevToolsAgent* FromHostId(int host_id);
42 blink::WebDevToolsAgent* GetWebAgent();
47 // RenderView::Observer implementation.
48 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
50 // WebDevToolsAgentClient implementation
51 virtual void sendMessageToInspectorFrontend(const blink::WebString& data);
53 virtual int hostIdentifier() OVERRIDE;
54 virtual void saveAgentRuntimeState(const blink::WebString& state) OVERRIDE;
55 virtual blink::WebDevToolsAgentClient::WebKitClientMessageLoop*
56 createClientMessageLoop() OVERRIDE;
57 virtual void visitAllocatedObjects(AllocatedObjectVisitor* visitor) OVERRIDE;
59 typedef void (*TraceEventCallback)(
60 char phase, const unsigned char*, const char* name, unsigned long long id,
61 int numArgs, const char* const* argNames, const unsigned char* argTypes,
62 const unsigned long long* argValues,
63 unsigned char flags, double timestamp);
64 virtual void resetTraceEventCallback() OVERRIDE;
65 virtual void setTraceEventCallback(const blink::WebString& category_filter,
66 TraceEventCallback cb) OVERRIDE;
67 virtual void enableTracing(const blink::WebString& category_filter) OVERRIDE;
68 virtual void disableTracing() OVERRIDE;
69 virtual void startGPUEventsRecording() OVERRIDE;
70 virtual void stopGPUEventsRecording() OVERRIDE;
72 virtual void enableDeviceEmulation(
73 const blink::WebDeviceEmulationParams& params) OVERRIDE;
74 virtual void disableDeviceEmulation() OVERRIDE;
75 virtual void setTouchEventEmulationEnabled(bool enabled,
76 bool allow_pinch) OVERRIDE;
79 void OnReattach(const std::string& agent_state);
81 void OnDispatchOnInspectorBackend(const std::string& message);
82 void OnInspectElement(int x, int y);
83 void OnAddMessageToConsole(ConsoleMessageLevel level,
84 const std::string& message);
85 void OnGpuTasksChunk(const std::vector<GpuTaskInfo>& tasks);
86 void ContinueProgram();
87 void OnSetupDevToolsClient();
89 static void TraceEventCallbackWrapper(
90 base::TimeTicks timestamp,
92 const unsigned char* category_group_enabled,
94 unsigned long long id,
96 const char* const arg_names[],
97 const unsigned char arg_types[],
98 const unsigned long long arg_values[],
102 bool is_devtools_client_;
105 static base::subtle::AtomicWord /* TraceEventCallback */ event_callback_;
107 DISALLOW_COPY_AND_ASSIGN(DevToolsAgent);
110 } // namespace content
112 #endif // CONTENT_RENDERER_DEVTOOLS_DEVTOOLS_AGENT_H_