OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h" | 5 #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "ash/shell.h" | 10 #include "ash/shell.h" |
(...skipping 856 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
867 | 867 |
868 void SigninScreenHandler::OnUserRemoved(const std::string& username, | 868 void SigninScreenHandler::OnUserRemoved(const std::string& username, |
869 bool last_user_removed) { | 869 bool last_user_removed) { |
870 CallJS("login.AccountPickerScreen.removeUser", username); | 870 CallJS("login.AccountPickerScreen.removeUser", username); |
871 if (last_user_removed) | 871 if (last_user_removed) |
872 OnShowAddUser(); | 872 OnShowAddUser(); |
873 } | 873 } |
874 | 874 |
875 void SigninScreenHandler::OnUserImageChanged(const user_manager::User& user) { | 875 void SigninScreenHandler::OnUserImageChanged(const user_manager::User& user) { |
876 if (page_is_ready()) | 876 if (page_is_ready()) |
877 CallJS("login.AccountPickerScreen.updateUserImage", user.GetAccountId()); | 877 CallJS("login.AccountPickerScreen.updateUserImage", user.email()); |
878 } | 878 } |
879 | 879 |
880 void SigninScreenHandler::OnPreferencesChanged() { | 880 void SigninScreenHandler::OnPreferencesChanged() { |
881 // Make sure that one of the login UI is fully functional now, otherwise | 881 // Make sure that one of the login UI is fully functional now, otherwise |
882 // preferences update would be picked up next time it will be shown. | 882 // preferences update would be picked up next time it will be shown. |
883 if (!webui_visible_) { | 883 if (!webui_visible_) { |
884 LOG(WARNING) << "Login UI is not active - postponed prefs change."; | 884 LOG(WARNING) << "Login UI is not active - postponed prefs change."; |
885 preferences_changed_delayed_ = true; | 885 preferences_changed_delayed_ = true; |
886 return; | 886 return; |
887 } | 887 } |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
981 // Do not load the extension for the screen locker, see crosbug.com/25018. | 981 // Do not load the extension for the screen locker, see crosbug.com/25018. |
982 return !ScreenLocker::default_screen_locker() && | 982 return !ScreenLocker::default_screen_locker() && |
983 is_account_picker_showing_first_time_; | 983 is_account_picker_showing_first_time_; |
984 } | 984 } |
985 | 985 |
986 void SigninScreenHandler::UpdateAddButtonStatus() { | 986 void SigninScreenHandler::UpdateAddButtonStatus() { |
987 CallJS("cr.ui.login.DisplayManager.updateAddUserButtonStatus", | 987 CallJS("cr.ui.login.DisplayManager.updateAddUserButtonStatus", |
988 AllWhitelistedUsersPresent()); | 988 AllWhitelistedUsersPresent()); |
989 } | 989 } |
990 | 990 |
991 void SigninScreenHandler::HandleAuthenticateUser(const AccountId& account_id, | 991 void SigninScreenHandler::HandleAuthenticateUser(const std::string& username, |
992 const std::string& password) { | 992 const std::string& password) { |
993 if (!delegate_) | 993 if (!delegate_) |
994 return; | 994 return; |
995 DCHECK_EQ(account_id.GetUserEmail(), | 995 UserContext user_context( |
996 gaia::SanitizeEmail(account_id.GetUserEmail())); | 996 AccountId::FromUserEmail(gaia::SanitizeEmail(username))); |
997 | |
998 UserContext user_context(account_id); | |
999 user_context.SetKey(Key(password)); | 997 user_context.SetKey(Key(password)); |
1000 delegate_->Login(user_context, SigninSpecifics()); | 998 delegate_->Login(user_context, SigninSpecifics()); |
1001 } | 999 } |
1002 | 1000 |
1003 void SigninScreenHandler::HandleLaunchIncognito() { | 1001 void SigninScreenHandler::HandleLaunchIncognito() { |
1004 UserContext context(user_manager::USER_TYPE_GUEST, std::string()); | 1002 UserContext context(user_manager::USER_TYPE_GUEST, std::string()); |
1005 if (delegate_) | 1003 if (delegate_) |
1006 delegate_->Login(context, SigninSpecifics()); | 1004 delegate_->Login(context, SigninSpecifics()); |
1007 } | 1005 } |
1008 | 1006 |
1009 void SigninScreenHandler::HandleShowSupervisedUserCreationScreen() { | 1007 void SigninScreenHandler::HandleShowSupervisedUserCreationScreen() { |
1010 if (!user_manager::UserManager::Get()->AreSupervisedUsersAllowed()) { | 1008 if (!user_manager::UserManager::Get()->AreSupervisedUsersAllowed()) { |
1011 LOG(ERROR) << "Managed users not allowed."; | 1009 LOG(ERROR) << "Managed users not allowed."; |
1012 return; | 1010 return; |
1013 } | 1011 } |
1014 LoginDisplayHostImpl::default_host()-> | 1012 LoginDisplayHostImpl::default_host()-> |
1015 StartWizard(WizardController::kSupervisedUserCreationScreenName); | 1013 StartWizard(WizardController::kSupervisedUserCreationScreenName); |
1016 } | 1014 } |
1017 | 1015 |
1018 void SigninScreenHandler::HandleLaunchPublicSession( | 1016 void SigninScreenHandler::HandleLaunchPublicSession( |
1019 const AccountId& account_id, | 1017 const std::string& user_id, |
1020 const std::string& locale, | 1018 const std::string& locale, |
1021 const std::string& input_method) { | 1019 const std::string& input_method) { |
1022 if (!delegate_) | 1020 if (!delegate_) |
1023 return; | 1021 return; |
1024 | 1022 |
1025 UserContext context(user_manager::USER_TYPE_PUBLIC_ACCOUNT, | 1023 UserContext context(user_manager::USER_TYPE_PUBLIC_ACCOUNT, user_id); |
1026 account_id.GetUserEmail()); | |
1027 context.SetPublicSessionLocale(locale), | 1024 context.SetPublicSessionLocale(locale), |
1028 context.SetPublicSessionInputMethod(input_method); | 1025 context.SetPublicSessionInputMethod(input_method); |
1029 delegate_->Login(context, SigninSpecifics()); | 1026 delegate_->Login(context, SigninSpecifics()); |
1030 } | 1027 } |
1031 | 1028 |
1032 void SigninScreenHandler::HandleOfflineLogin(const base::ListValue* args) { | 1029 void SigninScreenHandler::HandleOfflineLogin(const base::ListValue* args) { |
1033 if (!delegate_ || delegate_->IsShowUsers()) { | 1030 if (!delegate_ || delegate_->IsShowUsers()) { |
1034 NOTREACHED(); | 1031 NOTREACHED(); |
1035 return; | 1032 return; |
1036 } | 1033 } |
1037 std::string email; | 1034 std::string email; |
1038 args->GetString(0, &email); | 1035 args->GetString(0, &email); |
1039 | 1036 |
1040 gaia_screen_handler_->set_populated_email(email); | 1037 gaia_screen_handler_->set_populated_email(email); |
1041 gaia_screen_handler_->LoadAuthExtension(true /* force */, true /* offline */); | 1038 gaia_screen_handler_->LoadAuthExtension(true /* force */, true /* offline */); |
1042 UpdateUIState(UI_STATE_GAIA_SIGNIN, nullptr); | 1039 UpdateUIState(UI_STATE_GAIA_SIGNIN, nullptr); |
1043 } | 1040 } |
1044 | 1041 |
1045 void SigninScreenHandler::HandleShutdownSystem() { | 1042 void SigninScreenHandler::HandleShutdownSystem() { |
1046 ash::Shell::GetInstance()->lock_state_controller()->RequestShutdown(); | 1043 ash::Shell::GetInstance()->lock_state_controller()->RequestShutdown(); |
1047 } | 1044 } |
1048 | 1045 |
1049 void SigninScreenHandler::HandleLoadWallpaper(const AccountId& account_id) { | 1046 void SigninScreenHandler::HandleLoadWallpaper(const std::string& email) { |
1050 if (delegate_) | 1047 if (delegate_) |
1051 delegate_->LoadWallpaper(account_id.GetUserEmail()); | 1048 delegate_->LoadWallpaper(email); |
1052 } | 1049 } |
1053 | 1050 |
1054 void SigninScreenHandler::HandleRebootSystem() { | 1051 void SigninScreenHandler::HandleRebootSystem() { |
1055 chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart(); | 1052 chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart(); |
1056 } | 1053 } |
1057 | 1054 |
1058 void SigninScreenHandler::HandleRemoveUser(const AccountId& account_id) { | 1055 void SigninScreenHandler::HandleRemoveUser(const std::string& email) { |
1059 ProfileMetrics::LogProfileDeleteUser( | 1056 ProfileMetrics::LogProfileDeleteUser( |
1060 ProfileMetrics::DELETE_PROFILE_USER_MANAGER); | 1057 ProfileMetrics::DELETE_PROFILE_USER_MANAGER); |
1061 | 1058 |
1062 if (!delegate_) | 1059 if (!delegate_) |
1063 return; | 1060 return; |
1064 delegate_->RemoveUser(account_id.GetUserEmail()); | 1061 delegate_->RemoveUser(email); |
1065 UpdateAddButtonStatus(); | 1062 UpdateAddButtonStatus(); |
1066 } | 1063 } |
1067 | 1064 |
1068 void SigninScreenHandler::HandleShowAddUser(const base::ListValue* args) { | 1065 void SigninScreenHandler::HandleShowAddUser(const base::ListValue* args) { |
1069 TRACE_EVENT_ASYNC_STEP_INTO0("ui", | 1066 TRACE_EVENT_ASYNC_STEP_INTO0("ui", |
1070 "ShowLoginWebUI", | 1067 "ShowLoginWebUI", |
1071 LoginDisplayHostImpl::kShowLoginWebUIid, | 1068 LoginDisplayHostImpl::kShowLoginWebUIid, |
1072 "ShowAddUser"); | 1069 "ShowAddUser"); |
1073 std::string email; | 1070 std::string email; |
1074 // |args| can be null if it's OOBE. | 1071 // |args| can be null if it's OOBE. |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1170 content::NotificationService::NoDetails()); | 1167 content::NotificationService::NoDetails()); |
1171 TRACE_EVENT_ASYNC_END0( | 1168 TRACE_EVENT_ASYNC_END0( |
1172 "ui", "ShowLoginWebUI", LoginDisplayHostImpl::kShowLoginWebUIid); | 1169 "ui", "ShowLoginWebUI", LoginDisplayHostImpl::kShowLoginWebUIid); |
1173 } | 1170 } |
1174 webui_visible_ = true; | 1171 webui_visible_ = true; |
1175 if (preferences_changed_delayed_) | 1172 if (preferences_changed_delayed_) |
1176 OnPreferencesChanged(); | 1173 OnPreferencesChanged(); |
1177 } | 1174 } |
1178 | 1175 |
1179 void SigninScreenHandler::HandleCancelPasswordChangedFlow( | 1176 void SigninScreenHandler::HandleCancelPasswordChangedFlow( |
1180 const AccountId& account_id) { | 1177 const std::string& user_id) { |
1181 if (account_id.is_valid()) { | 1178 if (!user_id.empty()) |
1182 RecordReauthReason(account_id, ReauthReason::PASSWORD_UPDATE_SKIPPED); | 1179 RecordReauthReason(AccountId::FromUserEmail(user_id), |
1183 } | 1180 ReauthReason::PASSWORD_UPDATE_SKIPPED); |
1184 gaia_screen_handler_->StartClearingCookies( | 1181 gaia_screen_handler_->StartClearingCookies( |
1185 base::Bind(&SigninScreenHandler::CancelPasswordChangedFlowInternal, | 1182 base::Bind(&SigninScreenHandler::CancelPasswordChangedFlowInternal, |
1186 weak_factory_.GetWeakPtr())); | 1183 weak_factory_.GetWeakPtr())); |
1187 } | 1184 } |
1188 | 1185 |
1189 void SigninScreenHandler::HandleCancelUserAdding() { | 1186 void SigninScreenHandler::HandleCancelUserAdding() { |
1190 if (delegate_) | 1187 if (delegate_) |
1191 delegate_->CancelUserAdding(); | 1188 delegate_->CancelUserAdding(); |
1192 } | 1189 } |
1193 | 1190 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1231 void SigninScreenHandler::HandleUnlockOnLoginSuccess() { | 1228 void SigninScreenHandler::HandleUnlockOnLoginSuccess() { |
1232 DCHECK(user_manager::UserManager::Get()->IsUserLoggedIn()); | 1229 DCHECK(user_manager::UserManager::Get()->IsUserLoggedIn()); |
1233 if (ScreenLocker::default_screen_locker()) | 1230 if (ScreenLocker::default_screen_locker()) |
1234 ScreenLocker::default_screen_locker()->UnlockOnLoginSuccess(); | 1231 ScreenLocker::default_screen_locker()->UnlockOnLoginSuccess(); |
1235 } | 1232 } |
1236 | 1233 |
1237 void SigninScreenHandler::HandleShowLoadingTimeoutError() { | 1234 void SigninScreenHandler::HandleShowLoadingTimeoutError() { |
1238 UpdateState(NetworkError::ERROR_REASON_LOADING_TIMEOUT); | 1235 UpdateState(NetworkError::ERROR_REASON_LOADING_TIMEOUT); |
1239 } | 1236 } |
1240 | 1237 |
1241 void SigninScreenHandler::HandleFocusPod(const AccountId& account_id) { | 1238 void SigninScreenHandler::HandleFocusPod(const std::string& user_id) { |
1242 SetUserInputMethod(account_id.GetUserEmail(), ime_state_.get()); | 1239 SetUserInputMethod(user_id, ime_state_.get()); |
1243 WallpaperManager::Get()->SetUserWallpaperDelayed(account_id.GetUserEmail()); | 1240 WallpaperManager::Get()->SetUserWallpaperDelayed(user_id); |
1244 proximity_auth::ScreenlockBridge::Get()->SetFocusedUser( | 1241 proximity_auth::ScreenlockBridge::Get()->SetFocusedUser(user_id); |
1245 account_id.GetUserEmail()); | |
1246 if (delegate_) | 1242 if (delegate_) |
1247 delegate_->CheckUserStatus(account_id); | 1243 delegate_->CheckUserStatus(user_id); |
1248 if (!test_focus_pod_callback_.is_null()) | 1244 if (!test_focus_pod_callback_.is_null()) |
1249 test_focus_pod_callback_.Run(); | 1245 test_focus_pod_callback_.Run(); |
1250 | 1246 |
1251 bool use_24hour_clock = false; | 1247 bool use_24hour_clock = false; |
1252 if (user_manager::UserManager::Get()->GetKnownUserBooleanPref( | 1248 if (user_manager::UserManager::Get()->GetKnownUserBooleanPref( |
1253 account_id, prefs::kUse24HourClock, &use_24hour_clock)) { | 1249 AccountId::FromUserEmail(user_id), prefs::kUse24HourClock, |
| 1250 &use_24hour_clock)) { |
1254 g_browser_process->platform_part() | 1251 g_browser_process->platform_part() |
1255 ->GetSystemClock() | 1252 ->GetSystemClock() |
1256 ->SetLastFocusedPodHourClockType(use_24hour_clock ? base::k24HourClock | 1253 ->SetLastFocusedPodHourClockType(use_24hour_clock ? base::k24HourClock |
1257 : base::k12HourClock); | 1254 : base::k12HourClock); |
1258 } | 1255 } |
1259 } | 1256 } |
1260 | 1257 |
1261 void SigninScreenHandler::HandleGetPublicSessionKeyboardLayouts( | 1258 void SigninScreenHandler::HandleGetPublicSessionKeyboardLayouts( |
1262 const AccountId& account_id, | 1259 const std::string& user_id, |
1263 const std::string& locale) { | 1260 const std::string& locale) { |
1264 GetKeyboardLayoutsForLocale( | 1261 GetKeyboardLayoutsForLocale( |
1265 base::Bind(&SigninScreenHandler::SendPublicSessionKeyboardLayouts, | 1262 base::Bind(&SigninScreenHandler::SendPublicSessionKeyboardLayouts, |
1266 weak_factory_.GetWeakPtr(), account_id, locale), | 1263 weak_factory_.GetWeakPtr(), |
| 1264 user_id, |
| 1265 locale), |
1267 locale); | 1266 locale); |
1268 } | 1267 } |
1269 | 1268 |
1270 void SigninScreenHandler::SendPublicSessionKeyboardLayouts( | 1269 void SigninScreenHandler::SendPublicSessionKeyboardLayouts( |
1271 const AccountId& account_id, | 1270 const std::string& user_id, |
1272 const std::string& locale, | 1271 const std::string& locale, |
1273 scoped_ptr<base::ListValue> keyboard_layouts) { | 1272 scoped_ptr<base::ListValue> keyboard_layouts) { |
1274 CallJS("login.AccountPickerScreen.setPublicSessionKeyboardLayouts", | 1273 CallJS("login.AccountPickerScreen.setPublicSessionKeyboardLayouts", |
1275 account_id, locale, *keyboard_layouts); | 1274 user_id, |
| 1275 locale, |
| 1276 *keyboard_layouts); |
1276 } | 1277 } |
1277 | 1278 |
1278 void SigninScreenHandler::HandleLaunchKioskApp(const AccountId& app_account_id, | 1279 void SigninScreenHandler::HandleLaunchKioskApp(const std::string& app_id, |
1279 bool diagnostic_mode) { | 1280 bool diagnostic_mode) { |
1280 UserContext context(user_manager::USER_TYPE_KIOSK_APP, | 1281 UserContext context(user_manager::USER_TYPE_KIOSK_APP, app_id); |
1281 app_account_id.GetUserEmail()); | |
1282 SigninSpecifics specifics; | 1282 SigninSpecifics specifics; |
1283 specifics.kiosk_diagnostic_mode = diagnostic_mode; | 1283 specifics.kiosk_diagnostic_mode = diagnostic_mode; |
1284 if (delegate_) | 1284 if (delegate_) |
1285 delegate_->Login(context, specifics); | 1285 delegate_->Login(context, specifics); |
1286 } | 1286 } |
1287 | 1287 |
1288 void SigninScreenHandler::HandleCancelConsumerManagementEnrollment() { | 1288 void SigninScreenHandler::HandleCancelConsumerManagementEnrollment() { |
1289 policy::ConsumerManagementService* consumer_management = | 1289 policy::ConsumerManagementService* consumer_management = |
1290 g_browser_process->platform_part()->browser_policy_connector_chromeos()-> | 1290 g_browser_process->platform_part()->browser_policy_connector_chromeos()-> |
1291 GetConsumerManagementService(); | 1291 GetConsumerManagementService(); |
(...skipping 10 matching lines...) Expand all Loading... |
1302 max_mode_delegate_->IsMaximizeModeEnabled()); | 1302 max_mode_delegate_->IsMaximizeModeEnabled()); |
1303 } | 1303 } |
1304 } | 1304 } |
1305 | 1305 |
1306 void SigninScreenHandler::HandleLogRemoveUserWarningShown() { | 1306 void SigninScreenHandler::HandleLogRemoveUserWarningShown() { |
1307 ProfileMetrics::LogProfileDeleteUser( | 1307 ProfileMetrics::LogProfileDeleteUser( |
1308 ProfileMetrics::DELETE_PROFILE_USER_MANAGER_SHOW_WARNING); | 1308 ProfileMetrics::DELETE_PROFILE_USER_MANAGER_SHOW_WARNING); |
1309 } | 1309 } |
1310 | 1310 |
1311 void SigninScreenHandler::HandleFirstIncorrectPasswordAttempt( | 1311 void SigninScreenHandler::HandleFirstIncorrectPasswordAttempt( |
1312 const AccountId& account_id) { | 1312 const std::string& email) { |
1313 // TODO(ginkage): Fix this case once crbug.com/469987 is ready. | 1313 // TODO(ginkage): Fix this case once crbug.com/469987 is ready. |
1314 /* | 1314 /* |
1315 if (user_manager::UserManager::Get()->FindUsingSAML(email)) | 1315 if (user_manager::UserManager::Get()->FindUsingSAML(email)) |
1316 RecordReauthReason(email, ReauthReason::INCORRECT_SAML_PASSWORD_ENTERED); | 1316 RecordReauthReason(email, ReauthReason::INCORRECT_SAML_PASSWORD_ENTERED); |
1317 */ | 1317 */ |
1318 } | 1318 } |
1319 | 1319 |
1320 void SigninScreenHandler::HandleMaxIncorrectPasswordAttempts( | 1320 void SigninScreenHandler::HandleMaxIncorrectPasswordAttempts( |
1321 const AccountId& account_id) { | 1321 const std::string& email) { |
1322 RecordReauthReason(account_id, ReauthReason::INCORRECT_PASSWORD_ENTERED); | 1322 RecordReauthReason(AccountId::FromUserEmail(email), |
| 1323 ReauthReason::INCORRECT_PASSWORD_ENTERED); |
1323 } | 1324 } |
1324 | 1325 |
1325 bool SigninScreenHandler::AllWhitelistedUsersPresent() { | 1326 bool SigninScreenHandler::AllWhitelistedUsersPresent() { |
1326 CrosSettings* cros_settings = CrosSettings::Get(); | 1327 CrosSettings* cros_settings = CrosSettings::Get(); |
1327 bool allow_new_user = false; | 1328 bool allow_new_user = false; |
1328 cros_settings->GetBoolean(kAccountsPrefAllowNewUser, &allow_new_user); | 1329 cros_settings->GetBoolean(kAccountsPrefAllowNewUser, &allow_new_user); |
1329 if (allow_new_user) | 1330 if (allow_new_user) |
1330 return false; | 1331 return false; |
1331 user_manager::UserManager* user_manager = user_manager::UserManager::Get(); | 1332 user_manager::UserManager* user_manager = user_manager::UserManager::Get(); |
1332 const user_manager::UserList& users = user_manager->GetUsers(); | 1333 const user_manager::UserList& users = user_manager->GetUsers(); |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1411 return gaia_screen_handler_->frame_error(); | 1412 return gaia_screen_handler_->frame_error(); |
1412 } | 1413 } |
1413 | 1414 |
1414 void SigninScreenHandler::OnCapsLockChanged(bool enabled) { | 1415 void SigninScreenHandler::OnCapsLockChanged(bool enabled) { |
1415 caps_lock_enabled_ = enabled; | 1416 caps_lock_enabled_ = enabled; |
1416 if (page_is_ready()) | 1417 if (page_is_ready()) |
1417 CallJS("login.AccountPickerScreen.setCapsLockState", caps_lock_enabled_); | 1418 CallJS("login.AccountPickerScreen.setCapsLockState", caps_lock_enabled_); |
1418 } | 1419 } |
1419 | 1420 |
1420 } // namespace chromeos | 1421 } // namespace chromeos |
OLD | NEW |