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 b57c58500e897372df481d6608843af8b5d09cb5..5c4d9e5b4266da73ebc5949387c34637f1e07c38 100644 |
--- a/components/signin/core/browser/account_tracker_service.cc |
+++ b/components/signin/core/browser/account_tracker_service.cc |
@@ -141,6 +141,26 @@ AccountInfo AccountTrackerService::FindAccountInfoByEmail( |
return AccountInfo(); |
} |
+bool AccountTrackerService::IsTrackingAccount( |
+ const std::string& account_id) const { |
+ return ContainsKey(accounts_, account_id); |
+} |
+ |
+bool AccountTrackerService::HasIdNameMappingForAccount( |
+ const std::string& account_id) const { |
+ AccountInfo account = GetAccountInfo(account_id); |
+ return !account.email.empty() && !account.gaia.empty(); |
gogerald1
2015/10/13 16:34:53
This is always true, if IsMigratable() is true and
nyquist
2015/10/15 19:33:45
I thought GetAccountInfo(...) returns an empty str
|
+} |
+ |
+bool AccountTrackerService::HasIdNameMappingForAllAccounts() const { |
+ for (const auto& account : accounts_) { |
+ const AccountInfo& account_info = account.second.info; |
+ if (account_info.email.empty() || account_info.gaia.empty()) |
gogerald1
2015/10/13 16:34:53
Same as above comments
|
+ return false; |
+ } |
+ return true; |
+} |
+ |
AccountTrackerService::AccountIdMigrationState |
AccountTrackerService::GetMigrationState() const { |
return GetMigrationState(signin_client_->GetPrefs()); |
@@ -182,7 +202,7 @@ void AccountTrackerService::NotifyAccountRemoved(const AccountState& state) { |
void AccountTrackerService::StartTrackingAccount( |
const std::string& account_id) { |
- if (!ContainsKey(accounts_, account_id)) { |
+ if (!IsTrackingAccount(account_id)) { |
DVLOG(1) << "StartTracking " << account_id; |
AccountState state; |
state.info.account_id = account_id; |
@@ -193,7 +213,7 @@ void AccountTrackerService::StartTrackingAccount( |
void AccountTrackerService::StopTrackingAccount(const std::string& account_id) { |
DVLOG(1) << "StopTracking " << account_id; |
- if (ContainsKey(accounts_, account_id)) { |
+ if (IsTrackingAccount(account_id)) { |
AccountState& state = accounts_[account_id]; |
RemoveFromPrefs(state); |
if (!state.info.gaia.empty()) |
@@ -206,7 +226,7 @@ void AccountTrackerService::StopTrackingAccount(const std::string& account_id) { |
void AccountTrackerService::SetAccountStateFromUserInfo( |
const std::string& account_id, |
const base::DictionaryValue* user_info) { |
- DCHECK(ContainsKey(accounts_, account_id)); |
+ DCHECK(IsTrackingAccount(account_id)); |
AccountState& state = accounts_[account_id]; |
std::string gaia_id; |
@@ -241,7 +261,7 @@ void AccountTrackerService::SetAccountStateFromUserInfo( |
void AccountTrackerService::SetIsChildAccount(const std::string& account_id, |
const bool& is_child_account) { |
- DCHECK(ContainsKey(accounts_, account_id)); |
+ DCHECK(IsTrackingAccount(account_id)); |
AccountState& state = accounts_[account_id]; |
if (state.info.is_child_account == is_child_account) |
return; |
@@ -253,14 +273,7 @@ void AccountTrackerService::SetIsChildAccount(const std::string& account_id, |
bool AccountTrackerService::IsMigratable() const { |
#if !defined(OS_CHROMEOS) |
- for (std::map<std::string, AccountState>::const_iterator it = |
- accounts_.begin(); |
- it != accounts_.end(); ++it) { |
- const AccountState& state = it->second; |
- if ((it->first).empty() || state.info.gaia.empty()) |
- return false; |
- } |
- return true; |
+ return HasIdNameMappingForAllAccounts(); |
#else |
return false; |
#endif |
@@ -276,7 +289,7 @@ void AccountTrackerService::MigrateToGaiaId() { |
std::string account_id = it->first; |
if (account_id != state.info.gaia) { |
std::string new_account_id = state.info.gaia; |
- if (!ContainsKey(accounts_, new_account_id)) { |
+ if (!IsTrackingAccount(new_account_id)) { |
AccountState new_state = state; |
new_state.info.account_id = new_account_id; |
migrated_accounts.insert(make_pair(new_account_id, new_state)); |
@@ -288,7 +301,7 @@ void AccountTrackerService::MigrateToGaiaId() { |
// Remove any obsolete account. |
for (auto account_id : to_remove) { |
- if (ContainsKey(accounts_, account_id)) { |
+ if (IsTrackingAccount(account_id)) { |
AccountState& state = accounts_[account_id]; |
RemoveFromPrefs(state); |
accounts_.erase(account_id); |
@@ -466,7 +479,7 @@ std::string AccountTrackerService::PickAccountIdForAccount( |
std::string AccountTrackerService::SeedAccountInfo(const std::string& gaia, |
const std::string& email) { |
const std::string account_id = PickAccountIdForAccount(gaia, email); |
- const bool already_exists = ContainsKey(accounts_, account_id); |
+ const bool already_exists = IsTrackingAccount(account_id); |
StartTrackingAccount(account_id); |
AccountState& state = accounts_[account_id]; |
DCHECK(!already_exists || state.info.gaia.empty() || state.info.gaia == gaia); |
@@ -489,7 +502,7 @@ void AccountTrackerService::SeedAccountInfo(AccountInfo info) { |
} |
if(info.IsValid()) { |
- if(!ContainsKey(accounts_, info.account_id)) { |
+ if (!IsTrackingAccount(info.account_id)) { |
SeedAccountInfo(info.gaia, info.email); |
} |