| 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;
|
| +
|
| +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;
|
| +}
|
| +
|
| +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
|
|
|