| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h" | 5 #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "ash/shell.h" | 10 #include "ash/shell.h" |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 #include "chrome/browser/browser_process.h" | 25 #include "chrome/browser/browser_process.h" |
| 26 #include "chrome/browser/browser_process_platform_part_chromeos.h" | 26 #include "chrome/browser/browser_process_platform_part_chromeos.h" |
| 27 #include "chrome/browser/browser_shutdown.h" | 27 #include "chrome/browser/browser_shutdown.h" |
| 28 #include "chrome/browser/chrome_notification_types.h" | 28 #include "chrome/browser/chrome_notification_types.h" |
| 29 #include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h" | 29 #include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h" |
| 30 #include "chrome/browser/chromeos/input_method/input_method_util.h" | 30 #include "chrome/browser/chromeos/input_method/input_method_util.h" |
| 31 #include "chrome/browser/chromeos/login/error_screens_histogram_helper.h" | 31 #include "chrome/browser/chromeos/login/error_screens_histogram_helper.h" |
| 32 #include "chrome/browser/chromeos/login/hwid_checker.h" | 32 #include "chrome/browser/chromeos/login/hwid_checker.h" |
| 33 #include "chrome/browser/chromeos/login/lock/screen_locker.h" | 33 #include "chrome/browser/chromeos/login/lock/screen_locker.h" |
| 34 #include "chrome/browser/chromeos/login/screens/core_oobe_actor.h" | 34 #include "chrome/browser/chromeos/login/screens/core_oobe_actor.h" |
| 35 #include "chrome/browser/chromeos/login/screens/network_error.h" |
| 35 #include "chrome/browser/chromeos/login/ui/login_display_host.h" | 36 #include "chrome/browser/chromeos/login/ui/login_display_host.h" |
| 36 #include "chrome/browser/chromeos/login/ui/login_display_host_impl.h" | 37 #include "chrome/browser/chromeos/login/ui/login_display_host_impl.h" |
| 37 #include "chrome/browser/chromeos/login/ui/webui_login_display.h" | 38 #include "chrome/browser/chromeos/login/ui/webui_login_display.h" |
| 38 #include "chrome/browser/chromeos/login/users/multi_profile_user_controller.h" | 39 #include "chrome/browser/chromeos/login/users/multi_profile_user_controller.h" |
| 39 #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h" | 40 #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h" |
| 40 #include "chrome/browser/chromeos/login/wizard_controller.h" | 41 #include "chrome/browser/chromeos/login/wizard_controller.h" |
| 41 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" | 42 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" |
| 42 #include "chrome/browser/chromeos/policy/consumer_management_service.h" | 43 #include "chrome/browser/chromeos/policy/consumer_management_service.h" |
| 43 #include "chrome/browser/chromeos/policy/consumer_management_stage.h" | 44 #include "chrome/browser/chromeos/policy/consumer_management_stage.h" |
| 44 #include "chrome/browser/chromeos/policy/device_local_account.h" | 45 #include "chrome/browser/chromeos/policy/device_local_account.h" |
| 45 #include "chrome/browser/chromeos/profiles/profile_helper.h" | 46 #include "chrome/browser/chromeos/profiles/profile_helper.h" |
| 46 #include "chrome/browser/chromeos/settings/cros_settings.h" | 47 #include "chrome/browser/chromeos/settings/cros_settings.h" |
| 47 #include "chrome/browser/io_thread.h" | 48 #include "chrome/browser/io_thread.h" |
| 48 #include "chrome/browser/profiles/profile.h" | 49 #include "chrome/browser/profiles/profile.h" |
| 49 #include "chrome/browser/signin/easy_unlock_service.h" | 50 #include "chrome/browser/signin/easy_unlock_service.h" |
| 50 #include "chrome/browser/ui/webui/chromeos/login/error_screen_handler.h" | 51 #include "chrome/browser/ui/webui/chromeos/login/error_screen_handler.h" |
| 52 #include "chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h" |
| 51 #include "chrome/browser/ui/webui/chromeos/login/l10n_util.h" | 53 #include "chrome/browser/ui/webui/chromeos/login/l10n_util.h" |
| 52 #include "chrome/browser/ui/webui/chromeos/login/native_window_delegate.h" | 54 #include "chrome/browser/ui/webui/chromeos/login/native_window_delegate.h" |
| 53 #include "chrome/browser/ui/webui/chromeos/login/network_state_informer.h" | 55 #include "chrome/browser/ui/webui/chromeos/login/network_state_informer.h" |
| 54 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" | 56 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" |
| 55 #include "chrome/common/pref_names.h" | 57 #include "chrome/common/pref_names.h" |
| 56 #include "chrome/common/url_constants.h" | 58 #include "chrome/common/url_constants.h" |
| 57 #include "chrome/grit/chromium_strings.h" | 59 #include "chrome/grit/chromium_strings.h" |
| 58 #include "chrome/grit/generated_resources.h" | 60 #include "chrome/grit/generated_resources.h" |
| 59 #include "chromeos/dbus/dbus_thread_manager.h" | 61 #include "chromeos/dbus/dbus_thread_manager.h" |
| 60 #include "chromeos/dbus/power_manager_client.h" | 62 #include "chromeos/dbus/power_manager_client.h" |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 DISALLOW_COPY_AND_ASSIGN(CallOnReturn); | 119 DISALLOW_COPY_AND_ASSIGN(CallOnReturn); |
| 118 }; | 120 }; |
| 119 | 121 |
| 120 } // namespace | 122 } // namespace |
| 121 | 123 |
| 122 namespace chromeos { | 124 namespace chromeos { |
| 123 | 125 |
| 124 namespace { | 126 namespace { |
| 125 | 127 |
| 126 bool IsOnline(NetworkStateInformer::State state, | 128 bool IsOnline(NetworkStateInformer::State state, |
| 127 ErrorScreenActor::ErrorReason reason) { | 129 NetworkError::ErrorReason reason) { |
| 128 return state == NetworkStateInformer::ONLINE && | 130 return state == NetworkStateInformer::ONLINE && |
| 129 reason != ErrorScreenActor::ERROR_REASON_PORTAL_DETECTED && | 131 reason != NetworkError::ERROR_REASON_PORTAL_DETECTED && |
| 130 reason != ErrorScreenActor::ERROR_REASON_LOADING_TIMEOUT; | 132 reason != NetworkError::ERROR_REASON_LOADING_TIMEOUT; |
| 131 } | 133 } |
| 132 | 134 |
| 133 bool IsBehindCaptivePortal(NetworkStateInformer::State state, | 135 bool IsBehindCaptivePortal(NetworkStateInformer::State state, |
| 134 ErrorScreenActor::ErrorReason reason) { | 136 NetworkError::ErrorReason reason) { |
| 135 return state == NetworkStateInformer::CAPTIVE_PORTAL || | 137 return state == NetworkStateInformer::CAPTIVE_PORTAL || |
| 136 reason == ErrorScreenActor::ERROR_REASON_PORTAL_DETECTED; | 138 reason == NetworkError::ERROR_REASON_PORTAL_DETECTED; |
| 137 } | 139 } |
| 138 | 140 |
| 139 bool IsProxyError(NetworkStateInformer::State state, | 141 bool IsProxyError(NetworkStateInformer::State state, |
| 140 ErrorScreenActor::ErrorReason reason, | 142 NetworkError::ErrorReason reason, |
| 141 net::Error frame_error) { | 143 net::Error frame_error) { |
| 142 return state == NetworkStateInformer::PROXY_AUTH_REQUIRED || | 144 return state == NetworkStateInformer::PROXY_AUTH_REQUIRED || |
| 143 reason == ErrorScreenActor::ERROR_REASON_PROXY_AUTH_CANCELLED || | 145 reason == NetworkError::ERROR_REASON_PROXY_AUTH_CANCELLED || |
| 144 reason == ErrorScreenActor::ERROR_REASON_PROXY_CONNECTION_FAILED || | 146 reason == NetworkError::ERROR_REASON_PROXY_CONNECTION_FAILED || |
| 145 (reason == ErrorScreenActor::ERROR_REASON_FRAME_ERROR && | 147 (reason == NetworkError::ERROR_REASON_FRAME_ERROR && |
| 146 (frame_error == net::ERR_PROXY_CONNECTION_FAILED || | 148 (frame_error == net::ERR_PROXY_CONNECTION_FAILED || |
| 147 frame_error == net::ERR_TUNNEL_CONNECTION_FAILED)); | 149 frame_error == net::ERR_TUNNEL_CONNECTION_FAILED)); |
| 148 } | 150 } |
| 149 | 151 |
| 150 bool IsSigninScreen(const OobeUI::Screen screen) { | 152 bool IsSigninScreen(const OobeUI::Screen screen) { |
| 151 return screen == OobeUI::SCREEN_GAIA_SIGNIN || | 153 return screen == OobeUI::SCREEN_GAIA_SIGNIN || |
| 152 screen == OobeUI::SCREEN_ACCOUNT_PICKER; | 154 screen == OobeUI::SCREEN_ACCOUNT_PICKER; |
| 153 } | 155 } |
| 154 | 156 |
| 155 bool IsSigninScreenError(ErrorScreen::ErrorState error_state) { | 157 bool IsSigninScreenError(NetworkError::ErrorState error_state) { |
| 156 return error_state == ErrorScreen::ERROR_STATE_PORTAL || | 158 return error_state == NetworkError::ERROR_STATE_PORTAL || |
| 157 error_state == ErrorScreen::ERROR_STATE_OFFLINE || | 159 error_state == NetworkError::ERROR_STATE_OFFLINE || |
| 158 error_state == ErrorScreen::ERROR_STATE_PROXY || | 160 error_state == NetworkError::ERROR_STATE_PROXY || |
| 159 error_state == ErrorScreen::ERROR_STATE_AUTH_EXT_TIMEOUT; | 161 error_state == NetworkError::ERROR_STATE_AUTH_EXT_TIMEOUT; |
| 160 } | 162 } |
| 161 | 163 |
| 162 // Returns network name by service path. | 164 // Returns network name by service path. |
| 163 std::string GetNetworkName(const std::string& service_path) { | 165 std::string GetNetworkName(const std::string& service_path) { |
| 164 const NetworkState* network = NetworkHandler::Get()->network_state_handler()-> | 166 const NetworkState* network = NetworkHandler::Get()->network_state_handler()-> |
| 165 GetNetworkState(service_path); | 167 GetNetworkState(service_path); |
| 166 if (!network) | 168 if (!network) |
| 167 return std::string(); | 169 return std::string(); |
| 168 return network->name(); | 170 return network->name(); |
| 169 } | 171 } |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 } | 222 } |
| 221 | 223 |
| 222 void LoginScreenContext::Init() { | 224 void LoginScreenContext::Init() { |
| 223 oobe_ui_ = false; | 225 oobe_ui_ = false; |
| 224 } | 226 } |
| 225 | 227 |
| 226 // SigninScreenHandler implementation ------------------------------------------ | 228 // SigninScreenHandler implementation ------------------------------------------ |
| 227 | 229 |
| 228 SigninScreenHandler::SigninScreenHandler( | 230 SigninScreenHandler::SigninScreenHandler( |
| 229 const scoped_refptr<NetworkStateInformer>& network_state_informer, | 231 const scoped_refptr<NetworkStateInformer>& network_state_informer, |
| 230 ErrorScreenActor* error_screen_actor, | 232 NetworkErrorModel* network_error_model, |
| 231 CoreOobeActor* core_oobe_actor, | 233 CoreOobeActor* core_oobe_actor, |
| 232 GaiaScreenHandler* gaia_screen_handler) | 234 GaiaScreenHandler* gaia_screen_handler) |
| 233 : ui_state_(UI_STATE_UNKNOWN), | 235 : ui_state_(UI_STATE_UNKNOWN), |
| 234 delegate_(NULL), | 236 delegate_(NULL), |
| 235 native_window_delegate_(NULL), | 237 native_window_delegate_(NULL), |
| 236 show_on_init_(false), | 238 show_on_init_(false), |
| 237 oobe_ui_(false), | 239 oobe_ui_(false), |
| 238 is_account_picker_showing_first_time_(false), | 240 is_account_picker_showing_first_time_(false), |
| 239 network_state_informer_(network_state_informer), | 241 network_state_informer_(network_state_informer), |
| 240 webui_visible_(false), | 242 webui_visible_(false), |
| 241 preferences_changed_delayed_(false), | 243 preferences_changed_delayed_(false), |
| 242 error_screen_actor_(error_screen_actor), | 244 network_error_model_(network_error_model), |
| 243 core_oobe_actor_(core_oobe_actor), | 245 core_oobe_actor_(core_oobe_actor), |
| 244 is_first_update_state_call_(true), | 246 is_first_update_state_call_(true), |
| 245 offline_login_active_(false), | 247 offline_login_active_(false), |
| 246 last_network_state_(NetworkStateInformer::UNKNOWN), | 248 last_network_state_(NetworkStateInformer::UNKNOWN), |
| 247 has_pending_auth_ui_(false), | 249 has_pending_auth_ui_(false), |
| 248 caps_lock_enabled_(chromeos::input_method::InputMethodManager::Get() | 250 caps_lock_enabled_(chromeos::input_method::InputMethodManager::Get() |
| 249 ->GetImeKeyboard() | 251 ->GetImeKeyboard() |
| 250 ->CapsLockIsEnabled()), | 252 ->CapsLockIsEnabled()), |
| 251 gaia_screen_handler_(gaia_screen_handler), | 253 gaia_screen_handler_(gaia_screen_handler), |
| 252 oobe_ui_observer_added_(false), | 254 oobe_ui_observer_added_(false), |
| 253 histogram_helper_(new ErrorScreensHistogramHelper("Signin")), | 255 histogram_helper_(new ErrorScreensHistogramHelper("Signin")), |
| 254 weak_factory_(this) { | 256 weak_factory_(this) { |
| 255 DCHECK(network_state_informer_.get()); | 257 DCHECK(network_state_informer_.get()); |
| 256 DCHECK(error_screen_actor_); | 258 DCHECK(network_error_model_); |
| 257 DCHECK(core_oobe_actor_); | 259 DCHECK(core_oobe_actor_); |
| 258 DCHECK(gaia_screen_handler_); | 260 DCHECK(gaia_screen_handler_); |
| 259 gaia_screen_handler_->SetSigninScreenHandler(this); | 261 gaia_screen_handler_->SetSigninScreenHandler(this); |
| 260 network_state_informer_->AddObserver(this); | 262 network_state_informer_->AddObserver(this); |
| 261 | 263 |
| 262 registrar_.Add(this, | 264 registrar_.Add(this, |
| 263 chrome::NOTIFICATION_AUTH_NEEDED, | 265 chrome::NOTIFICATION_AUTH_NEEDED, |
| 264 content::NotificationService::AllSources()); | 266 content::NotificationService::AllSources()); |
| 265 registrar_.Add(this, | 267 registrar_.Add(this, |
| 266 chrome::NOTIFICATION_AUTH_SUPPLIED, | 268 chrome::NOTIFICATION_AUTH_SUPPLIED, |
| (...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 539 NativeWindowDelegate* native_window_delegate) { | 541 NativeWindowDelegate* native_window_delegate) { |
| 540 native_window_delegate_ = native_window_delegate; | 542 native_window_delegate_ = native_window_delegate; |
| 541 } | 543 } |
| 542 | 544 |
| 543 void SigninScreenHandler::OnNetworkReady() { | 545 void SigninScreenHandler::OnNetworkReady() { |
| 544 VLOG(1) << "OnNetworkReady() call."; | 546 VLOG(1) << "OnNetworkReady() call."; |
| 545 DCHECK(gaia_screen_handler_); | 547 DCHECK(gaia_screen_handler_); |
| 546 gaia_screen_handler_->MaybePreloadAuthExtension(); | 548 gaia_screen_handler_->MaybePreloadAuthExtension(); |
| 547 } | 549 } |
| 548 | 550 |
| 549 void SigninScreenHandler::UpdateState(ErrorScreenActor::ErrorReason reason) { | 551 void SigninScreenHandler::UpdateState(NetworkError::ErrorReason reason) { |
| 550 UpdateStateInternal(reason, false); | 552 UpdateStateInternal(reason, false); |
| 551 } | 553 } |
| 552 | 554 |
| 553 void SigninScreenHandler::SetFocusPODCallbackForTesting( | 555 void SigninScreenHandler::SetFocusPODCallbackForTesting( |
| 554 base::Closure callback) { | 556 base::Closure callback) { |
| 555 test_focus_pod_callback_ = callback; | 557 test_focus_pod_callback_ = callback; |
| 556 } | 558 } |
| 557 | 559 |
| 558 // SigninScreenHandler, private: ----------------------------------------------- | 560 // SigninScreenHandler, private: ----------------------------------------------- |
| 559 | 561 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 604 ShowScreen(OobeUI::kScreenAccountPicker, params); | 606 ShowScreen(OobeUI::kScreenAccountPicker, params); |
| 605 break; | 607 break; |
| 606 default: | 608 default: |
| 607 NOTREACHED(); | 609 NOTREACHED(); |
| 608 break; | 610 break; |
| 609 } | 611 } |
| 610 } | 612 } |
| 611 | 613 |
| 612 // TODO(ygorshenin@): split this method into small parts. | 614 // TODO(ygorshenin@): split this method into small parts. |
| 613 // TODO(ygorshenin@): move this logic to GaiaScreenHandler. | 615 // TODO(ygorshenin@): move this logic to GaiaScreenHandler. |
| 614 void SigninScreenHandler::UpdateStateInternal( | 616 void SigninScreenHandler::UpdateStateInternal(NetworkError::ErrorReason reason, |
| 615 ErrorScreenActor::ErrorReason reason, | 617 bool force_update) { |
| 616 bool force_update) { | |
| 617 // Do nothing once user has signed in or sign in is in progress. | 618 // Do nothing once user has signed in or sign in is in progress. |
| 618 // TODO(ygorshenin): We will end up here when processing network state | 619 // TODO(ygorshenin): We will end up here when processing network state |
| 619 // notification but no ShowSigninScreen() was called so delegate_ will be | 620 // notification but no ShowSigninScreen() was called so delegate_ will be |
| 620 // NULL. Network state processing logic does not belong here. | 621 // NULL. Network state processing logic does not belong here. |
| 621 if (delegate_ && | 622 if (delegate_ && |
| 622 (delegate_->IsUserSigninCompleted() || delegate_->IsSigninInProgress())) { | 623 (delegate_->IsUserSigninCompleted() || delegate_->IsSigninInProgress())) { |
| 623 return; | 624 return; |
| 624 } | 625 } |
| 625 | 626 |
| 626 NetworkStateInformer::State state = network_state_informer_->state(); | 627 NetworkStateInformer::State state = network_state_informer_->state(); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 665 connecting_closure_.callback(), | 666 connecting_closure_.callback(), |
| 666 base::TimeDelta::FromSeconds(kConnectingTimeoutSec)); | 667 base::TimeDelta::FromSeconds(kConnectingTimeoutSec)); |
| 667 } | 668 } |
| 668 return; | 669 return; |
| 669 } | 670 } |
| 670 connecting_closure_.Cancel(); | 671 connecting_closure_.Cancel(); |
| 671 | 672 |
| 672 const bool is_online = IsOnline(state, reason); | 673 const bool is_online = IsOnline(state, reason); |
| 673 const bool is_behind_captive_portal = IsBehindCaptivePortal(state, reason); | 674 const bool is_behind_captive_portal = IsBehindCaptivePortal(state, reason); |
| 674 const bool is_gaia_loading_timeout = | 675 const bool is_gaia_loading_timeout = |
| 675 (reason == ErrorScreenActor::ERROR_REASON_LOADING_TIMEOUT); | 676 (reason == NetworkError::ERROR_REASON_LOADING_TIMEOUT); |
| 676 const bool is_gaia_error = | 677 const bool is_gaia_error = |
| 677 FrameError() != net::OK && FrameError() != net::ERR_NETWORK_CHANGED; | 678 FrameError() != net::OK && FrameError() != net::ERR_NETWORK_CHANGED; |
| 678 const bool is_gaia_signin = IsGaiaVisible() || IsGaiaHiddenByError(); | 679 const bool is_gaia_signin = IsGaiaVisible() || IsGaiaHiddenByError(); |
| 679 const bool error_screen_should_overlay = | 680 const bool error_screen_should_overlay = |
| 680 !offline_login_active_ && IsGaiaVisible(); | 681 !offline_login_active_ && IsGaiaVisible(); |
| 681 const bool from_not_online_to_online_transition = | 682 const bool from_not_online_to_online_transition = |
| 682 is_online && last_network_state_ != NetworkStateInformer::ONLINE; | 683 is_online && last_network_state_ != NetworkStateInformer::ONLINE; |
| 683 last_network_state_ = state; | 684 last_network_state_ = state; |
| 684 | 685 |
| 685 CallOnReturn reload_gaia(base::Bind( | 686 CallOnReturn reload_gaia(base::Bind( |
| 686 &SigninScreenHandler::ReloadGaia, weak_factory_.GetWeakPtr(), true)); | 687 &SigninScreenHandler::ReloadGaia, weak_factory_.GetWeakPtr(), true)); |
| 687 | 688 |
| 688 if (is_online || !is_behind_captive_portal) | 689 if (is_online || !is_behind_captive_portal) |
| 689 error_screen_actor_->HideCaptivePortal(); | 690 network_error_model_->HideCaptivePortal(); |
| 690 | 691 |
| 691 // Hide offline message (if needed) and return if current screen is | 692 // Hide offline message (if needed) and return if current screen is |
| 692 // not a Gaia frame. | 693 // not a Gaia frame. |
| 693 if (!is_gaia_signin) { | 694 if (!is_gaia_signin) { |
| 694 if (!IsSigninScreenHiddenByError()) | 695 if (!IsSigninScreenHiddenByError()) |
| 695 HideOfflineMessage(state, reason); | 696 HideOfflineMessage(state, reason); |
| 696 return; | 697 return; |
| 697 } | 698 } |
| 698 | 699 |
| 699 // Reload frame if network state is changed from {!ONLINE} -> ONLINE state. | 700 // Reload frame if network state is changed from {!ONLINE} -> ONLINE state. |
| 700 if (reason == ErrorScreenActor::ERROR_REASON_NETWORK_STATE_CHANGED && | 701 if (reason == NetworkError::ERROR_REASON_NETWORK_STATE_CHANGED && |
| 701 from_not_online_to_online_transition) { | 702 from_not_online_to_online_transition) { |
| 702 // Schedules a immediate retry. | 703 // Schedules a immediate retry. |
| 703 LOG(WARNING) << "Retry frame load since network has been changed."; | 704 LOG(WARNING) << "Retry frame load since network has been changed."; |
| 704 reload_gaia.ScheduleCall(); | 705 reload_gaia.ScheduleCall(); |
| 705 } | 706 } |
| 706 | 707 |
| 707 if (reason == ErrorScreenActor::ERROR_REASON_PROXY_CONFIG_CHANGED && | 708 if (reason == NetworkError::ERROR_REASON_PROXY_CONFIG_CHANGED && |
| 708 error_screen_should_overlay) { | 709 error_screen_should_overlay) { |
| 709 // Schedules a immediate retry. | 710 // Schedules a immediate retry. |
| 710 LOG(WARNING) << "Retry frameload since proxy settings has been changed."; | 711 LOG(WARNING) << "Retry frameload since proxy settings has been changed."; |
| 711 reload_gaia.ScheduleCall(); | 712 reload_gaia.ScheduleCall(); |
| 712 } | 713 } |
| 713 | 714 |
| 714 if (reason == ErrorScreenActor::ERROR_REASON_FRAME_ERROR && | 715 if (reason == NetworkError::ERROR_REASON_FRAME_ERROR && |
| 715 !IsProxyError(state, reason, FrameError())) { | 716 !IsProxyError(state, reason, FrameError())) { |
| 716 LOG(WARNING) << "Retry frame load due to reason: " | 717 LOG(WARNING) << "Retry frame load due to reason: " |
| 717 << ErrorScreenActor::ErrorReasonString(reason); | 718 << NetworkError::ErrorReasonString(reason); |
| 718 reload_gaia.ScheduleCall(); | 719 reload_gaia.ScheduleCall(); |
| 719 } | 720 } |
| 720 | 721 |
| 721 if (is_gaia_loading_timeout) { | 722 if (is_gaia_loading_timeout) { |
| 722 LOG(WARNING) << "Retry frame load due to loading timeout."; | 723 LOG(WARNING) << "Retry frame load due to loading timeout."; |
| 723 reload_gaia.ScheduleCall(); | 724 reload_gaia.ScheduleCall(); |
| 724 } | 725 } |
| 725 | 726 |
| 726 if ((!is_online || is_gaia_loading_timeout || is_gaia_error) && | 727 if ((!is_online || is_gaia_loading_timeout || is_gaia_error) && |
| 727 !offline_login_active_) { | 728 !offline_login_active_) { |
| 728 SetupAndShowOfflineMessage(state, reason); | 729 SetupAndShowOfflineMessage(state, reason); |
| 729 } else { | 730 } else { |
| 730 HideOfflineMessage(state, reason); | 731 HideOfflineMessage(state, reason); |
| 731 } | 732 } |
| 732 } | 733 } |
| 733 | 734 |
| 734 void SigninScreenHandler::SetupAndShowOfflineMessage( | 735 void SigninScreenHandler::SetupAndShowOfflineMessage( |
| 735 NetworkStateInformer:: State state, | 736 NetworkStateInformer::State state, |
| 736 ErrorScreenActor::ErrorReason reason) { | 737 NetworkError::ErrorReason reason) { |
| 737 const std::string network_path = network_state_informer_->network_path(); | 738 const std::string network_path = network_state_informer_->network_path(); |
| 738 const bool is_behind_captive_portal = IsBehindCaptivePortal(state, reason); | 739 const bool is_behind_captive_portal = IsBehindCaptivePortal(state, reason); |
| 739 const bool is_proxy_error = IsProxyError(state, reason, FrameError()); | 740 const bool is_proxy_error = IsProxyError(state, reason, FrameError()); |
| 740 const bool is_gaia_loading_timeout = | 741 const bool is_gaia_loading_timeout = |
| 741 (reason == ErrorScreenActor::ERROR_REASON_LOADING_TIMEOUT); | 742 (reason == NetworkError::ERROR_REASON_LOADING_TIMEOUT); |
| 742 | 743 |
| 743 if (is_proxy_error) { | 744 if (is_proxy_error) { |
| 744 error_screen_actor_->SetErrorState(ErrorScreen::ERROR_STATE_PROXY, | 745 network_error_model_->SetErrorState(NetworkError::ERROR_STATE_PROXY, |
| 745 std::string()); | 746 std::string()); |
| 746 } else if (is_behind_captive_portal) { | 747 } else if (is_behind_captive_portal) { |
| 747 // Do not bother a user with obsessive captive portal showing. This | 748 // Do not bother a user with obsessive captive portal showing. This |
| 748 // check makes captive portal being shown only once: either when error | 749 // check makes captive portal being shown only once: either when error |
| 749 // screen is shown for the first time or when switching from another | 750 // screen is shown for the first time or when switching from another |
| 750 // error screen (offline, proxy). | 751 // error screen (offline, proxy). |
| 751 if (IsGaiaVisible() || | 752 if (IsGaiaVisible() || (network_error_model_->GetErrorState() != |
| 752 (error_screen_actor_->error_state() != | 753 NetworkError::ERROR_STATE_PORTAL)) { |
| 753 ErrorScreen::ERROR_STATE_PORTAL)) { | 754 network_error_model_->FixCaptivePortal(); |
| 754 error_screen_actor_->FixCaptivePortal(); | |
| 755 } | 755 } |
| 756 const std::string network_name = GetNetworkName(network_path); | 756 const std::string network_name = GetNetworkName(network_path); |
| 757 error_screen_actor_->SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, | 757 network_error_model_->SetErrorState(NetworkError::ERROR_STATE_PORTAL, |
| 758 network_name); | 758 network_name); |
| 759 } else if (is_gaia_loading_timeout) { | 759 } else if (is_gaia_loading_timeout) { |
| 760 error_screen_actor_->SetErrorState( | 760 network_error_model_->SetErrorState( |
| 761 ErrorScreen::ERROR_STATE_AUTH_EXT_TIMEOUT, std::string()); | 761 NetworkError::ERROR_STATE_AUTH_EXT_TIMEOUT, std::string()); |
| 762 } else { | 762 } else { |
| 763 error_screen_actor_->SetErrorState(ErrorScreen::ERROR_STATE_OFFLINE, | 763 network_error_model_->SetErrorState(NetworkError::ERROR_STATE_OFFLINE, |
| 764 std::string()); | 764 std::string()); |
| 765 } | 765 } |
| 766 | 766 |
| 767 const bool guest_signin_allowed = IsGuestSigninAllowed() && | 767 const bool guest_signin_allowed = |
| 768 IsSigninScreenError(error_screen_actor_->error_state()); | 768 IsGuestSigninAllowed() && |
| 769 error_screen_actor_->AllowGuestSignin(guest_signin_allowed); | 769 IsSigninScreenError(network_error_model_->GetErrorState()); |
| 770 network_error_model_->AllowGuestSignin(guest_signin_allowed); |
| 770 | 771 |
| 771 const bool offline_login_allowed = IsOfflineLoginAllowed() && | 772 const bool offline_login_allowed = |
| 772 IsSigninScreenError(error_screen_actor_->error_state()) && | 773 IsOfflineLoginAllowed() && |
| 773 error_screen_actor_->error_state() != | 774 IsSigninScreenError(network_error_model_->GetErrorState()) && |
| 774 ErrorScreen::ERROR_STATE_AUTH_EXT_TIMEOUT; | 775 network_error_model_->GetErrorState() != |
| 775 error_screen_actor_->AllowOfflineLogin(offline_login_allowed); | 776 NetworkError::ERROR_STATE_AUTH_EXT_TIMEOUT; |
| 777 network_error_model_->AllowOfflineLogin(offline_login_allowed); |
| 776 | 778 |
| 777 if (GetCurrentScreen() != OobeUI::SCREEN_ERROR_MESSAGE) { | 779 if (GetCurrentScreen() != OobeUI::SCREEN_ERROR_MESSAGE) { |
| 778 base::DictionaryValue params; | 780 network_error_model_->SetUIState(NetworkError::UI_STATE_SIGNIN); |
| 779 const std::string network_type = network_state_informer_->network_type(); | 781 network_error_model_->SetParentScreen(OobeUI::SCREEN_GAIA_SIGNIN); |
| 780 params.SetString("lastNetworkType", network_type); | 782 network_error_model_->Show(); |
| 781 error_screen_actor_->SetUIState(ErrorScreen::UI_STATE_SIGNIN); | 783 histogram_helper_->OnErrorShow(network_error_model_->GetErrorState()); |
| 782 error_screen_actor_->Show(OobeUI::SCREEN_GAIA_SIGNIN, ¶ms); | |
| 783 histogram_helper_->OnErrorShow(error_screen_actor_->error_state()); | |
| 784 } | 784 } |
| 785 } | 785 } |
| 786 | 786 |
| 787 void SigninScreenHandler::HideOfflineMessage( | 787 void SigninScreenHandler::HideOfflineMessage(NetworkStateInformer::State state, |
| 788 NetworkStateInformer::State state, | 788 NetworkError::ErrorReason reason) { |
| 789 ErrorScreenActor::ErrorReason reason) { | |
| 790 if (!IsSigninScreenHiddenByError()) | 789 if (!IsSigninScreenHiddenByError()) |
| 791 return; | 790 return; |
| 792 | 791 |
| 793 error_screen_actor_->Hide(); | 792 network_error_model_->Hide(); |
| 794 histogram_helper_->OnErrorHide(); | 793 histogram_helper_->OnErrorHide(); |
| 795 | 794 |
| 796 // Forces a reload for Gaia screen on hiding error message. | 795 // Forces a reload for Gaia screen on hiding error message. |
| 797 if (IsGaiaVisible() || IsGaiaHiddenByError()) | 796 if (IsGaiaVisible() || IsGaiaHiddenByError()) |
| 798 ReloadGaia(false); | 797 ReloadGaia(false); |
| 799 } | 798 } |
| 800 | 799 |
| 801 void SigninScreenHandler::ReloadGaia(bool force_reload) { | 800 void SigninScreenHandler::ReloadGaia(bool force_reload) { |
| 802 gaia_screen_handler_->ReloadGaia(force_reload); | 801 gaia_screen_handler_->ReloadGaia(force_reload); |
| 803 } | 802 } |
| (...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1214 } | 1213 } |
| 1215 } | 1214 } |
| 1216 | 1215 |
| 1217 void SigninScreenHandler::HandleUnlockOnLoginSuccess() { | 1216 void SigninScreenHandler::HandleUnlockOnLoginSuccess() { |
| 1218 DCHECK(user_manager::UserManager::Get()->IsUserLoggedIn()); | 1217 DCHECK(user_manager::UserManager::Get()->IsUserLoggedIn()); |
| 1219 if (ScreenLocker::default_screen_locker()) | 1218 if (ScreenLocker::default_screen_locker()) |
| 1220 ScreenLocker::default_screen_locker()->UnlockOnLoginSuccess(); | 1219 ScreenLocker::default_screen_locker()->UnlockOnLoginSuccess(); |
| 1221 } | 1220 } |
| 1222 | 1221 |
| 1223 void SigninScreenHandler::HandleShowLoadingTimeoutError() { | 1222 void SigninScreenHandler::HandleShowLoadingTimeoutError() { |
| 1224 UpdateState(ErrorScreenActor::ERROR_REASON_LOADING_TIMEOUT); | 1223 UpdateState(NetworkError::ERROR_REASON_LOADING_TIMEOUT); |
| 1225 } | 1224 } |
| 1226 | 1225 |
| 1227 void SigninScreenHandler::HandleUpdateOfflineLogin(bool offline_login_active) { | 1226 void SigninScreenHandler::HandleUpdateOfflineLogin(bool offline_login_active) { |
| 1228 offline_login_active_ = offline_login_active; | 1227 offline_login_active_ = offline_login_active; |
| 1229 } | 1228 } |
| 1230 | 1229 |
| 1231 void SigninScreenHandler::HandleFocusPod(const std::string& user_id) { | 1230 void SigninScreenHandler::HandleFocusPod(const std::string& user_id) { |
| 1232 SetUserInputMethod(user_id, ime_state_.get()); | 1231 SetUserInputMethod(user_id, ime_state_.get()); |
| 1233 WallpaperManager::Get()->SetUserWallpaperDelayed(user_id); | 1232 WallpaperManager::Get()->SetUserWallpaperDelayed(user_id); |
| 1234 ScreenlockBridge::Get()->SetFocusedUser(user_id); | 1233 ScreenlockBridge::Get()->SetFocusedUser(user_id); |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1337 ui_state_ == UI_STATE_GAIA_SIGNIN; | 1336 ui_state_ == UI_STATE_GAIA_SIGNIN; |
| 1338 } | 1337 } |
| 1339 | 1338 |
| 1340 bool SigninScreenHandler::IsGaiaHiddenByError() const { | 1339 bool SigninScreenHandler::IsGaiaHiddenByError() const { |
| 1341 return IsSigninScreenHiddenByError() && | 1340 return IsSigninScreenHiddenByError() && |
| 1342 ui_state_ == UI_STATE_GAIA_SIGNIN; | 1341 ui_state_ == UI_STATE_GAIA_SIGNIN; |
| 1343 } | 1342 } |
| 1344 | 1343 |
| 1345 bool SigninScreenHandler::IsSigninScreenHiddenByError() const { | 1344 bool SigninScreenHandler::IsSigninScreenHiddenByError() const { |
| 1346 return (GetCurrentScreen() == OobeUI::SCREEN_ERROR_MESSAGE) && | 1345 return (GetCurrentScreen() == OobeUI::SCREEN_ERROR_MESSAGE) && |
| 1347 (IsSigninScreen(error_screen_actor_->parent_screen())); | 1346 (IsSigninScreen(network_error_model_->GetParentScreen())); |
| 1348 } | 1347 } |
| 1349 | 1348 |
| 1350 bool SigninScreenHandler::IsGuestSigninAllowed() const { | 1349 bool SigninScreenHandler::IsGuestSigninAllowed() const { |
| 1351 CrosSettings* cros_settings = CrosSettings::Get(); | 1350 CrosSettings* cros_settings = CrosSettings::Get(); |
| 1352 if (!cros_settings) | 1351 if (!cros_settings) |
| 1353 return false; | 1352 return false; |
| 1354 bool allow_guest; | 1353 bool allow_guest; |
| 1355 cros_settings->GetBoolean(kAccountsPrefAllowGuest, &allow_guest); | 1354 cros_settings->GetBoolean(kAccountsPrefAllowGuest, &allow_guest); |
| 1356 return allow_guest; | 1355 return allow_guest; |
| 1357 } | 1356 } |
| 1358 | 1357 |
| 1359 bool SigninScreenHandler::IsOfflineLoginAllowed() const { | 1358 bool SigninScreenHandler::IsOfflineLoginAllowed() const { |
| 1360 CrosSettings* cros_settings = CrosSettings::Get(); | 1359 CrosSettings* cros_settings = CrosSettings::Get(); |
| 1361 if (!cros_settings) | 1360 if (!cros_settings) |
| 1362 return false; | 1361 return false; |
| 1363 | 1362 |
| 1364 // Offline login is allowed only when user pods are hidden. | 1363 // Offline login is allowed only when user pods are hidden. |
| 1365 bool show_pods; | 1364 bool show_pods; |
| 1366 cros_settings->GetBoolean(kAccountsPrefShowUserNamesOnSignIn, &show_pods); | 1365 cros_settings->GetBoolean(kAccountsPrefShowUserNamesOnSignIn, &show_pods); |
| 1367 return !show_pods; | 1366 return !show_pods; |
| 1368 } | 1367 } |
| 1369 | 1368 |
| 1370 void SigninScreenHandler::OnShowAddUser() { | 1369 void SigninScreenHandler::OnShowAddUser() { |
| 1371 is_account_picker_showing_first_time_ = false; | 1370 is_account_picker_showing_first_time_ = false; |
| 1372 DCHECK(gaia_screen_handler_); | 1371 DCHECK(gaia_screen_handler_); |
| 1373 gaia_screen_handler_->ShowGaiaAsync(is_enrolling_consumer_management_); | 1372 gaia_screen_handler_->ShowGaiaAsync(is_enrolling_consumer_management_); |
| 1374 } | 1373 } |
| 1375 | 1374 |
| 1376 GaiaScreenHandler::FrameState SigninScreenHandler::FrameState() const { | |
| 1377 DCHECK(gaia_screen_handler_); | |
| 1378 return gaia_screen_handler_->frame_state(); | |
| 1379 } | |
| 1380 | |
| 1381 net::Error SigninScreenHandler::FrameError() const { | 1375 net::Error SigninScreenHandler::FrameError() const { |
| 1382 DCHECK(gaia_screen_handler_); | 1376 DCHECK(gaia_screen_handler_); |
| 1383 return gaia_screen_handler_->frame_error(); | 1377 return gaia_screen_handler_->frame_error(); |
| 1384 } | 1378 } |
| 1385 | 1379 |
| 1386 void SigninScreenHandler::OnCapsLockChanged(bool enabled) { | 1380 void SigninScreenHandler::OnCapsLockChanged(bool enabled) { |
| 1387 caps_lock_enabled_ = enabled; | 1381 caps_lock_enabled_ = enabled; |
| 1388 if (page_is_ready()) | 1382 if (page_is_ready()) |
| 1389 CallJS("login.AccountPickerScreen.setCapsLockState", caps_lock_enabled_); | 1383 CallJS("login.AccountPickerScreen.setCapsLockState", caps_lock_enabled_); |
| 1390 } | 1384 } |
| 1391 | 1385 |
| 1392 } // namespace chromeos | 1386 } // namespace chromeos |
| OLD | NEW |