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

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

Issue 577923002: [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: rebased 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
Index: content/browser/devtools/devtools_manager.h
diff --git a/content/browser/devtools/devtools_manager.h b/content/browser/devtools/devtools_manager.h
index 0f91f2050ba0f2183f46d307c7888ce1080b7875..014e920a497e3e72da637d0d8a7d5df3d024f1bc 100644
--- a/content/browser/devtools/devtools_manager.h
+++ b/content/browser/devtools/devtools_manager.h
@@ -6,20 +6,36 @@
#define CONTENT_BROWSER_DEVTOOLS_DEVTOOLS_MANAGER_H_
#include <map>
+#include <set>
#include <string>
#include <vector>
+#include "base/cancelable_callback.h"
#include "base/compiler_specific.h"
#include "base/memory/singleton.h"
+#include "base/observer_list.h"
+#include "content/public/browser/devtools_manager_delegate.h"
namespace content {
-class DevToolsManagerDelegate;
+class DevToolsAgentHost;
+class RenderViewHost;
+class WebContents;
// This class is a singleton that manage global DevTools state for the whole
// browser.
class DevToolsManager {
public:
+ class Observer {
pfeldman 2014/09/22 16:16:50 This is something in between of listener and obser
dgozman 2014/09/24 13:18:28 I've added all empty implementations, and left thi
+ public:
+ virtual ~Observer() {}
+
+ typedef DevToolsManagerDelegate::TargetList TargetList;
+
+ // Called when any target information changed.
+ virtual void TargetListChanged(const TargetList& targets) = 0;
+ };
+
// Returns single instance of this class. The instance is destroyed on the
// browser main loop exit so this method MUST NOT be called after that point.
static DevToolsManager* GetInstance();
@@ -28,14 +44,30 @@ class DevToolsManager {
virtual ~DevToolsManager();
DevToolsManagerDelegate* delegate() const { return delegate_.get(); }
- void OnClientAttached();
- void OnClientDetached();
+
+ void AddObserver(Observer* observer);
+ void RemoveObserver(Observer* observer);
+
+ void RenderViewCreated(WebContents* web_contents, RenderViewHost* rvh);
+ void AgentHostChanged(scoped_refptr<DevToolsAgentHost> agent_host);
+
+ static void SetObserverThrottleIntervalForTest(base::TimeDelta interval);
private:
friend struct DefaultSingletonTraits<DevToolsManager>;
+ void UpdateTargetList();
+ void UpdateTargetListThrottled();
+ void NotifyTargetListChanged(const Observer::TargetList& targets);
+
scoped_ptr<DevToolsManagerDelegate> delegate_;
- int client_count_;
+ ObserverList<Observer> observer_list_;
+ std::set<DevToolsAgentHost*> attached_hosts_;
+ bool update_target_list_required_;
+ bool update_target_list_scheduled_;
+ base::CancelableClosure update_target_list_callback_;
+
+ static base::TimeDelta observer_throttle_interval_;
DISALLOW_COPY_AND_ASSIGN(DevToolsManager);
};

Powered by Google App Engine
This is Rietveld 408576698