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 |