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

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: cleanup 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 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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, &params);
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698