Chromium Code Reviews| 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..7ae0afa6b809281e308f1fc6bb302cc26b06fa78 |
| --- /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 CHROME_BROWSER_SERVICES_GCM_GCM_PROFILE_SERVICE_H_ |
| +#define CHROME_BROWSER_SERVICES_GCM_GCM_PROFILE_SERVICE_H_ |
| + |
| +#include <string> |
| + |
| +#include "base/callback.h" |
|
droger
2015/10/28 08:30:57
base/callback_forward.h
may be enough
Jitu( very slow this week)
2015/10/28 13:35:14
Done.
|
| +#include "base/compiler_specific.h" |
| +#include "base/files/file_path.h" |
| +#include "base/macros.h" |
| +#include "base/memory/scoped_ptr.h" |
| +#include "components/keyed_service/core/keyed_service.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: |
| + // Returns whether GCM is enabled. |
| + static bool IsGCMEnabled(PrefService* prefs); |
| + |
| +#if defined(OS_ANDROID) |
| + explicit GCMProfileService( |
| + base::FilePath path, |
| + const scoped_refptr<base::SequencedTaskRunner>& blocking_task_runner); |
| +#else |
| + GCMProfileService( |
| + PrefService* prefs, |
| + base::FilePath path, |
| + net::URLRequestContextGetter* request_context, |
| + version_info::Channel channel, |
| + SigninManagerBase* signin_manager, |
| + ProfileOAuth2TokenService* profile_o_auth_2_token_service, |
| + const base::Closure& login_callback, |
| + scoped_ptr<GCMClientFactory> gcm_client_factory, |
| + const scoped_refptr<base::SequencedTaskRunner>& ui_task_runner, |
| + const scoped_refptr<base::SequencedTaskRunner>& io_task_runner, |
| + const scoped_refptr<base::SequencedTaskRunner>& blocking_task_runner); |
| +#endif |
| + ~GCMProfileService() override; |
| + |
| + // 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: |
| + SigninManagerBase* signin_manager_; |
| + ProfileOAuth2TokenService* profile_o_auth_2_token_service_; |
| + net::URLRequestContextGetter* request_context_; |
| + |
| + 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 // CHROME_BROWSER_SERVICES_GCM_GCM_PROFILE_SERVICE_H_ |