Index: sync/notifier/chrome_invalidation_client.h |
diff --git a/sync/notifier/chrome_invalidation_client.h b/sync/notifier/chrome_invalidation_client.h |
index fe25dc354090c0f79e58aa4b2620f9793ffcb393..c423c8d379037e0a9c55a4e863c9fd599bfc01b7 100644 |
--- a/sync/notifier/chrome_invalidation_client.h |
+++ b/sync/notifier/chrome_invalidation_client.h |
@@ -17,11 +17,13 @@ |
#include "base/memory/weak_ptr.h" |
#include "base/threading/non_thread_safe.h" |
#include "google/cacheinvalidation/include/invalidation-listener.h" |
+#include "jingle/notifier/listener/push_client_observer.h" |
#include "sync/internal_api/public/syncable/model_type.h" |
#include "sync/internal_api/public/syncable/model_type_payload_map.h" |
#include "sync/internal_api/public/util/weak_handle.h" |
#include "sync/notifier/chrome_system_resources.h" |
#include "sync/notifier/invalidation_state_tracker.h" |
+#include "sync/notifier/notifications_disabled_reason.h" |
#include "sync/notifier/state_writer.h" |
namespace buzz { |
@@ -43,6 +45,7 @@ class RegistrationManager; |
class ChromeInvalidationClient |
: public InvalidationListener, |
public StateWriter, |
+ public notifier::PushClientObserver, |
public base::NonThreadSafe { |
public: |
class Listener { |
@@ -52,7 +55,10 @@ class ChromeInvalidationClient |
virtual void OnInvalidate( |
const syncable::ModelTypePayloadMap& type_payloads) = 0; |
- virtual void OnSessionStatusChanged(bool has_session) = 0; |
+ virtual void OnNotificationsEnabled() = 0; |
+ |
+ virtual void OnNotificationsDisabled( |
+ NotificationsDisabledReason reason) = 0; |
}; |
explicit ChromeInvalidationClient( |
@@ -77,8 +83,6 @@ class ChromeInvalidationClient |
// notifications for. May be called at any time. |
void RegisterTypes(syncable::ModelTypeSet types); |
- virtual void WriteState(const std::string& state) OVERRIDE; |
- |
// invalidation::InvalidationListener implementation. |
virtual void Ready( |
invalidation::InvalidationClient* client) OVERRIDE; |
@@ -110,14 +114,30 @@ class ChromeInvalidationClient |
invalidation::InvalidationClient* client, |
const invalidation::ErrorInfo& error_info) OVERRIDE; |
+ // StateWriter implementation. |
+ virtual void WriteState(const std::string& state) OVERRIDE; |
+ |
+ // notifier::PushClientObserver implementation. |
+ virtual void OnNotificationsEnabled() OVERRIDE; |
+ virtual void OnNotificationsDisabled( |
+ notifier::NotificationsDisabledReason reason) OVERRIDE; |
+ virtual void OnIncomingNotification( |
+ const notifier::Notification& notification) OVERRIDE; |
+ |
private: |
friend class ChromeInvalidationClientTest; |
void Stop(); |
+ NotificationsDisabledReason GetState() const; |
+ |
+ void EmitStateChange(); |
+ |
void EmitInvalidation( |
syncable::ModelTypeSet types, const std::string& payload); |
+ // Owned by |chrome_system_resources_|. |
+ notifier::PushClient* const push_client_; |
ChromeSystemResources chrome_system_resources_; |
InvalidationVersionMap max_invalidation_versions_; |
browser_sync::WeakHandle<InvalidationStateTracker> |
@@ -127,7 +147,11 @@ class ChromeInvalidationClient |
scoped_ptr<RegistrationManager> registration_manager_; |
// Stored to pass to |registration_manager_| on start. |
syncable::ModelTypeSet registered_types_; |
- bool ticl_ready_; |
+ |
+ // The states of the ticl and the push client (with |
+ // NO_NOTIFICATION_ERROR meaning notifications are enabled). |
+ NotificationsDisabledReason ticl_state_; |
rlarocque
2012/06/18 18:14:14
optional: Could you remove these? A common patter
|
+ NotificationsDisabledReason push_client_state_; |
DISALLOW_COPY_AND_ASSIGN(ChromeInvalidationClient); |
}; |