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 bffd9ef2b8a95f44bcb4a4519612dbcec09a2fde..f78ac1762ea76349660b28d8a6aec8e3fd5cc88b 100644 |
--- a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc |
+++ b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc |
@@ -416,6 +416,7 @@ void GaiaScreenHandler::RegisterMessages() { |
&GaiaScreenHandler::HandleToggleWebviewSignin); |
AddCallback("toggleEasyBootstrap", |
&GaiaScreenHandler::HandleToggleEasyBootstrap); |
+ AddCallback("attemptLogin", &GaiaScreenHandler::HandleAttemptLogin); |
} |
void GaiaScreenHandler::HandleFrameLoadingCompleted(int status) { |
@@ -578,6 +579,21 @@ void GaiaScreenHandler::HandleToggleEasyBootstrap() { |
LoadAuthExtension(kForceReload, kSilentLoad, kNoOfflineUI); |
} |
+void GaiaScreenHandler::HandleAttemptLogin(const std::string& email) { |
+ std::string device_id = |
+ user_manager::UserManager::Get()->GetKnownUserDeviceId( |
+ gaia::CanonicalizeEmail(email)); |
+ |
+ if (!device_id.empty() && StartupUtils::IsWebviewSigninEnabled()) { |
+ base::DictionaryValue params; |
+ params.SetString("deviceId", device_id); |
+ CallJS("updateDeviceId", params); |
+ } else { |
+ // Mark current temporary device Id as used. |
+ temporary_device_id_ = std::string(); |
+ } |
+} |
+ |
void GaiaScreenHandler::HandleGaiaUIReady() { |
if (focus_stolen_) { |
// Set focus to the Gaia page. |
@@ -920,9 +936,13 @@ void GaiaScreenHandler::LoadAuthExtension(bool force, |
context.has_users = !Delegate()->GetUsers().empty(); |
} |
+ if (!context.email.empty()) { |
+ context.device_id = user_manager::UserManager::Get()->GetKnownUserDeviceId( |
+ gaia::CanonicalizeEmail(context.email)); |
+ } |
+ |
if (context.device_id.empty()) { |
Nikita (slow)
2015/04/23 12:23:12
nit: drop {}
Alexander Alekseev
2015/04/24 12:01:57
Done.
|
- context.device_id = base::GenerateGUID(); |
- DCHECK(!context.device_id.empty()); |
+ context.device_id = GetTemporaryDeviceId(); |
} |
context.session_is_ephemeral = |
ChromeUserManager::Get()->AreEphemeralUsersEnabled(); |
@@ -946,4 +966,12 @@ void GaiaScreenHandler::SetSigninScreenHandler(SigninScreenHandler* handler) { |
signin_screen_handler_ = handler; |
} |
+std::string GaiaScreenHandler::GetTemporaryDeviceId() { |
+ if (temporary_device_id_.empty()) |
+ temporary_device_id_ = base::GenerateGUID(); |
+ |
+ DCHECK(!temporary_device_id_.empty()); |
+ return temporary_device_id_; |
+} |
+ |
} // namespace chromeos |