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

Side by Side Diff: chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc

Issue 1440583002: This CL replaces e-mail with AccountId on user selection screen. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix tests. 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 unified diff | Download patch
OLDNEW
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
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.email()); 877 CallJS("login.AccountPickerScreen.updateUserImage",
878 user.GetAccountId().Serialize());
878 } 879 }
879 880
880 void SigninScreenHandler::OnPreferencesChanged() { 881 void SigninScreenHandler::OnPreferencesChanged() {
881 // Make sure that one of the login UI is fully functional now, otherwise 882 // 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. 883 // preferences update would be picked up next time it will be shown.
883 if (!webui_visible_) { 884 if (!webui_visible_) {
884 LOG(WARNING) << "Login UI is not active - postponed prefs change."; 885 LOG(WARNING) << "Login UI is not active - postponed prefs change.";
885 preferences_changed_delayed_ = true; 886 preferences_changed_delayed_ = true;
886 return; 887 return;
887 } 888 }
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
981 // Do not load the extension for the screen locker, see crosbug.com/25018. 982 // Do not load the extension for the screen locker, see crosbug.com/25018.
982 return !ScreenLocker::default_screen_locker() && 983 return !ScreenLocker::default_screen_locker() &&
983 is_account_picker_showing_first_time_; 984 is_account_picker_showing_first_time_;
984 } 985 }
985 986
986 void SigninScreenHandler::UpdateAddButtonStatus() { 987 void SigninScreenHandler::UpdateAddButtonStatus() {
987 CallJS("cr.ui.login.DisplayManager.updateAddUserButtonStatus", 988 CallJS("cr.ui.login.DisplayManager.updateAddUserButtonStatus",
988 AllWhitelistedUsersPresent()); 989 AllWhitelistedUsersPresent());
989 } 990 }
990 991
991 void SigninScreenHandler::HandleAuthenticateUser(const std::string& username, 992 void SigninScreenHandler::HandleAuthenticateUser(const std::string& user_id,
992 const std::string& password) { 993 const std::string& password) {
993 if (!delegate_) 994 if (!delegate_)
994 return; 995 return;
995 UserContext user_context( 996 AccountId account_id(EmptyAccountId());
dzhioev (left Google) 2015/11/12 00:46:24 Why default constructor of AccountId doesn't produ
Alexander Alekseev 2015/11/12 06:53:04 To force manual construction. We can change this a
996 AccountId::FromUserEmail(gaia::SanitizeEmail(username))); 997 const bool status = AccountId::Deserialize(user_id, &account_id);
stevenjb 2015/11/11 20:39:23 "user_id" does not imply a JSON dictionary. Use so
Alexander Alekseev 2015/11/12 06:53:04 Done.
998 // TODO(alemate): this is used also for offline Gaia.
999 // Add DCHECK() once migrated.
1000 if (!status) {
1001 LOG(WARNING) << "Failed to parse user_id='" << user_id << "'";
1002 account_id = AccountId::FromUserEmail(user_id);
1003 }
1004 DCHECK_EQ(account_id.GetUserEmail(),
1005 gaia::SanitizeEmail(account_id.GetUserEmail()));
1006
1007 UserContext user_context(account_id);
997 user_context.SetKey(Key(password)); 1008 user_context.SetKey(Key(password));
998 delegate_->Login(user_context, SigninSpecifics()); 1009 delegate_->Login(user_context, SigninSpecifics());
999 } 1010 }
1000 1011
1001 void SigninScreenHandler::HandleLaunchIncognito() { 1012 void SigninScreenHandler::HandleLaunchIncognito() {
1002 UserContext context(user_manager::USER_TYPE_GUEST, std::string()); 1013 UserContext context(user_manager::USER_TYPE_GUEST, std::string());
1003 if (delegate_) 1014 if (delegate_)
1004 delegate_->Login(context, SigninSpecifics()); 1015 delegate_->Login(context, SigninSpecifics());
1005 } 1016 }
1006 1017
1007 void SigninScreenHandler::HandleShowSupervisedUserCreationScreen() { 1018 void SigninScreenHandler::HandleShowSupervisedUserCreationScreen() {
1008 if (!user_manager::UserManager::Get()->AreSupervisedUsersAllowed()) { 1019 if (!user_manager::UserManager::Get()->AreSupervisedUsersAllowed()) {
1009 LOG(ERROR) << "Managed users not allowed."; 1020 LOG(ERROR) << "Managed users not allowed.";
1010 return; 1021 return;
1011 } 1022 }
1012 LoginDisplayHostImpl::default_host()-> 1023 LoginDisplayHostImpl::default_host()->
1013 StartWizard(WizardController::kSupervisedUserCreationScreenName); 1024 StartWizard(WizardController::kSupervisedUserCreationScreenName);
1014 } 1025 }
1015 1026
1016 void SigninScreenHandler::HandleLaunchPublicSession( 1027 void SigninScreenHandler::HandleLaunchPublicSession(
1017 const std::string& user_id, 1028 const std::string& user_id,
1018 const std::string& locale, 1029 const std::string& locale,
1019 const std::string& input_method) { 1030 const std::string& input_method) {
1020 if (!delegate_) 1031 if (!delegate_)
1021 return; 1032 return;
1022 1033
1023 UserContext context(user_manager::USER_TYPE_PUBLIC_ACCOUNT, user_id); 1034 AccountId account_id(EmptyAccountId());
1035 const bool status = AccountId::Deserialize(user_id, &account_id);
1036 DCHECK(status) << "Failed to parse user_id='" << user_id << "'";
1037 UserContext context(user_manager::USER_TYPE_PUBLIC_ACCOUNT,
1038 account_id.GetUserEmail());
1024 context.SetPublicSessionLocale(locale), 1039 context.SetPublicSessionLocale(locale),
1025 context.SetPublicSessionInputMethod(input_method); 1040 context.SetPublicSessionInputMethod(input_method);
1026 delegate_->Login(context, SigninSpecifics()); 1041 delegate_->Login(context, SigninSpecifics());
1027 } 1042 }
1028 1043
1029 void SigninScreenHandler::HandleOfflineLogin(const base::ListValue* args) { 1044 void SigninScreenHandler::HandleOfflineLogin(const base::ListValue* args) {
1030 if (!delegate_ || delegate_->IsShowUsers()) { 1045 if (!delegate_ || delegate_->IsShowUsers()) {
1031 NOTREACHED(); 1046 NOTREACHED();
1032 return; 1047 return;
1033 } 1048 }
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
1168 TRACE_EVENT_ASYNC_END0( 1183 TRACE_EVENT_ASYNC_END0(
1169 "ui", "ShowLoginWebUI", LoginDisplayHostImpl::kShowLoginWebUIid); 1184 "ui", "ShowLoginWebUI", LoginDisplayHostImpl::kShowLoginWebUIid);
1170 } 1185 }
1171 webui_visible_ = true; 1186 webui_visible_ = true;
1172 if (preferences_changed_delayed_) 1187 if (preferences_changed_delayed_)
1173 OnPreferencesChanged(); 1188 OnPreferencesChanged();
1174 } 1189 }
1175 1190
1176 void SigninScreenHandler::HandleCancelPasswordChangedFlow( 1191 void SigninScreenHandler::HandleCancelPasswordChangedFlow(
1177 const std::string& user_id) { 1192 const std::string& user_id) {
1178 if (!user_id.empty()) 1193 if (!user_id.empty()) {
1179 RecordReauthReason(AccountId::FromUserEmail(user_id), 1194 AccountId account_id(EmptyAccountId());
1180 ReauthReason::PASSWORD_UPDATE_SKIPPED); 1195 const bool status = AccountId::Deserialize(user_id, &account_id);
1196 DCHECK(status) << "Failed to parse user_id='" << user_id << "'";
1197 RecordReauthReason(account_id, ReauthReason::PASSWORD_UPDATE_SKIPPED);
1198 }
1181 gaia_screen_handler_->StartClearingCookies( 1199 gaia_screen_handler_->StartClearingCookies(
1182 base::Bind(&SigninScreenHandler::CancelPasswordChangedFlowInternal, 1200 base::Bind(&SigninScreenHandler::CancelPasswordChangedFlowInternal,
1183 weak_factory_.GetWeakPtr())); 1201 weak_factory_.GetWeakPtr()));
1184 } 1202 }
1185 1203
1186 void SigninScreenHandler::HandleCancelUserAdding() { 1204 void SigninScreenHandler::HandleCancelUserAdding() {
1187 if (delegate_) 1205 if (delegate_)
1188 delegate_->CancelUserAdding(); 1206 delegate_->CancelUserAdding();
1189 } 1207 }
1190 1208
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1229 DCHECK(user_manager::UserManager::Get()->IsUserLoggedIn()); 1247 DCHECK(user_manager::UserManager::Get()->IsUserLoggedIn());
1230 if (ScreenLocker::default_screen_locker()) 1248 if (ScreenLocker::default_screen_locker())
1231 ScreenLocker::default_screen_locker()->UnlockOnLoginSuccess(); 1249 ScreenLocker::default_screen_locker()->UnlockOnLoginSuccess();
1232 } 1250 }
1233 1251
1234 void SigninScreenHandler::HandleShowLoadingTimeoutError() { 1252 void SigninScreenHandler::HandleShowLoadingTimeoutError() {
1235 UpdateState(NetworkError::ERROR_REASON_LOADING_TIMEOUT); 1253 UpdateState(NetworkError::ERROR_REASON_LOADING_TIMEOUT);
1236 } 1254 }
1237 1255
1238 void SigninScreenHandler::HandleFocusPod(const std::string& user_id) { 1256 void SigninScreenHandler::HandleFocusPod(const std::string& user_id) {
1239 SetUserInputMethod(user_id, ime_state_.get()); 1257 AccountId account_id(EmptyAccountId());
1240 WallpaperManager::Get()->SetUserWallpaperDelayed(user_id); 1258 const bool status = AccountId::Deserialize(user_id, &account_id);
1241 proximity_auth::ScreenlockBridge::Get()->SetFocusedUser(user_id); 1259 DCHECK(status) << "Failed to parse user_id='" << user_id << "'";
1260 SetUserInputMethod(account_id.GetUserEmail(), ime_state_.get());
1261 WallpaperManager::Get()->SetUserWallpaperDelayed(account_id.GetUserEmail());
1262 proximity_auth::ScreenlockBridge::Get()->SetFocusedUser(
1263 account_id.GetUserEmail());
1242 if (delegate_) 1264 if (delegate_)
1243 delegate_->CheckUserStatus(user_id); 1265 delegate_->CheckUserStatus(account_id.GetUserEmail());
1244 if (!test_focus_pod_callback_.is_null()) 1266 if (!test_focus_pod_callback_.is_null())
1245 test_focus_pod_callback_.Run(); 1267 test_focus_pod_callback_.Run();
1246 1268
1247 bool use_24hour_clock = false; 1269 bool use_24hour_clock = false;
1248 if (user_manager::UserManager::Get()->GetKnownUserBooleanPref( 1270 if (user_manager::UserManager::Get()->GetKnownUserBooleanPref(
1249 AccountId::FromUserEmail(user_id), prefs::kUse24HourClock, 1271 account_id, prefs::kUse24HourClock, &use_24hour_clock)) {
1250 &use_24hour_clock)) {
1251 g_browser_process->platform_part() 1272 g_browser_process->platform_part()
1252 ->GetSystemClock() 1273 ->GetSystemClock()
1253 ->SetLastFocusedPodHourClockType(use_24hour_clock ? base::k24HourClock 1274 ->SetLastFocusedPodHourClockType(use_24hour_clock ? base::k24HourClock
1254 : base::k12HourClock); 1275 : base::k12HourClock);
1255 } 1276 }
1256 } 1277 }
1257 1278
1258 void SigninScreenHandler::HandleGetPublicSessionKeyboardLayouts( 1279 void SigninScreenHandler::HandleGetPublicSessionKeyboardLayouts(
1259 const std::string& user_id, 1280 const std::string& user_id,
1260 const std::string& locale) { 1281 const std::string& locale) {
1282 AccountId account_id(EmptyAccountId());
1283 const bool status = AccountId::Deserialize(user_id, &account_id);
1284 DCHECK(status) << "Failed to parse user_id='" << user_id << "'";
1261 GetKeyboardLayoutsForLocale( 1285 GetKeyboardLayoutsForLocale(
1262 base::Bind(&SigninScreenHandler::SendPublicSessionKeyboardLayouts, 1286 base::Bind(&SigninScreenHandler::SendPublicSessionKeyboardLayouts,
1263 weak_factory_.GetWeakPtr(), 1287 weak_factory_.GetWeakPtr(), account_id, locale),
1264 user_id,
1265 locale),
1266 locale); 1288 locale);
1267 } 1289 }
1268 1290
1269 void SigninScreenHandler::SendPublicSessionKeyboardLayouts( 1291 void SigninScreenHandler::SendPublicSessionKeyboardLayouts(
1270 const std::string& user_id, 1292 const AccountId& account_id,
1271 const std::string& locale, 1293 const std::string& locale,
1272 scoped_ptr<base::ListValue> keyboard_layouts) { 1294 scoped_ptr<base::ListValue> keyboard_layouts) {
1273 CallJS("login.AccountPickerScreen.setPublicSessionKeyboardLayouts", 1295 CallJS("login.AccountPickerScreen.setPublicSessionKeyboardLayouts",
1274 user_id, 1296 account_id.Serialize(), locale, *keyboard_layouts);
1275 locale,
1276 *keyboard_layouts);
1277 } 1297 }
1278 1298
1279 void SigninScreenHandler::HandleLaunchKioskApp(const std::string& app_id, 1299 void SigninScreenHandler::HandleLaunchKioskApp(const std::string& app_id,
1280 bool diagnostic_mode) { 1300 bool diagnostic_mode) {
1281 UserContext context(user_manager::USER_TYPE_KIOSK_APP, app_id); 1301 AccountId account_id(EmptyAccountId());
1302 const bool status = AccountId::Deserialize(app_id, &account_id);
1303 DCHECK(status) << "Failed to parse app_id='" << app_id << "'";
1304 UserContext context(user_manager::USER_TYPE_KIOSK_APP,
1305 account_id.GetUserEmail());
1282 SigninSpecifics specifics; 1306 SigninSpecifics specifics;
1283 specifics.kiosk_diagnostic_mode = diagnostic_mode; 1307 specifics.kiosk_diagnostic_mode = diagnostic_mode;
1284 if (delegate_) 1308 if (delegate_)
1285 delegate_->Login(context, specifics); 1309 delegate_->Login(context, specifics);
1286 } 1310 }
1287 1311
1288 void SigninScreenHandler::HandleCancelConsumerManagementEnrollment() { 1312 void SigninScreenHandler::HandleCancelConsumerManagementEnrollment() {
1289 policy::ConsumerManagementService* consumer_management = 1313 policy::ConsumerManagementService* consumer_management =
1290 g_browser_process->platform_part()->browser_policy_connector_chromeos()-> 1314 g_browser_process->platform_part()->browser_policy_connector_chromeos()->
1291 GetConsumerManagementService(); 1315 GetConsumerManagementService();
(...skipping 10 matching lines...) Expand all
1302 max_mode_delegate_->IsMaximizeModeEnabled()); 1326 max_mode_delegate_->IsMaximizeModeEnabled());
1303 } 1327 }
1304 } 1328 }
1305 1329
1306 void SigninScreenHandler::HandleLogRemoveUserWarningShown() { 1330 void SigninScreenHandler::HandleLogRemoveUserWarningShown() {
1307 ProfileMetrics::LogProfileDeleteUser( 1331 ProfileMetrics::LogProfileDeleteUser(
1308 ProfileMetrics::DELETE_PROFILE_USER_MANAGER_SHOW_WARNING); 1332 ProfileMetrics::DELETE_PROFILE_USER_MANAGER_SHOW_WARNING);
1309 } 1333 }
1310 1334
1311 void SigninScreenHandler::HandleFirstIncorrectPasswordAttempt( 1335 void SigninScreenHandler::HandleFirstIncorrectPasswordAttempt(
1312 const std::string& email) { 1336 const std::string& user_id) {
1313 // TODO(ginkage): Fix this case once crbug.com/469987 is ready. 1337 // TODO(ginkage): Fix this case once crbug.com/469987 is ready.
1314 /* 1338 /*
1315 if (user_manager::UserManager::Get()->FindUsingSAML(email)) 1339 if (user_manager::UserManager::Get()->FindUsingSAML(email))
1316 RecordReauthReason(email, ReauthReason::INCORRECT_SAML_PASSWORD_ENTERED); 1340 RecordReauthReason(email, ReauthReason::INCORRECT_SAML_PASSWORD_ENTERED);
1317 */ 1341 */
1318 } 1342 }
1319 1343
1320 void SigninScreenHandler::HandleMaxIncorrectPasswordAttempts( 1344 void SigninScreenHandler::HandleMaxIncorrectPasswordAttempts(
1321 const std::string& email) { 1345 const std::string& user_id) {
1322 RecordReauthReason(AccountId::FromUserEmail(email), 1346 AccountId account_id(EmptyAccountId());
1323 ReauthReason::INCORRECT_PASSWORD_ENTERED); 1347 const bool status = AccountId::Deserialize(user_id, &account_id);
1348 DCHECK(status) << "Failed to parse user_id='" << user_id << "'";
1349 RecordReauthReason(account_id, ReauthReason::INCORRECT_PASSWORD_ENTERED);
1324 } 1350 }
1325 1351
1326 bool SigninScreenHandler::AllWhitelistedUsersPresent() { 1352 bool SigninScreenHandler::AllWhitelistedUsersPresent() {
1327 CrosSettings* cros_settings = CrosSettings::Get(); 1353 CrosSettings* cros_settings = CrosSettings::Get();
1328 bool allow_new_user = false; 1354 bool allow_new_user = false;
1329 cros_settings->GetBoolean(kAccountsPrefAllowNewUser, &allow_new_user); 1355 cros_settings->GetBoolean(kAccountsPrefAllowNewUser, &allow_new_user);
1330 if (allow_new_user) 1356 if (allow_new_user)
1331 return false; 1357 return false;
1332 user_manager::UserManager* user_manager = user_manager::UserManager::Get(); 1358 user_manager::UserManager* user_manager = user_manager::UserManager::Get();
1333 const user_manager::UserList& users = user_manager->GetUsers(); 1359 const user_manager::UserList& users = user_manager->GetUsers();
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
1412 return gaia_screen_handler_->frame_error(); 1438 return gaia_screen_handler_->frame_error();
1413 } 1439 }
1414 1440
1415 void SigninScreenHandler::OnCapsLockChanged(bool enabled) { 1441 void SigninScreenHandler::OnCapsLockChanged(bool enabled) {
1416 caps_lock_enabled_ = enabled; 1442 caps_lock_enabled_ = enabled;
1417 if (page_is_ready()) 1443 if (page_is_ready())
1418 CallJS("login.AccountPickerScreen.setCapsLockState", caps_lock_enabled_); 1444 CallJS("login.AccountPickerScreen.setCapsLockState", caps_lock_enabled_);
1419 } 1445 }
1420 1446
1421 } // namespace chromeos 1447 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698