summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authoraltimofeev@chromium.org <altimofeev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-28 09:54:59 +0000
committeraltimofeev@chromium.org <altimofeev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-28 09:54:59 +0000
commit60829f3fbad19ea100a73501a4addfd65487bff7 (patch)
tree6d1f968f78eb407ea09455896b98f1511e67fff4 /chrome
parent2d0aa3212b3fc902e21d640a42f074109b0e7505 (diff)
downloadchromium_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.cc75
-rw-r--r--chrome/browser/chromeos/login/update_screen.h12
-rw-r--r--chrome/browser/chromeos/login/update_screen_browsertest.cc17
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);