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

Unified Diff: chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc

Issue 1412813003: This CL replaces user_manager::UserID with AccountId. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@468875--Chrome-OS-handles-deletion-of-Gmail-account-poorly--Create-AccountID-structure-part2--user_names
Patch Set: Fix Win GN build. Created 5 years, 1 month 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
Index: chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
diff --git a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
index 1aa96e09e740d4133ddc64689aa45d4a9c2d387a..bf2598e80310fe2593b539c287ac629f31d379da 100644
--- a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
@@ -436,27 +436,35 @@ void GaiaScreenHandler::HandleWebviewLoadAborted(
UpdateState(error_reason);
}
-std::string GaiaScreenHandler::GetCanonicalEmail(
+AccountId GaiaScreenHandler::GetAccountId(
const std::string& authenticated_email,
const std::string& gaia_id) const {
- const std::string sanitized_email = gaia::SanitizeEmail(authenticated_email);
-
const std::string canonicalized_email =
- gaia::CanonicalizeEmail(sanitized_email);
+ gaia::CanonicalizeEmail(gaia::SanitizeEmail(authenticated_email));
+ const AccountId authenticated_account_id(
+ AccountId::FromUserEmailGaiaId(canonicalized_email, gaia_id));
+
+ // If we don't have UserManager instance (i.e. we are in unit test),
+ // or a known user has authenticated, just log in.
user_manager::UserManager* user_manager = user_manager::UserManager::Get();
- if (user_manager && !user_manager->IsKnownUser(canonicalized_email)) {
- std::string old_canonical_email;
- if (user_manager->GetKnownUserCanonicalEmail(gaia_id,
- &old_canonical_email)) {
- if (old_canonical_email != canonicalized_email) {
- LOG(WARNING) << "Existing user '" << old_canonical_email
- << "' authenticated by alias '" << sanitized_email << "'.";
- return old_canonical_email;
- }
- }
+ if (!user_manager || user_manager->IsKnownUser(authenticated_account_id))
+ return authenticated_account_id;
+
+ // If [part of] user id has changed, update stored data and connect user
+ // to existing home directory.
+ AccountId old_account_id(EmptyAccountId());
+ if (!user_manager->GetKnownUserAccountId(authenticated_account_id,
+ &old_account_id)) {
+ return authenticated_account_id;
}
- // For compatibility reasons, sanitized email is used.
- return sanitized_email;
+
+ if (old_account_id.GetUserEmail() != canonicalized_email) {
+ LOG(WARNING) << "Existing user '" << old_account_id.GetUserEmail()
+ << "' authenticated by alias '" << canonicalized_email << "'.";
+ return old_account_id;
+ }
+
+ return authenticated_account_id;
}
void GaiaScreenHandler::HandleCompleteAuthentication(
@@ -474,8 +482,7 @@ void GaiaScreenHandler::HandleCompleteAuthentication(
const std::string sanitized_email = gaia::SanitizeEmail(email);
Delegate()->SetDisplayEmail(sanitized_email);
- const std::string canonical_email = GetCanonicalEmail(email, gaia_id);
- UserContext user_context(canonical_email);
+ UserContext user_context(GetAccountId(email, gaia_id));
user_context.SetGaiaID(gaia_id);
user_context.SetKey(Key(password));
user_context.SetAuthCode(auth_code);
@@ -508,7 +515,7 @@ void GaiaScreenHandler::HandleCompleteLogin(const std::string& gaia_id,
// Consumer management enrollment is in progress.
const std::string owner_email =
- user_manager::UserManager::Get()->GetOwnerEmail();
+ user_manager::UserManager::Get()->GetOwnerAccountId().GetUserEmail();
if (typed_email != owner_email) {
// Show Gaia sign-in screen again, since we only allow the owner to sign
// in.
@@ -595,8 +602,7 @@ void GaiaScreenHandler::DoCompleteLogin(const std::string& gaia_id,
DCHECK(!gaia_id.empty());
const std::string sanitized_email = gaia::SanitizeEmail(typed_email);
Delegate()->SetDisplayEmail(sanitized_email);
- const std::string canonical_email = GetCanonicalEmail(typed_email, gaia_id);
- UserContext user_context(canonical_email);
+ UserContext user_context(GetAccountId(typed_email, gaia_id));
user_context.SetGaiaID(gaia_id);
user_context.SetKey(Key(password));
user_context.SetAuthFlow(using_saml
@@ -755,7 +761,7 @@ void GaiaScreenHandler::ShowGaiaScreenIfReady() {
std::vector<std::string> input_methods =
imm->GetInputMethodUtil()->GetHardwareLoginInputMethodIds();
const std::string owner_im = SigninScreenHandler::GetUserLRUInputMethod(
- user_manager::UserManager::Get()->GetOwnerEmail());
+ user_manager::UserManager::Get()->GetOwnerAccountId().GetUserEmail());
const std::string system_im = g_browser_process->local_state()->GetString(
language_prefs::kPreferredKeyboardLayout);
@@ -839,7 +845,8 @@ void GaiaScreenHandler::LoadAuthExtension(bool force,
context.is_enrolling_consumer_management = is_enrolling_consumer_management_;
std::string gaia_id;
- if (user_manager::UserManager::Get()->FindGaiaID(context.email, &gaia_id))
+ if (user_manager::UserManager::Get()->FindGaiaID(
+ AccountId::FromUserEmail(context.email), &gaia_id))
context.gaia_id = gaia_id;
if (Delegate()) {
@@ -849,7 +856,7 @@ void GaiaScreenHandler::LoadAuthExtension(bool force,
if (!context.email.empty()) {
context.gaps_cookie =
user_manager::UserManager::Get()->GetKnownUserGAPSCookie(
- gaia::CanonicalizeEmail(context.email));
+ AccountId::FromUserEmail(gaia::CanonicalizeEmail(context.email)));
}
populated_email_.clear();

Powered by Google App Engine
This is Rietveld 408576698