Chromium Code Reviews| Index: components/gcm_driver/gcm_profile_service.cc |
| diff --git a/chrome/browser/services/gcm/gcm_profile_service.cc b/components/gcm_driver/gcm_profile_service.cc |
| similarity index 53% |
| rename from chrome/browser/services/gcm/gcm_profile_service.cc |
| rename to components/gcm_driver/gcm_profile_service.cc |
| index 0f9650b5c9c30021ce70b43b52a52f52819a5292..c55bccc536450c5f278fce7dc585c3ead8320f33 100644 |
| --- a/chrome/browser/services/gcm/gcm_profile_service.cc |
| +++ b/components/gcm_driver/gcm_profile_service.cc |
| @@ -2,30 +2,24 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#include "chrome/browser/services/gcm/gcm_profile_service.h" |
| +#include "components/gcm_driver/gcm_profile_service.h" |
| #include <vector> |
| #include "base/logging.h" |
| #include "base/prefs/pref_service.h" |
| -#include "chrome/browser/profiles/profile.h" |
| -#include "chrome/common/chrome_constants.h" |
| #include "components/gcm_driver/gcm_driver.h" |
| +#include "components/gcm_driver/gcm_driver_constants.h" |
| #include "components/pref_registry/pref_registry_syncable.h" |
| #if defined(OS_ANDROID) |
| #include "base/sequenced_task_runner.h" |
| #include "base/threading/sequenced_worker_pool.h" |
| #include "components/gcm_driver/gcm_driver_android.h" |
| -#include "content/public/browser/browser_thread.h" |
| #else |
| #include "base/bind.h" |
| #include "base/files/file_path.h" |
| #include "base/memory/weak_ptr.h" |
| -#include "chrome/browser/signin/profile_oauth2_token_service_factory.h" |
| -#include "chrome/browser/signin/signin_manager_factory.h" |
| -#include "chrome/browser/ui/webui/signin/login_ui_service_factory.h" |
| -#include "chrome/common/channel_info.h" |
| #include "components/gcm_driver/gcm_account_tracker.h" |
| #include "components/gcm_driver/gcm_channel_status_syncer.h" |
| #include "components/gcm_driver/gcm_client_factory.h" |
| @@ -33,7 +27,6 @@ |
| #include "components/gcm_driver/gcm_driver_desktop.h" |
| #include "components/signin/core/browser/profile_identity_provider.h" |
| #include "components/signin/core/browser/signin_manager.h" |
| -#include "content/public/browser/browser_thread.h" |
| #include "google_apis/gaia/account_tracker.h" |
| #include "google_apis/gaia/identity_provider.h" |
| #include "net/url_request/url_request_context_getter.h" |
| @@ -46,7 +39,11 @@ namespace gcm { |
| // in. It ensures that account tracker is taking |
| class GCMProfileService::IdentityObserver : public IdentityProvider::Observer { |
| public: |
| - IdentityObserver(Profile* profile, GCMDriver* driver); |
| + IdentityObserver(SigninManagerBase* signin_manager, |
| + ProfileOAuth2TokenService* profile_o_auth_2_token_service, |
| + base::Closure login_callback, |
| + net::URLRequestContextGetter* request_context, |
| + GCMDriver* driver); |
| ~IdentityObserver() override; |
| // IdentityProvider::Observer: |
| @@ -54,9 +51,8 @@ class GCMProfileService::IdentityObserver : public IdentityProvider::Observer { |
| void OnActiveAccountLogout() override; |
| private: |
| - void StartAccountTracker(); |
| + void StartAccountTracker(net::URLRequestContextGetter* request_context); |
| - Profile* profile_; |
| GCMDriver* driver_; |
| scoped_ptr<IdentityProvider> identity_provider_; |
| scoped_ptr<GCMAccountTracker> gcm_account_tracker_; |
| @@ -70,17 +66,19 @@ class GCMProfileService::IdentityObserver : public IdentityProvider::Observer { |
| DISALLOW_COPY_AND_ASSIGN(IdentityObserver); |
| }; |
| -GCMProfileService::IdentityObserver::IdentityObserver(Profile* profile, |
| - GCMDriver* driver) |
| - : profile_(profile), driver_(driver), weak_ptr_factory_(this) { |
| +GCMProfileService::IdentityObserver::IdentityObserver( |
| + SigninManagerBase* signin_manager, |
| + ProfileOAuth2TokenService* profile_o_auth_2_token_service, |
| + base::Closure login_callback, |
| + net::URLRequestContextGetter* request_context, |
| + GCMDriver* driver) |
| + : driver_(driver), weak_ptr_factory_(this) { |
| identity_provider_.reset(new ProfileIdentityProvider( |
| - SigninManagerFactory::GetForProfile(profile), |
| - ProfileOAuth2TokenServiceFactory::GetForProfile(profile), |
| - LoginUIServiceFactory::GetShowLoginPopupCallbackForProfile(profile))); |
| + signin_manager, profile_o_auth_2_token_service, login_callback)); |
| identity_provider_->AddObserver(this); |
| OnActiveAccountLogin(); |
| - StartAccountTracker(); |
| + StartAccountTracker(request_context); |
| } |
| GCMProfileService::IdentityObserver::~IdentityObserver() { |
| @@ -107,13 +105,13 @@ void GCMProfileService::IdentityObserver::OnActiveAccountLogout() { |
| driver_->OnSignedOut(); |
| } |
| -void GCMProfileService::IdentityObserver::StartAccountTracker() { |
| +void GCMProfileService::IdentityObserver::StartAccountTracker( |
| + net::URLRequestContextGetter* request_context) { |
| if (gcm_account_tracker_) |
| return; |
| scoped_ptr<gaia::AccountTracker> gaia_account_tracker( |
| - new gaia::AccountTracker(identity_provider_.get(), |
| - profile_->GetRequestContext())); |
| + new gaia::AccountTracker(identity_provider_.get(), request_context)); |
| gcm_account_tracker_.reset( |
| new GCMAccountTracker(gaia_account_tracker.Pass(), driver_)); |
| @@ -124,66 +122,54 @@ void GCMProfileService::IdentityObserver::StartAccountTracker() { |
| #endif // !defined(OS_ANDROID) |
| // static |
| -bool GCMProfileService::IsGCMEnabled(Profile* profile) { |
| +bool GCMProfileService::IsGCMEnabled(PrefService* prefs) { |
| #if defined(OS_ANDROID) |
| return true; |
| #else |
| - return profile->GetPrefs()->GetBoolean(gcm::prefs::kGCMChannelStatus); |
| + return prefs->GetBoolean(gcm::prefs::kGCMChannelStatus); |
| #endif // defined(OS_ANDROID) |
| } |
| #if defined(OS_ANDROID) |
| -GCMProfileService::GCMProfileService(Profile* profile) |
| - : profile_(profile) { |
| - DCHECK(!profile->IsOffTheRecord()); |
| - |
| - scoped_refptr<base::SequencedWorkerPool> worker_pool( |
| - content::BrowserThread::GetBlockingPool()); |
| - scoped_refptr<base::SequencedTaskRunner> blocking_task_runner( |
| - worker_pool->GetSequencedTaskRunnerWithShutdownBehavior( |
| - worker_pool->GetSequenceToken(), |
| - base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)); |
| - |
| - driver_.reset(new GCMDriverAndroid( |
| - profile_->GetPath().Append(chrome::kGCMStoreDirname), |
| - blocking_task_runner)); |
| +GCMProfileService::GCMProfileService( |
| + base::FilePath path, |
| + const scoped_refptr<base::SequencedTaskRunner>& blocking_task_runner) { |
| + driver_.reset(new GCMDriverAndroid(path.Append(gcm_driver::kGCMStoreDirname), |
| + blocking_task_runner)); |
| } |
| #else |
| GCMProfileService::GCMProfileService( |
| - Profile* profile, |
| - scoped_ptr<GCMClientFactory> gcm_client_factory) |
| - : profile_(profile) { |
| - DCHECK(!profile->IsOffTheRecord()); |
| - |
| - base::SequencedWorkerPool* worker_pool = |
| - content::BrowserThread::GetBlockingPool(); |
| - scoped_refptr<base::SequencedTaskRunner> blocking_task_runner( |
| - worker_pool->GetSequencedTaskRunnerWithShutdownBehavior( |
| - worker_pool->GetSequenceToken(), |
| - base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)); |
| - |
| - driver_ = CreateGCMDriverDesktop( |
| - gcm_client_factory.Pass(), |
| - profile_->GetPrefs(), |
| - profile_->GetPath().Append(chrome::kGCMStoreDirname), |
| - profile_->GetRequestContext(), |
| - chrome::GetChannel(), |
| - content::BrowserThread::GetMessageLoopProxyForThread( |
| - content::BrowserThread::UI), |
| - content::BrowserThread::GetMessageLoopProxyForThread( |
| - content::BrowserThread::IO), |
| - blocking_task_runner); |
| - |
| - identity_observer_.reset(new IdentityObserver(profile, driver_.get())); |
| + 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) |
| + : signin_manager_(signin_manager), |
| + profile_o_auth_2_token_service_(profile_o_auth_2_token_service), |
| + request_context_(request_context) { |
| + driver_ = CreateGCMDriverDesktop(gcm_client_factory.Pass(), prefs, |
| + path.Append(gcm_driver::kGCMStoreDirname), |
| + request_context_, channel, ui_task_runner, |
| + io_task_runner, blocking_task_runner); |
| + |
| + identity_observer_.reset( |
| + new IdentityObserver(signin_manager_, profile_o_auth_2_token_service_, |
| + login_callback, request_context_, driver_.get())); |
| } |
| #endif // defined(OS_ANDROID) |
| GCMProfileService::GCMProfileService() |
| - : profile_(NULL) { |
| -} |
| + : signin_manager_(NULL), |
|
droger
2015/10/27 12:23:44
use nullptr instead of NULL.
Jitu( very slow this week)
2015/10/28 05:11:36
Done.
Jitu( very slow this week)
2015/10/28 05:11:36
Done.
|
| + profile_o_auth_2_token_service_(NULL), |
| + request_context_() {} |
|
droger
2015/10/27 12:23:44
request_context_(nullptr)
Jitu( very slow this week)
2015/10/28 05:11:36
Done.
|
| -GCMProfileService::~GCMProfileService() { |
| -} |
| +GCMProfileService::~GCMProfileService() {} |
| void GCMProfileService::Shutdown() { |
| #if !defined(OS_ANDROID) |
| @@ -195,11 +181,13 @@ void GCMProfileService::Shutdown() { |
| } |
| } |
| -void GCMProfileService::SetDriverForTesting(GCMDriver* driver) { |
| +void GCMProfileService::SetDriverForTesting(const base::Closure& login_callback, |
| + GCMDriver* driver) { |
| driver_.reset(driver); |
| #if !defined(OS_ANDROID) |
| - if (identity_observer_) |
|
droger
2015/10/27 12:36:43
As pointed out by blundell: your removed that if.
Jitu( very slow this week)
2015/10/28 05:11:36
Oh
This was removed mistakenly.
|
| - identity_observer_.reset(new IdentityObserver(profile_, driver)); |
| + identity_observer_.reset( |
| + new IdentityObserver(signin_manager_, profile_o_auth_2_token_service_, |
| + login_callback, request_context_, driver)); |
| #endif // !defined(OS_ANDROID) |
| } |