Index: content/browser/devtools/devtools_manager.cc |
diff --git a/content/browser/devtools/devtools_manager.cc b/content/browser/devtools/devtools_manager.cc |
index bdef4afb819bbae40afffaf0917c3d74b1508cc7..6d8da5399e650920f57b84b69e2f36ba01b09f7c 100644 |
--- a/content/browser/devtools/devtools_manager.cc |
+++ b/content/browser/devtools/devtools_manager.cc |
@@ -6,10 +6,10 @@ |
#include "base/bind.h" |
#include "base/message_loop/message_loop.h" |
-#include "content/browser/devtools/devtools_agent_host_impl.h" |
#include "content/browser/devtools/devtools_netlog_observer.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/content_browser_client.h" |
+#include "content/public/browser/devtools_manager_delegate.h" |
namespace content { |
@@ -20,105 +20,31 @@ |
DevToolsManager::DevToolsManager() |
: delegate_(GetContentClient()->browser()->GetDevToolsManagerDelegate()), |
- update_target_list_required_(false), |
- update_target_list_scheduled_(false), |
- update_target_list_callback_(base::Bind( |
- &DevToolsManager::UpdateTargetListThrottled, |
- base::Unretained(this))) { |
+ client_count_(0) { |
} |
DevToolsManager::~DevToolsManager() { |
- DCHECK(!attached_hosts_.size()); |
- update_target_list_callback_.Cancel(); |
+ DCHECK(!client_count_); |
} |
-void DevToolsManager::RenderViewCreated( |
- WebContents* web_contents, RenderViewHost* rvh) { |
- if (observer_list_.might_have_observers()) { |
- // Force agent host creation. |
- DevToolsAgentHost::GetOrCreateFor(web_contents); |
+void DevToolsManager::OnClientAttached() { |
+ if (!client_count_) { |
+ BrowserThread::PostTask( |
+ BrowserThread::IO, |
+ FROM_HERE, |
+ base::Bind(&DevToolsNetLogObserver::Attach)); |
+ } |
+ client_count_++; |
+} |
+ |
+void DevToolsManager::OnClientDetached() { |
+ client_count_--; |
+ if (!client_count_) { |
+ BrowserThread::PostTask( |
+ BrowserThread::IO, |
+ FROM_HERE, |
+ base::Bind(&DevToolsNetLogObserver::Detach)); |
} |
} |
-void DevToolsManager::AgentHostChanged( |
- scoped_refptr<DevToolsAgentHost> agent_host) { |
- bool was_attached = |
- attached_hosts_.find(agent_host.get()) != attached_hosts_.end(); |
- if (agent_host->IsAttached() && !was_attached) { |
- if (!attached_hosts_.size()) { |
- BrowserThread::PostTask( |
- BrowserThread::IO, |
- FROM_HERE, |
- base::Bind(&DevToolsNetLogObserver::Attach)); |
- } |
- attached_hosts_.insert(agent_host.get()); |
- } else if (!agent_host->IsAttached() && was_attached) { |
- attached_hosts_.erase(agent_host.get()); |
- if (!attached_hosts_.size()) { |
- BrowserThread::PostTask( |
- BrowserThread::IO, |
- FROM_HERE, |
- base::Bind(&DevToolsNetLogObserver::Detach)); |
- } |
- } |
- |
- UpdateTargetList(); |
-} |
- |
-void DevToolsManager::AddObserver(Observer* observer) { |
- observer_list_.AddObserver(observer); |
- UpdateTargetList(); |
-} |
- |
-void DevToolsManager::RemoveObserver(Observer* observer) { |
- observer_list_.RemoveObserver(observer); |
-} |
- |
-void DevToolsManager::UpdateTargetList() { |
- if (!observer_list_.might_have_observers()) |
- return; |
- |
- update_target_list_required_ = true; |
- if (!update_target_list_scheduled_) |
- UpdateTargetListThrottled(); |
-} |
- |
-void DevToolsManager::UpdateTargetListThrottled() { |
- if (!update_target_list_required_) { |
- update_target_list_scheduled_ = false; |
- return; |
- } |
- |
- update_target_list_scheduled_ = true; |
- base::MessageLoop::current()->PostDelayedTask( |
- FROM_HERE, |
- update_target_list_callback_.callback(), |
- observer_throttle_interval_); |
- |
- update_target_list_required_ = false; |
- if (!delegate_) { |
- Observer::TargetList empty_list; |
- NotifyTargetListChanged(empty_list); |
- return; |
- } |
- delegate_->EnumerateTargets(base::Bind( |
- &DevToolsManager::NotifyTargetListChanged, |
- base::Unretained(this))); |
-} |
- |
-void DevToolsManager::NotifyTargetListChanged( |
- const Observer::TargetList& targets) { |
- FOR_EACH_OBSERVER(Observer, observer_list_, TargetListChanged(targets)); |
-} |
- |
-// static |
-base::TimeDelta DevToolsManager::observer_throttle_interval_ = |
- base::TimeDelta::FromMilliseconds(500); |
- |
-// static |
-void DevToolsManager::SetObserverThrottleIntervalForTest( |
- base::TimeDelta interval) { |
- observer_throttle_interval_ = interval; |
-} |
- |
} // namespace content |