| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 "content/renderer/devtools/devtools_agent.h" | 5 #include "content/renderer/devtools/devtools_agent.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 | 8 |
| 9 #include "base/debug/trace_event.h" | 9 #include "base/debug/trace_event.h" |
| 10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 private: | 69 private: |
| 70 base::MessageLoop* message_loop_; | 70 base::MessageLoop* message_loop_; |
| 71 }; | 71 }; |
| 72 | 72 |
| 73 typedef std::map<int, DevToolsAgent*> IdToAgentMap; | 73 typedef std::map<int, DevToolsAgent*> IdToAgentMap; |
| 74 base::LazyInstance<IdToAgentMap>::Leaky | 74 base::LazyInstance<IdToAgentMap>::Leaky |
| 75 g_agent_for_routing_id = LAZY_INSTANCE_INITIALIZER; | 75 g_agent_for_routing_id = LAZY_INSTANCE_INITIALIZER; |
| 76 | 76 |
| 77 } // namespace | 77 } // namespace |
| 78 | 78 |
| 79 DevToolsAgent::DevToolsAgent(RenderViewImpl* render_view) | 79 DevToolsAgent::DevToolsAgent(RenderFrame* main_render_frame) |
| 80 : RenderViewObserver(render_view), | 80 : RenderFrameObserver(main_render_frame), |
| 81 is_attached_(false), | 81 is_attached_(false), |
| 82 is_devtools_client_(false), | 82 is_devtools_client_(false), |
| 83 gpu_route_id_(MSG_ROUTING_NONE), | 83 gpu_route_id_(MSG_ROUTING_NONE), |
| 84 paused_in_mouse_move_(false) { | 84 paused_in_mouse_move_(false), |
| 85 main_render_frame_(main_render_frame) { |
| 85 g_agent_for_routing_id.Get()[routing_id()] = this; | 86 g_agent_for_routing_id.Get()[routing_id()] = this; |
| 86 | 87 |
| 87 render_view->webview()->setDevToolsAgentClient(this); | 88 main_render_frame_->GetRenderView()->GetWebView()->setDevToolsAgentClient( |
| 89 this); |
| 88 } | 90 } |
| 89 | 91 |
| 90 DevToolsAgent::~DevToolsAgent() { | 92 DevToolsAgent::~DevToolsAgent() { |
| 91 g_agent_for_routing_id.Get().erase(routing_id()); | 93 g_agent_for_routing_id.Get().erase(routing_id()); |
| 92 resetTraceEventCallback(); | 94 resetTraceEventCallback(); |
| 93 } | 95 } |
| 94 | 96 |
| 95 // Called on the Renderer thread. | 97 // Called on the Renderer thread. |
| 96 bool DevToolsAgent::OnMessageReceived(const IPC::Message& message) { | 98 bool DevToolsAgent::OnMessageReceived(const IPC::Message& message) { |
| 97 bool handled = true; | 99 bool handled = true; |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 const blink::WebString& state) { | 147 const blink::WebString& state) { |
| 146 Send(new DevToolsHostMsg_SaveAgentRuntimeState(routing_id(), state.utf8())); | 148 Send(new DevToolsHostMsg_SaveAgentRuntimeState(routing_id(), state.utf8())); |
| 147 } | 149 } |
| 148 | 150 |
| 149 blink::WebDevToolsAgentClient::WebKitClientMessageLoop* | 151 blink::WebDevToolsAgentClient::WebKitClientMessageLoop* |
| 150 DevToolsAgent::createClientMessageLoop() { | 152 DevToolsAgent::createClientMessageLoop() { |
| 151 return new WebKitClientMessageLoopImpl(); | 153 return new WebKitClientMessageLoopImpl(); |
| 152 } | 154 } |
| 153 | 155 |
| 154 void DevToolsAgent::willEnterDebugLoop() { | 156 void DevToolsAgent::willEnterDebugLoop() { |
| 155 RenderViewImpl* impl = static_cast<RenderViewImpl*>(render_view()); | 157 paused_in_mouse_move_ = |
| 156 paused_in_mouse_move_ = impl->SendAckForMouseMoveFromDebugger(); | 158 GetRenderViewImpl()->SendAckForMouseMoveFromDebugger(); |
| 157 } | 159 } |
| 158 | 160 |
| 159 void DevToolsAgent::didExitDebugLoop() { | 161 void DevToolsAgent::didExitDebugLoop() { |
| 160 RenderViewImpl* impl = static_cast<RenderViewImpl*>(render_view()); | |
| 161 if (paused_in_mouse_move_) { | 162 if (paused_in_mouse_move_) { |
| 162 impl->IgnoreAckForMouseMoveFromDebugger(); | 163 GetRenderViewImpl()->IgnoreAckForMouseMoveFromDebugger(); |
| 163 paused_in_mouse_move_ = false; | 164 paused_in_mouse_move_ = false; |
| 164 } | 165 } |
| 165 } | 166 } |
| 166 | 167 |
| 167 void DevToolsAgent::resetTraceEventCallback() | 168 void DevToolsAgent::resetTraceEventCallback() |
| 168 { | 169 { |
| 169 TraceLog::GetInstance()->SetEventCallbackDisabled(); | 170 TraceLog::GetInstance()->SetEventCallbackDisabled(); |
| 170 base::subtle::NoBarrier_Store(&event_callback_, 0); | 171 base::subtle::NoBarrier_Store(&event_callback_, 0); |
| 171 } | 172 } |
| 172 | 173 |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 251 const GpuTaskInfo& task = tasks[i]; | 252 const GpuTaskInfo& task = tasks[i]; |
| 252 WebDevToolsAgent::GPUEvent event( | 253 WebDevToolsAgent::GPUEvent event( |
| 253 task.timestamp, task.phase, task.foreign, task.gpu_memory_used_bytes); | 254 task.timestamp, task.phase, task.foreign, task.gpu_memory_used_bytes); |
| 254 event.limitGPUMemoryBytes = task.gpu_memory_limit_bytes; | 255 event.limitGPUMemoryBytes = task.gpu_memory_limit_bytes; |
| 255 web_agent->processGPUEvent(event); | 256 web_agent->processGPUEvent(event); |
| 256 } | 257 } |
| 257 } | 258 } |
| 258 | 259 |
| 259 void DevToolsAgent::enableDeviceEmulation( | 260 void DevToolsAgent::enableDeviceEmulation( |
| 260 const blink::WebDeviceEmulationParams& params) { | 261 const blink::WebDeviceEmulationParams& params) { |
| 261 RenderViewImpl* impl = static_cast<RenderViewImpl*>(render_view()); | 262 GetRenderViewImpl()->EnableScreenMetricsEmulation(params); |
| 262 impl->EnableScreenMetricsEmulation(params); | |
| 263 } | 263 } |
| 264 | 264 |
| 265 void DevToolsAgent::disableDeviceEmulation() { | 265 void DevToolsAgent::disableDeviceEmulation() { |
| 266 RenderViewImpl* impl = static_cast<RenderViewImpl*>(render_view()); | 266 GetRenderViewImpl()->DisableScreenMetricsEmulation(); |
| 267 impl->DisableScreenMetricsEmulation(); | |
| 268 } | 267 } |
| 269 | 268 |
| 270 // static | 269 // static |
| 271 DevToolsAgent* DevToolsAgent::FromRoutingId(int routing_id) { | 270 DevToolsAgent* DevToolsAgent::FromRoutingId(int routing_id) { |
| 272 IdToAgentMap::iterator it = g_agent_for_routing_id.Get().find(routing_id); | 271 IdToAgentMap::iterator it = g_agent_for_routing_id.Get().find(routing_id); |
| 273 if (it != g_agent_for_routing_id.Get().end()) { | 272 if (it != g_agent_for_routing_id.Get().end()) { |
| 274 return it->second; | 273 return it->second; |
| 275 } | 274 } |
| 276 return NULL; | 275 return NULL; |
| 277 } | 276 } |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 314 WebDevToolsAgent* web_agent = GetWebAgent(); | 313 WebDevToolsAgent* web_agent = GetWebAgent(); |
| 315 if (web_agent) { | 314 if (web_agent) { |
| 316 web_agent->attach(WebString::fromUTF8(host_id)); | 315 web_agent->attach(WebString::fromUTF8(host_id)); |
| 317 web_agent->inspectElementAt(WebPoint(x, y)); | 316 web_agent->inspectElementAt(WebPoint(x, y)); |
| 318 is_attached_ = true; | 317 is_attached_ = true; |
| 319 } | 318 } |
| 320 } | 319 } |
| 321 | 320 |
| 322 void DevToolsAgent::OnAddMessageToConsole(ConsoleMessageLevel level, | 321 void DevToolsAgent::OnAddMessageToConsole(ConsoleMessageLevel level, |
| 323 const std::string& message) { | 322 const std::string& message) { |
| 324 WebView* web_view = render_view()->GetWebView(); | 323 WebView* web_view = main_render_frame_->GetRenderView()->GetWebView(); |
| 325 if (!web_view) | 324 if (!web_view) |
| 326 return; | 325 return; |
| 327 | 326 |
| 328 WebFrame* main_frame = web_view->mainFrame(); | 327 WebFrame* main_frame = web_view->mainFrame(); |
| 329 if (!main_frame) | 328 if (!main_frame) |
| 330 return; | 329 return; |
| 331 | 330 |
| 332 WebConsoleMessage::Level target_level = WebConsoleMessage::LevelLog; | 331 WebConsoleMessage::Level target_level = WebConsoleMessage::LevelLog; |
| 333 switch (level) { | 332 switch (level) { |
| 334 case CONSOLE_MESSAGE_LEVEL_DEBUG: | 333 case CONSOLE_MESSAGE_LEVEL_DEBUG: |
| (...skipping 17 matching lines...) Expand all Loading... |
| 352 WebDevToolsAgent* web_agent = GetWebAgent(); | 351 WebDevToolsAgent* web_agent = GetWebAgent(); |
| 353 if (web_agent) | 352 if (web_agent) |
| 354 web_agent->continueProgram(); | 353 web_agent->continueProgram(); |
| 355 } | 354 } |
| 356 | 355 |
| 357 void DevToolsAgent::OnSetupDevToolsClient() { | 356 void DevToolsAgent::OnSetupDevToolsClient() { |
| 358 // We only want to register once per render view. | 357 // We only want to register once per render view. |
| 359 if (is_devtools_client_) | 358 if (is_devtools_client_) |
| 360 return; | 359 return; |
| 361 is_devtools_client_ = true; | 360 is_devtools_client_ = true; |
| 362 new DevToolsClient(static_cast<RenderViewImpl*>(render_view())); | 361 new DevToolsClient(main_render_frame_); |
| 363 } | 362 } |
| 364 | 363 |
| 365 WebDevToolsAgent* DevToolsAgent::GetWebAgent() { | 364 WebDevToolsAgent* DevToolsAgent::GetWebAgent() { |
| 366 WebView* web_view = render_view()->GetWebView(); | 365 WebView* web_view = main_render_frame_->GetRenderView()->GetWebView(); |
| 367 if (!web_view) | 366 if (!web_view) |
| 368 return NULL; | 367 return NULL; |
| 369 return web_view->devToolsAgent(); | 368 return web_view->devToolsAgent(); |
| 370 } | 369 } |
| 371 | 370 |
| 371 RenderViewImpl* DevToolsAgent::GetRenderViewImpl() { |
| 372 return static_cast<RenderViewImpl*>(main_render_frame_->GetRenderView()); |
| 373 } |
| 374 |
| 372 bool DevToolsAgent::IsAttached() { | 375 bool DevToolsAgent::IsAttached() { |
| 373 return is_attached_; | 376 return is_attached_; |
| 374 } | 377 } |
| 375 | 378 |
| 376 } // namespace content | 379 } // namespace content |
| OLD | NEW |