Index: components/gcm_driver/gcm_profile_service.h |
diff --git a/components/gcm_driver/gcm_profile_service.h b/components/gcm_driver/gcm_profile_service.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e286022100e703a49db765e15a0131508c4061bc |
--- /dev/null |
+++ b/components/gcm_driver/gcm_profile_service.h |
@@ -0,0 +1,100 @@ |
+// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef COMPONENTS_GCM_DRIVER_GCM_PROFILE_SERVICE_H_ |
+#define COMPONENTS_GCM_DRIVER_GCM_PROFILE_SERVICE_H_ |
+ |
+#include <string> |
+ |
+#include "base/callback_forward.h" |
+#include "base/compiler_specific.h" |
+#include "base/files/file_path.h" |
+#include "base/macros.h" |
+#include "base/memory/ref_counted.h" |
+#include "base/memory/scoped_ptr.h" |
+#include "components/keyed_service/core/keyed_service.h" |
+#include "components/signin/core/browser/profile_identity_provider.h" |
+#include "components/version_info/version_info.h" |
+ |
+class PrefService; |
+class ProfileOAuth2TokenService; |
+class SigninManagerBase; |
+ |
+namespace base { |
+class SequencedTaskRunner; |
+} |
+ |
+namespace net { |
+class URLRequestContextGetter; |
+} |
+ |
+namespace user_prefs { |
+class PrefRegistrySyncable; |
+} |
+ |
+namespace gcm { |
+ |
+class GCMClientFactory; |
+class GCMDriver; |
+ |
+#if defined(OS_CHROMEOS) |
+class GCMConnectionObserver; |
+#endif |
+ |
+// Providing GCM service, via GCMDriver. |
+class GCMProfileService : public KeyedService { |
+ public: |
+#if defined(OS_ANDROID) |
+ GCMProfileService( |
+ base::FilePath path, |
+ scoped_refptr<base::SequencedTaskRunner>& blocking_task_runner); |
+#else |
+ GCMProfileService( |
+ PrefService* prefs, |
+ base::FilePath path, |
+ net::URLRequestContextGetter* request_context, |
+ version_info::Channel channel, |
+ scoped_ptr<ProfileIdentityProvider> identity_provider, |
+ scoped_ptr<GCMClientFactory> gcm_client_factory, |
+ const scoped_refptr<base::SequencedTaskRunner>& ui_task_runner, |
+ const scoped_refptr<base::SequencedTaskRunner>& io_task_runner, |
+ scoped_refptr<base::SequencedTaskRunner>& blocking_task_runner); |
+#endif |
+ ~GCMProfileService() override; |
+ |
+ // Returns whether GCM is enabled. |
+ static bool IsGCMEnabled(PrefService* prefs); |
+ |
+ // KeyedService: |
+ void Shutdown() override; |
+ |
+ // For testing purpose. |
+ void SetDriverForTesting(const base::Closure& login_callback, |
+ GCMDriver* driver); |
+ |
+ GCMDriver* driver() const { return driver_.get(); } |
+ |
+ protected: |
+ // Used for constructing fake GCMProfileService for testing purpose. |
+ GCMProfileService(); |
+ |
+ private: |
+ net::URLRequestContextGetter* request_context_; |
+ scoped_ptr<ProfileIdentityProvider> profile_identity_provider_; |
+ |
+ scoped_ptr<GCMDriver> driver_; |
+ |
+// Used for both account tracker and GCM.UserSignedIn UMA. |
+#if !defined(OS_ANDROID) |
+ class IdentityObserver; |
+ scoped_ptr<IdentityObserver> identity_observer_; |
+#endif |
+ |
+ DISALLOW_COPY_AND_ASSIGN(GCMProfileService); |
+}; |
+ |
+} // namespace gcm |
+ |
+#endif // COMPONENTS_GCM_DRIVER_GCM_PROFILE_SERVICE_H_ |
+ |