Chromium Code Reviews| Index: chrome/browser/invalidation/ticl_invalidation_service.cc |
| diff --git a/chrome/browser/invalidation/ticl_invalidation_service.cc b/chrome/browser/invalidation/ticl_invalidation_service.cc |
| index 536d9657a9b3d510dc7a7740824cb208c45ac230..a84d218da2d8784236dacfe3f1b9e9d82f756832 100644 |
| --- a/chrome/browser/invalidation/ticl_invalidation_service.cc |
| +++ b/chrome/browser/invalidation/ticl_invalidation_service.cc |
| @@ -19,6 +19,7 @@ |
| #include "chrome/common/pref_names.h" |
| #include "components/signin/core/browser/profile_oauth2_token_service.h" |
| #include "google_apis/gaia/gaia_constants.h" |
| +#include "net/url_request/url_request_context_getter.h" |
| #include "sync/notifier/gcm_network_channel_delegate.h" |
| #include "sync/notifier/invalidation_util.h" |
| #include "sync/notifier/invalidator.h" |
| @@ -62,13 +63,17 @@ namespace invalidation { |
| TiclInvalidationService::TiclInvalidationService( |
| scoped_ptr<InvalidationAuthProvider> auth_provider, |
| + const scoped_refptr<net::URLRequestContextGetter>& request_context, |
| + scoped_ptr<syncer::InvalidationStateTracker> invalidation_state_tracker, |
| Profile* profile) |
| : OAuth2TokenService::Consumer("ticl_invalidation"), |
| profile_(profile), |
| auth_provider_(auth_provider.Pass()), |
| invalidator_registrar_(new syncer::InvalidatorRegistrar()), |
| + invalidation_state_tracker_(invalidation_state_tracker.Pass()), |
| request_access_token_backoff_(&kRequestAccessTokenBackoffPolicy), |
| network_channel_type_(PUSH_CLIENT_CHANNEL), |
| + request_context_(request_context), |
| logger_() {} |
| TiclInvalidationService::~TiclInvalidationService() { |
| @@ -78,11 +83,11 @@ TiclInvalidationService::~TiclInvalidationService() { |
| void TiclInvalidationService::Init() { |
| DCHECK(CalledOnValidThread()); |
| - invalidator_storage_.reset(new InvalidatorStorage(profile_->GetPrefs())); |
| - if (invalidator_storage_->GetInvalidatorClientId().empty()) { |
| + if (invalidation_state_tracker_->GetInvalidatorClientId().empty()) { |
| // This also clears any existing state. We can't reuse old invalidator |
| // state with the new ID anyway. |
| - invalidator_storage_->SetInvalidatorClientId(GenerateInvalidatorClientId()); |
| + invalidation_state_tracker_->SetInvalidatorClientId( |
| + GenerateInvalidatorClientId()); |
| } |
| pref_change_registrar_.Init(profile_->GetPrefs()); |
| @@ -169,7 +174,7 @@ syncer::InvalidatorState TiclInvalidationService::GetInvalidatorState() const { |
| std::string TiclInvalidationService::GetInvalidatorClientId() const { |
| DCHECK(CalledOnValidThread()); |
| - return invalidator_storage_->GetInvalidatorClientId(); |
| + return invalidation_state_tracker_->GetInvalidatorClientId(); |
| } |
| InvalidationLogger* TiclInvalidationService::GetInvalidationLogger() { |
| @@ -280,11 +285,11 @@ void TiclInvalidationService::OnInvalidationAuthLogout() { |
| StopInvalidator(); |
| } |
| - // This service always expects to have a valid invalidator storage. |
| - // So we must not only clear the old one, but also start a new one. |
| - invalidator_storage_->Clear(); |
| - invalidator_storage_.reset(new InvalidatorStorage(profile_->GetPrefs())); |
| - invalidator_storage_->SetInvalidatorClientId(GenerateInvalidatorClientId()); |
| + // This service always expects to have a valid invalidation state. Thus, we |
| + // must generate a new client ID to replace the existing one. Setting a new |
| + // client ID also clears all other state. |
| + invalidation_state_tracker_-> |
| + SetInvalidatorClientId(GenerateInvalidatorClientId()); |
|
dcheng
2014/04/11 19:54:00
It might be nice to rename this method to make it
bartfab (slow)
2014/04/14 09:20:08
Done.
|
| } |
| void TiclInvalidationService::OnInvalidatorStateChange( |
| @@ -325,7 +330,7 @@ void TiclInvalidationService::Shutdown() { |
| if (IsStarted()) { |
| StopInvalidator(); |
| } |
| - invalidator_storage_.reset(); |
| + invalidation_state_tracker_.reset(); |
| invalidator_registrar_.reset(); |
| } |
| @@ -365,8 +370,8 @@ void TiclInvalidationService::StartInvalidator( |
| InvalidationNetworkChannel network_channel) { |
| DCHECK(CalledOnValidThread()); |
| DCHECK(!invalidator_); |
| - DCHECK(invalidator_storage_); |
| - DCHECK(!invalidator_storage_->GetInvalidatorClientId().empty()); |
| + DCHECK(invalidation_state_tracker_); |
| + DCHECK(!invalidation_state_tracker_->GetInvalidatorClientId().empty()); |
| // Request access token for PushClientChannel. GCMNetworkChannel will request |
| // access token before sending message to server. |
| @@ -384,7 +389,7 @@ void TiclInvalidationService::StartInvalidator( |
| case PUSH_CLIENT_CHANNEL: { |
| notifier::NotifierOptions options = |
| ParseNotifierOptions(*CommandLine::ForCurrentProcess()); |
| - options.request_context_getter = profile_->GetRequestContext(); |
| + options.request_context_getter = request_context_; |
| options.auth_mechanism = "X-OAUTH2"; |
| network_channel_options_.SetString("Options.HostPort", |
| options.xmpp_host_port.ToString()); |
| @@ -402,7 +407,7 @@ void TiclInvalidationService::StartInvalidator( |
| new GCMInvalidationBridge(gcm_profile_service, auth_provider_.get())); |
| network_channel_creator = |
| syncer::NonBlockingInvalidator::MakeGCMNetworkChannelCreator( |
| - profile_->GetRequestContext(), |
| + request_context_, |
| gcm_invalidation_bridge_->CreateDelegate().Pass()); |
| break; |
| } |
| @@ -413,13 +418,13 @@ void TiclInvalidationService::StartInvalidator( |
| } |
| invalidator_.reset(new syncer::NonBlockingInvalidator( |
| network_channel_creator, |
| - invalidator_storage_->GetInvalidatorClientId(), |
| - invalidator_storage_->GetSavedInvalidations(), |
| - invalidator_storage_->GetBootstrapData(), |
| + invalidation_state_tracker_->GetInvalidatorClientId(), |
| + invalidation_state_tracker_->GetSavedInvalidations(), |
| + invalidation_state_tracker_->GetBootstrapData(), |
| syncer::WeakHandle<syncer::InvalidationStateTracker>( |
| - invalidator_storage_->AsWeakPtr()), |
| + invalidation_state_tracker_->GetWeakPtr()), |
| GetUserAgent(), |
| - profile_->GetRequestContext())); |
| + request_context_)); |
| UpdateInvalidatorCredentials(); |