Chromium Code Reviews| Index: chrome/browser/chromeos/login/screens/update_screen.cc |
| diff --git a/chrome/browser/chromeos/login/screens/update_screen.cc b/chrome/browser/chromeos/login/screens/update_screen.cc |
| index ca9d4fc8788c8c8e9237eabf5f52c3cc70e948ec..849bccd15399b034af410442b81d63cd2217cc9e 100644 |
| --- a/chrome/browser/chromeos/login/screens/update_screen.cc |
| +++ b/chrome/browser/chromeos/login/screens/update_screen.cc |
| @@ -66,6 +66,11 @@ const double kDownloadAverageSpeedDropBound = 1e-8; |
| // An upper bound for possible downloading time left estimations. |
| const double kMaxTimeLeft = 24 * 60 * 60; |
| +// Delay before showing error message if captive portal is detected. |
| +// We wait for this delay to let captive portal to perform redirect and show |
| +// its login page before error message appears. |
| +const int kDelayErrorMessageSec = 10; |
|
Denis Kuznetsov (DE-MUC)
2015/03/20 12:04:58
I believe that 10 seconds can be too much here. Ha
Nikita (slow)
2015/03/24 11:41:35
As discussed, OK to use this timeout + add UMA met
Alexander Alekseev
2015/03/24 14:32:52
Done.
|
| + |
| // Invoked from call to RequestUpdateCheck upon completion of the DBus call. |
| void StartUpdateCallback(UpdateScreen* screen, |
| UpdateEngineClient::UpdateCheckResult result) { |
| @@ -251,7 +256,7 @@ void UpdateScreen::UpdateStatusChanged( |
| void UpdateScreen::OnPortalDetectionCompleted( |
| const NetworkState* network, |
| const NetworkPortalDetector::CaptivePortalState& state) { |
| - LOG(WARNING) << "UpdateScreen::PortalDetectionCompleted(): " |
| + LOG(WARNING) << "UpdateScreen::OnPortalDetectionCompleted(): " |
| << "network=" << (network ? network->path() : "") << ", " |
| << "state.status=" << state.status << ", " |
| << "state.response_code=" << state.response_code; |
| @@ -291,7 +296,11 @@ void UpdateScreen::OnPortalDetectionCompleted( |
| StartUpdateCheck(); |
| } else { |
| UpdateErrorMessage(network, status); |
| - ShowErrorMessage(); |
| + |
| + if (status == NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL) |
| + DelayErrorMessage(); |
| + else |
| + ShowErrorMessage(); |
| } |
| } |
| } |
| @@ -509,6 +518,9 @@ ErrorScreen* UpdateScreen::GetErrorScreen() { |
| } |
| void UpdateScreen::StartUpdateCheck() { |
| + error_message_timer_.Stop(); |
| + GetErrorScreen()->HideCaptivePortal(); |
| + |
| NetworkPortalDetector::Get()->RemoveObserver(this); |
| if (state_ == STATE_ERROR) |
| HideErrorMessage(); |
| @@ -521,6 +533,9 @@ void UpdateScreen::StartUpdateCheck() { |
| void UpdateScreen::ShowErrorMessage() { |
| LOG(WARNING) << "UpdateScreen::ShowErrorMessage()"; |
| + |
| + error_message_timer_.Stop(); |
| + |
| state_ = STATE_ERROR; |
| GetErrorScreen()->SetUIState(NetworkError::UI_STATE_UPDATE); |
| get_base_screen_delegate()->ShowErrorScreen(); |
| @@ -571,4 +586,14 @@ void UpdateScreen::SetHostPairingControllerStatus( |
| } |
| } |
| +void UpdateScreen::DelayErrorMessage() { |
| + if (error_message_timer_.IsRunning()) |
| + return; |
| + |
| + state_ = STATE_ERROR; |
| + error_message_timer_.Start( |
| + FROM_HERE, base::TimeDelta::FromSeconds(kDelayErrorMessageSec), this, |
| + &UpdateScreen::ShowErrorMessage); |
| +} |
| + |
| } // namespace chromeos |