Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(415)

Side by Side Diff: chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc

Issue 872633008: Migrate (Network)ErrorScreen to ScreenContext (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nit Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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, &params);
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698