Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(382)

Unified Diff: content/browser/devtools/devtools_manager.cc

Issue 591313006: Revert of [DevTools] Implement DevToolsManager::Observer which notifies about target updates. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@move-enumerate-to-dtm-delegate
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/devtools/devtools_manager.h ('k') | content/browser/devtools/devtools_manager_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « content/browser/devtools/devtools_manager.h ('k') | content/browser/devtools/devtools_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698