| 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_agent.h" | 5 #include "content/renderer/devtools_agent.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 | 8 |
| 9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
| 10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 using WebKit::WebConsoleMessage; | 30 using WebKit::WebConsoleMessage; |
| 31 using WebKit::WebDevToolsAgent; | 31 using WebKit::WebDevToolsAgent; |
| 32 using WebKit::WebDevToolsAgentClient; | 32 using WebKit::WebDevToolsAgentClient; |
| 33 using WebKit::WebFrame; | 33 using WebKit::WebFrame; |
| 34 using WebKit::WebPoint; | 34 using WebKit::WebPoint; |
| 35 using WebKit::WebString; | 35 using WebKit::WebString; |
| 36 using WebKit::WebCString; | 36 using WebKit::WebCString; |
| 37 using WebKit::WebVector; | 37 using WebKit::WebVector; |
| 38 using WebKit::WebView; | 38 using WebKit::WebView; |
| 39 | 39 |
| 40 namespace content { |
| 41 |
| 40 namespace { | 42 namespace { |
| 41 | 43 |
| 42 class WebKitClientMessageLoopImpl | 44 class WebKitClientMessageLoopImpl |
| 43 : public WebDevToolsAgentClient::WebKitClientMessageLoop { | 45 : public WebDevToolsAgentClient::WebKitClientMessageLoop { |
| 44 public: | 46 public: |
| 45 WebKitClientMessageLoopImpl() : message_loop_(MessageLoop::current()) { } | 47 WebKitClientMessageLoopImpl() : message_loop_(MessageLoop::current()) { } |
| 46 virtual ~WebKitClientMessageLoopImpl() { | 48 virtual ~WebKitClientMessageLoopImpl() { |
| 47 message_loop_ = NULL; | 49 message_loop_ = NULL; |
| 48 } | 50 } |
| 49 virtual void run() { | 51 virtual void run() { |
| 50 MessageLoop::ScopedNestableTaskAllower allow(message_loop_); | 52 MessageLoop::ScopedNestableTaskAllower allow(message_loop_); |
| 51 message_loop_->Run(); | 53 message_loop_->Run(); |
| 52 } | 54 } |
| 53 virtual void quitNow() { | 55 virtual void quitNow() { |
| 54 message_loop_->QuitNow(); | 56 message_loop_->QuitNow(); |
| 55 } | 57 } |
| 56 private: | 58 private: |
| 57 MessageLoop* message_loop_; | 59 MessageLoop* message_loop_; |
| 58 }; | 60 }; |
| 59 | 61 |
| 60 typedef std::map<int, DevToolsAgent*> IdToAgentMap; | 62 typedef std::map<int, DevToolsAgent*> IdToAgentMap; |
| 61 base::LazyInstance<IdToAgentMap>::Leaky | 63 base::LazyInstance<IdToAgentMap>::Leaky |
| 62 g_agent_for_routing_id = LAZY_INSTANCE_INITIALIZER; | 64 g_agent_for_routing_id = LAZY_INSTANCE_INITIALIZER; |
| 63 | 65 |
| 64 } // namespace | 66 } // namespace |
| 65 | 67 |
| 66 DevToolsAgent::DevToolsAgent(RenderViewImpl* render_view) | 68 DevToolsAgent::DevToolsAgent(RenderViewImpl* render_view) |
| 67 : content::RenderViewObserver(render_view), | 69 : RenderViewObserver(render_view), is_attached_(false) { |
| 68 is_attached_(false) { | |
| 69 g_agent_for_routing_id.Get()[routing_id()] = this; | 70 g_agent_for_routing_id.Get()[routing_id()] = this; |
| 70 | 71 |
| 71 render_view->webview()->setDevToolsAgentClient(this); | 72 render_view->webview()->setDevToolsAgentClient(this); |
| 72 render_view->webview()->devToolsAgent()->setProcessId( | 73 render_view->webview()->devToolsAgent()->setProcessId( |
| 73 base::Process::Current().pid()); | 74 base::Process::Current().pid()); |
| 74 } | 75 } |
| 75 | 76 |
| 76 DevToolsAgent::~DevToolsAgent() { | 77 DevToolsAgent::~DevToolsAgent() { |
| 77 g_agent_for_routing_id.Get().erase(routing_id()); | 78 g_agent_for_routing_id.Get().erase(routing_id()); |
| 78 } | 79 } |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 182 } | 183 } |
| 183 | 184 |
| 184 void DevToolsAgent::OnInspectElement(int x, int y) { | 185 void DevToolsAgent::OnInspectElement(int x, int y) { |
| 185 WebDevToolsAgent* web_agent = GetWebAgent(); | 186 WebDevToolsAgent* web_agent = GetWebAgent(); |
| 186 if (web_agent) { | 187 if (web_agent) { |
| 187 web_agent->attach(); | 188 web_agent->attach(); |
| 188 web_agent->inspectElementAt(WebPoint(x, y)); | 189 web_agent->inspectElementAt(WebPoint(x, y)); |
| 189 } | 190 } |
| 190 } | 191 } |
| 191 | 192 |
| 192 void DevToolsAgent::OnAddMessageToConsole(content::ConsoleMessageLevel level, | 193 void DevToolsAgent::OnAddMessageToConsole(ConsoleMessageLevel level, |
| 193 const std::string& message) { | 194 const std::string& message) { |
| 194 WebView* web_view = render_view()->GetWebView(); | 195 WebView* web_view = render_view()->GetWebView(); |
| 195 if (!web_view) | 196 if (!web_view) |
| 196 return; | 197 return; |
| 197 | 198 |
| 198 WebFrame* main_frame = web_view-> mainFrame(); | 199 WebFrame* main_frame = web_view-> mainFrame(); |
| 199 if (!main_frame) | 200 if (!main_frame) |
| 200 return; | 201 return; |
| 201 | 202 |
| 202 WebConsoleMessage::Level target_level = WebConsoleMessage::LevelLog; | 203 WebConsoleMessage::Level target_level = WebConsoleMessage::LevelLog; |
| 203 switch (level) { | 204 switch (level) { |
| 204 case content::CONSOLE_MESSAGE_LEVEL_TIP: | 205 case CONSOLE_MESSAGE_LEVEL_TIP: |
| 205 target_level = WebConsoleMessage::LevelTip; | 206 target_level = WebConsoleMessage::LevelTip; |
| 206 break; | 207 break; |
| 207 case content::CONSOLE_MESSAGE_LEVEL_LOG: | 208 case CONSOLE_MESSAGE_LEVEL_LOG: |
| 208 target_level = WebConsoleMessage::LevelLog; | 209 target_level = WebConsoleMessage::LevelLog; |
| 209 break; | 210 break; |
| 210 case content::CONSOLE_MESSAGE_LEVEL_WARNING: | 211 case CONSOLE_MESSAGE_LEVEL_WARNING: |
| 211 target_level = WebConsoleMessage::LevelWarning; | 212 target_level = WebConsoleMessage::LevelWarning; |
| 212 break; | 213 break; |
| 213 case content::CONSOLE_MESSAGE_LEVEL_ERROR: | 214 case CONSOLE_MESSAGE_LEVEL_ERROR: |
| 214 target_level = WebConsoleMessage::LevelError; | 215 target_level = WebConsoleMessage::LevelError; |
| 215 break; | 216 break; |
| 216 } | 217 } |
| 217 main_frame->addMessageToConsole( | 218 main_frame->addMessageToConsole( |
| 218 WebConsoleMessage(target_level, WebString::fromUTF8(message))); | 219 WebConsoleMessage(target_level, WebString::fromUTF8(message))); |
| 219 } | 220 } |
| 220 | 221 |
| 221 void DevToolsAgent::ContinueProgram() { | 222 void DevToolsAgent::ContinueProgram() { |
| 222 WebDevToolsAgent* web_agent = GetWebAgent(); | 223 WebDevToolsAgent* web_agent = GetWebAgent(); |
| 223 // TODO(pfeldman): rename didNavigate to continueProgram upstream. | 224 // TODO(pfeldman): rename didNavigate to continueProgram upstream. |
| 224 // That is in fact the purpose of the signal. | 225 // That is in fact the purpose of the signal. |
| 225 if (web_agent) | 226 if (web_agent) |
| 226 web_agent->didNavigate(); | 227 web_agent->didNavigate(); |
| 227 } | 228 } |
| 228 | 229 |
| 229 void DevToolsAgent::OnSetupDevToolsClient() { | 230 void DevToolsAgent::OnSetupDevToolsClient() { |
| 230 new DevToolsClient(static_cast<RenderViewImpl*>(render_view())); | 231 new DevToolsClient(static_cast<RenderViewImpl*>(render_view())); |
| 231 } | 232 } |
| 232 | 233 |
| 233 WebDevToolsAgent* DevToolsAgent::GetWebAgent() { | 234 WebDevToolsAgent* DevToolsAgent::GetWebAgent() { |
| 234 WebView* web_view = render_view()->GetWebView(); | 235 WebView* web_view = render_view()->GetWebView(); |
| 235 if (!web_view) | 236 if (!web_view) |
| 236 return NULL; | 237 return NULL; |
| 237 return web_view->devToolsAgent(); | 238 return web_view->devToolsAgent(); |
| 238 } | 239 } |
| 239 | 240 |
| 240 bool DevToolsAgent::IsAttached() { | 241 bool DevToolsAgent::IsAttached() { |
| 241 return is_attached_; | 242 return is_attached_; |
| 242 } | 243 } |
| 244 |
| 245 } // namespace content |
| OLD | NEW |