diff options
author | altimofeev@chromium.org <altimofeev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-28 09:54:59 +0000 |
---|---|---|
committer | altimofeev@chromium.org <altimofeev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-28 09:54:59 +0000 |
commit | 60829f3fbad19ea100a73501a4addfd65487bff7 (patch) | |
tree | 6d1f968f78eb407ea09455896b98f1511e67fff4 /chrome | |
parent | 2d0aa3212b3fc902e21d640a42f074109b0e7505 (diff) | |
download | chromium_src-60829f3fbad19ea100a73501a4addfd65487bff7.zip chromium_src-60829f3fbad19ea100a73501a4addfd65487bff7.tar.gz chromium_src-60829f3fbad19ea100a73501a4addfd65487bff7.tar.bz2 |
Small fixes of the ExitUpdate statuses.
Also fixed flaky test.
BUG=chromium-os:7140
TEST=run browser tests for the update screen
Review URL: http://codereview.chromium.org/6269022
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72941 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/chromeos/login/update_screen.cc | 75 | ||||
-rw-r--r-- | chrome/browser/chromeos/login/update_screen.h | 12 | ||||
-rw-r--r-- | chrome/browser/chromeos/login/update_screen_browsertest.cc | 17 |
3 files changed, 54 insertions, 50 deletions
diff --git a/chrome/browser/chromeos/login/update_screen.cc b/chrome/browser/chromeos/login/update_screen.cc index 60884f4..e44b864 100644 --- a/chrome/browser/chromeos/login/update_screen.cc +++ b/chrome/browser/chromeos/login/update_screen.cc @@ -70,7 +70,7 @@ void UpdateScreen::UpdateStatusChanged(UpdateLibrary* library) { if (!HasCriticalUpdate()) { LOG(INFO) << "Noncritical update available: " << library->status().new_version; - ExitUpdate(false); + ExitUpdate(REASON_UPDATE_NON_CRITICAL); } else { LOG(INFO) << "Critical update available: " << library->status().new_version; @@ -85,7 +85,7 @@ void UpdateScreen::UpdateStatusChanged(UpdateLibrary* library) { if (!HasCriticalUpdate()) { LOG(INFO) << "Non-critical update available: " << library->status().new_version; - ExitUpdate(false); + ExitUpdate(REASON_UPDATE_NON_CRITICAL); } else { LOG(INFO) << "Critical update available: " << library->status().new_version; @@ -115,13 +115,13 @@ void UpdateScreen::UpdateStatusChanged(UpdateLibrary* library) { this, &UpdateScreen::OnWaitForRebootTimeElapsed); } else { - ExitUpdate(false); + ExitUpdate(REASON_UPDATE_NON_CRITICAL); } break; case UPDATE_STATUS_IDLE: case UPDATE_STATUS_ERROR: case UPDATE_STATUS_REPORTING_ERROR_EVENT: - ExitUpdate(false); + ExitUpdate(REASON_UPDATE_ENDED); break; default: NOTREACHED(); @@ -138,11 +138,12 @@ void UpdateScreen::StartUpdate() { if (!CrosLibrary::Get()->EnsureLoaded()) { LOG(ERROR) << "Error loading CrosLibrary"; + ExitUpdate(REASON_UPDATE_INIT_FAILED); } else { CrosLibrary::Get()->GetUpdateLibrary()->AddObserver(this); VLOG(1) << "Initiate update check"; if (!CrosLibrary::Get()->GetUpdateLibrary()->CheckForUpdate()) { - ExitUpdate(true); + ExitUpdate(REASON_UPDATE_INIT_FAILED); } } } @@ -151,41 +152,47 @@ void UpdateScreen::CancelUpdate() { // Screen has longer lifetime than it's view. // View is deleted after wizard proceeds to the next screen. if (view()) - ExitUpdate(true); + ExitUpdate(REASON_UPDATE_CANCELED); } -void UpdateScreen::ExitUpdate(bool forced) { +void UpdateScreen::ExitUpdate(UpdateScreen::ExitReason reason) { ScreenObserver* observer = delegate()->GetObserver(this); + if (CrosLibrary::Get()->EnsureLoaded()) + CrosLibrary::Get()->GetUpdateLibrary()->RemoveObserver(this); - if (!CrosLibrary::Get()->EnsureLoaded()) { - observer->OnExit(ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE); - return; - } - - if (forced) { - observer->OnExit(ScreenObserver::UPDATE_NOUPDATE); - return; - } - - UpdateLibrary* update_library = CrosLibrary::Get()->GetUpdateLibrary(); - update_library->RemoveObserver(this); - switch (update_library->status().status) { - case UPDATE_STATUS_UPDATE_AVAILABLE: - case UPDATE_STATUS_UPDATED_NEED_REBOOT: - case UPDATE_STATUS_DOWNLOADING: - case UPDATE_STATUS_FINALIZING: - case UPDATE_STATUS_VERIFYING: - DCHECK(!HasCriticalUpdate()); - // Noncritical update, just exit screen as if there is no update. - // no break - case UPDATE_STATUS_IDLE: + switch(reason) { + case REASON_UPDATE_CANCELED: observer->OnExit(ScreenObserver::UPDATE_NOUPDATE); break; - case UPDATE_STATUS_ERROR: - case UPDATE_STATUS_REPORTING_ERROR_EVENT: - observer->OnExit(checking_for_update_ ? - ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE : - ScreenObserver::UPDATE_ERROR_UPDATING); + case REASON_UPDATE_INIT_FAILED: + observer->OnExit(ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE); + break; + case REASON_UPDATE_NON_CRITICAL: + case REASON_UPDATE_ENDED: + { + UpdateLibrary* update_library = CrosLibrary::Get()->GetUpdateLibrary(); + switch (update_library->status().status) { + case UPDATE_STATUS_UPDATE_AVAILABLE: + case UPDATE_STATUS_UPDATED_NEED_REBOOT: + case UPDATE_STATUS_DOWNLOADING: + case UPDATE_STATUS_FINALIZING: + case UPDATE_STATUS_VERIFYING: + DCHECK(!HasCriticalUpdate()); + // Noncritical update, just exit screen as if there is no update. + // no break + case UPDATE_STATUS_IDLE: + observer->OnExit(ScreenObserver::UPDATE_NOUPDATE); + break; + case UPDATE_STATUS_ERROR: + case UPDATE_STATUS_REPORTING_ERROR_EVENT: + observer->OnExit(checking_for_update_ ? + ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE : + ScreenObserver::UPDATE_ERROR_UPDATING); + break; + default: + NOTREACHED(); + } + } break; default: NOTREACHED(); diff --git a/chrome/browser/chromeos/login/update_screen.h b/chrome/browser/chromeos/login/update_screen.h index 2e6e657..81a6852 100644 --- a/chrome/browser/chromeos/login/update_screen.h +++ b/chrome/browser/chromeos/login/update_screen.h @@ -35,11 +35,15 @@ class UpdateScreen: public DefaultViewScreen<chromeos::UpdateView>, virtual void StartUpdate(); virtual void CancelUpdate(); + enum ExitReason { + REASON_UPDATE_CANCELED, + REASON_UPDATE_INIT_FAILED, + REASON_UPDATE_NON_CRITICAL, + REASON_UPDATE_ENDED + }; + // Reports update results to the ScreenObserver. - // |forced| should be set to true when calling this method and update status - // is not one of UPDATE_STATUS_IDLE, UPDATE_STATUS_ERROR, - // UPDATE_STATUS_REPORTING_ERROR_EVENT. - virtual void ExitUpdate(bool forced); + virtual void ExitUpdate(ExitReason reason); // Reboot check delay get/set, in seconds. int reboot_check_delay() const { return reboot_check_delay_; } diff --git a/chrome/browser/chromeos/login/update_screen_browsertest.cc b/chrome/browser/chromeos/login/update_screen_browsertest.cc index 02f4eb9..5fa4eb1 100644 --- a/chrome/browser/chromeos/login/update_screen_browsertest.cc +++ b/chrome/browser/chromeos/login/update_screen_browsertest.cc @@ -164,8 +164,8 @@ IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestUpdateAvailable) { controller()->set_observer(NULL); } -// TODO(zelidrag): bug chromium-os:7140 Fix this flaky test on ChromeOS. -IN_PROC_BROWSER_TEST_F(UpdateScreenTest, FLAKY_TestErrorIssuingUpdateCheck) { + +IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorIssuingUpdateCheck) { ASSERT_TRUE(controller() != NULL); scoped_ptr<MockScreenObserver> mock_screen_observer(new MockScreenObserver()); controller()->set_observer(mock_screen_observer.get()); @@ -173,12 +173,10 @@ IN_PROC_BROWSER_TEST_F(UpdateScreenTest, FLAKY_TestErrorIssuingUpdateCheck) { ASSERT_TRUE(update_screen != NULL); ASSERT_EQ(controller()->current_screen(), update_screen); - UpdateLibrary::Status status; - // First, cancel the update that is already in progress. - EXPECT_CALL(*mock_update_library_, status()) - .Times(AtLeast(1)) - .WillRepeatedly(ReturnRef(status)); + EXPECT_CALL(*mock_screen_observer, + OnExit(ScreenObserver::UPDATE_NOUPDATE)) + .Times(1); update_screen->CancelUpdate(); // Run UpdateScreen::StartUpdate() again, but CheckForUpdate() will fail @@ -190,11 +188,6 @@ IN_PROC_BROWSER_TEST_F(UpdateScreenTest, FLAKY_TestErrorIssuingUpdateCheck) { EXPECT_CALL(*mock_update_library_, CheckForUpdate()) .Times(1) .WillOnce(Return(false)); - - status.status = UPDATE_STATUS_ERROR; - EXPECT_CALL(*mock_update_library_, status()) - .Times(AtLeast(1)) - .WillRepeatedly(ReturnRef(status)); EXPECT_CALL(*mock_screen_observer, OnExit(ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE)) .Times(1); |