From 7623e624861d45f61632aaba650b4182c5d022ff Mon Sep 17 00:00:00 2001 From: pavely Date: Tue, 22 Dec 2015 22:47:19 -0800 Subject: [Sync] Use account_id instead of username in a few places in sync Currently sync gets username from SigninManagerBase::GetAuthenticatedAccountInfo(). In some cases it returns empty result which prevents sync backend from starting. Username is used in following places: - passed to sync directory database to be stored as share id - passed to server in ClientToServerMessage.share - passed to attachment uploader/downloader to be used as account_id when requesting access tokens The change is to switch to more stable SigninManagerBase::GetAuthenticatedAccountId(). account_id will be passed to directory and attachment uploader/downloader. Username is still used in communications with server but it is not enforced to be nonempty. BUG=554551 R=zea@chromium.org Review URL: https://codereview.chromium.org/1544893002 Cr-Commit-Position: refs/heads/master@{#366721} --- sync/internal_api/public/sync_manager.h | 3 +++ sync/internal_api/sync_manager_impl.cc | 14 +++++++------- sync/internal_api/sync_manager_impl_unittest.cc | 1 + 3 files changed, 11 insertions(+), 7 deletions(-) (limited to 'sync/internal_api') diff --git a/sync/internal_api/public/sync_manager.h b/sync/internal_api/public/sync_manager.h index 7e75983..e1cfc29 100644 --- a/sync/internal_api/public/sync_manager.h +++ b/sync/internal_api/public/sync_manager.h @@ -68,6 +68,9 @@ struct SYNC_EXPORT SyncCredentials { SyncCredentials(); ~SyncCredentials(); + // Account_id of signed in account. + std::string account_id; + // The email associated with this account. std::string email; diff --git a/sync/internal_api/sync_manager_impl.cc b/sync/internal_api/sync_manager_impl.cc index 046ee3d..13e4244 100644 --- a/sync/internal_api/sync_manager_impl.cc +++ b/sync/internal_api/sync_manager_impl.cc @@ -228,7 +228,7 @@ void SyncManagerImpl::Init(InitArgs* args) { CHECK(!initialized_); DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(args->post_factory.get()); - DCHECK(!args->credentials.email.empty()); + DCHECK(!args->credentials.account_id.empty()); DCHECK(!args->credentials.sync_token.empty()); DCHECK(!args->credentials.scope_set.empty()); DCHECK(args->cancelation_signal); @@ -263,7 +263,7 @@ void SyncManagerImpl::Init(InitArgs* args) { scoped_ptr backing_store = args->internal_components_factory->BuildDirectoryBackingStore( InternalComponentsFactory::STORAGE_ON_DISK, - args->credentials.email, absolute_db_path).Pass(); + args->credentials.account_id, absolute_db_path).Pass(); DCHECK(backing_store.get()); share_.directory.reset( @@ -279,9 +279,9 @@ void SyncManagerImpl::Init(InitArgs* args) { // sync token so clear sync_token from the UserShare. share_.sync_credentials.sync_token = ""; - const std::string& username = args->credentials.email; - DVLOG(1) << "Username: " << username; - if (!OpenDirectory(username)) { + DVLOG(1) << "Username: " << args->credentials.email; + DVLOG(1) << "AccountId: " << args->credentials.account_id; + if (!OpenDirectory(args->credentials.account_id)) { NotifyInitializationFailure(); LOG(ERROR) << "Sync manager initialization failed!"; return; @@ -337,7 +337,6 @@ void SyncManagerImpl::Init(InitArgs* args) { model_type_registry_.get(), args->invalidator_client_id) .Pass(); - session_context_->set_account_name(args->credentials.email); scheduler_ = args->internal_components_factory->BuildScheduler( name_, session_context_.get(), args->cancelation_signal).Pass(); @@ -506,9 +505,10 @@ bool SyncManagerImpl::PurgeDisabledTypes( void SyncManagerImpl::UpdateCredentials(const SyncCredentials& credentials) { DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(initialized_); - DCHECK(!credentials.email.empty()); + DCHECK(!credentials.account_id.empty()); DCHECK(!credentials.sync_token.empty()); DCHECK(!credentials.scope_set.empty()); + session_context_->set_account_name(credentials.email); observing_network_connectivity_changes_ = true; if (!connection_manager_->SetAuthToken(credentials.sync_token)) diff --git a/sync/internal_api/sync_manager_impl_unittest.cc b/sync/internal_api/sync_manager_impl_unittest.cc index 4f08cb6..f231757 100644 --- a/sync/internal_api/sync_manager_impl_unittest.cc +++ b/sync/internal_api/sync_manager_impl_unittest.cc @@ -882,6 +882,7 @@ class SyncManagerTest : public testing::Test, extensions_activity_ = new ExtensionsActivity(); SyncCredentials credentials; + credentials.account_id = "foo@bar.com"; credentials.email = "foo@bar.com"; credentials.sync_token = "sometoken"; OAuth2TokenService::ScopeSet scope_set; -- cgit v1.1