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

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

Issue 321633002: Revert 275549 "Revert 275154 "ChromeOS login webui refactoring :..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 6 months 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 | Annotate | Revision Log
« no previous file with comments | « trunk/src/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 #include "chrome/common/chrome_switches.h" 56 #include "chrome/common/chrome_switches.h"
57 #include "chrome/common/pref_names.h" 57 #include "chrome/common/pref_names.h"
58 #include "chrome/common/url_constants.h" 58 #include "chrome/common/url_constants.h"
59 #include "chromeos/chromeos_switches.h" 59 #include "chromeos/chromeos_switches.h"
60 #include "chromeos/dbus/dbus_thread_manager.h" 60 #include "chromeos/dbus/dbus_thread_manager.h"
61 #include "chromeos/dbus/power_manager_client.h" 61 #include "chromeos/dbus/power_manager_client.h"
62 #include "chromeos/ime/ime_keyboard.h" 62 #include "chromeos/ime/ime_keyboard.h"
63 #include "chromeos/ime/input_method_manager.h" 63 #include "chromeos/ime/input_method_manager.h"
64 #include "chromeos/network/network_state.h" 64 #include "chromeos/network/network_state.h"
65 #include "chromeos/network/network_state_handler.h" 65 #include "chromeos/network/network_state_handler.h"
66 #include "content/public/browser/browser_thread.h"
67 #include "content/public/browser/render_frame_host.h" 66 #include "content/public/browser/render_frame_host.h"
68 #include "content/public/browser/web_contents.h" 67 #include "content/public/browser/web_contents.h"
69 #include "google_apis/gaia/gaia_auth_util.h" 68 #include "google_apis/gaia/gaia_auth_util.h"
70 #include "grit/chromium_strings.h" 69 #include "grit/chromium_strings.h"
71 #include "grit/generated_resources.h" 70 #include "grit/generated_resources.h"
72 #include "net/url_request/url_request_context_getter.h" 71 #include "net/url_request/url_request_context_getter.h"
73 #include "third_party/cros_system_api/dbus/service_constants.h" 72 #include "third_party/cros_system_api/dbus/service_constants.h"
74 #include "ui/base/webui/web_ui_util.h" 73 #include "ui/base/webui/web_ui_util.h"
75 74
76 #if defined(USE_AURA) 75 #if defined(USE_AURA)
(...skipping 12 matching lines...) Expand all
89 // current network. 88 // current network.
90 const int kOfflineTimeoutSec = 5; 89 const int kOfflineTimeoutSec = 5;
91 90
92 // Timeout used to prevent infinite connecting to a flaky network. 91 // Timeout used to prevent infinite connecting to a flaky network.
93 const int kConnectingTimeoutSec = 60; 92 const int kConnectingTimeoutSec = 60;
94 93
95 // Type of the login screen UI that is currently presented to user. 94 // Type of the login screen UI that is currently presented to user.
96 const char kSourceGaiaSignin[] = "gaia-signin"; 95 const char kSourceGaiaSignin[] = "gaia-signin";
97 const char kSourceAccountPicker[] = "account-picker"; 96 const char kSourceAccountPicker[] = "account-picker";
98 97
99 // The Task posted to PostTaskAndReply in StartClearingDnsCache on the IO
100 // thread.
101 void ClearDnsCache(IOThread* io_thread) {
102 DCHECK_CURRENTLY_ON(BrowserThread::IO);
103 if (browser_shutdown::IsTryingToQuit())
104 return;
105
106 io_thread->ClearHostCache();
107 }
108
109 static bool Contains(const std::vector<std::string>& container, 98 static bool Contains(const std::vector<std::string>& container,
110 const std::string& value) { 99 const std::string& value) {
111 return std::find(container.begin(), container.end(), value) != 100 return std::find(container.begin(), container.end(), value) !=
112 container.end(); 101 container.end();
113 } 102 }
114 103
115 } // namespace 104 } // namespace
116 105
117 namespace chromeos { 106 namespace chromeos {
118 107
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 DLOG(ERROR) << "SigninScreenHandler::SetUserInputMethod('" << username 198 DLOG(ERROR) << "SigninScreenHandler::SetUserInputMethod('" << username
210 << "'): user input method '" << input_method 199 << "'): user input method '" << input_method
211 << "' is not enabled and enabling failed (ignored!)."; 200 << "' is not enabled and enabling failed (ignored!).";
212 } 201 }
213 } 202 }
214 manager->ChangeInputMethod(input_method); 203 manager->ChangeInputMethod(input_method);
215 204
216 return true; 205 return true;
217 } 206 }
218 207
219 void RecordSAMLScrapingVerificationResultInHistogram(bool success) {
220 UMA_HISTOGRAM_BOOLEAN("ChromeOS.SAML.Scraping.VerificationResult", success);
221 }
222
223 } // namespace 208 } // namespace
224 209
225 // LoginScreenContext implementation ------------------------------------------ 210 // LoginScreenContext implementation ------------------------------------------
226 211
227 LoginScreenContext::LoginScreenContext() { 212 LoginScreenContext::LoginScreenContext() {
228 Init(); 213 Init();
229 } 214 }
230 215
231 LoginScreenContext::LoginScreenContext(const base::ListValue* args) { 216 LoginScreenContext::LoginScreenContext(const base::ListValue* args) {
232 Init(); 217 Init();
(...skipping 14 matching lines...) Expand all
247 SigninScreenHandler::SigninScreenHandler( 232 SigninScreenHandler::SigninScreenHandler(
248 const scoped_refptr<NetworkStateInformer>& network_state_informer, 233 const scoped_refptr<NetworkStateInformer>& network_state_informer,
249 ErrorScreenActor* error_screen_actor, 234 ErrorScreenActor* error_screen_actor,
250 CoreOobeActor* core_oobe_actor, 235 CoreOobeActor* core_oobe_actor,
251 GaiaScreenHandler* gaia_screen_handler) 236 GaiaScreenHandler* gaia_screen_handler)
252 : ui_state_(UI_STATE_UNKNOWN), 237 : ui_state_(UI_STATE_UNKNOWN),
253 delegate_(NULL), 238 delegate_(NULL),
254 native_window_delegate_(NULL), 239 native_window_delegate_(NULL),
255 show_on_init_(false), 240 show_on_init_(false),
256 oobe_ui_(false), 241 oobe_ui_(false),
257 focus_stolen_(false),
258 gaia_silent_load_(false),
259 is_account_picker_showing_first_time_(false), 242 is_account_picker_showing_first_time_(false),
260 dns_cleared_(false),
261 dns_clear_task_running_(false),
262 cookies_cleared_(false),
263 network_state_informer_(network_state_informer), 243 network_state_informer_(network_state_informer),
264 using_saml_api_(false),
265 test_expects_complete_login_(false),
266 weak_factory_(this),
267 webui_visible_(false), 244 webui_visible_(false),
268 preferences_changed_delayed_(false), 245 preferences_changed_delayed_(false),
269 error_screen_actor_(error_screen_actor), 246 error_screen_actor_(error_screen_actor),
270 core_oobe_actor_(core_oobe_actor), 247 core_oobe_actor_(core_oobe_actor),
271 is_first_update_state_call_(true), 248 is_first_update_state_call_(true),
272 offline_login_active_(false), 249 offline_login_active_(false),
273 last_network_state_(NetworkStateInformer::UNKNOWN), 250 last_network_state_(NetworkStateInformer::UNKNOWN),
274 has_pending_auth_ui_(false), 251 has_pending_auth_ui_(false),
275 caps_lock_enabled_(chromeos::input_method::InputMethodManager::Get() 252 caps_lock_enabled_(chromeos::input_method::InputMethodManager::Get()
276 ->GetImeKeyboard() 253 ->GetImeKeyboard()
277 ->CapsLockIsEnabled()), 254 ->CapsLockIsEnabled()),
278 gaia_screen_handler_(gaia_screen_handler) { 255 gaia_screen_handler_(gaia_screen_handler),
256 weak_factory_(this) {
279 DCHECK(network_state_informer_.get()); 257 DCHECK(network_state_informer_.get());
280 DCHECK(error_screen_actor_); 258 DCHECK(error_screen_actor_);
281 DCHECK(core_oobe_actor_); 259 DCHECK(core_oobe_actor_);
282 DCHECK(gaia_screen_handler_); 260 DCHECK(gaia_screen_handler_);
283 gaia_screen_handler_->SetSigninScreenHandler(this); 261 gaia_screen_handler_->SetSigninScreenHandler(this);
284 network_state_informer_->AddObserver(this); 262 network_state_informer_->AddObserver(this);
285 263
286 registrar_.Add(this, 264 registrar_.Add(this,
287 chrome::NOTIFICATION_AUTH_NEEDED, 265 chrome::NOTIFICATION_AUTH_NEEDED,
288 content::NotificationService::AllSources()); 266 content::NotificationService::AllSources());
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 builder->Add("runType", CommandLine::ForCurrentProcess()->HasSwitch( 397 builder->Add("runType", CommandLine::ForCurrentProcess()->HasSwitch(
420 switches::kFirstExecAfterBoot) ? "firstExecAfterBoot" : 398 switches::kFirstExecAfterBoot) ? "firstExecAfterBoot" :
421 "notFirstExecAfterBoot"); 399 "notFirstExecAfterBoot");
422 } 400 }
423 401
424 void SigninScreenHandler::Show(const LoginScreenContext& context) { 402 void SigninScreenHandler::Show(const LoginScreenContext& context) {
425 CHECK(delegate_); 403 CHECK(delegate_);
426 404
427 // Just initialize internal fields from context and call ShowImpl(). 405 // Just initialize internal fields from context and call ShowImpl().
428 oobe_ui_ = context.oobe_ui(); 406 oobe_ui_ = context.oobe_ui();
429 if (!context.email().empty()) 407 gaia_screen_handler_->PopulateEmail(context.email());
430 email_ = context.email();
431 else
432 email_.clear();
433 ShowImpl(); 408 ShowImpl();
434 } 409 }
435 410
436 void SigninScreenHandler::ShowRetailModeLoginSpinner() { 411 void SigninScreenHandler::ShowRetailModeLoginSpinner() {
437 CallJS("showLoginSpinner"); 412 CallJS("showLoginSpinner");
438 } 413 }
439 414
440 void SigninScreenHandler::SetDelegate(SigninScreenHandlerDelegate* delegate) { 415 void SigninScreenHandler::SetDelegate(SigninScreenHandlerDelegate* delegate) {
441 delegate_ = delegate; 416 delegate_ = delegate;
442 if (delegate_) 417 if (delegate_)
443 delegate_->SetWebUIHandler(this); 418 delegate_->SetWebUIHandler(this);
444 else 419 else
445 auto_enrollment_progress_subscription_.reset(); 420 auto_enrollment_progress_subscription_.reset();
446 } 421 }
447 422
448 void SigninScreenHandler::SetNativeWindowDelegate( 423 void SigninScreenHandler::SetNativeWindowDelegate(
449 NativeWindowDelegate* native_window_delegate) { 424 NativeWindowDelegate* native_window_delegate) {
450 native_window_delegate_ = native_window_delegate; 425 native_window_delegate_ = native_window_delegate;
451 } 426 }
452 427
453 void SigninScreenHandler::OnNetworkReady() { 428 void SigninScreenHandler::OnNetworkReady() {
454 LOG(WARNING) << "OnNetworkReady() call."; 429 LOG(WARNING) << "OnNetworkReady() call.";
455 MaybePreloadAuthExtension(); 430 DCHECK(gaia_screen_handler_);
431 gaia_screen_handler_->MaybePreloadAuthExtension();
456 } 432 }
457 433
458 void SigninScreenHandler::UpdateState(ErrorScreenActor::ErrorReason reason) { 434 void SigninScreenHandler::UpdateState(ErrorScreenActor::ErrorReason reason) {
459 UpdateStateInternal(reason, false); 435 UpdateStateInternal(reason, false);
460 } 436 }
461 437
462 // SigninScreenHandler, private: ----------------------------------------------- 438 // SigninScreenHandler, private: -----------------------------------------------
463 439
464 void SigninScreenHandler::ShowImpl() { 440 void SigninScreenHandler::ShowImpl() {
465 if (!page_is_ready()) { 441 if (!page_is_ready()) {
466 show_on_init_ = true; 442 show_on_init_ = true;
467 return; 443 return;
468 } 444 }
469 445
470 if (oobe_ui_) { 446 if (oobe_ui_) {
471 // Shows new user sign-in for OOBE. 447 // Shows new user sign-in for OOBE.
472 OnShowAddUser(email_); 448 OnShowAddUser();
473 } else { 449 } else {
474 // Populates account picker. Animation is turned off for now until we 450 // Populates account picker. Animation is turned off for now until we
475 // figure out how to make it fast enough. 451 // figure out how to make it fast enough.
476 delegate_->HandleGetUsers(); 452 delegate_->HandleGetUsers();
477 453
478 // Reset Caps Lock state when login screen is shown. 454 // Reset Caps Lock state when login screen is shown.
479 input_method::InputMethodManager::Get() 455 input_method::InputMethodManager::Get()
480 ->GetImeKeyboard() 456 ->GetImeKeyboard()
481 ->SetCapsLockEnabled(false); 457 ->SetCapsLockEnabled(false);
482 458
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 } 681 }
706 } 682 }
707 683
708 gfx::NativeWindow SigninScreenHandler::GetNativeWindow() { 684 gfx::NativeWindow SigninScreenHandler::GetNativeWindow() {
709 if (native_window_delegate_) 685 if (native_window_delegate_)
710 return native_window_delegate_->GetNativeWindow(); 686 return native_window_delegate_->GetNativeWindow();
711 return NULL; 687 return NULL;
712 } 688 }
713 689
714 void SigninScreenHandler::RegisterMessages() { 690 void SigninScreenHandler::RegisterMessages() {
715 AddCallback("usingSAMLAPI", &SigninScreenHandler::HandleUsingSAMLAPI);
716 AddCallback("scrapedPasswordCount",
717 &SigninScreenHandler::HandleScrapedPasswordCount);
718 AddCallback("scrapedPasswordVerificationFailed",
719 &SigninScreenHandler::HandleScrapedPasswordVerificationFailed);
720 AddCallback("authenticateUser", &SigninScreenHandler::HandleAuthenticateUser); 691 AddCallback("authenticateUser", &SigninScreenHandler::HandleAuthenticateUser);
721 AddCallback("attemptUnlock", &SigninScreenHandler::HandleAttemptUnlock); 692 AddCallback("attemptUnlock", &SigninScreenHandler::HandleAttemptUnlock);
722 AddCallback("completeLogin", &SigninScreenHandler::HandleCompleteLogin);
723 AddCallback("completeAuthentication",
724 &SigninScreenHandler::HandleCompleteAuthentication);
725 AddCallback("getUsers", &SigninScreenHandler::HandleGetUsers); 693 AddCallback("getUsers", &SigninScreenHandler::HandleGetUsers);
726 AddCallback("launchDemoUser", &SigninScreenHandler::HandleLaunchDemoUser); 694 AddCallback("launchDemoUser", &SigninScreenHandler::HandleLaunchDemoUser);
727 AddCallback("launchIncognito", &SigninScreenHandler::HandleLaunchIncognito); 695 AddCallback("launchIncognito", &SigninScreenHandler::HandleLaunchIncognito);
728 AddCallback("showLocallyManagedUserCreationScreen", 696 AddCallback("showLocallyManagedUserCreationScreen",
729 &SigninScreenHandler::HandleShowLocallyManagedUserCreationScreen); 697 &SigninScreenHandler::HandleShowLocallyManagedUserCreationScreen);
730 AddCallback("launchPublicAccount", 698 AddCallback("launchPublicAccount",
731 &SigninScreenHandler::HandleLaunchPublicAccount); 699 &SigninScreenHandler::HandleLaunchPublicAccount);
732 AddRawCallback("offlineLogin", &SigninScreenHandler::HandleOfflineLogin); 700 AddRawCallback("offlineLogin", &SigninScreenHandler::HandleOfflineLogin);
733 AddCallback("rebootSystem", &SigninScreenHandler::HandleRebootSystem); 701 AddCallback("rebootSystem", &SigninScreenHandler::HandleRebootSystem);
734 AddRawCallback("showAddUser", &SigninScreenHandler::HandleShowAddUser); 702 AddRawCallback("showAddUser", &SigninScreenHandler::HandleShowAddUser);
735 AddCallback("shutdownSystem", &SigninScreenHandler::HandleShutdownSystem); 703 AddCallback("shutdownSystem", &SigninScreenHandler::HandleShutdownSystem);
736 AddCallback("loadWallpaper", &SigninScreenHandler::HandleLoadWallpaper); 704 AddCallback("loadWallpaper", &SigninScreenHandler::HandleLoadWallpaper);
737 AddCallback("removeUser", &SigninScreenHandler::HandleRemoveUser); 705 AddCallback("removeUser", &SigninScreenHandler::HandleRemoveUser);
738 AddCallback("toggleEnrollmentScreen", 706 AddCallback("toggleEnrollmentScreen",
739 &SigninScreenHandler::HandleToggleEnrollmentScreen); 707 &SigninScreenHandler::HandleToggleEnrollmentScreen);
740 AddCallback("toggleKioskEnableScreen", 708 AddCallback("toggleKioskEnableScreen",
741 &SigninScreenHandler::HandleToggleKioskEnableScreen); 709 &SigninScreenHandler::HandleToggleKioskEnableScreen);
742 AddCallback("createAccount", &SigninScreenHandler::HandleCreateAccount); 710 AddCallback("createAccount", &SigninScreenHandler::HandleCreateAccount);
743 AddCallback("accountPickerReady", 711 AddCallback("accountPickerReady",
744 &SigninScreenHandler::HandleAccountPickerReady); 712 &SigninScreenHandler::HandleAccountPickerReady);
745 AddCallback("wallpaperReady", &SigninScreenHandler::HandleWallpaperReady); 713 AddCallback("wallpaperReady", &SigninScreenHandler::HandleWallpaperReady);
746 AddCallback("loginWebuiReady", &SigninScreenHandler::HandleLoginWebuiReady);
747 AddCallback("signOutUser", &SigninScreenHandler::HandleSignOutUser); 714 AddCallback("signOutUser", &SigninScreenHandler::HandleSignOutUser);
748 AddCallback("openProxySettings", 715 AddCallback("openProxySettings",
749 &SigninScreenHandler::HandleOpenProxySettings); 716 &SigninScreenHandler::HandleOpenProxySettings);
750 AddCallback("loginVisible", &SigninScreenHandler::HandleLoginVisible); 717 AddCallback("loginVisible", &SigninScreenHandler::HandleLoginVisible);
751 AddCallback("cancelPasswordChangedFlow", 718 AddCallback("cancelPasswordChangedFlow",
752 &SigninScreenHandler::HandleCancelPasswordChangedFlow); 719 &SigninScreenHandler::HandleCancelPasswordChangedFlow);
753 AddCallback("cancelUserAdding", 720 AddCallback("cancelUserAdding",
754 &SigninScreenHandler::HandleCancelUserAdding); 721 &SigninScreenHandler::HandleCancelUserAdding);
755 AddCallback("migrateUserData", &SigninScreenHandler::HandleMigrateUserData); 722 AddCallback("migrateUserData", &SigninScreenHandler::HandleMigrateUserData);
756 AddCallback("resyncUserData", &SigninScreenHandler::HandleResyncUserData); 723 AddCallback("resyncUserData", &SigninScreenHandler::HandleResyncUserData);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
788 core_oobe_actor_->ClearUserPodPassword(); 755 core_oobe_actor_->ClearUserPodPassword();
789 } 756 }
790 757
791 void SigninScreenHandler::RefocusCurrentPod() { 758 void SigninScreenHandler::RefocusCurrentPod() {
792 core_oobe_actor_->RefocusCurrentPod(); 759 core_oobe_actor_->RefocusCurrentPod();
793 } 760 }
794 761
795 void SigninScreenHandler::OnUserRemoved(const std::string& username) { 762 void SigninScreenHandler::OnUserRemoved(const std::string& username) {
796 CallJS("login.AccountPickerScreen.removeUser", username); 763 CallJS("login.AccountPickerScreen.removeUser", username);
797 if (delegate_->GetUsers().empty()) 764 if (delegate_->GetUsers().empty())
798 OnShowAddUser(""); 765 OnShowAddUser();
799 } 766 }
800 767
801 void SigninScreenHandler::OnUserImageChanged(const User& user) { 768 void SigninScreenHandler::OnUserImageChanged(const User& user) {
802 if (page_is_ready()) 769 if (page_is_ready())
803 CallJS("login.AccountPickerScreen.updateUserImage", user.email()); 770 CallJS("login.AccountPickerScreen.updateUserImage", user.email());
804 } 771 }
805 772
806 void SigninScreenHandler::OnPreferencesChanged() { 773 void SigninScreenHandler::OnPreferencesChanged() {
807 // Make sure that one of the login UI is fully functional now, otherwise 774 // Make sure that one of the login UI is fully functional now, otherwise
808 // preferences update would be picked up next time it will be shown. 775 // preferences update would be picked up next time it will be shown.
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
843 NOTREACHED() << "Unknown sign in error"; 810 NOTREACHED() << "Unknown sign in error";
844 break; 811 break;
845 } 812 }
846 } 813 }
847 814
848 void SigninScreenHandler::ShowSigninUI(const std::string& email) { 815 void SigninScreenHandler::ShowSigninUI(const std::string& email) {
849 core_oobe_actor_->ShowSignInUI(email); 816 core_oobe_actor_->ShowSignInUI(email);
850 } 817 }
851 818
852 void SigninScreenHandler::ShowGaiaPasswordChanged(const std::string& username) { 819 void SigninScreenHandler::ShowGaiaPasswordChanged(const std::string& username) {
853 email_ = username; 820 gaia_screen_handler_->PasswordChangedFor(username);
854 password_changed_for_.insert(email_); 821 gaia_screen_handler_->PopulateEmail(username);
855 core_oobe_actor_->ShowSignInUI(email_); 822 core_oobe_actor_->ShowSignInUI(username);
856 CallJS("login.setAuthType", 823 CallJS("login.setAuthType",
857 username, 824 username,
858 static_cast<int>(ONLINE_SIGN_IN), 825 static_cast<int>(ONLINE_SIGN_IN),
859 base::StringValue("")); 826 base::StringValue(""));
860 } 827 }
861 828
862 void SigninScreenHandler::ShowPasswordChangedDialog(bool show_password_error) { 829 void SigninScreenHandler::ShowPasswordChangedDialog(bool show_password_error) {
863 core_oobe_actor_->ShowPasswordChangedScreen(show_password_error); 830 core_oobe_actor_->ShowPasswordChangedScreen(show_password_error);
864 } 831 }
865 832
866 void SigninScreenHandler::ShowSigninScreenForCreds( 833 void SigninScreenHandler::ShowSigninScreenForCreds(
867 const std::string& username, 834 const std::string& username,
868 const std::string& password) { 835 const std::string& password) {
869 VLOG(2) << "ShowSigninScreenForCreds for user " << username 836 DCHECK(gaia_screen_handler_);
870 << ", frame_state=" << FrameState(); 837 gaia_screen_handler_->ShowSigninScreenForCreds(username, password);
871
872 test_user_ = username;
873 test_pass_ = password;
874 test_expects_complete_login_ = true;
875
876 // Submit login form for test if gaia is ready. If gaia is loading, login
877 // will be attempted in HandleLoginWebuiReady after gaia is ready. Otherwise,
878 // reload gaia then follow the loading case.
879 if (FrameState() == GaiaScreenHandler::FRAME_STATE_LOADED)
880 SubmitLoginFormForTest();
881 else if (FrameState() != GaiaScreenHandler::FRAME_STATE_LOADING)
882 HandleShowAddUser(NULL);
883 }
884
885 void SigninScreenHandler::OnCookiesCleared(base::Closure on_clear_callback) {
886 DCHECK_CURRENTLY_ON(BrowserThread::UI);
887 cookies_cleared_ = true;
888 on_clear_callback.Run();
889 } 838 }
890 839
891 void SigninScreenHandler::OnKeyEvent(ui::KeyEvent* key) { 840 void SigninScreenHandler::OnKeyEvent(ui::KeyEvent* key) {
892 if (key->type() == ui::ET_KEY_PRESSED && key->key_code() == ui::VKEY_CAPITAL) 841 if (key->type() == ui::ET_KEY_PRESSED && key->key_code() == ui::VKEY_CAPITAL)
893 OnCapsLockChanged(!caps_lock_enabled_); 842 OnCapsLockChanged(!caps_lock_enabled_);
894 } 843 }
895 844
896 void SigninScreenHandler::Observe(int type, 845 void SigninScreenHandler::Observe(int type,
897 const content::NotificationSource& source, 846 const content::NotificationSource& source,
898 const content::NotificationDetails& details) { 847 const content::NotificationDetails& details) {
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
969 ScreenlockBridge::LockHandler::AuthType SigninScreenHandler::GetAuthType( 918 ScreenlockBridge::LockHandler::AuthType SigninScreenHandler::GetAuthType(
970 const std::string& username) const { 919 const std::string& username) const {
971 return delegate_->GetAuthType(username); 920 return delegate_->GetAuthType(username);
972 } 921 }
973 922
974 void SigninScreenHandler::Unlock(const std::string& user_email) { 923 void SigninScreenHandler::Unlock(const std::string& user_email) {
975 DCHECK(ScreenLocker::default_screen_locker()); 924 DCHECK(ScreenLocker::default_screen_locker());
976 ScreenLocker::Hide(); 925 ScreenLocker::Hide();
977 } 926 }
978 927
979 void SigninScreenHandler::OnDnsCleared() { 928 bool SigninScreenHandler::ShouldLoadGaia() const {
980 DCHECK_CURRENTLY_ON(BrowserThread::UI); 929 // Fetching of the extension is not started before account picker page is
981 dns_clear_task_running_ = false; 930 // loaded because it can affect the loading speed.
982 dns_cleared_ = true; 931 // Do not load the extension for the screen locker, see crosbug.com/25018.
983 ShowSigninScreenIfReady(); 932 return !ScreenLocker::default_screen_locker() &&
933 is_account_picker_showing_first_time_;
984 } 934 }
985 935
986 // Update keyboard layout to least recently used by the user. 936 // Update keyboard layout to least recently used by the user.
987 void SigninScreenHandler::SetUserInputMethod(const std::string& username) { 937 void SigninScreenHandler::SetUserInputMethod(const std::string& username) {
988 UserManager* user_manager = UserManager::Get(); 938 UserManager* user_manager = UserManager::Get();
989 if (user_manager->IsUserLoggedIn()) { 939 if (user_manager->IsUserLoggedIn()) {
990 // We are on sign-in screen inside user session (adding new user to 940 // We are on sign-in screen inside user session (adding new user to
991 // the session or on lock screen), don't switch input methods in this case. 941 // the session or on lock screen), don't switch input methods in this case.
992 // TODO(dpolukhin): adding user and sign-in should be consistent 942 // TODO(dpolukhin): adding user and sign-in should be consistent
993 // crbug.com/292774 943 // crbug.com/292774
994 return; 944 return;
995 } 945 }
996 946
997 chromeos::input_method::InputMethodManager* const manager = 947 chromeos::input_method::InputMethodManager* const manager =
998 chromeos::input_method::InputMethodManager::Get(); 948 chromeos::input_method::InputMethodManager::Get();
999 949
1000 const bool succeed = SetUserInputMethodImpl(username, manager); 950 const bool succeed = SetUserInputMethodImpl(username, manager);
1001 951
1002 // This is also a case when LRU layout is set only for a few local users, 952 // This is also a case when LRU layout is set only for a few local users,
1003 // thus others need to be switched to default locale. 953 // thus others need to be switched to default locale.
1004 // Otherwise they will end up using another user's locale to log in. 954 // Otherwise they will end up using another user's locale to log in.
1005 if (!succeed) { 955 if (!succeed) {
1006 DVLOG(0) << "SetUserInputMethod('" << username 956 DVLOG(0) << "SetUserInputMethod('" << username
1007 << "'): failed to set user layout. Switching to default."; 957 << "'): failed to set user layout. Switching to default.";
1008 958
1009 manager->SetInputMethodLoginDefault(); 959 manager->SetInputMethodLoginDefault();
1010 } 960 }
1011 } 961 }
1012 962
1013 void SigninScreenHandler::ShowSigninScreenIfReady() {
1014 LOG(WARNING) << "ShowSigninScreenIfReady() call.";
1015
1016 if (!dns_cleared_ || !cookies_cleared_ || !delegate_)
1017 return;
1018
1019 std::string active_network_path = network_state_informer_->network_path();
1020 if (gaia_silent_load_ &&
1021 (network_state_informer_->state() != NetworkStateInformer::ONLINE ||
1022 gaia_silent_load_network_ != active_network_path)) {
1023 // Network has changed. Force Gaia reload.
1024 gaia_silent_load_ = false;
1025 // Gaia page will be realoded, so focus isn't stolen anymore.
1026 focus_stolen_ = false;
1027 }
1028
1029 // Note that LoadAuthExtension clears |email_|.
1030 if (email_.empty())
1031 delegate_->LoadSigninWallpaper();
1032 else
1033 delegate_->LoadWallpaper(email_);
1034
1035 // Set Least Recently Used input method for the user.
1036 if (!email_.empty())
1037 SetUserInputMethod(email_);
1038
1039 LoadAuthExtension(!gaia_silent_load_, false, false);
1040 UpdateUIState(UI_STATE_GAIA_SIGNIN, NULL);
1041
1042 if (gaia_silent_load_) {
1043 // The variable is assigned to false because silently loaded Gaia page was
1044 // used.
1045 gaia_silent_load_ = false;
1046 if (focus_stolen_)
1047 HandleLoginWebuiReady();
1048 }
1049
1050 UpdateState(ErrorScreenActor::ERROR_REASON_UPDATE);
1051 }
1052
1053 void SigninScreenHandler::LoadAuthExtension(
1054 bool force, bool silent_load, bool offline) {
1055 GaiaContext context;
1056 context.force_reload = force;
1057 context.is_local = offline;
1058 context.password_changed =
1059 !email_.empty() && password_changed_for_.count(email_);
1060 if (delegate_)
1061 context.show_users = delegate_->IsShowUsers();
1062 context.use_offline = offline;
1063 if (delegate_)
1064 context.has_users = !delegate_->GetUsers().empty();
1065 context.email = email_;
1066
1067 email_.clear();
1068
1069 DCHECK(gaia_screen_handler_);
1070 gaia_screen_handler_->LoadGaia(context);
1071 }
1072 963
1073 void SigninScreenHandler::UserSettingsChanged() { 964 void SigninScreenHandler::UserSettingsChanged() {
1074 DCHECK(gaia_screen_handler_); 965 DCHECK(gaia_screen_handler_);
1075 GaiaContext context; 966 GaiaContext context;
1076 if (delegate_) 967 if (delegate_)
1077 context.has_users = !delegate_->GetUsers().empty(); 968 context.has_users = !delegate_->GetUsers().empty();
1078 gaia_screen_handler_->UpdateGaia(context); 969 gaia_screen_handler_->UpdateGaia(context);
1079 UpdateAddButtonStatus(); 970 UpdateAddButtonStatus();
1080 } 971 }
1081 972
1082 void SigninScreenHandler::UpdateAddButtonStatus() { 973 void SigninScreenHandler::UpdateAddButtonStatus() {
1083 CallJS("cr.ui.login.DisplayManager.updateAddUserButtonStatus", 974 CallJS("cr.ui.login.DisplayManager.updateAddUserButtonStatus",
1084 AllWhitelistedUsersPresent()); 975 AllWhitelistedUsersPresent());
1085 } 976 }
1086 977
1087 void SigninScreenHandler::HandleUsingSAMLAPI() {
1088 SetSAMLPrincipalsAPIUsed(true);
1089 }
1090
1091 void SigninScreenHandler::HandleScrapedPasswordCount(int password_count) {
1092 SetSAMLPrincipalsAPIUsed(false);
1093 // Use a histogram that has 11 buckets, one for each of the values in [0, 9]
1094 // and an overflow bucket at the end.
1095 UMA_HISTOGRAM_ENUMERATION(
1096 "ChromeOS.SAML.Scraping.PasswordCount", std::min(password_count, 10), 11);
1097 if (password_count == 0)
1098 HandleScrapedPasswordVerificationFailed();
1099 }
1100
1101 void SigninScreenHandler::HandleScrapedPasswordVerificationFailed() {
1102 RecordSAMLScrapingVerificationResultInHistogram(false);
1103 }
1104
1105 void SigninScreenHandler::HandleCompleteLogin(const std::string& typed_email,
1106 const std::string& password,
1107 bool using_saml) {
1108 if (!delegate_)
1109 return;
1110
1111 if (using_saml && !using_saml_api_)
1112 RecordSAMLScrapingVerificationResultInHistogram(true);
1113
1114 const std::string sanitized_email = gaia::SanitizeEmail(typed_email);
1115 delegate_->SetDisplayEmail(sanitized_email);
1116 UserContext user_context(sanitized_email);
1117 user_context.SetKey(Key(password));
1118 user_context.SetAuthFlow(using_saml ?
1119 UserContext::AUTH_FLOW_GAIA_WITH_SAML :
1120 UserContext::AUTH_FLOW_GAIA_WITHOUT_SAML);
1121 delegate_->CompleteLogin(user_context);
1122
1123 if (test_expects_complete_login_) {
1124 VLOG(2) << "Complete test login for " << typed_email
1125 << ", requested=" << test_user_;
1126
1127 test_expects_complete_login_ = false;
1128 test_user_.clear();
1129 test_pass_.clear();
1130 }
1131 }
1132
1133 void SigninScreenHandler::HandleCompleteAuthentication(
1134 const std::string& email,
1135 const std::string& password,
1136 const std::string& auth_code) {
1137 if (!delegate_)
1138 return;
1139 delegate_->SetDisplayEmail(gaia::SanitizeEmail(email));
1140 UserContext user_context(email);
1141 user_context.SetKey(Key(password));
1142 user_context.SetAuthCode(auth_code);
1143 delegate_->CompleteLogin(user_context);
1144 }
1145
1146 void SigninScreenHandler::HandleAuthenticateUser(const std::string& username, 978 void SigninScreenHandler::HandleAuthenticateUser(const std::string& username,
1147 const std::string& password) { 979 const std::string& password) {
1148 if (!delegate_) 980 if (!delegate_)
1149 return; 981 return;
1150 UserContext user_context(username); 982 UserContext user_context(username);
1151 user_context.SetKey(Key(password)); 983 user_context.SetKey(Key(password));
1152 delegate_->Login(user_context); 984 delegate_->Login(user_context);
1153 } 985 }
1154 986
1155 void SigninScreenHandler::HandleAttemptUnlock(const std::string& username) { 987 void SigninScreenHandler::HandleAttemptUnlock(const std::string& username) {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1198 const std::string& username) { 1030 const std::string& username) {
1199 if (delegate_) 1031 if (delegate_)
1200 delegate_->LoginAsPublicAccount(username); 1032 delegate_->LoginAsPublicAccount(username);
1201 } 1033 }
1202 1034
1203 void SigninScreenHandler::HandleOfflineLogin(const base::ListValue* args) { 1035 void SigninScreenHandler::HandleOfflineLogin(const base::ListValue* args) {
1204 if (!delegate_ || delegate_->IsShowUsers()) { 1036 if (!delegate_ || delegate_->IsShowUsers()) {
1205 NOTREACHED(); 1037 NOTREACHED();
1206 return; 1038 return;
1207 } 1039 }
1208 if (!args->GetString(0, &email_)) 1040 std::string email;
1209 email_.clear(); 1041 args->GetString(0, &email);
1042
1043 gaia_screen_handler_->PopulateEmail(email);
1210 // Load auth extension. Parameters are: force reload, do not load extension in 1044 // Load auth extension. Parameters are: force reload, do not load extension in
1211 // background, use offline version. 1045 // background, use offline version.
1212 LoadAuthExtension(true, false, true); 1046 gaia_screen_handler_->LoadAuthExtension(true, false, true);
1213 UpdateUIState(UI_STATE_GAIA_SIGNIN, NULL); 1047 UpdateUIState(UI_STATE_GAIA_SIGNIN, NULL);
1214 } 1048 }
1215 1049
1216 void SigninScreenHandler::HandleShutdownSystem() { 1050 void SigninScreenHandler::HandleShutdownSystem() {
1217 ash::Shell::GetInstance()->lock_state_controller()->RequestShutdown(); 1051 ash::Shell::GetInstance()->lock_state_controller()->RequestShutdown();
1218 } 1052 }
1219 1053
1220 void SigninScreenHandler::HandleLoadWallpaper(const std::string& email) { 1054 void SigninScreenHandler::HandleLoadWallpaper(const std::string& email) {
1221 if (delegate_) 1055 if (delegate_)
1222 delegate_->LoadWallpaper(email); 1056 delegate_->LoadWallpaper(email);
(...skipping 12 matching lines...) Expand all
1235 1069
1236 void SigninScreenHandler::HandleShowAddUser(const base::ListValue* args) { 1070 void SigninScreenHandler::HandleShowAddUser(const base::ListValue* args) {
1237 TRACE_EVENT_ASYNC_STEP_INTO0("ui", 1071 TRACE_EVENT_ASYNC_STEP_INTO0("ui",
1238 "ShowLoginWebUI", 1072 "ShowLoginWebUI",
1239 LoginDisplayHostImpl::kShowLoginWebUIid, 1073 LoginDisplayHostImpl::kShowLoginWebUIid,
1240 "ShowAddUser"); 1074 "ShowAddUser");
1241 std::string email; 1075 std::string email;
1242 // |args| can be null if it's OOBE. 1076 // |args| can be null if it's OOBE.
1243 if (args) 1077 if (args)
1244 args->GetString(0, &email); 1078 args->GetString(0, &email);
1245 OnShowAddUser(email); 1079 gaia_screen_handler_->PopulateEmail(email);
1080 OnShowAddUser();
1246 } 1081 }
1247 1082
1248 void SigninScreenHandler::HandleToggleEnrollmentScreen() { 1083 void SigninScreenHandler::HandleToggleEnrollmentScreen() {
1249 if (delegate_) 1084 if (delegate_)
1250 delegate_->ShowEnterpriseEnrollmentScreen(); 1085 delegate_->ShowEnterpriseEnrollmentScreen();
1251 } 1086 }
1252 1087
1253 void SigninScreenHandler::HandleToggleKioskEnableScreen() { 1088 void SigninScreenHandler::HandleToggleKioskEnableScreen() {
1254 policy::BrowserPolicyConnectorChromeOS* connector = 1089 policy::BrowserPolicyConnectorChromeOS* connector =
1255 g_browser_process->platform_part()->browser_policy_connector_chromeos(); 1090 g_browser_process->platform_part()->browser_policy_connector_chromeos();
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1294 } 1129 }
1295 1130
1296 PrefService* prefs = g_browser_process->local_state(); 1131 PrefService* prefs = g_browser_process->local_state();
1297 if (prefs->GetBoolean(prefs::kFactoryResetRequested)) { 1132 if (prefs->GetBoolean(prefs::kFactoryResetRequested)) {
1298 if (core_oobe_actor_) 1133 if (core_oobe_actor_)
1299 core_oobe_actor_->ShowDeviceResetScreen(); 1134 core_oobe_actor_->ShowDeviceResetScreen();
1300 return; 1135 return;
1301 } 1136 }
1302 1137
1303 is_account_picker_showing_first_time_ = true; 1138 is_account_picker_showing_first_time_ = true;
1304 MaybePreloadAuthExtension(); 1139 gaia_screen_handler_->MaybePreloadAuthExtension();
1305 1140
1306 if (ScreenLocker::default_screen_locker()) { 1141 if (ScreenLocker::default_screen_locker()) {
1307 ScreenLocker::default_screen_locker()->delegate()->OnLockWebUIReady(); 1142 ScreenLocker::default_screen_locker()->delegate()->OnLockWebUIReady();
1308 ScreenlockBridge::Get()->SetLockHandler(this); 1143 ScreenlockBridge::Get()->SetLockHandler(this);
1309 } 1144 }
1310 1145
1311 if (delegate_) 1146 if (delegate_)
1312 delegate_->OnSigninScreenReady(); 1147 delegate_->OnSigninScreenReady();
1313 } 1148 }
1314 1149
1315 void SigninScreenHandler::HandleWallpaperReady() { 1150 void SigninScreenHandler::HandleWallpaperReady() {
1316 if (ScreenLocker::default_screen_locker()) { 1151 if (ScreenLocker::default_screen_locker()) {
1317 ScreenLocker::default_screen_locker()->delegate()-> 1152 ScreenLocker::default_screen_locker()->delegate()->
1318 OnLockBackgroundDisplayed(); 1153 OnLockBackgroundDisplayed();
1319 } 1154 }
1320 } 1155 }
1321 1156
1322 void SigninScreenHandler::HandleLoginWebuiReady() {
1323 if (focus_stolen_) {
1324 // Set focus to the Gaia page.
1325 // TODO(altimofeev): temporary solution, until focus parameters are
1326 // implemented on the Gaia side.
1327 // Do this only once. Any subsequent call would relod GAIA frame.
1328 focus_stolen_ = false;
1329 const char code[] =
1330 "if (typeof gWindowOnLoad != 'undefined') gWindowOnLoad();";
1331 content::RenderFrameHost* frame =
1332 LoginDisplayHostImpl::GetGaiaAuthIframe(web_ui()->GetWebContents());
1333 frame->ExecuteJavaScript(base::ASCIIToUTF16(code));
1334 }
1335 if (gaia_silent_load_) {
1336 focus_stolen_ = true;
1337 // Prevent focus stealing by the Gaia page.
1338 // TODO(altimofeev): temporary solution, until focus parameters are
1339 // implemented on the Gaia side.
1340 const char code[] = "var gWindowOnLoad = window.onload; "
1341 "window.onload=function() {};";
1342 content::RenderFrameHost* frame =
1343 LoginDisplayHostImpl::GetGaiaAuthIframe(web_ui()->GetWebContents());
1344 frame->ExecuteJavaScript(base::ASCIIToUTF16(code));
1345 // As we could miss and window.onload could already be called, restore
1346 // focus to current pod (see crbug/175243).
1347 RefocusCurrentPod();
1348 }
1349 DCHECK(gaia_screen_handler_);
1350 gaia_screen_handler_->HandleFrameLoadingCompleted(0);
1351
1352 if (test_expects_complete_login_)
1353 SubmitLoginFormForTest();
1354 }
1355
1356 void SigninScreenHandler::HandleSignOutUser() { 1157 void SigninScreenHandler::HandleSignOutUser() {
1357 if (delegate_) 1158 if (delegate_)
1358 delegate_->Signout(); 1159 delegate_->Signout();
1359 } 1160 }
1360 1161
1361 void SigninScreenHandler::HandleCreateAccount() { 1162 void SigninScreenHandler::HandleCreateAccount() {
1362 if (delegate_) 1163 if (delegate_)
1363 delegate_->CreateAccount(); 1164 delegate_->CreateAccount();
1364 } 1165 }
1365 1166
(...skipping 13 matching lines...) Expand all
1379 content::NotificationService::NoDetails()); 1180 content::NotificationService::NoDetails());
1380 TRACE_EVENT_ASYNC_END0( 1181 TRACE_EVENT_ASYNC_END0(
1381 "ui", "ShowLoginWebUI", LoginDisplayHostImpl::kShowLoginWebUIid); 1182 "ui", "ShowLoginWebUI", LoginDisplayHostImpl::kShowLoginWebUIid);
1382 } 1183 }
1383 webui_visible_ = true; 1184 webui_visible_ = true;
1384 if (preferences_changed_delayed_) 1185 if (preferences_changed_delayed_)
1385 OnPreferencesChanged(); 1186 OnPreferencesChanged();
1386 } 1187 }
1387 1188
1388 void SigninScreenHandler::HandleCancelPasswordChangedFlow() { 1189 void SigninScreenHandler::HandleCancelPasswordChangedFlow() {
1389 StartClearingCookies(base::Bind( 1190 gaia_screen_handler_->StartClearingCookies(
1390 &SigninScreenHandler::CancelPasswordChangedFlowInternal, 1191 base::Bind(&SigninScreenHandler::CancelPasswordChangedFlowInternal,
1391 weak_factory_.GetWeakPtr())); 1192 weak_factory_.GetWeakPtr()));
1392 } 1193 }
1393 1194
1394 void SigninScreenHandler::HandleCancelUserAdding() { 1195 void SigninScreenHandler::HandleCancelUserAdding() {
1395 if (delegate_) 1196 if (delegate_)
1396 delegate_->CancelUserAdding(); 1197 delegate_->CancelUserAdding();
1397 } 1198 }
1398 1199
1399 void SigninScreenHandler::HandleMigrateUserData( 1200 void SigninScreenHandler::HandleMigrateUserData(
1400 const std::string& old_password) { 1201 const std::string& old_password) {
1401 if (delegate_) 1202 if (delegate_)
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1460 "login.GaiaSigninScreen.setAuthenticatedUserEmail", 1261 "login.GaiaSigninScreen.setAuthenticatedUserEmail",
1461 attempt_token), 1262 attempt_token),
1462 Profile::FromWebUI(web_ui())->GetRequestContext())); 1263 Profile::FromWebUI(web_ui())->GetRequestContext()));
1463 } 1264 }
1464 1265
1465 void SigninScreenHandler::HandleLaunchKioskApp(const std::string& app_id, 1266 void SigninScreenHandler::HandleLaunchKioskApp(const std::string& app_id,
1466 bool diagnostic_mode) { 1267 bool diagnostic_mode) {
1467 delegate_->LoginAsKioskApp(app_id, diagnostic_mode); 1268 delegate_->LoginAsKioskApp(app_id, diagnostic_mode);
1468 } 1269 }
1469 1270
1470 void SigninScreenHandler::StartClearingDnsCache() {
1471 if (dns_clear_task_running_ || !g_browser_process->io_thread())
1472 return;
1473
1474 dns_cleared_ = false;
1475 BrowserThread::PostTaskAndReply(
1476 BrowserThread::IO, FROM_HERE,
1477 base::Bind(&ClearDnsCache, g_browser_process->io_thread()),
1478 base::Bind(&SigninScreenHandler::OnDnsCleared,
1479 weak_factory_.GetWeakPtr()));
1480 dns_clear_task_running_ = true;
1481 }
1482
1483 void SigninScreenHandler::StartClearingCookies(
1484 const base::Closure& on_clear_callback) {
1485 cookies_cleared_ = false;
1486 ProfileHelper* profile_helper =
1487 g_browser_process->platform_part()->profile_helper();
1488 LOG_ASSERT(
1489 Profile::FromWebUI(web_ui()) == profile_helper->GetSigninProfile());
1490 profile_helper->ClearSigninProfile(base::Bind(
1491 &SigninScreenHandler::OnCookiesCleared,
1492 weak_factory_.GetWeakPtr(), on_clear_callback));
1493 }
1494
1495 void SigninScreenHandler::MaybePreloadAuthExtension() {
1496 LOG(WARNING) << "MaybePreloadAuthExtension() call.";
1497
1498 // Fetching of the extension is not started before account picker page is
1499 // loaded because it can affect the loading speed. Also if cookies clearing
1500 // was initiated or |dns_clear_task_running_| then auth extension showing has
1501 // already been initiated and preloading is senseless.
1502 // Do not load the extension for the screen locker, see crosbug.com/25018.
1503 if (is_account_picker_showing_first_time_ &&
1504 !gaia_silent_load_ &&
1505 !ScreenLocker::default_screen_locker() &&
1506 !cookies_cleared_ &&
1507 !dns_clear_task_running_ &&
1508 network_state_informer_->state() == NetworkStateInformer::ONLINE) {
1509 gaia_silent_load_ = true;
1510 gaia_silent_load_network_ = network_state_informer_->network_path();
1511 LoadAuthExtension(true, true, false);
1512 }
1513 }
1514
1515 bool SigninScreenHandler::AllWhitelistedUsersPresent() { 1271 bool SigninScreenHandler::AllWhitelistedUsersPresent() {
1516 CrosSettings* cros_settings = CrosSettings::Get(); 1272 CrosSettings* cros_settings = CrosSettings::Get();
1517 bool allow_new_user = false; 1273 bool allow_new_user = false;
1518 cros_settings->GetBoolean(kAccountsPrefAllowNewUser, &allow_new_user); 1274 cros_settings->GetBoolean(kAccountsPrefAllowNewUser, &allow_new_user);
1519 if (allow_new_user) 1275 if (allow_new_user)
1520 return false; 1276 return false;
1521 UserManager* user_manager = UserManager::Get(); 1277 UserManager* user_manager = UserManager::Get();
1522 const UserList& users = user_manager->GetUsers(); 1278 const UserList& users = user_manager->GetUsers();
1523 if (!delegate_ || users.size() > kMaxUsers) { 1279 if (!delegate_ || users.size() > kMaxUsers) {
1524 return false; 1280 return false;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1580 CrosSettings* cros_settings = CrosSettings::Get(); 1336 CrosSettings* cros_settings = CrosSettings::Get();
1581 if (!cros_settings) 1337 if (!cros_settings)
1582 return false; 1338 return false;
1583 1339
1584 // Offline login is allowed only when user pods are hidden. 1340 // Offline login is allowed only when user pods are hidden.
1585 bool show_pods; 1341 bool show_pods;
1586 cros_settings->GetBoolean(kAccountsPrefShowUserNamesOnSignIn, &show_pods); 1342 cros_settings->GetBoolean(kAccountsPrefShowUserNamesOnSignIn, &show_pods);
1587 return !show_pods; 1343 return !show_pods;
1588 } 1344 }
1589 1345
1590 void SigninScreenHandler::SubmitLoginFormForTest() {
1591 VLOG(2) << "Submit login form for test, user=" << test_user_;
1592
1593 std::string code;
1594 code += "document.getElementById('Email').value = '" + test_user_ + "';";
1595 code += "document.getElementById('Passwd').value = '" + test_pass_ + "';";
1596 code += "document.getElementById('signIn').click();";
1597
1598 content::RenderFrameHost* frame =
1599 LoginDisplayHostImpl::GetGaiaAuthIframe(web_ui()->GetWebContents());
1600 frame->ExecuteJavaScript(base::ASCIIToUTF16(code));
1601
1602 // Test properties are cleared in HandleCompleteLogin because the form
1603 // submission might fail and login will not be attempted after reloading
1604 // if they are cleared here.
1605 }
1606
1607 void SigninScreenHandler::ContinueKioskEnableFlow( 1346 void SigninScreenHandler::ContinueKioskEnableFlow(
1608 policy::AutoEnrollmentState state) { 1347 policy::AutoEnrollmentState state) {
1609 // Do not proceed with kiosk enable when auto enroll will be enforced. 1348 // Do not proceed with kiosk enable when auto enroll will be enforced.
1610 // TODO(xiyuan): Add an error UI feedkback so user knows what happens. 1349 // TODO(xiyuan): Add an error UI feedkback so user knows what happens.
1611 switch (state) { 1350 switch (state) {
1612 case policy::AUTO_ENROLLMENT_STATE_IDLE: 1351 case policy::AUTO_ENROLLMENT_STATE_IDLE:
1613 case policy::AUTO_ENROLLMENT_STATE_PENDING: 1352 case policy::AUTO_ENROLLMENT_STATE_PENDING:
1614 case policy::AUTO_ENROLLMENT_STATE_CONNECTION_ERROR: 1353 case policy::AUTO_ENROLLMENT_STATE_CONNECTION_ERROR:
1615 // Wait for the next callback. 1354 // Wait for the next callback.
1616 return; 1355 return;
1617 case policy::AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT: 1356 case policy::AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT:
1618 // Auto-enrollment is on. 1357 // Auto-enrollment is on.
1619 LOG(WARNING) << "Kiosk enable flow aborted because auto enrollment is " 1358 LOG(WARNING) << "Kiosk enable flow aborted because auto enrollment is "
1620 "going to be enforced."; 1359 "going to be enforced.";
1621 if (!kiosk_enable_flow_aborted_callback_for_test_.is_null()) 1360 if (!kiosk_enable_flow_aborted_callback_for_test_.is_null())
1622 kiosk_enable_flow_aborted_callback_for_test_.Run(); 1361 kiosk_enable_flow_aborted_callback_for_test_.Run();
1623 break; 1362 break;
1624 case policy::AUTO_ENROLLMENT_STATE_SERVER_ERROR: 1363 case policy::AUTO_ENROLLMENT_STATE_SERVER_ERROR:
1625 case policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT: 1364 case policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT:
1626 // Auto-enrollment not applicable. 1365 // Auto-enrollment not applicable.
1627 if (delegate_) 1366 if (delegate_)
1628 delegate_->ShowKioskEnableScreen(); 1367 delegate_->ShowKioskEnableScreen();
1629 break; 1368 break;
1630 } 1369 }
1631 auto_enrollment_progress_subscription_.reset(); 1370 auto_enrollment_progress_subscription_.reset();
1632 } 1371 }
1633 1372
1634 void SigninScreenHandler::OnShowAddUser(const std::string& email) { 1373 void SigninScreenHandler::OnShowAddUser() {
1635 email_ = email;
1636 is_account_picker_showing_first_time_ = false; 1374 is_account_picker_showing_first_time_ = false;
1637 1375 DCHECK(gaia_screen_handler_);
1638 if (gaia_silent_load_ && email_.empty()) { 1376 gaia_screen_handler_->ShowGaia();
1639 dns_cleared_ = true;
1640 cookies_cleared_ = true;
1641 ShowSigninScreenIfReady();
1642 } else {
1643 StartClearingDnsCache();
1644 StartClearingCookies(base::Bind(
1645 &SigninScreenHandler::ShowSigninScreenIfReady,
1646 weak_factory_.GetWeakPtr()));
1647 }
1648 }
1649
1650 void SigninScreenHandler::SetSAMLPrincipalsAPIUsed(bool api_used) {
1651 using_saml_api_ = api_used;
1652 UMA_HISTOGRAM_BOOLEAN("ChromeOS.SAML.APIUsed", api_used);
1653 } 1377 }
1654 1378
1655 GaiaScreenHandler::FrameState SigninScreenHandler::FrameState() const { 1379 GaiaScreenHandler::FrameState SigninScreenHandler::FrameState() const {
1656 DCHECK(gaia_screen_handler_); 1380 DCHECK(gaia_screen_handler_);
1657 return gaia_screen_handler_->frame_state(); 1381 return gaia_screen_handler_->frame_state();
1658 } 1382 }
1659 1383
1660 net::Error SigninScreenHandler::FrameError() const { 1384 net::Error SigninScreenHandler::FrameError() const {
1661 DCHECK(gaia_screen_handler_); 1385 DCHECK(gaia_screen_handler_);
1662 return gaia_screen_handler_->frame_error(); 1386 return gaia_screen_handler_->frame_error();
1663 } 1387 }
1664 1388
1665 void SigninScreenHandler::OnCapsLockChanged(bool enabled) { 1389 void SigninScreenHandler::OnCapsLockChanged(bool enabled) {
1666 caps_lock_enabled_ = enabled; 1390 caps_lock_enabled_ = enabled;
1667 if (page_is_ready()) 1391 if (page_is_ready())
1668 CallJS("login.AccountPickerScreen.setCapsLockState", caps_lock_enabled_); 1392 CallJS("login.AccountPickerScreen.setCapsLockState", caps_lock_enabled_);
1669 } 1393 }
1670 1394
1671 } // namespace chromeos 1395 } // namespace chromeos
OLDNEW
« no previous file with comments | « trunk/src/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698