OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/browser/debugger/render_view_devtools_agent_host.h" | 5 #include "content/browser/debugger/render_view_devtools_agent_host.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/lazy_instance.h" | |
8 #include "content/browser/debugger/devtools_manager.h" | 9 #include "content/browser/debugger/devtools_manager.h" |
9 #include "content/browser/debugger/render_view_devtools_agent_host.h" | 10 #include "content/browser/debugger/render_view_devtools_agent_host.h" |
10 #include "content/browser/renderer_host/render_process_host.h" | 11 #include "content/browser/renderer_host/render_process_host.h" |
11 #include "content/browser/renderer_host/render_view_host.h" | 12 #include "content/browser/renderer_host/render_view_host.h" |
12 #include "content/browser/site_instance.h" | 13 #include "content/browser/site_instance.h" |
13 #include "content/browser/tab_contents/tab_contents.h" | 14 #include "content/browser/tab_contents/tab_contents.h" |
14 #include "content/common/devtools_messages.h" | 15 #include "content/common/devtools_messages.h" |
15 #include "content/public/browser/content_browser_client.h" | 16 #include "content/public/browser/content_browser_client.h" |
16 #include "content/public/browser/notification_service.h" | 17 #include "content/public/browser/notification_service.h" |
17 #include "content/public/browser/notification_types.h" | 18 #include "content/public/browser/notification_types.h" |
18 | 19 |
19 RenderViewDevToolsAgentHost::Instances RenderViewDevToolsAgentHost::instances_; | 20 typedef std::map<RenderViewHost*, RenderViewDevToolsAgentHost*> Instances; |
21 | |
22 namespace { | |
23 base::LazyInstance<Instances, | |
24 base::LeakyLazyInstanceTraits<Instances> > | |
25 instances_(base::LINKER_INITIALIZED); | |
Mark Mentovai
2011/11/07 22:34:15
This should not be named instances_ now.
Nico
2011/11/07 23:29:21
Done.
| |
26 } // namespace | |
20 | 27 |
21 DevToolsAgentHost* RenderViewDevToolsAgentHost::FindFor( | 28 DevToolsAgentHost* RenderViewDevToolsAgentHost::FindFor( |
22 RenderViewHost* rvh) { | 29 RenderViewHost* rvh) { |
23 Instances::iterator it = instances_.find(rvh); | 30 Instances::iterator it = instances_.Get().find(rvh); |
24 if (it != instances_.end()) | 31 if (it != instances_.Get().end()) |
25 return it->second; | 32 return it->second; |
26 return new RenderViewDevToolsAgentHost(rvh); | 33 return new RenderViewDevToolsAgentHost(rvh); |
27 } | 34 } |
28 | 35 |
29 bool RenderViewDevToolsAgentHost::IsDebuggerAttached( | 36 bool RenderViewDevToolsAgentHost::IsDebuggerAttached( |
30 TabContents* tab_contents) { | 37 TabContents* tab_contents) { |
31 DevToolsManager* devtools_manager = DevToolsManager::GetInstance(); | 38 DevToolsManager* devtools_manager = DevToolsManager::GetInstance(); |
32 if (!devtools_manager) | 39 if (!devtools_manager) |
33 return false; | 40 return false; |
34 RenderViewHostDelegate* delegate = tab_contents; | 41 RenderViewHostDelegate* delegate = tab_contents; |
35 for (Instances::iterator it = instances_.begin(); | 42 for (Instances::iterator it = instances_.Get().begin(); |
36 it != instances_.end(); ++it) { | 43 it != instances_.Get().end(); ++it) { |
37 if (it->first->delegate() != delegate) | 44 if (it->first->delegate() != delegate) |
38 continue; | 45 continue; |
39 if (devtools_manager->GetDevToolsClientHostFor(it->second)) | 46 if (devtools_manager->GetDevToolsClientHostFor(it->second)) |
40 return true; | 47 return true; |
41 } | 48 } |
42 return false; | 49 return false; |
43 } | 50 } |
44 | 51 |
45 RenderViewDevToolsAgentHost::RenderViewDevToolsAgentHost(RenderViewHost* rvh) | 52 RenderViewDevToolsAgentHost::RenderViewDevToolsAgentHost(RenderViewHost* rvh) |
46 : RenderViewHostObserver(rvh), | 53 : RenderViewHostObserver(rvh), |
47 render_view_host_(rvh) { | 54 render_view_host_(rvh) { |
48 instances_[rvh] = this; | 55 instances_.Get()[rvh] = this; |
49 } | 56 } |
50 | 57 |
51 void RenderViewDevToolsAgentHost::SendMessageToAgent(IPC::Message* msg) { | 58 void RenderViewDevToolsAgentHost::SendMessageToAgent(IPC::Message* msg) { |
52 msg->set_routing_id(render_view_host_->routing_id()); | 59 msg->set_routing_id(render_view_host_->routing_id()); |
53 render_view_host_->Send(msg); | 60 render_view_host_->Send(msg); |
54 } | 61 } |
55 | 62 |
56 void RenderViewDevToolsAgentHost::NotifyClientClosing() { | 63 void RenderViewDevToolsAgentHost::NotifyClientClosing() { |
57 content::NotificationService::current()->Notify( | 64 content::NotificationService::current()->Notify( |
58 content::NOTIFICATION_DEVTOOLS_WINDOW_CLOSING, | 65 content::NOTIFICATION_DEVTOOLS_WINDOW_CLOSING, |
59 content::Source<content::BrowserContext>( | 66 content::Source<content::BrowserContext>( |
60 render_view_host_->site_instance()->GetProcess()->browser_context()), | 67 render_view_host_->site_instance()->GetProcess()->browser_context()), |
61 content::Details<RenderViewHost>(render_view_host_)); | 68 content::Details<RenderViewHost>(render_view_host_)); |
62 } | 69 } |
63 | 70 |
64 int RenderViewDevToolsAgentHost::GetRenderProcessId() { | 71 int RenderViewDevToolsAgentHost::GetRenderProcessId() { |
65 return render_view_host_->process()->id(); | 72 return render_view_host_->process()->id(); |
66 } | 73 } |
67 | 74 |
68 RenderViewDevToolsAgentHost::~RenderViewDevToolsAgentHost() { | 75 RenderViewDevToolsAgentHost::~RenderViewDevToolsAgentHost() { |
69 instances_.erase(render_view_host_); | 76 instances_.Get().erase(render_view_host_); |
70 } | 77 } |
71 | 78 |
72 void RenderViewDevToolsAgentHost::RenderViewHostDestroyed(RenderViewHost* rvh) { | 79 void RenderViewDevToolsAgentHost::RenderViewHostDestroyed(RenderViewHost* rvh) { |
73 NotifyCloseListener(); | 80 NotifyCloseListener(); |
74 delete this; | 81 delete this; |
75 } | 82 } |
76 | 83 |
77 bool RenderViewDevToolsAgentHost::OnMessageReceived( | 84 bool RenderViewDevToolsAgentHost::OnMessageReceived( |
78 const IPC::Message& message) { | 85 const IPC::Message& message) { |
79 bool handled = true; | 86 bool handled = true; |
(...skipping 21 matching lines...) Expand all Loading... | |
101 } | 108 } |
102 | 109 |
103 void RenderViewDevToolsAgentHost::OnClearBrowserCache() { | 110 void RenderViewDevToolsAgentHost::OnClearBrowserCache() { |
104 content::GetContentClient()->browser()->ClearCache(render_view_host_); | 111 content::GetContentClient()->browser()->ClearCache(render_view_host_); |
105 } | 112 } |
106 | 113 |
107 void RenderViewDevToolsAgentHost::OnClearBrowserCookies() { | 114 void RenderViewDevToolsAgentHost::OnClearBrowserCookies() { |
108 content::GetContentClient()->browser()->ClearCookies(render_view_host_); | 115 content::GetContentClient()->browser()->ClearCookies(render_view_host_); |
109 } | 116 } |
110 | 117 |
OLD | NEW |