diff options
author | pavely <pavely@chromium.org> | 2015-12-22 22:47:19 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-12-23 06:48:40 +0000 |
commit | 7623e624861d45f61632aaba650b4182c5d022ff (patch) | |
tree | 10321308c997c3260154245c7a268667e85ddbc0 /sync/internal_api | |
parent | e7259757073db5b53542ce4896d65ea208c8060d (diff) | |
download | chromium_src-7623e624861d45f61632aaba650b4182c5d022ff.zip chromium_src-7623e624861d45f61632aaba650b4182c5d022ff.tar.gz chromium_src-7623e624861d45f61632aaba650b4182c5d022ff.tar.bz2 |
[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}
Diffstat (limited to 'sync/internal_api')
-rw-r--r-- | sync/internal_api/public/sync_manager.h | 3 | ||||
-rw-r--r-- | sync/internal_api/sync_manager_impl.cc | 14 | ||||
-rw-r--r-- | sync/internal_api/sync_manager_impl_unittest.cc | 1 |
3 files changed, 11 insertions, 7 deletions
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<syncable::DirectoryBackingStore> 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; |