| 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 #ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_SIGNIN_SCREEN_HANDLER_H_ | 5 #ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_SIGNIN_SCREEN_HANDLER_H_ |
| 6 #define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_SIGNIN_SCREEN_HANDLER_H_ | 6 #define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_SIGNIN_SCREEN_HANDLER_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 namespace base { | 37 namespace base { |
| 38 class DictionaryValue; | 38 class DictionaryValue; |
| 39 class ListValue; | 39 class ListValue; |
| 40 } | 40 } |
| 41 | 41 |
| 42 namespace chromeos { | 42 namespace chromeos { |
| 43 | 43 |
| 44 class AuthenticatedUserEmailRetriever; | 44 class AuthenticatedUserEmailRetriever; |
| 45 class CaptivePortalWindowProxy; | 45 class CaptivePortalWindowProxy; |
| 46 class CoreOobeActor; | 46 class CoreOobeActor; |
| 47 class GaiaScreenHandler; |
| 47 class LocallyManagedUserCreationScreenHandler; | 48 class LocallyManagedUserCreationScreenHandler; |
| 48 class NativeWindowDelegate; | 49 class NativeWindowDelegate; |
| 49 class User; | 50 class User; |
| 50 class UserContext; | 51 class UserContext; |
| 51 | 52 |
| 52 // Helper class to pass initial parameters to the login screen. | 53 // Helper class to pass initial parameters to the login screen. |
| 53 class LoginScreenContext { | 54 class LoginScreenContext { |
| 54 public: | 55 public: |
| 55 LoginScreenContext(); | 56 LoginScreenContext(); |
| 56 explicit LoginScreenContext(const base::ListValue* args); | 57 explicit LoginScreenContext(const base::ListValue* args); |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 245 kiosk_enable_flow_aborted_callback_for_test_ = callback; | 246 kiosk_enable_flow_aborted_callback_for_test_ = callback; |
| 246 } | 247 } |
| 247 | 248 |
| 248 private: | 249 private: |
| 249 enum UIState { | 250 enum UIState { |
| 250 UI_STATE_UNKNOWN = 0, | 251 UI_STATE_UNKNOWN = 0, |
| 251 UI_STATE_GAIA_SIGNIN, | 252 UI_STATE_GAIA_SIGNIN, |
| 252 UI_STATE_ACCOUNT_PICKER, | 253 UI_STATE_ACCOUNT_PICKER, |
| 253 }; | 254 }; |
| 254 | 255 |
| 256 friend class GaiaScreenHandler; |
| 257 friend class LocallyManagedUserCreationScreenHandler; |
| 255 friend class ReportDnsCacheClearedOnUIThread; | 258 friend class ReportDnsCacheClearedOnUIThread; |
| 256 friend class LocallyManagedUserCreationScreenHandler; | |
| 257 | 259 |
| 258 void ShowImpl(); | 260 void ShowImpl(); |
| 259 | 261 |
| 260 // Updates current UI of the signin screen according to |ui_state| | 262 // Updates current UI of the signin screen according to |ui_state| |
| 261 // argument. Optionally it can pass screen initialization data via | 263 // argument. Optionally it can pass screen initialization data via |
| 262 // |params| argument. | 264 // |params| argument. |
| 263 void UpdateUIState(UIState ui_state, base::DictionaryValue* params); | 265 void UpdateUIState(UIState ui_state, base::DictionaryValue* params); |
| 264 | 266 |
| 265 void UpdateStateInternal(ErrorScreenActor::ErrorReason reason, | 267 void UpdateStateInternal(ErrorScreenActor::ErrorReason reason, |
| 266 bool force_update); | 268 bool force_update); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 313 const gfx::Image& icon) OVERRIDE; | 315 const gfx::Image& icon) OVERRIDE; |
| 314 virtual void HideUserPodCustomIcon(const std::string& username) OVERRIDE; | 316 virtual void HideUserPodCustomIcon(const std::string& username) OVERRIDE; |
| 315 virtual void EnableInput() OVERRIDE; | 317 virtual void EnableInput() OVERRIDE; |
| 316 virtual void SetAuthType(const std::string& username, | 318 virtual void SetAuthType(const std::string& username, |
| 317 ScreenlockBridge::LockHandler::AuthType auth_type, | 319 ScreenlockBridge::LockHandler::AuthType auth_type, |
| 318 const std::string& initial_value) OVERRIDE; | 320 const std::string& initial_value) OVERRIDE; |
| 319 virtual ScreenlockBridge::LockHandler::AuthType GetAuthType( | 321 virtual ScreenlockBridge::LockHandler::AuthType GetAuthType( |
| 320 const std::string& username) const OVERRIDE; | 322 const std::string& username) const OVERRIDE; |
| 321 virtual void Unlock(const std::string& user_email) OVERRIDE; | 323 virtual void Unlock(const std::string& user_email) OVERRIDE; |
| 322 | 324 |
| 323 // Shows signin screen after dns cache and cookie cleanup operations finish. | |
| 324 void ShowSigninScreenIfReady(); | |
| 325 | |
| 326 // Tells webui to load authentication extension. |force| is used to force the | |
| 327 // extension reloading, if it has already been loaded. |silent_load| is true | |
| 328 // for cases when extension should be loaded in the background and it | |
| 329 // shouldn't grab the focus. |offline| is true when offline version of the | |
| 330 // extension should be used. | |
| 331 void LoadAuthExtension(bool force, bool silent_load, bool offline); | |
| 332 | |
| 333 // Updates authentication extension. Called when device settings that affect | 325 // Updates authentication extension. Called when device settings that affect |
| 334 // sign-in (allow BWSI and allow whitelist) are changed. | 326 // sign-in (allow BWSI and allow whitelist) are changed. |
| 335 void UserSettingsChanged(); | 327 void UserSettingsChanged(); |
| 336 void UpdateAddButtonStatus(); | 328 void UpdateAddButtonStatus(); |
| 337 | 329 |
| 338 // Restore input focus to current user pod. | 330 // Restore input focus to current user pod. |
| 339 void RefocusCurrentPod(); | 331 void RefocusCurrentPod(); |
| 340 | 332 |
| 341 // WebUI message handlers. | 333 // WebUI message handlers. |
| 342 void HandleCompleteAuthentication(const std::string& email, | |
| 343 const std::string& password, | |
| 344 const std::string& auth_code); | |
| 345 void HandleCompleteLogin(const std::string& typed_email, | |
| 346 const std::string& password, | |
| 347 bool using_saml); | |
| 348 void HandleGetUsers(); | 334 void HandleGetUsers(); |
| 349 void HandleUsingSAMLAPI(); | |
| 350 void HandleScrapedPasswordCount(int password_count); | |
| 351 void HandleScrapedPasswordVerificationFailed(); | |
| 352 void HandleAuthenticateUser(const std::string& username, | 335 void HandleAuthenticateUser(const std::string& username, |
| 353 const std::string& password); | 336 const std::string& password); |
| 354 void HandleAttemptUnlock(const std::string& username); | 337 void HandleAttemptUnlock(const std::string& username); |
| 355 void HandleLaunchDemoUser(); | 338 void HandleLaunchDemoUser(); |
| 356 void HandleLaunchIncognito(); | 339 void HandleLaunchIncognito(); |
| 357 void HandleLaunchPublicAccount(const std::string& username); | 340 void HandleLaunchPublicAccount(const std::string& username); |
| 358 void HandleOfflineLogin(const base::ListValue* args); | 341 void HandleOfflineLogin(const base::ListValue* args); |
| 359 void HandleShutdownSystem(); | 342 void HandleShutdownSystem(); |
| 360 void HandleLoadWallpaper(const std::string& email); | 343 void HandleLoadWallpaper(const std::string& email); |
| 361 void HandleRebootSystem(); | 344 void HandleRebootSystem(); |
| 362 void HandleRemoveUser(const std::string& email); | 345 void HandleRemoveUser(const std::string& email); |
| 363 void HandleShowAddUser(const base::ListValue* args); | 346 void HandleShowAddUser(const base::ListValue* args); |
| 364 void HandleToggleEnrollmentScreen(); | 347 void HandleToggleEnrollmentScreen(); |
| 365 void HandleToggleKioskEnableScreen(); | 348 void HandleToggleKioskEnableScreen(); |
| 366 void HandleToggleResetScreen(); | 349 void HandleToggleResetScreen(); |
| 367 void HandleToggleKioskAutolaunchScreen(); | 350 void HandleToggleKioskAutolaunchScreen(); |
| 368 void HandleCreateAccount(); | 351 void HandleCreateAccount(); |
| 369 void HandleAccountPickerReady(); | 352 void HandleAccountPickerReady(); |
| 370 void HandleWallpaperReady(); | 353 void HandleWallpaperReady(); |
| 371 void HandleLoginWebuiReady(); | |
| 372 void HandleSignOutUser(); | 354 void HandleSignOutUser(); |
| 373 void HandleOpenProxySettings(); | 355 void HandleOpenProxySettings(); |
| 374 void HandleLoginVisible(const std::string& source); | 356 void HandleLoginVisible(const std::string& source); |
| 375 void HandleCancelPasswordChangedFlow(); | 357 void HandleCancelPasswordChangedFlow(); |
| 376 void HandleCancelUserAdding(); | 358 void HandleCancelUserAdding(); |
| 377 void HandleMigrateUserData(const std::string& password); | 359 void HandleMigrateUserData(const std::string& password); |
| 378 void HandleResyncUserData(); | 360 void HandleResyncUserData(); |
| 379 void HandleLoginUIStateChanged(const std::string& source, bool new_value); | 361 void HandleLoginUIStateChanged(const std::string& source, bool new_value); |
| 380 void HandleUnlockOnLoginSuccess(); | 362 void HandleUnlockOnLoginSuccess(); |
| 381 void HandleLoginScreenUpdate(); | 363 void HandleLoginScreenUpdate(); |
| 382 void HandleShowLoadingTimeoutError(); | 364 void HandleShowLoadingTimeoutError(); |
| 383 void HandleUpdateOfflineLogin(bool offline_login_active); | 365 void HandleUpdateOfflineLogin(bool offline_login_active); |
| 384 void HandleShowLocallyManagedUserCreationScreen(); | 366 void HandleShowLocallyManagedUserCreationScreen(); |
| 385 void HandleFocusPod(const std::string& user_id); | 367 void HandleFocusPod(const std::string& user_id); |
| 386 void HandleLaunchKioskApp(const std::string& app_id, bool diagnostic_mode); | 368 void HandleLaunchKioskApp(const std::string& app_id, bool diagnostic_mode); |
| 387 void HandleRetrieveAuthenticatedUserEmail(double attempt_token); | 369 void HandleRetrieveAuthenticatedUserEmail(double attempt_token); |
| 388 | 370 |
| 389 // Kick off cookie / local storage cleanup. | |
| 390 void StartClearingCookies(const base::Closure& on_clear_callback); | |
| 391 void OnCookiesCleared(base::Closure on_clear_callback); | |
| 392 | |
| 393 // Kick off DNS cache flushing. | |
| 394 void StartClearingDnsCache(); | |
| 395 void OnDnsCleared(); | |
| 396 | |
| 397 // Decides whether an auth extension should be pre-loaded. If it should, | |
| 398 // pre-loads it. | |
| 399 void MaybePreloadAuthExtension(); | |
| 400 | 371 |
| 401 // Returns true iff | 372 // Returns true iff |
| 402 // (i) log in is restricted to some user list, | 373 // (i) log in is restricted to some user list, |
| 403 // (ii) all users in the restricted list are present. | 374 // (ii) all users in the restricted list are present. |
| 404 bool AllWhitelistedUsersPresent(); | 375 bool AllWhitelistedUsersPresent(); |
| 405 | 376 |
| 406 // Cancels password changed flow - switches back to login screen. | 377 // Cancels password changed flow - switches back to login screen. |
| 407 // Called as a callback after cookies are cleared. | 378 // Called as a callback after cookies are cleared. |
| 408 void CancelPasswordChangedFlowInternal(); | 379 void CancelPasswordChangedFlowInternal(); |
| 409 | 380 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 420 // Returns true if current screen is the error screen over signin | 391 // Returns true if current screen is the error screen over signin |
| 421 // screen. | 392 // screen. |
| 422 bool IsSigninScreenHiddenByError() const; | 393 bool IsSigninScreenHiddenByError() const; |
| 423 | 394 |
| 424 // Returns true if guest signin is allowed. | 395 // Returns true if guest signin is allowed. |
| 425 bool IsGuestSigninAllowed() const; | 396 bool IsGuestSigninAllowed() const; |
| 426 | 397 |
| 427 // Returns true if offline login is allowed. | 398 // Returns true if offline login is allowed. |
| 428 bool IsOfflineLoginAllowed() const; | 399 bool IsOfflineLoginAllowed() const; |
| 429 | 400 |
| 430 // Attempts login for test. | 401 bool ShouldLoadGaia() const; |
| 431 void SubmitLoginFormForTest(); | |
| 432 | 402 |
| 433 // Update current input method (namely keyboard layout) to LRU by this user. | 403 // Update current input method (namely keyboard layout) to LRU by this user. |
| 434 void SetUserInputMethod(const std::string& username); | 404 void SetUserInputMethod(const std::string& username); |
| 435 | 405 |
| 436 // Invoked when auto enrollment check progresses to decide whether to | 406 // Invoked when auto enrollment check progresses to decide whether to |
| 437 // continue kiosk enable flow. Kiosk enable flow is resumed when | 407 // continue kiosk enable flow. Kiosk enable flow is resumed when |
| 438 // |state| indicates that enrollment is not applicable. | 408 // |state| indicates that enrollment is not applicable. |
| 439 void ContinueKioskEnableFlow(policy::AutoEnrollmentState state); | 409 void ContinueKioskEnableFlow(policy::AutoEnrollmentState state); |
| 440 | 410 |
| 441 // Shows signin screen for |email|. | 411 // Shows signin. |
| 442 void OnShowAddUser(const std::string& email); | 412 void OnShowAddUser(); |
| 443 | |
| 444 // Updates the member variable and UMA histogram indicating whether the | |
| 445 // principals API was used during SAML login. | |
| 446 void SetSAMLPrincipalsAPIUsed(bool api_used); | |
| 447 | 413 |
| 448 GaiaScreenHandler::FrameState FrameState() const; | 414 GaiaScreenHandler::FrameState FrameState() const; |
| 449 net::Error FrameError() const; | 415 net::Error FrameError() const; |
| 450 | 416 |
| 451 // input_method::ImeKeyboard::Observer implementation: | 417 // input_method::ImeKeyboard::Observer implementation: |
| 452 virtual void OnCapsLockChanged(bool enabled) OVERRIDE; | 418 virtual void OnCapsLockChanged(bool enabled) OVERRIDE; |
| 453 | 419 |
| 454 // Current UI state of the signin screen. | 420 // Current UI state of the signin screen. |
| 455 UIState ui_state_; | 421 UIState ui_state_; |
| 456 | 422 |
| 457 // A delegate that glues this handler with backend LoginDisplay. | 423 // A delegate that glues this handler with backend LoginDisplay. |
| 458 SigninScreenHandlerDelegate* delegate_; | 424 SigninScreenHandlerDelegate* delegate_; |
| 459 | 425 |
| 460 // A delegate used to get gfx::NativeWindow. | 426 // A delegate used to get gfx::NativeWindow. |
| 461 NativeWindowDelegate* native_window_delegate_; | 427 NativeWindowDelegate* native_window_delegate_; |
| 462 | 428 |
| 463 // Whether screen should be shown right after initialization. | 429 // Whether screen should be shown right after initialization. |
| 464 bool show_on_init_; | 430 bool show_on_init_; |
| 465 | 431 |
| 466 // Keeps whether screen should be shown for OOBE. | 432 // Keeps whether screen should be shown for OOBE. |
| 467 bool oobe_ui_; | 433 bool oobe_ui_; |
| 468 | 434 |
| 469 // Is focus still stolen from Gaia page? | |
| 470 bool focus_stolen_; | |
| 471 | |
| 472 // Has Gaia page silent load been started for the current sign-in attempt? | |
| 473 bool gaia_silent_load_; | |
| 474 | |
| 475 // The active network at the moment when Gaia page was preloaded. | |
| 476 std::string gaia_silent_load_network_; | |
| 477 | |
| 478 // Is account picker being shown for the first time. | 435 // Is account picker being shown for the first time. |
| 479 bool is_account_picker_showing_first_time_; | 436 bool is_account_picker_showing_first_time_; |
| 480 | 437 |
| 481 // True if dns cache cleanup is done. | |
| 482 bool dns_cleared_; | |
| 483 | |
| 484 // True if DNS cache task is already running. | |
| 485 bool dns_clear_task_running_; | |
| 486 | |
| 487 // True if cookie jar cleanup is done. | |
| 488 bool cookies_cleared_; | |
| 489 | |
| 490 // Network state informer used to keep signin screen up. | 438 // Network state informer used to keep signin screen up. |
| 491 scoped_refptr<NetworkStateInformer> network_state_informer_; | 439 scoped_refptr<NetworkStateInformer> network_state_informer_; |
| 492 | 440 |
| 493 // Email to pre-populate with. | |
| 494 std::string email_; | |
| 495 // Emails of the users, whose passwords have recently been changed. | |
| 496 std::set<std::string> password_changed_for_; | |
| 497 | |
| 498 // If the user authenticated via SAML, this indicates whether the principals | |
| 499 // API was used. | |
| 500 bool using_saml_api_; | |
| 501 | |
| 502 // Test credentials. | |
| 503 std::string test_user_; | |
| 504 std::string test_pass_; | |
| 505 bool test_expects_complete_login_; | |
| 506 | |
| 507 base::WeakPtrFactory<SigninScreenHandler> weak_factory_; | |
| 508 | |
| 509 // Set to true once |LOGIN_WEBUI_VISIBLE| notification is observed. | 441 // Set to true once |LOGIN_WEBUI_VISIBLE| notification is observed. |
| 510 bool webui_visible_; | 442 bool webui_visible_; |
| 511 bool preferences_changed_delayed_; | 443 bool preferences_changed_delayed_; |
| 512 | 444 |
| 513 ErrorScreenActor* error_screen_actor_; | 445 ErrorScreenActor* error_screen_actor_; |
| 514 CoreOobeActor* core_oobe_actor_; | 446 CoreOobeActor* core_oobe_actor_; |
| 515 | 447 |
| 516 bool is_first_update_state_call_; | 448 bool is_first_update_state_call_; |
| 517 bool offline_login_active_; | 449 bool offline_login_active_; |
| 518 NetworkStateInformer::State last_network_state_; | 450 NetworkStateInformer::State last_network_state_; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 534 | 466 |
| 535 base::Closure kiosk_enable_flow_aborted_callback_for_test_; | 467 base::Closure kiosk_enable_flow_aborted_callback_for_test_; |
| 536 | 468 |
| 537 // Non-owning ptr. | 469 // Non-owning ptr. |
| 538 // TODO (ygorshenin@): remove this dependency. | 470 // TODO (ygorshenin@): remove this dependency. |
| 539 GaiaScreenHandler* gaia_screen_handler_; | 471 GaiaScreenHandler* gaia_screen_handler_; |
| 540 | 472 |
| 541 // Helper that retrieves the authenticated user's e-mail address. | 473 // Helper that retrieves the authenticated user's e-mail address. |
| 542 scoped_ptr<AuthenticatedUserEmailRetriever> email_retriever_; | 474 scoped_ptr<AuthenticatedUserEmailRetriever> email_retriever_; |
| 543 | 475 |
| 476 base::WeakPtrFactory<SigninScreenHandler> weak_factory_; |
| 477 |
| 544 DISALLOW_COPY_AND_ASSIGN(SigninScreenHandler); | 478 DISALLOW_COPY_AND_ASSIGN(SigninScreenHandler); |
| 545 }; | 479 }; |
| 546 | 480 |
| 547 } // namespace chromeos | 481 } // namespace chromeos |
| 548 | 482 |
| 549 #endif // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_SIGNIN_SCREEN_HANDLER_H_ | 483 #endif // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_SIGNIN_SCREEN_HANDLER_H_ |
| OLD | NEW |