Index: chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc |
diff --git a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc |
index 44cdf52b52ecc0d8db5967502563a45ccc505423..0fe14a452581db8cc014fda5d4352eef49ecfd24 100644 |
--- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc |
+++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc |
@@ -32,6 +32,7 @@ |
#include "chrome/browser/chromeos/login/hwid_checker.h" |
#include "chrome/browser/chromeos/login/lock/screen_locker.h" |
#include "chrome/browser/chromeos/login/screens/core_oobe_actor.h" |
+#include "chrome/browser/chromeos/login/screens/network_error.h" |
#include "chrome/browser/chromeos/login/ui/login_display_host.h" |
#include "chrome/browser/chromeos/login/ui/login_display_host_impl.h" |
#include "chrome/browser/chromeos/login/ui/webui_login_display.h" |
@@ -48,6 +49,7 @@ |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/signin/easy_unlock_service.h" |
#include "chrome/browser/ui/webui/chromeos/login/error_screen_handler.h" |
+#include "chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h" |
#include "chrome/browser/ui/webui/chromeos/login/l10n_util.h" |
#include "chrome/browser/ui/webui/chromeos/login/native_window_delegate.h" |
#include "chrome/browser/ui/webui/chromeos/login/network_state_informer.h" |
@@ -124,27 +126,27 @@ namespace chromeos { |
namespace { |
bool IsOnline(NetworkStateInformer::State state, |
- ErrorScreenActor::ErrorReason reason) { |
+ NetworkError::ErrorReason reason) { |
return state == NetworkStateInformer::ONLINE && |
- reason != ErrorScreenActor::ERROR_REASON_PORTAL_DETECTED && |
- reason != ErrorScreenActor::ERROR_REASON_LOADING_TIMEOUT; |
+ reason != NetworkError::ERROR_REASON_PORTAL_DETECTED && |
+ reason != NetworkError::ERROR_REASON_LOADING_TIMEOUT; |
} |
bool IsBehindCaptivePortal(NetworkStateInformer::State state, |
- ErrorScreenActor::ErrorReason reason) { |
+ NetworkError::ErrorReason reason) { |
return state == NetworkStateInformer::CAPTIVE_PORTAL || |
- reason == ErrorScreenActor::ERROR_REASON_PORTAL_DETECTED; |
+ reason == NetworkError::ERROR_REASON_PORTAL_DETECTED; |
} |
bool IsProxyError(NetworkStateInformer::State state, |
- ErrorScreenActor::ErrorReason reason, |
+ NetworkError::ErrorReason reason, |
net::Error frame_error) { |
return state == NetworkStateInformer::PROXY_AUTH_REQUIRED || |
- reason == ErrorScreenActor::ERROR_REASON_PROXY_AUTH_CANCELLED || |
- reason == ErrorScreenActor::ERROR_REASON_PROXY_CONNECTION_FAILED || |
- (reason == ErrorScreenActor::ERROR_REASON_FRAME_ERROR && |
- (frame_error == net::ERR_PROXY_CONNECTION_FAILED || |
- frame_error == net::ERR_TUNNEL_CONNECTION_FAILED)); |
+ reason == NetworkError::ERROR_REASON_PROXY_AUTH_CANCELLED || |
+ reason == NetworkError::ERROR_REASON_PROXY_CONNECTION_FAILED || |
+ (reason == NetworkError::ERROR_REASON_FRAME_ERROR && |
+ (frame_error == net::ERR_PROXY_CONNECTION_FAILED || |
+ frame_error == net::ERR_TUNNEL_CONNECTION_FAILED)); |
} |
bool IsSigninScreen(const OobeUI::Screen screen) { |
@@ -152,11 +154,11 @@ bool IsSigninScreen(const OobeUI::Screen screen) { |
screen == OobeUI::SCREEN_ACCOUNT_PICKER; |
} |
-bool IsSigninScreenError(ErrorScreen::ErrorState error_state) { |
- return error_state == ErrorScreen::ERROR_STATE_PORTAL || |
- error_state == ErrorScreen::ERROR_STATE_OFFLINE || |
- error_state == ErrorScreen::ERROR_STATE_PROXY || |
- error_state == ErrorScreen::ERROR_STATE_AUTH_EXT_TIMEOUT; |
+bool IsSigninScreenError(NetworkError::ErrorState error_state) { |
+ return error_state == NetworkError::ERROR_STATE_PORTAL || |
+ error_state == NetworkError::ERROR_STATE_OFFLINE || |
+ error_state == NetworkError::ERROR_STATE_PROXY || |
+ error_state == NetworkError::ERROR_STATE_AUTH_EXT_TIMEOUT; |
} |
// Returns network name by service path. |
@@ -227,7 +229,7 @@ void LoginScreenContext::Init() { |
SigninScreenHandler::SigninScreenHandler( |
const scoped_refptr<NetworkStateInformer>& network_state_informer, |
- ErrorScreenActor* error_screen_actor, |
+ NetworkErrorModel* network_error_model, |
CoreOobeActor* core_oobe_actor, |
GaiaScreenHandler* gaia_screen_handler) |
: ui_state_(UI_STATE_UNKNOWN), |
@@ -239,7 +241,7 @@ SigninScreenHandler::SigninScreenHandler( |
network_state_informer_(network_state_informer), |
webui_visible_(false), |
preferences_changed_delayed_(false), |
- error_screen_actor_(error_screen_actor), |
+ network_error_model_(network_error_model), |
core_oobe_actor_(core_oobe_actor), |
is_first_update_state_call_(true), |
offline_login_active_(false), |
@@ -253,7 +255,7 @@ SigninScreenHandler::SigninScreenHandler( |
histogram_helper_(new ErrorScreensHistogramHelper("Signin")), |
weak_factory_(this) { |
DCHECK(network_state_informer_.get()); |
- DCHECK(error_screen_actor_); |
+ DCHECK(network_error_model_); |
DCHECK(core_oobe_actor_); |
DCHECK(gaia_screen_handler_); |
gaia_screen_handler_->SetSigninScreenHandler(this); |
@@ -546,7 +548,7 @@ void SigninScreenHandler::OnNetworkReady() { |
gaia_screen_handler_->MaybePreloadAuthExtension(); |
} |
-void SigninScreenHandler::UpdateState(ErrorScreenActor::ErrorReason reason) { |
+void SigninScreenHandler::UpdateState(NetworkError::ErrorReason reason) { |
UpdateStateInternal(reason, false); |
} |
@@ -611,9 +613,8 @@ void SigninScreenHandler::UpdateUIState(UIState ui_state, |
// TODO(ygorshenin@): split this method into small parts. |
// TODO(ygorshenin@): move this logic to GaiaScreenHandler. |
-void SigninScreenHandler::UpdateStateInternal( |
- ErrorScreenActor::ErrorReason reason, |
- bool force_update) { |
+void SigninScreenHandler::UpdateStateInternal(NetworkError::ErrorReason reason, |
+ bool force_update) { |
// Do nothing once user has signed in or sign in is in progress. |
// TODO(ygorshenin): We will end up here when processing network state |
// notification but no ShowSigninScreen() was called so delegate_ will be |
@@ -672,7 +673,7 @@ void SigninScreenHandler::UpdateStateInternal( |
const bool is_online = IsOnline(state, reason); |
const bool is_behind_captive_portal = IsBehindCaptivePortal(state, reason); |
const bool is_gaia_loading_timeout = |
- (reason == ErrorScreenActor::ERROR_REASON_LOADING_TIMEOUT); |
+ (reason == NetworkError::ERROR_REASON_LOADING_TIMEOUT); |
const bool is_gaia_error = |
FrameError() != net::OK && FrameError() != net::ERR_NETWORK_CHANGED; |
const bool is_gaia_signin = IsGaiaVisible() || IsGaiaHiddenByError(); |
@@ -686,7 +687,7 @@ void SigninScreenHandler::UpdateStateInternal( |
&SigninScreenHandler::ReloadGaia, weak_factory_.GetWeakPtr(), true)); |
if (is_online || !is_behind_captive_portal) |
- error_screen_actor_->HideCaptivePortal(); |
+ network_error_model_->HideCaptivePortal(); |
// Hide offline message (if needed) and return if current screen is |
// not a Gaia frame. |
@@ -697,24 +698,24 @@ void SigninScreenHandler::UpdateStateInternal( |
} |
// Reload frame if network state is changed from {!ONLINE} -> ONLINE state. |
- if (reason == ErrorScreenActor::ERROR_REASON_NETWORK_STATE_CHANGED && |
+ if (reason == NetworkError::ERROR_REASON_NETWORK_STATE_CHANGED && |
from_not_online_to_online_transition) { |
// Schedules a immediate retry. |
LOG(WARNING) << "Retry frame load since network has been changed."; |
reload_gaia.ScheduleCall(); |
} |
- if (reason == ErrorScreenActor::ERROR_REASON_PROXY_CONFIG_CHANGED && |
+ if (reason == NetworkError::ERROR_REASON_PROXY_CONFIG_CHANGED && |
error_screen_should_overlay) { |
// Schedules a immediate retry. |
LOG(WARNING) << "Retry frameload since proxy settings has been changed."; |
reload_gaia.ScheduleCall(); |
} |
- if (reason == ErrorScreenActor::ERROR_REASON_FRAME_ERROR && |
+ if (reason == NetworkError::ERROR_REASON_FRAME_ERROR && |
!IsProxyError(state, reason, FrameError())) { |
LOG(WARNING) << "Retry frame load due to reason: " |
- << ErrorScreenActor::ErrorReasonString(reason); |
+ << NetworkError::ErrorReasonString(reason); |
reload_gaia.ScheduleCall(); |
} |
@@ -732,65 +733,63 @@ void SigninScreenHandler::UpdateStateInternal( |
} |
void SigninScreenHandler::SetupAndShowOfflineMessage( |
- NetworkStateInformer:: State state, |
- ErrorScreenActor::ErrorReason reason) { |
+ NetworkStateInformer::State state, |
+ NetworkError::ErrorReason reason) { |
const std::string network_path = network_state_informer_->network_path(); |
const bool is_behind_captive_portal = IsBehindCaptivePortal(state, reason); |
const bool is_proxy_error = IsProxyError(state, reason, FrameError()); |
const bool is_gaia_loading_timeout = |
- (reason == ErrorScreenActor::ERROR_REASON_LOADING_TIMEOUT); |
+ (reason == NetworkError::ERROR_REASON_LOADING_TIMEOUT); |
if (is_proxy_error) { |
- error_screen_actor_->SetErrorState(ErrorScreen::ERROR_STATE_PROXY, |
- std::string()); |
+ network_error_model_->SetErrorState(NetworkError::ERROR_STATE_PROXY, |
+ std::string()); |
} else if (is_behind_captive_portal) { |
// Do not bother a user with obsessive captive portal showing. This |
// check makes captive portal being shown only once: either when error |
// screen is shown for the first time or when switching from another |
// error screen (offline, proxy). |
- if (IsGaiaVisible() || |
- (error_screen_actor_->error_state() != |
- ErrorScreen::ERROR_STATE_PORTAL)) { |
- error_screen_actor_->FixCaptivePortal(); |
+ if (IsGaiaVisible() || (network_error_model_->GetErrorState() != |
+ NetworkError::ERROR_STATE_PORTAL)) { |
+ network_error_model_->FixCaptivePortal(); |
} |
const std::string network_name = GetNetworkName(network_path); |
- error_screen_actor_->SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, |
- network_name); |
+ network_error_model_->SetErrorState(NetworkError::ERROR_STATE_PORTAL, |
+ network_name); |
} else if (is_gaia_loading_timeout) { |
- error_screen_actor_->SetErrorState( |
- ErrorScreen::ERROR_STATE_AUTH_EXT_TIMEOUT, std::string()); |
+ network_error_model_->SetErrorState( |
+ NetworkError::ERROR_STATE_AUTH_EXT_TIMEOUT, std::string()); |
} else { |
- error_screen_actor_->SetErrorState(ErrorScreen::ERROR_STATE_OFFLINE, |
- std::string()); |
+ network_error_model_->SetErrorState(NetworkError::ERROR_STATE_OFFLINE, |
+ std::string()); |
} |
- const bool guest_signin_allowed = IsGuestSigninAllowed() && |
- IsSigninScreenError(error_screen_actor_->error_state()); |
- error_screen_actor_->AllowGuestSignin(guest_signin_allowed); |
+ const bool guest_signin_allowed = |
+ IsGuestSigninAllowed() && |
+ IsSigninScreenError(network_error_model_->GetErrorState()); |
+ network_error_model_->AllowGuestSignin(guest_signin_allowed); |
- const bool offline_login_allowed = IsOfflineLoginAllowed() && |
- IsSigninScreenError(error_screen_actor_->error_state()) && |
- error_screen_actor_->error_state() != |
- ErrorScreen::ERROR_STATE_AUTH_EXT_TIMEOUT; |
- error_screen_actor_->AllowOfflineLogin(offline_login_allowed); |
+ const bool offline_login_allowed = |
+ IsOfflineLoginAllowed() && |
+ IsSigninScreenError(network_error_model_->GetErrorState()) && |
+ network_error_model_->GetErrorState() != |
+ NetworkError::ERROR_STATE_AUTH_EXT_TIMEOUT; |
+ network_error_model_->AllowOfflineLogin(offline_login_allowed); |
if (GetCurrentScreen() != OobeUI::SCREEN_ERROR_MESSAGE) { |
- base::DictionaryValue params; |
- const std::string network_type = network_state_informer_->network_type(); |
- params.SetString("lastNetworkType", network_type); |
- error_screen_actor_->SetUIState(ErrorScreen::UI_STATE_SIGNIN); |
- error_screen_actor_->Show(OobeUI::SCREEN_GAIA_SIGNIN, ¶ms); |
- histogram_helper_->OnErrorShow(error_screen_actor_->error_state()); |
+ network_error_model_->SetUIState(NetworkError::UI_STATE_SIGNIN); |
+ network_error_model_->SetParentScreen(OobeUI::SCREEN_GAIA_SIGNIN); |
+ network_error_model_->Show(); |
+ histogram_helper_->OnErrorShow(network_error_model_->GetErrorState()); |
} |
} |
-void SigninScreenHandler::HideOfflineMessage( |
- NetworkStateInformer::State state, |
- ErrorScreenActor::ErrorReason reason) { |
+void SigninScreenHandler::HideOfflineMessage(NetworkStateInformer::State state, |
+ NetworkError::ErrorReason reason) { |
if (!IsSigninScreenHiddenByError()) |
return; |
- error_screen_actor_->Hide(); |
+ network_error_model_->Hide(); |
histogram_helper_->OnErrorHide(); |
// Forces a reload for Gaia screen on hiding error message. |
@@ -1221,7 +1220,7 @@ void SigninScreenHandler::HandleUnlockOnLoginSuccess() { |
} |
void SigninScreenHandler::HandleShowLoadingTimeoutError() { |
- UpdateState(ErrorScreenActor::ERROR_REASON_LOADING_TIMEOUT); |
+ UpdateState(NetworkError::ERROR_REASON_LOADING_TIMEOUT); |
} |
void SigninScreenHandler::HandleUpdateOfflineLogin(bool offline_login_active) { |
@@ -1344,7 +1343,7 @@ bool SigninScreenHandler::IsGaiaHiddenByError() const { |
bool SigninScreenHandler::IsSigninScreenHiddenByError() const { |
return (GetCurrentScreen() == OobeUI::SCREEN_ERROR_MESSAGE) && |
- (IsSigninScreen(error_screen_actor_->parent_screen())); |
+ (IsSigninScreen(network_error_model_->GetParentScreen())); |
} |
bool SigninScreenHandler::IsGuestSigninAllowed() const { |
@@ -1373,11 +1372,6 @@ void SigninScreenHandler::OnShowAddUser() { |
gaia_screen_handler_->ShowGaiaAsync(is_enrolling_consumer_management_); |
} |
-GaiaScreenHandler::FrameState SigninScreenHandler::FrameState() const { |
- DCHECK(gaia_screen_handler_); |
- return gaia_screen_handler_->frame_state(); |
-} |
- |
net::Error SigninScreenHandler::FrameError() const { |
DCHECK(gaia_screen_handler_); |
return gaia_screen_handler_->frame_error(); |