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); |
}; |