Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(797)

Unified Diff: components/user_manager/known_user.cc

Issue 1693383003: ChromeOS cryptohome should be able to use gaia id as user identifier. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed unit tests. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/user_manager/known_user.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/user_manager/known_user.cc
diff --git a/components/user_manager/known_user.cc b/components/user_manager/known_user.cc
index 973e12b78ee890d584ccda602932cc6682207af4..8be385cbf043ec31d6f8ede85a90d67dbb432b75 100644
--- a/components/user_manager/known_user.cc
+++ b/components/user_manager/known_user.cc
@@ -46,11 +46,10 @@ const char kReauthReasonKey[] = "reauth_reason";
const char kGaiaIdMigration[] = "gaia_id_migration";
PrefService* GetLocalState() {
- UserManager* user_manager = UserManager::Get();
- if (user_manager)
- return user_manager->GetLocalState();
+ if (!UserManager::IsInitialized())
+ return nullptr;
- return nullptr;
+ return UserManager::Get()->GetLocalState();
}
// Checks if values in |dict| correspond with |account_id| identity.
@@ -72,7 +71,11 @@ bool UserMatches(const AccountId& account_id,
// Fills relevant |dict| values based on |account_id|.
void UpdateIdentity(const AccountId& account_id, base::DictionaryValue& dict) {
- dict.SetString(kCanonicalEmail, account_id.GetUserEmail());
+ if (!account_id.GetUserEmail().empty())
+ dict.SetString(kCanonicalEmail, account_id.GetUserEmail());
+
+ if (!account_id.GetGaiaId().empty())
+ dict.SetString(kGAIAIdKey, account_id.GetGaiaId());
}
} // namespace
@@ -86,9 +89,8 @@ bool FindPrefs(const AccountId& account_id,
return false;
// UserManager is usually NULL in unit tests.
- UserManager* user_manager = UserManager::Get();
- if (user_manager &&
- user_manager->IsUserNonCryptohomeDataEphemeral(account_id))
+ if (UserManager::IsInitialized() &&
+ UserManager::Get()->IsUserNonCryptohomeDataEphemeral(account_id))
return false;
const base::ListValue* known_users = local_state->GetList(kKnownUsers);
@@ -114,9 +116,8 @@ void UpdatePrefs(const AccountId& account_id,
return;
// UserManager is usually NULL in unit tests.
- UserManager* user_manager = UserManager::Get();
- if (user_manager &&
- user_manager->IsUserNonCryptohomeDataEphemeral(account_id))
+ if (UserManager::IsInitialized() &&
+ UserManager::Get()->IsUserNonCryptohomeDataEphemeral(account_id))
return;
ListPrefUpdate update(local_state, kKnownUsers);
@@ -219,9 +220,10 @@ AccountId GetAccountId(const std::string& user_email,
return EmptyAccountId();
AccountId result(EmptyAccountId());
- UserManager* user_manager = UserManager::Get();
- if (user_manager &&
- user_manager->GetPlatformKnownUserId(user_email, gaia_id, &result)) {
+ // UserManager is usually NULL in unit tests.
+ if (UserManager::IsInitialized() &&
+ UserManager::Get()->GetPlatformKnownUserId(user_email, gaia_id,
+ &result)) {
return result;
}
@@ -256,6 +258,29 @@ AccountId GetAccountId(const std::string& user_email,
: AccountId::FromUserEmailGaiaId(user_email, gaia_id));
}
+std::vector<AccountId> GetKnownAccountIds() {
+ std::vector<AccountId> result;
+ PrefService* local_state = GetLocalState();
+
+ // Local State may not be initialized in tests.
+ if (!local_state)
+ return result;
+
+ const base::ListValue* known_users = local_state->GetList(kKnownUsers);
+ for (size_t i = 0; i < known_users->GetSize(); ++i) {
+ const base::DictionaryValue* element = nullptr;
+ if (known_users->GetDictionary(i, &element)) {
+ std::string email;
+ std::string gaia_id;
+ const bool has_email = element->GetString(kCanonicalEmail, &email);
+ const bool has_gaia_id = element->GetString(kGAIAIdKey, &gaia_id);
+ if (has_email || has_gaia_id)
+ result.push_back(AccountId::FromUserEmailGaiaId(email, gaia_id));
+ }
+ }
+ return result;
+}
+
bool GetGaiaIdMigrationStatus(const AccountId& account_id,
const std::string& subsystem) {
bool migrated = false;
« no previous file with comments | « components/user_manager/known_user.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698