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 |