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 |