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(); |