Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / invalidation / ticl_invalidation_service.h
index 684ed2a..3d1b3ff 100644 (file)
@@ -7,24 +7,33 @@
 
 #include <string>
 
+#include "base/compiler_specific.h"
+#include "base/macros.h"
+#include "base/memory/ref_counted.h"
 #include "base/memory/scoped_ptr.h"
-#include "base/prefs/pref_change_registrar.h"
 #include "base/threading/non_thread_safe.h"
 #include "base/timer/timer.h"
-#include "chrome/browser/invalidation/invalidation_auth_provider.h"
-#include "chrome/browser/invalidation/invalidation_logger.h"
-#include "chrome/browser/invalidation/invalidation_service.h"
-#include "chrome/browser/invalidation/invalidator_storage.h"
+#include "base/values.h"
+#include "components/invalidation/invalidation_logger.h"
+#include "components/invalidation/invalidation_service.h"
+#include "components/invalidation/ticl_settings_provider.h"
 #include "components/keyed_service/core/keyed_service.h"
-#include "components/signin/core/browser/profile_oauth2_token_service.h"
+#include "google_apis/gaia/identity_provider.h"
 #include "google_apis/gaia/oauth2_token_service.h"
 #include "net/base/backoff_entry.h"
 #include "sync/notifier/invalidation_handler.h"
 #include "sync/notifier/invalidator_registrar.h"
 
-class Profile;
+namespace gcm {
+class GCMService;
+}
+
+namespace net {
+class URLRequestContextGetter;
+}
 
 namespace syncer {
+class InvalidationStateTracker;
 class Invalidator;
 }
 
@@ -37,7 +46,8 @@ class TiclInvalidationService : public base::NonThreadSafe,
                                 public InvalidationService,
                                 public OAuth2TokenService::Consumer,
                                 public OAuth2TokenService::Observer,
-                                public InvalidationAuthProvider::Observer,
+                                public IdentityProvider::Observer,
+                                public TiclSettingsProvider::Observer,
                                 public syncer::InvalidationHandler {
  public:
   enum InvalidationNetworkChannel {
@@ -49,11 +59,15 @@ class TiclInvalidationService : public base::NonThreadSafe,
     NETWORK_CHANNELS_COUNT = 2
   };
 
-  TiclInvalidationService(scoped_ptr<InvalidationAuthProvider> auth_provider,
-                          Profile* profile);
+  TiclInvalidationService(
+      scoped_ptr<IdentityProvider> identity_provider,
+      scoped_ptr<TiclSettingsProvider> settings_provider,
+      gcm::GCMService* gcm_service,
+      const scoped_refptr<net::URLRequestContextGetter>& request_context);
   virtual ~TiclInvalidationService();
 
-  void Init();
+  void Init(
+      scoped_ptr<syncer::InvalidationStateTracker> invalidation_state_tracker);
 
   // InvalidationService implementation.
   // It is an error to have registered handlers when Shutdown() is called.
@@ -69,7 +83,7 @@ class TiclInvalidationService : public base::NonThreadSafe,
   virtual InvalidationLogger* GetInvalidationLogger() OVERRIDE;
   virtual void RequestDetailedStatus(
       base::Callback<void(const base::DictionaryValue&)> caller) const OVERRIDE;
-  virtual InvalidationAuthProvider* GetInvalidationAuthProvider() OVERRIDE;
+  virtual IdentityProvider* GetIdentityProvider() OVERRIDE;
 
   void RequestAccessToken();
 
@@ -86,8 +100,11 @@ class TiclInvalidationService : public base::NonThreadSafe,
   virtual void OnRefreshTokenAvailable(const std::string& account_id) OVERRIDE;
   virtual void OnRefreshTokenRevoked(const std::string& account_id) OVERRIDE;
 
-  // InvalidationAuthProvider::Observer implementation.
-  virtual void OnInvalidationAuthLogout() OVERRIDE;
+  // IdentityProvider::Observer implementation.
+  virtual void OnActiveAccountLogout() OVERRIDE;
+
+  // TiclSettingsProvider::Observer implementation.
+  virtual void OnUseGCMChannelChanged() OVERRIDE;
 
   // syncer::InvalidationHandler implementation.
   virtual void OnInvalidatorStateChange(
@@ -101,12 +118,14 @@ class TiclInvalidationService : public base::NonThreadSafe,
 
  protected:
   // Initializes with an injected invalidator.
-  void InitForTest(syncer::Invalidator* invalidator);
+  void InitForTest(
+      scoped_ptr<syncer::InvalidationStateTracker> invalidation_state_tracker,
+      syncer::Invalidator* invalidator);
 
+ private:
   friend class TiclInvalidationServiceTestDelegate;
-  friend class TiclInvalidationServiceChannelTest;
+  friend class TiclProfileSettingsProviderTest;
 
- private:
   bool IsReadyToStart();
   bool IsStarted() const;
 
@@ -115,11 +134,11 @@ class TiclInvalidationService : public base::NonThreadSafe,
   void UpdateInvalidatorCredentials();
   void StopInvalidator();
 
-  Profile *const profile_;
-  scoped_ptr<InvalidationAuthProvider> auth_provider_;
+  scoped_ptr<IdentityProvider> identity_provider_;
+  scoped_ptr<TiclSettingsProvider> settings_provider_;
 
   scoped_ptr<syncer::InvalidatorRegistrar> invalidator_registrar_;
-  scoped_ptr<InvalidatorStorage> invalidator_storage_;
+  scoped_ptr<syncer::InvalidationStateTracker> invalidation_state_tracker_;
   scoped_ptr<syncer::Invalidator> invalidator_;
 
   // TiclInvalidationService needs to remember access token in order to
@@ -132,9 +151,10 @@ class TiclInvalidationService : public base::NonThreadSafe,
   base::OneShotTimer<TiclInvalidationService> request_access_token_retry_timer_;
   net::BackoffEntry request_access_token_backoff_;
 
-  PrefChangeRegistrar pref_change_registrar_;
   InvalidationNetworkChannel network_channel_type_;
+  gcm::GCMService* gcm_service_;
   scoped_ptr<GCMInvalidationBridge> gcm_invalidation_bridge_;
+  scoped_refptr<net::URLRequestContextGetter> request_context_;
 
   // The invalidation logger object we use to record state changes
   // and invalidations.