| 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 33955f955eed700407cdc875e81f57028114ac36..cd0b3b50f854a30a6757e9831dff5f3ef7e8259a 100644
|
| --- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
|
| +++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
|
| @@ -153,6 +153,7 @@ bool IsSigninScreen(const OobeUI::Screen screen) {
|
| bool IsSigninScreenError(ErrorScreenActor::State state) {
|
| return state == ErrorScreenActor::STATE_PROXY_ERROR ||
|
| state == ErrorScreenActor::STATE_CAPTIVE_PORTAL_ERROR ||
|
| + state == ErrorScreenActor::STATE_TIMEOUT_ERROR ||
|
| state == ErrorScreenActor::STATE_OFFLINE_ERROR;
|
| }
|
|
|
| @@ -503,7 +504,8 @@ void SigninScreenHandler::UpdateStateInternal(
|
| bool is_under_captive_portal =
|
| (state == NetworkStateInformer::CAPTIVE_PORTAL);
|
| bool is_proxy_error = IsProxyError(state, reason);
|
| - bool is_timeout = (reason == ErrorScreenActor::kErrorReasonLoadingTimeout);
|
| + bool is_gaia_loading_timeout =
|
| + (reason == ErrorScreenActor::kErrorReasonLoadingTimeout);
|
| bool is_gaia_signin =
|
| (IsSigninScreen(GetCurrentScreen()) || IsSigninScreenHiddenByError()) &&
|
| ui_state_ == UI_STATE_GAIA_SIGNIN;
|
| @@ -532,11 +534,8 @@ void SigninScreenHandler::UpdateStateInternal(
|
| is_gaia_reloaded = true;
|
| }
|
|
|
| - // Fake portal state for loading timeout.
|
| - if (reason == ErrorScreenActor::kErrorReasonLoadingTimeout) {
|
| + if (reason == ErrorScreenActor::kErrorReasonLoadingTimeout)
|
| is_online = false;
|
| - is_under_captive_portal = true;
|
| - }
|
|
|
| // Portal was detected via generate_204 redirect on Chrome side.
|
| // Subsequent call to show dialog if it's already shown does nothing.
|
| @@ -545,12 +544,17 @@ void SigninScreenHandler::UpdateStateInternal(
|
| is_under_captive_portal = true;
|
| }
|
|
|
| + if (is_online || !is_under_captive_portal)
|
| + error_screen_actor_->HideCaptivePortal();
|
| +
|
| if (!is_online && is_gaia_signin && !offline_login_active_) {
|
| LOG(WARNING) << "Show offline message: state=" << state << ", "
|
| << "network_id=" << network_id << ", "
|
| << "reason=" << reason << ", "
|
| << "is_under_captive_portal=" << is_under_captive_portal;
|
| - if (is_under_captive_portal && !is_proxy_error) {
|
| + if (is_proxy_error) {
|
| + error_screen_actor_->ShowProxyError();
|
| + } else if (is_under_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
|
| @@ -558,28 +562,12 @@ void SigninScreenHandler::UpdateStateInternal(
|
| if (!IsGaiaLogin() ||
|
| (error_screen_actor_->state() !=
|
| ErrorScreenActor::STATE_CAPTIVE_PORTAL_ERROR)) {
|
| - // In case of timeout we're suspecting that network might be
|
| - // a captive portal but would like to check that first.
|
| - // Otherwise (signal from shill / generate_204 got redirected)
|
| - // show dialog right away.
|
| - if (is_timeout)
|
| - error_screen_actor_->FixCaptivePortal();
|
| - else
|
| - error_screen_actor_->ShowCaptivePortal();
|
| + error_screen_actor_->FixCaptivePortal();
|
| }
|
| - } else {
|
| - error_screen_actor_->HideCaptivePortal();
|
| - }
|
| -
|
| - if (is_under_captive_portal) {
|
| - if (is_proxy_error) {
|
| - error_screen_actor_->ShowProxyError();
|
| - } else {
|
| - std::string network_name = GetNetworkName(service_path);
|
| - error_screen_actor_->ShowCaptivePortalError(network_name);
|
| - }
|
| - } else if (is_proxy_error) {
|
| - error_screen_actor_->ShowProxyError();
|
| + std::string network_name = GetNetworkName(service_path);
|
| + error_screen_actor_->ShowCaptivePortalError(network_name);
|
| + } else if (is_gaia_loading_timeout) {
|
| + error_screen_actor_->ShowTimeoutError();
|
| } else {
|
| error_screen_actor_->ShowOfflineError();
|
| }
|
| @@ -589,7 +577,8 @@ void SigninScreenHandler::UpdateStateInternal(
|
| error_screen_actor_->AllowGuestSignin(guest_signin_allowed);
|
|
|
| bool offline_login_allowed = IsOfflineLoginAllowed() &&
|
| - IsSigninScreenError(error_screen_actor_->state());
|
| + IsSigninScreenError(error_screen_actor_->state()) &&
|
| + error_screen_actor_->state() != ErrorScreenActor::STATE_TIMEOUT_ERROR;
|
| error_screen_actor_->AllowOfflineLogin(offline_login_allowed);
|
|
|
| if (GetCurrentScreen() != OobeUI::SCREEN_ERROR_MESSAGE) {
|
| @@ -598,8 +587,6 @@ void SigninScreenHandler::UpdateStateInternal(
|
| error_screen_actor_->Show(OobeUI::SCREEN_GAIA_SIGNIN, ¶ms);
|
| }
|
| } else {
|
| - error_screen_actor_->HideCaptivePortal();
|
| -
|
| if (IsSigninScreenHiddenByError()) {
|
| LOG(WARNING) << "Hide offline message. state=" << state << ", "
|
| << "network_id=" << network_id << ", "
|
|
|