Index: components/gcm_driver/gcm_driver_desktop.h |
diff --git a/components/gcm_driver/gcm_driver_desktop.h b/components/gcm_driver/gcm_driver_desktop.h |
index 8eba9683961033c3b9c58f1d553ed9cbc1b9be52..04bc22d15a9832934e833f50b3e1ac3d12cfa6c1 100644 |
--- a/components/gcm_driver/gcm_driver_desktop.h |
+++ b/components/gcm_driver/gcm_driver_desktop.h |
@@ -14,7 +14,9 @@ |
#include "base/memory/ref_counted.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/memory/weak_ptr.h" |
+#include "base/observer_list.h" |
#include "components/gcm_driver/gcm_client.h" |
+#include "components/gcm_driver/gcm_connection_observer.h" |
#include "components/gcm_driver/gcm_driver.h" |
namespace base { |
@@ -55,6 +57,9 @@ class GCMDriverDesktop : public GCMDriver { |
virtual void AddAppHandler(const std::string& app_id, |
GCMAppHandler* handler) OVERRIDE; |
virtual void RemoveAppHandler(const std::string& app_id) OVERRIDE; |
+ virtual void AddConnectionObserver(GCMConnectionObserver* observer) OVERRIDE; |
+ virtual void RemoveConnectionObserver( |
+ GCMConnectionObserver* observer) OVERRIDE; |
virtual void Enable() OVERRIDE; |
virtual void Disable() OVERRIDE; |
virtual GCMClient* GetGCMClientForTesting() const OVERRIDE; |
@@ -134,6 +139,10 @@ class GCMDriverDesktop : public GCMDriver { |
// it may be out of date while connection changes are happening. |
bool connected_; |
+ // List of observers to notify when connection state changes. |
+ // Makes sure list is empty on destruction. |
+ ObserverList<GCMConnectionObserver, true> connection_observer_list_; |
+ |
scoped_refptr<base::SequencedTaskRunner> ui_thread_; |
scoped_refptr<base::SequencedTaskRunner> io_thread_; |