diff options
author | yurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-16 13:25:32 +0000 |
---|---|---|
committer | yurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-16 13:25:32 +0000 |
commit | 3693df59ae0e5b86ff59f24061e4937b16efe80a (patch) | |
tree | 0c5e40f550732d6bc0ea72364516dc4622b965e2 | |
parent | dc4a33d365332b89f34044b508e8333297582ae4 (diff) | |
download | chromium_src-3693df59ae0e5b86ff59f24061e4937b16efe80a.zip chromium_src-3693df59ae0e5b86ff59f24061e4937b16efe80a.tar.gz chromium_src-3693df59ae0e5b86ff59f24061e4937b16efe80a.tar.bz2 |
Revert "DevTools: introduce DevToolsAgentHost"
This reverts r96927 due to sporadic RenderProcessHostTest.DevToolsOnSelfInOwnProcess*
tests failures on win and mac.
TBR=pfeldman
BUG=
TEST=
Review URL: http://codereview.chromium.org/7658013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@96935 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | content/browser/debugger/devtools_agent_host.cc | 18 | ||||
-rw-r--r-- | content/browser/debugger/devtools_agent_host.h | 44 | ||||
-rw-r--r-- | content/browser/debugger/devtools_manager.cc | 204 | ||||
-rw-r--r-- | content/browser/debugger/devtools_manager.h | 47 | ||||
-rw-r--r-- | content/browser/debugger/render_view_devtools_agent_host.cc | 77 | ||||
-rw-r--r-- | content/browser/debugger/render_view_devtools_agent_host.h | 47 | ||||
-rw-r--r-- | content/content_browser.gypi | 4 |
7 files changed, 125 insertions, 316 deletions
diff --git a/content/browser/debugger/devtools_agent_host.cc b/content/browser/debugger/devtools_agent_host.cc deleted file mode 100644 index 3e897e3..0000000 --- a/content/browser/debugger/devtools_agent_host.cc +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// 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_agent_host.h" - -#include "base/basictypes.h" - -DevToolsAgentHost::DevToolsAgentHost() : close_listener_(NULL) { -} - -void DevToolsAgentHost::NotifyCloseListener() { - if (close_listener_) { - close_listener_->AgentHostClosing(this); - close_listener_ = NULL; - } -} - diff --git a/content/browser/debugger/devtools_agent_host.h b/content/browser/debugger/devtools_agent_host.h deleted file mode 100644 index 465dbe5..0000000 --- a/content/browser/debugger/devtools_agent_host.h +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CONTENT_BROWSER_DEBUGGER_DEVTOOLS_AGENT_HOST_H_ -#define CONTENT_BROWSER_DEBUGGER_DEVTOOLS_AGENT_HOST_H_ -#pragma once - -namespace IPC { -class Message; -} - -// Describes interface for managing devtools agents from the browser process. -class DevToolsAgentHost { - public: - class CloseListener { - public: - virtual void AgentHostClosing(DevToolsAgentHost*) = 0; - protected: - virtual ~CloseListener() {} - }; - - // Sends the message to the devtools agent hosted by this object. - virtual void SendMessageToAgent(IPC::Message* msg) = 0; - - // TODO(yurys): get rid of this method - virtual void NotifyClientClosing() = 0; - - virtual void ClientDetached() = 0; - - void set_close_listener(CloseListener* listener) { - close_listener_ = listener; - } - - protected: - DevToolsAgentHost(); - virtual ~DevToolsAgentHost() {} - - void NotifyCloseListener(); - - CloseListener* close_listener_; -}; - -#endif // CONTENT_BROWSER_DEBUGGER_DEVTOOLS_AGENT_HOST_H_ diff --git a/content/browser/debugger/devtools_manager.cc b/content/browser/debugger/devtools_manager.cc index 2d289a6..383d6c4 100644 --- a/content/browser/debugger/devtools_manager.cc +++ b/content/browser/debugger/devtools_manager.cc @@ -9,14 +9,16 @@ #include "base/message_loop.h" #include "content/browser/browser_thread.h" #include "content/browser/browsing_instance.h" +#include "content/browser/child_process_security_policy.h" #include "content/browser/content_browser_client.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/site_instance.h" #include "content/browser/tab_contents/tab_contents.h" #include "content/common/content_client.h" #include "content/common/devtools_messages.h" +#include "content/common/notification_service.h" #include "googleurl/src/gurl.h" // static @@ -26,11 +28,13 @@ DevToolsManager* DevToolsManager::GetInstance() { DevToolsManager::DevToolsManager() : last_orphan_cookie_(0) { + registrar_.Add(this, content::NOTIFICATION_RENDER_VIEW_HOST_DELETED, + NotificationService::AllSources()); } DevToolsManager::~DevToolsManager() { - DCHECK(agent_to_client_host_.empty()); - DCHECK(client_to_agent_host_.empty()); + DCHECK(inspected_rvh_to_client_host_.empty()); + DCHECK(client_host_to_inspected_rvh_.empty()); // By the time we destroy devtools manager, all orphan client hosts should // have been delelted, no need to notify them upon tab closing. DCHECK(orphan_client_hosts_.empty()); @@ -38,17 +42,9 @@ DevToolsManager::~DevToolsManager() { DevToolsClientHost* DevToolsManager::GetDevToolsClientHostFor( RenderViewHost* inspected_rvh) { - DevToolsAgentHost* agent_host = RenderViewDevToolsAgentHost::FindFor( - inspected_rvh); - if (!agent_host) - return NULL; - return GetDevToolsClientHostFor(agent_host); -} - -DevToolsClientHost* DevToolsManager::GetDevToolsClientHostFor( - DevToolsAgentHost* agent_host) { - AgentToClientHostMap::iterator it = agent_to_client_host_.find(agent_host); - if (it != agent_to_client_host_.end()) + InspectedRvhToClientHostMap::iterator it = + inspected_rvh_to_client_host_.find(inspected_rvh); + if (it != inspected_rvh_to_client_host_.end()) return it->second; return NULL; } @@ -59,20 +55,20 @@ void DevToolsManager::RegisterDevToolsClientHostFor( DCHECK(!GetDevToolsClientHostFor(inspected_rvh)); DevToolsRuntimeProperties initial_properties; - DevToolsAgentHost* agent_host = RenderViewDevToolsAgentHost::CreateFor( - inspected_rvh); - BindClientHost(agent_host, client_host, initial_properties); + BindClientHost(inspected_rvh, client_host, initial_properties); client_host->set_close_listener(this); - SendAttachToAgent(agent_host); + SendAttachToAgent(inspected_rvh); } bool DevToolsManager::ForwardToDevToolsAgent(DevToolsClientHost* from, const IPC::Message& message) { - DevToolsAgentHost* agent_host = GetAgentHost(from); - if (!agent_host) + RenderViewHost* inspected_rvh = GetInspectedRenderViewHost(from); + if (!inspected_rvh) return false; - agent_host->SendMessageToAgent(new IPC::Message(message)); + IPC::Message* m = new IPC::Message(message); + m->set_routing_id(inspected_rvh->routing_id()); + inspected_rvh->Send(m); return true; } @@ -90,13 +86,11 @@ void DevToolsManager::ForwardToDevToolsClient(RenderViewHost* inspected_rvh, void DevToolsManager::RuntimePropertyChanged(RenderViewHost* inspected_rvh, const std::string& name, const std::string& value) { - DevToolsAgentHost* agent_host = RenderViewDevToolsAgentHost::FindFor( - inspected_rvh); RuntimePropertiesMap::iterator it = - runtime_properties_map_.find(agent_host); + runtime_properties_map_.find(inspected_rvh); if (it == runtime_properties_map_.end()) { - std::pair<DevToolsAgentHost*, DevToolsRuntimeProperties> value( - agent_host, + std::pair<RenderViewHost*, DevToolsRuntimeProperties> value( + inspected_rvh, DevToolsRuntimeProperties()); it = runtime_properties_map_.insert(value).first; } @@ -112,13 +106,13 @@ void DevToolsManager::SendInspectElement(RenderViewHost* inspected_rvh, y)); } -void DevToolsManager::ClientHostClosing(DevToolsClientHost* client_host) { - DevToolsAgentHost* agent_host = GetAgentHost(client_host); - if (!agent_host) { +void DevToolsManager::ClientHostClosing(DevToolsClientHost* host) { + RenderViewHost* inspected_rvh = GetInspectedRenderViewHost(host); + if (!inspected_rvh) { // It might be in the list of orphan client hosts, remove it from there. for (OrphanClientHosts::iterator it = orphan_client_hosts_.begin(); it != orphan_client_hosts_.end(); ++it) { - if (it->second.first == client_host) { + if (it->second.first == host) { orphan_client_hosts_.erase(it->first); return; } @@ -126,39 +120,38 @@ void DevToolsManager::ClientHostClosing(DevToolsClientHost* client_host) { return; } - agent_host->NotifyClientClosing(); + NotificationService::current()->Notify( + content::NOTIFICATION_DEVTOOLS_WINDOW_CLOSING, + Source<content::BrowserContext>( + inspected_rvh->site_instance()->GetProcess()->browser_context()), + Details<RenderViewHost>(inspected_rvh)); - UnbindClientHost(agent_host, client_host); + UnbindClientHost(inspected_rvh, host); } -void DevToolsManager::AgentHostClosing(DevToolsAgentHost* agent_host) { - UnregisterDevToolsClientHostFor(agent_host); +void DevToolsManager::Observe(int type, + const NotificationSource& source, + const NotificationDetails& details) { + DCHECK(type == content::NOTIFICATION_RENDER_VIEW_HOST_DELETED); + UnregisterDevToolsClientHostFor(Source<RenderViewHost>(source).ptr()); } -DevToolsAgentHost* DevToolsManager::GetAgentHost( +RenderViewHost* DevToolsManager::GetInspectedRenderViewHost( DevToolsClientHost* client_host) { ClientHostToInspectedRvhMap::iterator it = - client_to_agent_host_.find(client_host); - if (it != client_to_agent_host_.end()) + client_host_to_inspected_rvh_.find(client_host); + if (it != client_host_to_inspected_rvh_.end()) return it->second; return NULL; } void DevToolsManager::UnregisterDevToolsClientHostFor( RenderViewHost* inspected_rvh) { - DevToolsAgentHost* agent_host = RenderViewDevToolsAgentHost::FindFor( - inspected_rvh); - if (agent_host) - UnregisterDevToolsClientHostFor(agent_host); -} - -void DevToolsManager::UnregisterDevToolsClientHostFor( - DevToolsAgentHost* agent_host) { - DevToolsClientHost* client_host = GetDevToolsClientHostFor(agent_host); - if (!client_host) + DevToolsClientHost* host = GetDevToolsClientHostFor(inspected_rvh); + if (!host) return; - UnbindClientHost(agent_host, client_host); - client_host->InspectedTabClosing(); + UnbindClientHost(inspected_rvh, host); + host->InspectedTabClosing(); } void DevToolsManager::OnNavigatingToPendingEntry(RenderViewHost* rvh, @@ -189,20 +182,16 @@ void DevToolsManager::TabReplaced(TabContents* old_tab, } int DevToolsManager::DetachClientHost(RenderViewHost* from_rvh) { - DevToolsAgentHost* agent_host = RenderViewDevToolsAgentHost::FindFor( - from_rvh); - if (!agent_host) - return -1; - DevToolsClientHost* client_host = GetDevToolsClientHostFor(agent_host); + DevToolsClientHost* client_host = GetDevToolsClientHostFor(from_rvh); if (!client_host) return -1; int cookie = last_orphan_cookie_++; orphan_client_hosts_[cookie] = std::pair<DevToolsClientHost*, DevToolsRuntimeProperties>( - client_host, runtime_properties_map_[agent_host]); + client_host, runtime_properties_map_[from_rvh]); - UnbindClientHost(agent_host, client_host); + UnbindClientHost(from_rvh, client_host); return cookie; } @@ -214,86 +203,97 @@ void DevToolsManager::AttachClientHost(int client_host_cookie, return; DevToolsClientHost* client_host = (*it).second.first; - DevToolsAgentHost* agent_host = RenderViewDevToolsAgentHost::CreateFor( - to_rvh); - BindClientHost(agent_host, client_host, (*it).second.second); - SendAttachToAgent(agent_host); + BindClientHost(to_rvh, client_host, (*it).second.second); + SendAttachToAgent(to_rvh); orphan_client_hosts_.erase(client_host_cookie); } -void DevToolsManager::SendAttachToAgent(DevToolsAgentHost* agent_host) { - DevToolsRuntimeProperties properties; - RuntimePropertiesMap::iterator it = - runtime_properties_map_.find(agent_host); - if (it != runtime_properties_map_.end()) { - properties = DevToolsRuntimeProperties(it->second.begin(), - it->second.end()); +void DevToolsManager::SendAttachToAgent(RenderViewHost* inspected_rvh) { + if (inspected_rvh) { + ChildProcessSecurityPolicy::GetInstance()->GrantReadRawCookies( + inspected_rvh->process()->id()); + + DevToolsRuntimeProperties properties; + RuntimePropertiesMap::iterator it = + runtime_properties_map_.find(inspected_rvh); + if (it != runtime_properties_map_.end()) { + properties = DevToolsRuntimeProperties(it->second.begin(), + it->second.end()); + } + inspected_rvh->Send(new DevToolsAgentMsg_Attach( + inspected_rvh->routing_id(), + properties)); } - agent_host->SendMessageToAgent(new DevToolsAgentMsg_Attach( - MSG_ROUTING_NONE, - properties)); } -void DevToolsManager::SendDetachToAgent(DevToolsAgentHost* agent_host) { - if (agent_host) { - agent_host->SendMessageToAgent(new DevToolsAgentMsg_Detach( - MSG_ROUTING_NONE)); +void DevToolsManager::SendDetachToAgent(RenderViewHost* inspected_rvh) { + if (inspected_rvh) { + inspected_rvh->Send(new DevToolsAgentMsg_Detach( + inspected_rvh->routing_id())); } } void DevToolsManager::BindClientHost( - DevToolsAgentHost* agent_host, + RenderViewHost* inspected_rvh, DevToolsClientHost* client_host, const DevToolsRuntimeProperties& runtime_properties) { - DCHECK(agent_to_client_host_.find(agent_host) == - agent_to_client_host_.end()); - DCHECK(client_to_agent_host_.find(client_host) == - client_to_agent_host_.end()); + DCHECK(inspected_rvh_to_client_host_.find(inspected_rvh) == + inspected_rvh_to_client_host_.end()); + DCHECK(client_host_to_inspected_rvh_.find(client_host) == + client_host_to_inspected_rvh_.end()); - if (client_to_agent_host_.empty()) { + if (client_host_to_inspected_rvh_.empty()) { BrowserThread::PostTask( BrowserThread::IO, FROM_HERE, NewRunnableFunction(&DevToolsNetLogObserver::Attach)); } - agent_to_client_host_[agent_host] = client_host; - client_to_agent_host_[client_host] = agent_host; - runtime_properties_map_[agent_host] = runtime_properties; - agent_host->set_close_listener(this); + inspected_rvh_to_client_host_[inspected_rvh] = client_host; + client_host_to_inspected_rvh_[client_host] = inspected_rvh; + runtime_properties_map_[inspected_rvh] = runtime_properties; } -void DevToolsManager::UnbindClientHost(DevToolsAgentHost* agent_host, +void DevToolsManager::UnbindClientHost(RenderViewHost* inspected_rvh, DevToolsClientHost* client_host) { - DCHECK(agent_host); - DCHECK(agent_to_client_host_.find(agent_host)->second == + DCHECK(inspected_rvh_to_client_host_.find(inspected_rvh)->second == client_host); - DCHECK(client_to_agent_host_.find(client_host)->second == - agent_host); + DCHECK(client_host_to_inspected_rvh_.find(client_host)->second == + inspected_rvh); - agent_to_client_host_.erase(agent_host); - client_to_agent_host_.erase(client_host); - runtime_properties_map_.erase(agent_host); + inspected_rvh_to_client_host_.erase(inspected_rvh); + client_host_to_inspected_rvh_.erase(client_host); + runtime_properties_map_.erase(inspected_rvh); - if (client_to_agent_host_.empty()) { + if (client_host_to_inspected_rvh_.empty()) { BrowserThread::PostTask( BrowserThread::IO, FROM_HERE, NewRunnableFunction(&DevToolsNetLogObserver::Detach)); } - SendDetachToAgent(agent_host); - agent_host->ClientDetached(); + SendDetachToAgent(inspected_rvh); + + int process_id = inspected_rvh->process()->id(); + for (InspectedRvhToClientHostMap::iterator it = + inspected_rvh_to_client_host_.begin(); + it != inspected_rvh_to_client_host_.end(); + ++it) { + if (it->first->process()->id() == process_id) + return; + } + // We've disconnected from the last renderer -> revoke cookie permissions. + ChildProcessSecurityPolicy::GetInstance()->RevokeReadRawCookies(process_id); } void DevToolsManager::CloseAllClientHosts() { - std::vector<DevToolsAgentHost*> agents; - for (AgentToClientHostMap::iterator it = - agent_to_client_host_.begin(); - it != agent_to_client_host_.end(); ++it) { - agents.push_back(it->first); + std::vector<RenderViewHost*> rhvs; + for (InspectedRvhToClientHostMap::iterator it = + inspected_rvh_to_client_host_.begin(); + it != inspected_rvh_to_client_host_.end(); ++it) { + rhvs.push_back(it->first); } - for (std::vector<DevToolsAgentHost*>::iterator it = agents.begin(); - it != agents.end(); ++it) { + for (std::vector<RenderViewHost*>::iterator it = rhvs.begin(); + it != rhvs.end(); ++it) { UnregisterDevToolsClientHostFor(*it); } } diff --git a/content/browser/debugger/devtools_manager.h b/content/browser/debugger/devtools_manager.h index 8aabfd6..4334904 100644 --- a/content/browser/debugger/devtools_manager.h +++ b/content/browser/debugger/devtools_manager.h @@ -9,14 +9,14 @@ #include <map> #include <string> -#include "content/browser/debugger/devtools_agent_host.h" #include "content/browser/debugger/devtools_client_host.h" +#include "content/common/notification_observer.h" +#include "content/common/notification_registrar.h" namespace IPC { class Message; } -class DevToolsAgentHost; class DevToolsNetLogObserver; class GURL; class IOThread; @@ -28,12 +28,8 @@ typedef std::map<std::string, std::string> DevToolsRuntimeProperties; // This class is a singleton that manages DevToolsClientHost instances and // routes messages between developer tools clients and agents. -// -// Methods below that accept inspected RenderViewHost as a parameter are -// just convenience methods that call corresponding methods accepting -// DevToolAgentHost. class DevToolsManager : public DevToolsClientHost::CloseListener, - public DevToolsAgentHost::CloseListener { + public NotificationObserver { public: static DevToolsManager* GetInstance(); @@ -83,9 +79,6 @@ class DevToolsManager : public DevToolsClientHost::CloseListener, // Closes all open developer tools windows. void CloseAllClientHosts(); - DevToolsClientHost* GetDevToolsClientHostFor(DevToolsAgentHost* agent_host); - void UnregisterDevToolsClientHostFor(DevToolsAgentHost* agent_host); - private: // DevToolsClientHost::CloseListener override. // This method will remove all references from the manager to the @@ -93,19 +86,23 @@ class DevToolsManager : public DevToolsClientHost::CloseListener, // DevToolsClientHost. virtual void ClientHostClosing(DevToolsClientHost* host); - // DevToolsAgentHost::CloseListener implementation. - virtual void AgentHostClosing(DevToolsAgentHost* host); + // Overridden from NotificationObserver: + virtual void Observe(int type, + const NotificationSource& source, + const NotificationDetails& details); - // Returns DevToolsAgentHost inspected by the DevToolsClientHost. - DevToolsAgentHost* GetAgentHost(DevToolsClientHost* client_host); + // Returns RenderViewHost for the tab that is inspected by devtools + // client hosted by DevToolsClientHost. + RenderViewHost* GetInspectedRenderViewHost(DevToolsClientHost* client_host); - void SendAttachToAgent(DevToolsAgentHost*); - void SendDetachToAgent(DevToolsAgentHost*); + void SendAttachToAgent(RenderViewHost* inspected_rvh); + void SendDetachToAgent(RenderViewHost* inspected_rvh); - void BindClientHost(DevToolsAgentHost* agent_host, + void BindClientHost(RenderViewHost* inspected_rvh, DevToolsClientHost* client_host, const DevToolsRuntimeProperties& runtime_properties); - void UnbindClientHost(DevToolsAgentHost* agent_host, + + void UnbindClientHost(RenderViewHost* inspected_rvh, DevToolsClientHost* client_host); // These two maps are for tracking dependencies between inspected tabs and @@ -114,15 +111,15 @@ class DevToolsManager : public DevToolsClientHost::CloseListener, // // DevToolsManager start listening to DevToolsClientHosts when they are put // into these maps and removes them when they are closing. - typedef std::map<DevToolsAgentHost*, DevToolsClientHost*> - AgentToClientHostMap; - AgentToClientHostMap agent_to_client_host_; + typedef std::map<RenderViewHost*, DevToolsClientHost*> + InspectedRvhToClientHostMap; + InspectedRvhToClientHostMap inspected_rvh_to_client_host_; - typedef std::map<DevToolsClientHost*, DevToolsAgentHost*> + typedef std::map<DevToolsClientHost*, RenderViewHost*> ClientHostToInspectedRvhMap; - ClientHostToInspectedRvhMap client_to_agent_host_; + ClientHostToInspectedRvhMap client_host_to_inspected_rvh_; - typedef std::map<DevToolsAgentHost*, DevToolsRuntimeProperties> + typedef std::map<RenderViewHost*, DevToolsRuntimeProperties> RuntimePropertiesMap; RuntimePropertiesMap runtime_properties_map_; @@ -132,6 +129,8 @@ class DevToolsManager : public DevToolsClientHost::CloseListener, OrphanClientHosts orphan_client_hosts_; int last_orphan_cookie_; + NotificationRegistrar registrar_; + DISALLOW_COPY_AND_ASSIGN(DevToolsManager); }; diff --git a/content/browser/debugger/render_view_devtools_agent_host.cc b/content/browser/debugger/render_view_devtools_agent_host.cc deleted file mode 100644 index a88f129..0000000 --- a/content/browser/debugger/render_view_devtools_agent_host.cc +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "content/browser/debugger/render_view_devtools_agent_host.h" - -#include "base/basictypes.h" -#include "content/browser/child_process_security_policy.h" -#include "content/browser/renderer_host/render_process_host.h" -#include "content/browser/renderer_host/render_view_host.h" -#include "content/browser/site_instance.h" -#include "content/common/notification_service.h" - -RenderViewDevToolsAgentHost::Instances RenderViewDevToolsAgentHost::instances_; - -DevToolsAgentHost* RenderViewDevToolsAgentHost::FindFor( - RenderViewHost* rvh) { - Instances::iterator it = instances_.find(rvh); - if (it != instances_.end()) - return it->second; - return NULL; -} - -DevToolsAgentHost* RenderViewDevToolsAgentHost::CreateFor( - RenderViewHost* rvh) { - DCHECK(!FindFor(rvh)); - RenderViewDevToolsAgentHost* result = new RenderViewDevToolsAgentHost(rvh); - return result; -} - -RenderViewDevToolsAgentHost::RenderViewDevToolsAgentHost(RenderViewHost* rvh) - : render_view_host_(rvh) { - ChildProcessSecurityPolicy::GetInstance()->GrantReadRawCookies( - rvh->process()->id()); - registrar_.Add(this, content::NOTIFICATION_RENDER_VIEW_HOST_DELETED, - Source<RenderViewHost>(rvh)); - instances_[rvh] = this; -} - -void RenderViewDevToolsAgentHost::SendMessageToAgent(IPC::Message* msg) { - msg->set_routing_id(render_view_host_->routing_id()); - render_view_host_->Send(msg); -} - -void RenderViewDevToolsAgentHost::NotifyClientClosing() { - NotificationService::current()->Notify( - content::NOTIFICATION_DEVTOOLS_WINDOW_CLOSING, - Source<content::BrowserContext>( - render_view_host_->site_instance()->GetProcess()->browser_context()), - Details<RenderViewHost>(render_view_host_)); -} - -void RenderViewDevToolsAgentHost::ClientDetached() { - delete this; -} - -void RenderViewDevToolsAgentHost::Observe(int type, - const NotificationSource& source, - const NotificationDetails& details) { - DCHECK(type == content::NOTIFICATION_RENDER_VIEW_HOST_DELETED); - NotifyCloseListener(); -} - -RenderViewDevToolsAgentHost::~RenderViewDevToolsAgentHost() { - instances_.erase(render_view_host_); - - int process_id = render_view_host_->process()->id(); - for (Instances::iterator it = instances_.begin(); - it != instances_.end(); - ++it) { - if (it->first->process()->id() == process_id) - return; - } - // We've disconnected from the last renderer -> revoke cookie permissions. - ChildProcessSecurityPolicy::GetInstance()->RevokeReadRawCookies(process_id); -} - diff --git a/content/browser/debugger/render_view_devtools_agent_host.h b/content/browser/debugger/render_view_devtools_agent_host.h deleted file mode 100644 index 972f09e..0000000 --- a/content/browser/debugger/render_view_devtools_agent_host.h +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CONTENT_BROWSER_DEBUGGER_RENDER_VIEW_DEVTOOLS_AGENT_HOST_H_ -#define CONTENT_BROWSER_DEBUGGER_RENDER_VIEW_DEVTOOLS_AGENT_HOST_H_ -#pragma once - -#include <map> - -#include "base/basictypes.h" -#include "content/browser/debugger/devtools_agent_host.h" -#include "content/common/notification_observer.h" -#include "content/common/notification_registrar.h" - -class RenderViewHost; - -class RenderViewDevToolsAgentHost : public DevToolsAgentHost, - public NotificationObserver { - public: - static DevToolsAgentHost* FindFor(RenderViewHost*); - static DevToolsAgentHost* CreateFor(RenderViewHost*); - - private: - RenderViewDevToolsAgentHost(RenderViewHost*); - virtual ~RenderViewDevToolsAgentHost(); - - // DevToolsAgentHost implementation. - virtual void SendMessageToAgent(IPC::Message* msg); - virtual void NotifyClientClosing(); - virtual void ClientDetached(); - - // Overridden from NotificationObserver: - virtual void Observe(int type, - const NotificationSource& source, - const NotificationDetails& details); - - RenderViewHost* render_view_host_; - NotificationRegistrar registrar_; - - typedef std::map<RenderViewHost*, RenderViewDevToolsAgentHost*> Instances; - static Instances instances_; - - DISALLOW_COPY_AND_ASSIGN(RenderViewDevToolsAgentHost); -}; - -#endif // CONTENT_BROWSER_DEBUGGER_RENDER_VIEW_DEVTOOLS_AGENT_HOST_H_ diff --git a/content/content_browser.gypi b/content/content_browser.gypi index ffc48e0..fdf5075 100644 --- a/content/content_browser.gypi +++ b/content/content_browser.gypi @@ -79,8 +79,6 @@ 'browser/content_browser_client.h', 'browser/cross_site_request_manager.cc', 'browser/cross_site_request_manager.h', - 'browser/debugger/devtools_agent_host.cc', - 'browser/debugger/devtools_agent_host.h', 'browser/debugger/devtools_client_host.cc', 'browser/debugger/devtools_client_host.h', 'browser/debugger/devtools_handler.cc', @@ -91,8 +89,6 @@ 'browser/debugger/devtools_manager.h', 'browser/debugger/devtools_netlog_observer.cc', 'browser/debugger/devtools_netlog_observer.h', - 'browser/debugger/render_view_devtools_agent_host.cc', - 'browser/debugger/render_view_devtools_agent_host.h', 'browser/debugger/worker_devtools_manager_io.cc', 'browser/debugger/worker_devtools_manager_io.h', 'browser/debugger/worker_devtools_message_filter.cc', |