Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(213)

Side by Side Diff: chrome/browser/debugger/debugger_remote_service.h

Issue 7274031: Wholesale move of debugger sources to content. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add OWNERS and DEPS. Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2009 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 // This file declares the DebuggerRemoteServiceCommand struct and the
6 // DebuggerRemoteService class which handles commands directed to the
7 // "V8Debugger" tool.
8 #ifndef CHROME_BROWSER_DEBUGGER_DEBUGGER_REMOTE_SERVICE_H_
9 #define CHROME_BROWSER_DEBUGGER_DEBUGGER_REMOTE_SERVICE_H_
10 #pragma once
11
12 #include <string>
13
14 #include "base/basictypes.h"
15 #include "chrome/browser/debugger/devtools_remote.h"
16
17 class DevToolsProtocolHandler;
18 class DevToolsRemoteMessage;
19 class DictionaryValue;
20 class Value;
21 class TabContents;
22
23 // Contains constants for DebuggerRemoteService tool protocol commands
24 // (V8-related only).
25 struct DebuggerRemoteServiceCommand {
26 static const std::string kAttach;
27 static const std::string kDetach;
28 static const std::string kDebuggerCommand;
29 static const std::string kEvaluateJavascript;
30 static const std::string kFrameNavigate; // navigation event
31 static const std::string kTabClosed; // tab closing event
32 };
33
34 // Handles V8 debugger-related messages from the remote debugger (like
35 // attach to V8 debugger, detach from V8 debugger, send command to V8 debugger)
36 // and proxies JSON messages from V8 debugger to the remote debugger.
37 class DebuggerRemoteService : public DevToolsRemoteListener {
38 public:
39 // |delegate| (never NULL) is the protocol handler instance
40 // which dispatches messages to this service. The responses from the
41 // V8 VM debugger are routed back to |delegate|.
42 // The ownership of |delegate| is NOT transferred to this class.
43 explicit DebuggerRemoteService(DevToolsProtocolHandler* delegate);
44
45 // Handles a JSON message from the tab_uid-associated V8 debugger.
46 void DebuggerOutput(int32 tab_uid, const std::string& message);
47
48 // Handles a frame navigation event.
49 void FrameNavigate(int32 tab_uid, const std::string& url);
50
51 // Handles a tab closing event.
52 void TabClosed(int32 tab_uid);
53
54 // Detaches the remote debugger from the tab specified by |destination|.
55 // It is public so that we can detach from the tab on the remote debugger
56 // connection loss.
57 // If |response| is not NULL, the operation result will be written
58 // as the "result" field in |response|, otherwise the result
59 // will not be propagated back to the caller.
60 void DetachFromTab(const std::string& destination,
61 DictionaryValue* response);
62
63 // DevToolsRemoteListener interface.
64
65 // Processes |message| from the remote debugger, where the tool is
66 // "V8Debugger". Either sends the reply immediately or waits for an
67 // asynchronous response from the V8 debugger.
68 virtual void HandleMessage(const DevToolsRemoteMessage& message);
69
70 // Gets invoked on the remote debugger [socket] connection loss.
71 // Notifies the InspectableTabProxy of the remote debugger detachment.
72 virtual void OnConnectionLost();
73
74 // Specifies a tool name ("V8Debugger") handled by this class.
75 static const std::string kToolName;
76
77 private:
78 // Operation result returned in the "result" field.
79 typedef enum {
80 RESULT_OK = 0,
81 RESULT_ILLEGAL_TAB_STATE,
82 RESULT_UNKNOWN_TAB,
83 RESULT_DEBUGGER_ERROR,
84 RESULT_UNKNOWN_COMMAND
85 } Result;
86
87 virtual ~DebuggerRemoteService();
88
89 // Attaches a remote debugger to the tab specified by |destination|.
90 // Writes the attachment result (one of Result enum values) into |response|.
91 void AttachToTab(const std::string& destination,
92 DictionaryValue* response);
93
94 // Retrieves a WebContents instance for the specified |tab_uid|
95 // or NULL if no such tab is found or no WebContents instance
96 // corresponds to that tab.
97 TabContents* ToTabContents(int32 tab_uid);
98
99 // Sends a JSON message with the |response| to the remote debugger.
100 // |tool| and |destination| are used as the respective header values.
101 void SendResponse(const Value& response,
102 const std::string& tool,
103 const std::string& destination);
104
105 // Redirects a V8 debugger command from |content| to a V8 debugger associated
106 // with the |tab_uid| and writes the result into |response| if it becomes
107 // known immediately.
108 bool DispatchDebuggerCommand(int tab_uid,
109 DictionaryValue* content,
110 DictionaryValue* response);
111
112 // Redirects a Javascript evaluation command from |content| to
113 // a V8 debugger associated with the |tab_uid| and writes the result
114 // into |response| if it becomes known immediately.
115 bool DispatchEvaluateJavascript(int tab_uid,
116 DictionaryValue* content,
117 DictionaryValue* response);
118
119 // The delegate is used to get an InspectableTabProxy instance.
120 DevToolsProtocolHandler* delegate_;
121 DISALLOW_COPY_AND_ASSIGN(DebuggerRemoteService);
122 };
123
124 #endif // CHROME_BROWSER_DEBUGGER_DEBUGGER_REMOTE_SERVICE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698