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

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: fixed test flakiness 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_agent_host_impl.cc ('k') | content/browser/devtools/devtools_manager.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..5a86d25526185f85067c8fc20f0cfb562e48e709 100644
--- a/content/browser/devtools/devtools_manager.h
+++ b/content/browser/devtools/devtools_manager.h
@@ -6,20 +6,39 @@
#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/common/content_export.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 {
+class CONTENT_EXPORT DevToolsManager {
public:
+ class Observer {
+ public:
+ virtual ~Observer() {}
+
+ typedef DevToolsManagerDelegate::TargetList TargetList;
+
+ // Called when any target information changed. Targets in the list are
+ // owned by DevToolsManager, so they should not be accessed outside of
+ // this method.
+ virtual void TargetListChanged(const TargetList& targets) {}
+ };
+
// 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 +47,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);
};
« no previous file with comments | « content/browser/devtools/devtools_agent_host_impl.cc ('k') | content/browser/devtools/devtools_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698