Chromium Code Reviews| Index: content/browser/debugger/devtools_manager_impl.cc |
| diff --git a/content/browser/debugger/devtools_manager.cc b/content/browser/debugger/devtools_manager_impl.cc |
| similarity index 71% |
| rename from content/browser/debugger/devtools_manager.cc |
| rename to content/browser/debugger/devtools_manager_impl.cc |
| index 11b661f95c76a0bf69b400d8d3b8ba9a6a81729f..bcd74174d391f1cfd58f2598033f5aa770d4f4db 100644 |
| --- a/content/browser/debugger/devtools_manager.cc |
| +++ b/content/browser/debugger/devtools_manager_impl.cc |
| @@ -2,7 +2,7 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#include "content/browser/debugger/devtools_manager.h" |
| +#include "content/browser/debugger/devtools_manager_impl.h" |
| #include <vector> |
| @@ -10,27 +10,42 @@ |
| #include "base/message_loop.h" |
| #include "content/browser/browsing_instance.h" |
| #include "content/browser/child_process_security_policy.h" |
| -#include "content/browser/debugger/devtools_client_host.h" |
| #include "content/browser/debugger/devtools_netlog_observer.h" |
| #include "content/browser/debugger/render_view_devtools_agent_host.h" |
| #include "content/browser/renderer_host/render_view_host.h" |
| #include "content/browser/tab_contents/tab_contents.h" |
| #include "content/public/browser/browser_thread.h" |
| -#include "content/public/browser/content_browser_client.h" |
| +#include "content/public/browser/devtools/devtools_client_host.h" |
| +#include "content/public/browser/devtools/devtools_agent_host_registry.h" |
| +#include "content/public/browser/notification_service.h" |
| +#include "content/public/browser/notification_types.h" |
| #include "googleurl/src/gurl.h" |
| using content::BrowserThread; |
| +using content::DevToolsAgentHost; |
| +using content::DevToolsAgentHostRegistry; |
|
jam
2011/11/21 21:16:04
nit: these using statements aren't needed anymore?
yurys
2011/11/30 15:49:43
Done.
|
| + |
| +namespace content { |
| // static |
| DevToolsManager* DevToolsManager::GetInstance() { |
| - return content::GetContentClient()->browser()->GetDevToolsManager(); |
| + return DevToolsManagerImpl::GetInstance(); |
| } |
| -DevToolsManager::DevToolsManager() |
| +// static |
| +DevToolsManagerImpl* DevToolsManagerImpl::GetInstance() { |
| + return Singleton<DevToolsManagerImpl, |
| + LeakySingletonTraits<DevToolsManagerImpl> >::get(); |
| +} |
| + |
| +DevToolsManagerImpl::DevToolsManagerImpl() |
| : last_orphan_cookie_(0) { |
| + notification_registrar_.Add(this, |
| + content::NOTIFICATION_MAIN_MESSAGE_LOOP_EXITING, |
| + content::NotificationService::AllSources()); |
| } |
| -DevToolsManager::~DevToolsManager() { |
| +DevToolsManagerImpl::~DevToolsManagerImpl() { |
| DCHECK(agent_to_client_host_.empty()); |
| DCHECK(client_to_agent_host_.empty()); |
| // By the time we destroy devtools manager, all orphan client hosts should |
| @@ -38,14 +53,7 @@ DevToolsManager::~DevToolsManager() { |
| DCHECK(orphan_client_hosts_.empty()); |
| } |
| -DevToolsClientHost* DevToolsManager::GetDevToolsClientHostFor( |
| - RenderViewHost* inspected_rvh) { |
| - DevToolsAgentHost* agent_host = RenderViewDevToolsAgentHost::FindFor( |
| - inspected_rvh); |
| - return GetDevToolsClientHostFor(agent_host); |
| -} |
| - |
| -DevToolsClientHost* DevToolsManager::GetDevToolsClientHostFor( |
| +DevToolsClientHost* DevToolsManagerImpl::GetDevToolsClientHostFor( |
| DevToolsAgentHost* agent_host) { |
| AgentToClientHostMap::iterator it = agent_to_client_host_.find(agent_host); |
| if (it != agent_to_client_host_.end()) |
| @@ -53,16 +61,7 @@ DevToolsClientHost* DevToolsManager::GetDevToolsClientHostFor( |
| return NULL; |
| } |
| -void DevToolsManager::RegisterDevToolsClientHostFor( |
| - RenderViewHost* inspected_rvh, |
| - DevToolsClientHost* client_host) { |
| - DCHECK(!GetDevToolsClientHostFor(inspected_rvh)); |
| - DevToolsAgentHost* agent_host = RenderViewDevToolsAgentHost::FindFor( |
| - inspected_rvh); |
| - RegisterDevToolsClientHostFor(agent_host, client_host); |
| -} |
| - |
| -void DevToolsManager::RegisterDevToolsClientHostFor( |
| +void DevToolsManagerImpl::RegisterDevToolsClientHostFor( |
| DevToolsAgentHost* agent_host, |
| DevToolsClientHost* client_host) { |
| BindClientHost(agent_host, client_host); |
| @@ -70,7 +69,7 @@ void DevToolsManager::RegisterDevToolsClientHostFor( |
| client_host->set_close_listener(this); |
| } |
| -bool DevToolsManager::ForwardToDevToolsAgent(DevToolsClientHost* from, |
| +bool DevToolsManagerImpl::ForwardToDevToolsAgent(DevToolsClientHost* from, |
| const IPC::Message& message) { |
| DevToolsAgentHost* agent_host = GetAgentHost(from); |
| if (!agent_host) |
| @@ -80,7 +79,7 @@ bool DevToolsManager::ForwardToDevToolsAgent(DevToolsClientHost* from, |
| return true; |
| } |
| -void DevToolsManager::ForwardToDevToolsClient(DevToolsAgentHost* agent_host, |
| +void DevToolsManagerImpl::ForwardToDevToolsClient(DevToolsAgentHost* agent_host, |
| const IPC::Message& message) { |
| DevToolsClientHost* client_host = GetDevToolsClientHostFor(agent_host); |
| if (!client_host) { |
| @@ -91,12 +90,12 @@ void DevToolsManager::ForwardToDevToolsClient(DevToolsAgentHost* agent_host, |
| client_host->SendMessageToClient(message); |
| } |
| -void DevToolsManager::SaveAgentRuntimeState(DevToolsAgentHost* agent_host, |
| +void DevToolsManagerImpl::SaveAgentRuntimeState(DevToolsAgentHost* agent_host, |
| const std::string& state) { |
| agent_runtime_states_[agent_host] = state; |
| } |
| -void DevToolsManager::ClientHostClosing(DevToolsClientHost* client_host) { |
| +void DevToolsManagerImpl::ClientHostClosing(DevToolsClientHost* client_host) { |
| DevToolsAgentHost* agent_host = GetAgentHost(client_host); |
| if (!agent_host) { |
| // It might be in the list of orphan client hosts, remove it from there. |
| @@ -115,11 +114,17 @@ void DevToolsManager::ClientHostClosing(DevToolsClientHost* client_host) { |
| UnbindClientHost(agent_host, client_host); |
| } |
| -void DevToolsManager::AgentHostClosing(DevToolsAgentHost* agent_host) { |
| +void DevToolsManagerImpl::AgentHostClosing(DevToolsAgentHost* agent_host) { |
| UnregisterDevToolsClientHostFor(agent_host); |
| } |
| -DevToolsAgentHost* DevToolsManager::GetAgentHost( |
| +void DevToolsManagerImpl::Observe(int type, |
| + const content::NotificationSource& source, |
| + const content::NotificationDetails& details) { |
| + delete this; |
|
jam
2011/11/21 21:16:04
why do you care about deleting this object at shut
yurys
2011/11/30 15:49:43
Removed this method and all the stuff related to t
|
| +} |
| + |
| +DevToolsAgentHost* DevToolsManagerImpl::GetAgentHost( |
| DevToolsClientHost* client_host) { |
| ClientHostToInspectedRvhMap::iterator it = |
| client_to_agent_host_.find(client_host); |
| @@ -128,14 +133,7 @@ DevToolsAgentHost* DevToolsManager::GetAgentHost( |
| return NULL; |
| } |
| -void DevToolsManager::UnregisterDevToolsClientHostFor( |
| - RenderViewHost* inspected_rvh) { |
| - DevToolsAgentHost* agent_host = RenderViewDevToolsAgentHost::FindFor( |
| - inspected_rvh); |
| - UnregisterDevToolsClientHostFor(agent_host); |
| -} |
| - |
| -void DevToolsManager::UnregisterDevToolsClientHostFor( |
| +void DevToolsManagerImpl::UnregisterDevToolsClientHostFor( |
| DevToolsAgentHost* agent_host) { |
| DevToolsClientHost* client_host = GetDevToolsClientHostFor(agent_host); |
| if (!client_host) |
| @@ -144,7 +142,7 @@ void DevToolsManager::UnregisterDevToolsClientHostFor( |
| client_host->InspectedTabClosing(); |
| } |
| -void DevToolsManager::OnNavigatingToPendingEntry(RenderViewHost* rvh, |
| +void DevToolsManagerImpl::OnNavigatingToPendingEntry(RenderViewHost* rvh, |
| RenderViewHost* dest_rvh, |
| const GURL& gurl) { |
| if (rvh == dest_rvh && rvh->render_view_termination_status() == |
| @@ -155,12 +153,15 @@ void DevToolsManager::OnNavigatingToPendingEntry(RenderViewHost* rvh, |
| // Navigating to URL in the inspected window. |
| AttachClientHost(cookie, dest_rvh); |
| - DevToolsClientHost* client_host = GetDevToolsClientHostFor(dest_rvh); |
| + DevToolsAgentHost* dest_agent_host = |
| + DevToolsAgentHostRegistry::GetDevToolsAgentHost(dest_rvh); |
| + DevToolsClientHost* client_host = GetDevToolsClientHostFor( |
| + dest_agent_host); |
| client_host->FrameNavigating(gurl.spec()); |
| } |
| } |
| -void DevToolsManager::OnCancelPendingNavigation(RenderViewHost* pending, |
| +void DevToolsManagerImpl::OnCancelPendingNavigation(RenderViewHost* pending, |
| RenderViewHost* current) { |
| int cookie = DetachClientHost(pending); |
| if (cookie != -1) { |
| @@ -169,10 +170,15 @@ void DevToolsManager::OnCancelPendingNavigation(RenderViewHost* pending, |
| } |
| } |
| -void DevToolsManager::TabReplaced(TabContents* old_tab, |
| +void DevToolsManagerImpl::TabReplaced(TabContents* old_tab, |
| TabContents* new_tab) { |
| RenderViewHost* old_rvh = old_tab->render_view_host(); |
| - DevToolsClientHost* client_host = GetDevToolsClientHostFor(old_rvh); |
| + if (!DevToolsAgentHostRegistry::HasDevToolsAgentHost(old_rvh)) |
| + return; |
| + |
| + DevToolsAgentHost* old_agent_host = |
| + DevToolsAgentHostRegistry::GetDevToolsAgentHost(old_rvh); |
| + DevToolsClientHost* client_host = GetDevToolsClientHostFor(old_agent_host); |
| if (!client_host) |
| return; // Didn't know about old_tab. |
| int cookie = DetachClientHost(old_rvh); |
| @@ -183,13 +189,13 @@ void DevToolsManager::TabReplaced(TabContents* old_tab, |
| AttachClientHost(cookie, new_tab->render_view_host()); |
| } |
| -int DevToolsManager::DetachClientHost(RenderViewHost* from_rvh) { |
| - DevToolsAgentHost* agent_host = RenderViewDevToolsAgentHost::FindFor( |
| - from_rvh); |
| +int DevToolsManagerImpl::DetachClientHost(RenderViewHost* from_rvh) { |
| + DevToolsAgentHost* agent_host = |
| + DevToolsAgentHostRegistry::GetDevToolsAgentHost(from_rvh); |
| return DetachClientHost(agent_host); |
| } |
| -int DevToolsManager::DetachClientHost(DevToolsAgentHost* agent_host) { |
| +int DevToolsManagerImpl::DetachClientHost(DevToolsAgentHost* agent_host) { |
| DevToolsClientHost* client_host = GetDevToolsClientHostFor(agent_host); |
| if (!client_host) |
| return -1; |
| @@ -203,14 +209,14 @@ int DevToolsManager::DetachClientHost(DevToolsAgentHost* agent_host) { |
| return cookie; |
| } |
| -void DevToolsManager::AttachClientHost(int client_host_cookie, |
| +void DevToolsManagerImpl::AttachClientHost(int client_host_cookie, |
| RenderViewHost* to_rvh) { |
| - DevToolsAgentHost* agent_host = RenderViewDevToolsAgentHost::FindFor( |
| - to_rvh); |
| + DevToolsAgentHost* agent_host = |
| + DevToolsAgentHostRegistry::GetDevToolsAgentHost(to_rvh); |
| AttachClientHost(client_host_cookie, agent_host); |
| } |
| -void DevToolsManager::AttachClientHost(int client_host_cookie, |
| +void DevToolsManagerImpl::AttachClientHost(int client_host_cookie, |
| DevToolsAgentHost* agent_host) { |
| OrphanClientHosts::iterator it = orphan_client_hosts_.find( |
| client_host_cookie); |
| @@ -226,7 +232,7 @@ void DevToolsManager::AttachClientHost(int client_host_cookie, |
| orphan_client_hosts_.erase(it); |
| } |
| -void DevToolsManager::BindClientHost( |
| +void DevToolsManagerImpl::BindClientHost( |
| DevToolsAgentHost* agent_host, |
| DevToolsClientHost* client_host) { |
| DCHECK(agent_to_client_host_.find(agent_host) == |
| @@ -249,7 +255,7 @@ void DevToolsManager::BindClientHost( |
| ChildProcessSecurityPolicy::GetInstance()->GrantReadRawCookies(process_id); |
| } |
| -void DevToolsManager::UnbindClientHost(DevToolsAgentHost* agent_host, |
| +void DevToolsManagerImpl::UnbindClientHost(DevToolsAgentHost* agent_host, |
| DevToolsClientHost* client_host) { |
| DCHECK(agent_host); |
| DCHECK(agent_to_client_host_.find(agent_host)->second == |
| @@ -283,7 +289,7 @@ void DevToolsManager::UnbindClientHost(DevToolsAgentHost* agent_host, |
| ChildProcessSecurityPolicy::GetInstance()->RevokeReadRawCookies(process_id); |
| } |
| -void DevToolsManager::CloseAllClientHosts() { |
| +void DevToolsManagerImpl::CloseAllClientHosts() { |
| std::vector<DevToolsAgentHost*> agents; |
| for (AgentToClientHostMap::iterator it = |
| agent_to_client_host_.begin(); |
| @@ -295,3 +301,5 @@ void DevToolsManager::CloseAllClientHosts() { |
| UnregisterDevToolsClientHostFor(*it); |
| } |
| } |
| + |
| +} // namespace content |