| 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
|
|
|