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 |