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