| Index: components/signin/core/browser/account_tracker_service.cc
|
| diff --git a/components/signin/core/browser/account_tracker_service.cc b/components/signin/core/browser/account_tracker_service.cc
|
| index ae4ae9b313c0bb44231543f6e4ce48f63e9a3d8c..8134e42a96d6a97cd43a43d1dcb85ef31867e011 100644
|
| --- a/components/signin/core/browser/account_tracker_service.cc
|
| +++ b/components/signin/core/browser/account_tracker_service.cc
|
| @@ -442,3 +442,44 @@ void AccountTrackerService::LoadFromTokenService() {
|
| OnRefreshTokenAvailable(*it);
|
| }
|
| }
|
| +
|
| +std::string AccountTrackerService::PickAccountIdForAccount(
|
| + const std::string& gaia_id,
|
| + const std::string& email) {
|
| + return PickAccountIdForAccount(pref_service_, gaia_id, email);
|
| +}
|
| +
|
| +// static
|
| +std::string AccountTrackerService::PickAccountIdForAccount(
|
| + PrefService* pref_service,
|
| + const std::string& gaia_id,
|
| + const std::string& email) {
|
| + DCHECK(!gaia_id.empty());
|
| + DCHECK(!email.empty());
|
| + switch(GetMigrationState(pref_service)) {
|
| + case MIGRATION_NOT_STARTED:
|
| + case MIGRATION_IN_PROGRESS:
|
| + return email;
|
| + case MIGRATION_DONE:
|
| + return gaia_id;
|
| + default:
|
| + NOTREACHED();
|
| + return email;
|
| + }
|
| +}
|
| +
|
| +void AccountTrackerService::SeedAccountInfo(const std::string& account_id,
|
| + const std::string& gaia,
|
| + const std::string& email) {
|
| + DCHECK(!account_id.empty());
|
| + DCHECK(!gaia.empty());
|
| + DCHECK(!email.empty());
|
| + bool already_exists = ContainsKey(accounts_, account_id);
|
| + StartTrackingAccount(account_id);
|
| + AccountState& state = accounts_[account_id];
|
| + DCHECK(!already_exists || state.info.gaia == gaia);
|
| + state.info.gaia = gaia;
|
| + state.info.email = email;
|
| + SaveToPrefs(state);
|
| +
|
| +}
|
|
|