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 "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 25 matching lines...) Expand all Loading... |
36 #include "chrome/browser/chromeos/login/ui/login_display_host_impl.h" | 36 #include "chrome/browser/chromeos/login/ui/login_display_host_impl.h" |
37 #include "chrome/browser/chromeos/login/ui/webui_login_display.h" | 37 #include "chrome/browser/chromeos/login/ui/webui_login_display.h" |
38 #include "chrome/browser/chromeos/login/users/multi_profile_user_controller.h" | 38 #include "chrome/browser/chromeos/login/users/multi_profile_user_controller.h" |
39 #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h" | 39 #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h" |
40 #include "chrome/browser/chromeos/login/wizard_controller.h" | 40 #include "chrome/browser/chromeos/login/wizard_controller.h" |
41 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" | 41 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" |
42 #include "chrome/browser/chromeos/policy/consumer_management_service.h" | 42 #include "chrome/browser/chromeos/policy/consumer_management_service.h" |
43 #include "chrome/browser/chromeos/policy/device_local_account.h" | 43 #include "chrome/browser/chromeos/policy/device_local_account.h" |
44 #include "chrome/browser/chromeos/profiles/profile_helper.h" | 44 #include "chrome/browser/chromeos/profiles/profile_helper.h" |
45 #include "chrome/browser/chromeos/settings/cros_settings.h" | 45 #include "chrome/browser/chromeos/settings/cros_settings.h" |
46 #include "chrome/browser/extensions/api/screenlock_private/screenlock_private_ap
i.h" | |
47 #include "chrome/browser/io_thread.h" | 46 #include "chrome/browser/io_thread.h" |
48 #include "chrome/browser/profiles/profile.h" | 47 #include "chrome/browser/profiles/profile.h" |
| 48 #include "chrome/browser/signin/easy_unlock_service.h" |
49 #include "chrome/browser/ui/webui/chromeos/login/authenticated_user_email_retrie
ver.h" | 49 #include "chrome/browser/ui/webui/chromeos/login/authenticated_user_email_retrie
ver.h" |
50 #include "chrome/browser/ui/webui/chromeos/login/error_screen_handler.h" | 50 #include "chrome/browser/ui/webui/chromeos/login/error_screen_handler.h" |
51 #include "chrome/browser/ui/webui/chromeos/login/l10n_util.h" | 51 #include "chrome/browser/ui/webui/chromeos/login/l10n_util.h" |
52 #include "chrome/browser/ui/webui/chromeos/login/native_window_delegate.h" | 52 #include "chrome/browser/ui/webui/chromeos/login/native_window_delegate.h" |
53 #include "chrome/browser/ui/webui/chromeos/login/network_state_informer.h" | 53 #include "chrome/browser/ui/webui/chromeos/login/network_state_informer.h" |
54 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" | 54 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" |
55 #include "chrome/common/pref_names.h" | 55 #include "chrome/common/pref_names.h" |
56 #include "chrome/common/url_constants.h" | 56 #include "chrome/common/url_constants.h" |
57 #include "chrome/grit/chromium_strings.h" | 57 #include "chrome/grit/chromium_strings.h" |
58 #include "chrome/grit/generated_resources.h" | 58 #include "chrome/grit/generated_resources.h" |
(...skipping 917 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
976 ScreenlockBridge::LockHandler::AuthType SigninScreenHandler::GetAuthType( | 976 ScreenlockBridge::LockHandler::AuthType SigninScreenHandler::GetAuthType( |
977 const std::string& username) const { | 977 const std::string& username) const { |
978 return delegate_->GetAuthType(username); | 978 return delegate_->GetAuthType(username); |
979 } | 979 } |
980 | 980 |
981 void SigninScreenHandler::Unlock(const std::string& user_email) { | 981 void SigninScreenHandler::Unlock(const std::string& user_email) { |
982 DCHECK(ScreenLocker::default_screen_locker()); | 982 DCHECK(ScreenLocker::default_screen_locker()); |
983 ScreenLocker::Hide(); | 983 ScreenLocker::Hide(); |
984 } | 984 } |
985 | 985 |
| 986 void SigninScreenHandler::AttemptEasySignin(const std::string& user_email, |
| 987 const std::string& secret, |
| 988 const std::string& key_label) { |
| 989 DCHECK(!ScreenLocker::default_screen_locker()); |
| 990 if (!delegate_) |
| 991 return; |
| 992 |
| 993 UserContext user_context(user_email); |
| 994 user_context.SetAuthFlow(UserContext::AUTH_FLOW_EASY_UNLOCK); |
| 995 user_context.SetKey(Key(secret)); |
| 996 user_context.GetKey()->SetLabel(key_label); |
| 997 |
| 998 // TODO(tbarzic): Handle empty secret. The delegate will end up ignoring login |
| 999 // attempt if the key is not set, and the UI will remain disabled. |
| 1000 DCHECK(!secret.empty()); |
| 1001 |
| 1002 delegate_->Login(user_context, SigninSpecifics()); |
| 1003 } |
| 1004 |
986 void SigninScreenHandler::OnMaximizeModeStarted() { | 1005 void SigninScreenHandler::OnMaximizeModeStarted() { |
987 CallJS("login.AccountPickerScreen.setTouchViewState", true); | 1006 CallJS("login.AccountPickerScreen.setTouchViewState", true); |
988 } | 1007 } |
989 | 1008 |
990 void SigninScreenHandler::OnMaximizeModeEnded() { | 1009 void SigninScreenHandler::OnMaximizeModeEnded() { |
991 CallJS("login.AccountPickerScreen.setTouchViewState", false); | 1010 CallJS("login.AccountPickerScreen.setTouchViewState", false); |
992 } | 1011 } |
993 | 1012 |
994 bool SigninScreenHandler::ShouldLoadGaia() const { | 1013 bool SigninScreenHandler::ShouldLoadGaia() const { |
995 // Fetching of the extension is not started before account picker page is | 1014 // Fetching of the extension is not started before account picker page is |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1044 void SigninScreenHandler::HandleAuthenticateUser(const std::string& username, | 1063 void SigninScreenHandler::HandleAuthenticateUser(const std::string& username, |
1045 const std::string& password) { | 1064 const std::string& password) { |
1046 if (!delegate_) | 1065 if (!delegate_) |
1047 return; | 1066 return; |
1048 UserContext user_context(username); | 1067 UserContext user_context(username); |
1049 user_context.SetKey(Key(password)); | 1068 user_context.SetKey(Key(password)); |
1050 delegate_->Login(user_context, SigninSpecifics()); | 1069 delegate_->Login(user_context, SigninSpecifics()); |
1051 } | 1070 } |
1052 | 1071 |
1053 void SigninScreenHandler::HandleAttemptUnlock(const std::string& username) { | 1072 void SigninScreenHandler::HandleAttemptUnlock(const std::string& username) { |
1054 DCHECK(ScreenLocker::default_screen_locker()); | 1073 if (!ScreenLocker::default_screen_locker()) { |
| 1074 OobeUI* oobe_ui = static_cast<OobeUI*>(web_ui()->GetController()); |
| 1075 if (oobe_ui->display_type() != OobeUI::kLoginDisplay) |
| 1076 return; |
| 1077 } |
1055 | 1078 |
1056 const user_manager::User* unlock_user = NULL; | 1079 const user_manager::User* unlock_user = NULL; |
1057 const user_manager::UserList& users = delegate_->GetUsers(); | 1080 const user_manager::UserList& users = delegate_->GetUsers(); |
1058 for (user_manager::UserList::const_iterator it = users.begin(); | 1081 for (user_manager::UserList::const_iterator it = users.begin(); |
1059 it != users.end(); | 1082 it != users.end(); |
1060 ++it) { | 1083 ++it) { |
1061 if ((*it)->email() == username) { | 1084 if ((*it)->email() == username) { |
1062 unlock_user = *it; | 1085 unlock_user = *it; |
1063 break; | 1086 break; |
1064 } | 1087 } |
1065 } | 1088 } |
1066 if (!unlock_user) | 1089 if (!unlock_user) |
1067 return; | 1090 return; |
1068 | 1091 |
1069 Profile* profile = ProfileHelper::Get()->GetProfileByUserUnsafe(unlock_user); | 1092 ProfileHelper* profile_helper = ProfileHelper::Get(); |
1070 extensions::ScreenlockPrivateEventRouter* router = | 1093 Profile* profile = profile_helper->GetProfileByUser(unlock_user); |
1071 extensions::ScreenlockPrivateEventRouter::GetFactoryInstance()->Get( | 1094 |
1072 profile); | 1095 // The user profile should exists if and only if this is lock screen. |
1073 router->OnAuthAttempted(GetAuthType(username), ""); | 1096 DCHECK_NE(!profile, !ScreenLocker::default_screen_locker()); |
| 1097 |
| 1098 if (!profile) |
| 1099 profile = profile_helper->GetSigninProfile(); |
| 1100 |
| 1101 EasyUnlockService::Get(profile)->AttemptAuth(username); |
1074 } | 1102 } |
1075 | 1103 |
1076 void SigninScreenHandler::HandleLaunchDemoUser() { | 1104 void SigninScreenHandler::HandleLaunchDemoUser() { |
1077 UserContext context(user_manager::USER_TYPE_RETAIL_MODE, std::string()); | 1105 UserContext context(user_manager::USER_TYPE_RETAIL_MODE, std::string()); |
1078 if (delegate_) | 1106 if (delegate_) |
1079 delegate_->Login(context, SigninSpecifics()); | 1107 delegate_->Login(context, SigninSpecifics()); |
1080 } | 1108 } |
1081 | 1109 |
1082 void SigninScreenHandler::HandleLaunchIncognito() { | 1110 void SigninScreenHandler::HandleLaunchIncognito() { |
1083 UserContext context(user_manager::USER_TYPE_GUEST, std::string()); | 1111 UserContext context(user_manager::USER_TYPE_GUEST, std::string()); |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1209 core_oobe_actor_->ShowDeviceResetScreen(); | 1237 core_oobe_actor_->ShowDeviceResetScreen(); |
1210 return; | 1238 return; |
1211 } | 1239 } |
1212 } | 1240 } |
1213 | 1241 |
1214 is_account_picker_showing_first_time_ = true; | 1242 is_account_picker_showing_first_time_ = true; |
1215 gaia_screen_handler_->MaybePreloadAuthExtension(); | 1243 gaia_screen_handler_->MaybePreloadAuthExtension(); |
1216 | 1244 |
1217 if (ScreenLocker::default_screen_locker()) { | 1245 if (ScreenLocker::default_screen_locker()) { |
1218 ScreenLocker::default_screen_locker()->delegate()->OnLockWebUIReady(); | 1246 ScreenLocker::default_screen_locker()->delegate()->OnLockWebUIReady(); |
1219 ScreenlockBridge::Get()->SetLockHandler(this); | |
1220 } | 1247 } |
| 1248 ScreenlockBridge::Get()->SetLockHandler(this); |
1221 | 1249 |
1222 if (delegate_) | 1250 if (delegate_) |
1223 delegate_->OnSigninScreenReady(); | 1251 delegate_->OnSigninScreenReady(); |
1224 } | 1252 } |
1225 | 1253 |
1226 void SigninScreenHandler::HandleWallpaperReady() { | 1254 void SigninScreenHandler::HandleWallpaperReady() { |
1227 if (ScreenLocker::default_screen_locker()) { | 1255 if (ScreenLocker::default_screen_locker()) { |
1228 ScreenLocker::default_screen_locker()->delegate()-> | 1256 ScreenLocker::default_screen_locker()->delegate()-> |
1229 OnLockBackgroundDisplayed(); | 1257 OnLockBackgroundDisplayed(); |
1230 } | 1258 } |
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1517 return gaia_screen_handler_->frame_error(); | 1545 return gaia_screen_handler_->frame_error(); |
1518 } | 1546 } |
1519 | 1547 |
1520 void SigninScreenHandler::OnCapsLockChanged(bool enabled) { | 1548 void SigninScreenHandler::OnCapsLockChanged(bool enabled) { |
1521 caps_lock_enabled_ = enabled; | 1549 caps_lock_enabled_ = enabled; |
1522 if (page_is_ready()) | 1550 if (page_is_ready()) |
1523 CallJS("login.AccountPickerScreen.setCapsLockState", caps_lock_enabled_); | 1551 CallJS("login.AccountPickerScreen.setCapsLockState", caps_lock_enabled_); |
1524 } | 1552 } |
1525 | 1553 |
1526 } // namespace chromeos | 1554 } // namespace chromeos |
OLD | NEW |