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

Side by Side Diff: webkit/glue/devtools/debugger_agent_manager.cc

Issue 330029: DevTools: Remove base/ dependencies from glue/devtools (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 1 month 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
« no previous file with comments | « webkit/glue/devtools/debugger_agent_manager.h ('k') | webkit/glue/devtools/devtools_rpc.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 6
7 #include "Frame.h" 7 #include "Frame.h"
8 #include "PageGroupLoadDeferrer.h" 8 #include "PageGroupLoadDeferrer.h"
9 #include "V8Proxy.h" 9 #include "V8Proxy.h"
10 #include <wtf/HashSet.h> 10 #include <wtf/HashSet.h>
11 #undef LOG 11 #undef LOG
12 12
13 #include "base/string_util.h"
14 #include "webkit/api/public/WebDevToolsAgent.h" 13 #include "webkit/api/public/WebDevToolsAgent.h"
15 #include "webkit/glue/devtools/debugger_agent_impl.h" 14 #include "webkit/glue/devtools/debugger_agent_impl.h"
16 #include "webkit/glue/devtools/debugger_agent_manager.h" 15 #include "webkit/glue/devtools/debugger_agent_manager.h"
17 #include "webkit/glue/webdevtoolsagent_impl.h" 16 #include "webkit/glue/webdevtoolsagent_impl.h"
18 #include "webkit/glue/webview_impl.h" 17 #include "webkit/glue/webview_impl.h"
19 18
20 #if USE(V8) 19 #if USE(V8)
21 #include "v8/include/v8-debug.h" 20 #include "v8/include/v8-debug.h"
22 #endif 21 #endif
23 22
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 109
111 // static 110 // static
112 void DebuggerAgentManager::DebugAttach(DebuggerAgentImpl* debugger_agent) { 111 void DebuggerAgentManager::DebugAttach(DebuggerAgentImpl* debugger_agent) {
113 if (!attached_agents_map_) { 112 if (!attached_agents_map_) {
114 attached_agents_map_ = new AttachedAgentsMap(); 113 attached_agents_map_ = new AttachedAgentsMap();
115 v8::Debug::SetMessageHandler2(&DebuggerAgentManager::OnV8DebugMessage); 114 v8::Debug::SetMessageHandler2(&DebuggerAgentManager::OnV8DebugMessage);
116 v8::Debug::SetHostDispatchHandler( 115 v8::Debug::SetHostDispatchHandler(
117 &DebuggerAgentManager::V8DebugHostDispatchHandler, 100 /* ms */); 116 &DebuggerAgentManager::V8DebugHostDispatchHandler, 100 /* ms */);
118 } 117 }
119 int host_id = debugger_agent->webdevtools_agent()->host_id(); 118 int host_id = debugger_agent->webdevtools_agent()->host_id();
120 DCHECK(host_id != 0); 119 ASSERT(host_id != 0);
121 attached_agents_map_->set(host_id, debugger_agent); 120 attached_agents_map_->set(host_id, debugger_agent);
122 } 121 }
123 122
124 // static 123 // static
125 void DebuggerAgentManager::DebugDetach(DebuggerAgentImpl* debugger_agent) { 124 void DebuggerAgentManager::DebugDetach(DebuggerAgentImpl* debugger_agent) {
126 if (!attached_agents_map_) { 125 if (!attached_agents_map_) {
127 NOTREACHED(); 126 ASSERT_NOT_REACHED();
128 return; 127 return;
129 } 128 }
130 int host_id = debugger_agent->webdevtools_agent()->host_id(); 129 int host_id = debugger_agent->webdevtools_agent()->host_id();
131 DCHECK(attached_agents_map_->get(host_id) == debugger_agent); 130 ASSERT(attached_agents_map_->get(host_id) == debugger_agent);
132 bool is_on_breakpoint = (FindAgentForCurrentV8Context() == debugger_agent); 131 bool is_on_breakpoint = (FindAgentForCurrentV8Context() == debugger_agent);
133 attached_agents_map_->remove(host_id); 132 attached_agents_map_->remove(host_id);
134 133
135 if (attached_agents_map_->isEmpty()) { 134 if (attached_agents_map_->isEmpty()) {
136 delete attached_agents_map_; 135 delete attached_agents_map_;
137 attached_agents_map_ = NULL; 136 attached_agents_map_ = NULL;
138 // Note that we do not empty handlers while in dispatch - we schedule 137 // Note that we do not empty handlers while in dispatch - we schedule
139 // continue and do removal once we are out of the dispatch. Also there is 138 // continue and do removal once we are out of the dispatch. Also there is
140 // no need to send continue command in this case since removing message 139 // no need to send continue command in this case since removing message
141 // handler will cause debugger unload and all breakpoints will be cleared. 140 // handler will cause debugger unload and all breakpoints will be cleared.
(...skipping 14 matching lines...) Expand all
156 // debugger was paused on a breakpoint(as long as there are other 155 // debugger was paused on a breakpoint(as long as there are other
157 // attached agents v8 will wait for explicit'continue' message). 156 // attached agents v8 will wait for explicit'continue' message).
158 SendContinueCommandToV8(); 157 SendContinueCommandToV8();
159 } 158 }
160 } 159 }
161 } 160 }
162 161
163 // static 162 // static
164 void DebuggerAgentManager::DebugBreak(DebuggerAgentImpl* debugger_agent) { 163 void DebuggerAgentManager::DebugBreak(DebuggerAgentImpl* debugger_agent) {
165 #if USE(V8) 164 #if USE(V8)
166 DCHECK(DebuggerAgentForHostId(debugger_agent->webdevtools_agent()->host_id()) 165 ASSERT(DebuggerAgentForHostId(debugger_agent->webdevtools_agent()->host_id())
167 == debugger_agent); 166 == debugger_agent);
168 if (in_utility_context_) { 167 if (in_utility_context_) {
169 debug_break_delayed_ = true; 168 debug_break_delayed_ = true;
170 } else { 169 } else {
171 v8::Debug::DebugBreak(); 170 v8::Debug::DebugBreak();
172 } 171 }
173 #endif 172 #endif
174 } 173 }
175 174
176 // static 175 // static
(...skipping 12 matching lines...) Expand all
189 DebuggerAgentImpl* debugger_agent = 188 DebuggerAgentImpl* debugger_agent =
190 DebuggerAgentForHostId(wrapper->caller_id()); 189 DebuggerAgentForHostId(wrapper->caller_id());
191 if (debugger_agent) { 190 if (debugger_agent) {
192 debugger_agent->DebuggerOutput(out); 191 debugger_agent->DebuggerOutput(out);
193 } else if (!message.WillStartRunning()) { 192 } else if (!message.WillStartRunning()) {
194 // Autocontinue execution if there is no handler. 193 // Autocontinue execution if there is no handler.
195 SendContinueCommandToV8(); 194 SendContinueCommandToV8();
196 } 195 }
197 return; 196 return;
198 } // Otherwise it's an event message. 197 } // Otherwise it's an event message.
199 DCHECK(message.IsEvent()); 198 ASSERT(message.IsEvent());
200 199
201 // Ignore unsupported event types. 200 // Ignore unsupported event types.
202 if (message.GetEvent() != v8::AfterCompile && 201 if (message.GetEvent() != v8::AfterCompile &&
203 message.GetEvent() != v8::Break && 202 message.GetEvent() != v8::Break &&
204 message.GetEvent() != v8::Exception) { 203 message.GetEvent() != v8::Exception) {
205 return; 204 return;
206 } 205 }
207 206
208 v8::Handle<v8::Context> context = message.GetEventContext(); 207 v8::Handle<v8::Context> context = message.GetEventContext();
209 // If the context is from one of the inpected tabs it should have its context 208 // If the context is from one of the inpected tabs it should have its context
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 } 246 }
248 247
249 // static 248 // static
250 void DebuggerAgentManager::SetMessageLoopDispatchHandler( 249 void DebuggerAgentManager::SetMessageLoopDispatchHandler(
251 WebDevToolsAgent::MessageLoopDispatchHandler handler) { 250 WebDevToolsAgent::MessageLoopDispatchHandler handler) {
252 message_loop_dispatch_handler_ = handler; 251 message_loop_dispatch_handler_ = handler;
253 } 252 }
254 253
255 // static 254 // static
256 void DebuggerAgentManager::SetHostId(WebFrameImpl* webframe, int host_id) { 255 void DebuggerAgentManager::SetHostId(WebFrameImpl* webframe, int host_id) {
257 DCHECK(host_id > 0); 256 ASSERT(host_id > 0);
258 WebCore::V8Proxy* proxy = WebCore::V8Proxy::retrieve(webframe->frame()); 257 WebCore::V8Proxy* proxy = WebCore::V8Proxy::retrieve(webframe->frame());
259 if (proxy) { 258 if (proxy) {
260 proxy->setContextDebugId(host_id); 259 proxy->setContextDebugId(host_id);
261 } 260 }
262 } 261 }
263 262
264 // static 263 // static
265 void DebuggerAgentManager::OnWebViewClosed(WebViewImpl* webview) { 264 void DebuggerAgentManager::OnWebViewClosed(WebViewImpl* webview) {
266 if (page_deferrers_.contains(webview)) { 265 if (page_deferrers_.contains(webview)) {
267 delete page_deferrers_.get(webview); 266 delete page_deferrers_.get(webview);
(...skipping 22 matching lines...) Expand all
290 String continue_cmd( 289 String continue_cmd(
291 "{\"seq\":1,\"type\":\"request\",\"command\":\"continue\"}"); 290 "{\"seq\":1,\"type\":\"request\",\"command\":\"continue\"}");
292 SendCommandToV8(continue_cmd, new CallerIdWrapper()); 291 SendCommandToV8(continue_cmd, new CallerIdWrapper());
293 } 292 }
294 293
295 // static 294 // static
296 DebuggerAgentImpl* DebuggerAgentManager::FindAgentForCurrentV8Context() { 295 DebuggerAgentImpl* DebuggerAgentManager::FindAgentForCurrentV8Context() {
297 if (!attached_agents_map_) { 296 if (!attached_agents_map_) {
298 return NULL; 297 return NULL;
299 } 298 }
300 DCHECK(!attached_agents_map_->isEmpty()); 299 ASSERT(!attached_agents_map_->isEmpty());
301 300
302 WebCore::Frame* frame = WebCore::V8Proxy::retrieveFrameForEnteredContext(); 301 WebCore::Frame* frame = WebCore::V8Proxy::retrieveFrameForEnteredContext();
303 if (!frame) { 302 if (!frame) {
304 return NULL; 303 return NULL;
305 } 304 }
306 WebCore::Page* page = frame->page(); 305 WebCore::Page* page = frame->page();
307 for (AttachedAgentsMap::iterator it = attached_agents_map_->begin(); 306 for (AttachedAgentsMap::iterator it = attached_agents_map_->begin();
308 it != attached_agents_map_->end(); ++it) { 307 it != attached_agents_map_->end(); ++it) {
309 if (it->second->GetPage() == page) { 308 if (it->second->GetPage() == page) {
310 return it->second; 309 return it->second;
311 } 310 }
312 } 311 }
313 return NULL; 312 return NULL;
314 } 313 }
315 314
316 // static 315 // static
317 DebuggerAgentImpl* DebuggerAgentManager::DebuggerAgentForHostId(int host_id) { 316 DebuggerAgentImpl* DebuggerAgentManager::DebuggerAgentForHostId(int host_id) {
318 if (!attached_agents_map_) { 317 if (!attached_agents_map_) {
319 return NULL; 318 return NULL;
320 } 319 }
321 return attached_agents_map_->get(host_id); 320 return attached_agents_map_->get(host_id);
322 } 321 }
OLDNEW
« no previous file with comments | « webkit/glue/devtools/debugger_agent_manager.h ('k') | webkit/glue/devtools/devtools_rpc.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698