Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6557)

Unified Diff: chrome/browser/chromeos/login/update_screen.cc

Issue 7039042: [cros] update screen re-factoring pt.1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: move virtual back to public Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/chromeos/login/update_screen.h ('k') | chrome/browser/chromeos/login/update_screen_actor.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/login/update_screen.cc
diff --git a/chrome/browser/chromeos/login/update_screen.cc b/chrome/browser/chromeos/login/update_screen.cc
index 375ab128f4e8f1c9e71115c36ed5ad19443b7545..0d0fac64b10162c0deb9858038986da9e3d711a6 100644
--- a/chrome/browser/chromeos/login/update_screen.cc
+++ b/chrome/browser/chromeos/login/update_screen.cc
@@ -9,10 +9,13 @@
#include "base/threading/thread_restrictions.h"
#include "chrome/browser/chromeos/cros/cros_library.h"
#include "chrome/browser/chromeos/login/screen_observer.h"
-#include "chrome/browser/chromeos/login/update_view.h"
+#include "chrome/browser/chromeos/login/update_screen_actor.h"
+#include "chrome/browser/chromeos/login/update_screen_views_actor.h"
#include "chrome/browser/chromeos/login/wizard_controller.h"
#include "content/browser/browser_thread.h"
+namespace chromeos {
+
namespace {
// Progress bar stages. Each represents progress bar value
@@ -34,10 +37,19 @@ const int kUpdateScreenHeight = 305;
const char kUpdateDeadlineFile[] = "/tmp/update-check-response-deadline";
-} // anonymous namespace
-
-namespace chromeos {
+// Invoked from call to RequestUpdateCheck upon completion of the DBus call.
+void StartUpdateCallback(void* user_data,
+ UpdateResult result,
+ const char* msg) {
+ if (result != chromeos::UPDATE_RESULT_SUCCESS) {
+ DCHECK(user_data);
+ UpdateScreen* screen = static_cast<UpdateScreen*>(user_data);
+ if (UpdateScreen::HasInstance(screen))
+ screen->ExitUpdate(UpdateScreen::REASON_UPDATE_INIT_FAILED);
+ }
+}
+} // anonymous namespace
// static
UpdateScreen::InstanceSet& UpdateScreen::GetInstanceSet() {
@@ -53,29 +65,29 @@ bool UpdateScreen::HasInstance(UpdateScreen* inst) {
return (found != instance_set.end());
}
+
UpdateScreen::UpdateScreen(WizardScreenDelegate* delegate)
- : DefaultViewScreen<chromeos::UpdateView>(delegate,
- kUpdateScreenWidth,
- kUpdateScreenHeight),
- checking_for_update_(true),
+ : WizardScreen(delegate),
reboot_check_delay_(0),
+ is_all_updates_critical_(true), // See http://crosbug.com/10068
+ is_checking_for_update_(true),
is_downloading_update_(false),
- is_all_updates_critical_(true) { // See http://crosbug.com/10068
+ is_shown_(false),
+ actor_(new UpdateScreenViewsActor(delegate,
whywhat 2011/05/20 09:29:51 Discuss: how do we set up a different actor here?
+ kUpdateScreenWidth,
+ kUpdateScreenHeight)) {
GetInstanceSet().insert(this);
}
UpdateScreen::~UpdateScreen() {
- // Remove pointer to this object from view.
- if (view())
- view()->set_controller(NULL);
CrosLibrary::Get()->GetUpdateLibrary()->RemoveObserver(this);
GetInstanceSet().erase(this);
}
void UpdateScreen::UpdateStatusChanged(UpdateLibrary* library) {
UpdateStatusOperation status = library->status().status;
- if (checking_for_update_ && status > UPDATE_STATUS_CHECKING_FOR_UPDATE) {
- checking_for_update_ = false;
+ if (is_checking_for_update_ && status > UPDATE_STATUS_CHECKING_FOR_UPDATE) {
+ is_checking_for_update_ = false;
}
switch (status) {
@@ -85,7 +97,7 @@ void UpdateScreen::UpdateStatusChanged(UpdateLibrary* library) {
break;
case UPDATE_STATUS_UPDATE_AVAILABLE:
MakeSureScreenIsShown();
- view()->SetProgress(kBeforeDownloadProgress);
+ actor_->SetProgress(kBeforeDownloadProgress);
if (!HasCriticalUpdate()) {
LOG(INFO) << "Noncritical update available: "
<< library->status().new_version;
@@ -111,27 +123,27 @@ void UpdateScreen::UpdateStatusChanged(UpdateLibrary* library) {
<< library->status().new_version;
}
}
- view()->ShowCurtain(false);
+ actor_->ShowCurtain(false);
int download_progress = static_cast<int>(
library->status().download_progress * kDownloadProgressIncrement);
- view()->SetProgress(kBeforeDownloadProgress + download_progress);
+ actor_->SetProgress(kBeforeDownloadProgress + download_progress);
}
break;
case UPDATE_STATUS_VERIFYING:
MakeSureScreenIsShown();
- view()->SetProgress(kBeforeVerifyingProgress);
+ actor_->SetProgress(kBeforeVerifyingProgress);
break;
case UPDATE_STATUS_FINALIZING:
MakeSureScreenIsShown();
- view()->SetProgress(kBeforeFinalizingProgress);
+ actor_->SetProgress(kBeforeFinalizingProgress);
break;
case UPDATE_STATUS_UPDATED_NEED_REBOOT:
MakeSureScreenIsShown();
// Make sure that first OOBE stage won't be shown after reboot.
WizardController::MarkOobeCompleted();
- view()->SetProgress(kProgressComplete);
+ actor_->SetProgress(kProgressComplete);
if (HasCriticalUpdate()) {
- view()->ShowCurtain(false);
+ actor_->ShowCurtain(false);
VLOG(1) << "Initiate reboot after update";
CrosLibrary::Get()->GetUpdateLibrary()->RebootAfterUpdate();
reboot_timer_.Start(base::TimeDelta::FromSeconds(reboot_check_delay_),
@@ -152,29 +164,7 @@ void UpdateScreen::UpdateStatusChanged(UpdateLibrary* library) {
}
}
-namespace {
-// Invoked from call to RequestUpdateCheck upon completion of the DBus call.
-void StartUpdateCallback(void* user_data,
- UpdateResult result,
- const char* msg) {
- if (result != UPDATE_RESULT_SUCCESS) {
- DCHECK(user_data);
- UpdateScreen* screen = static_cast<UpdateScreen*>(user_data);
- if (UpdateScreen::HasInstance(screen))
- screen->ExitUpdate(UpdateScreen::REASON_UPDATE_INIT_FAILED);
- }
-}
-} // namespace
-
void UpdateScreen::StartUpdate() {
- // Reset view if view was created.
- if (view()) {
- view()->Reset();
- view()->set_controller(this);
- is_downloading_update_ = false;
- view()->SetProgress(kBeforeUpdateCheckProgress);
- }
-
if (!CrosLibrary::Get()->EnsureLoaded()) {
LOG(ERROR) << "Error loading CrosLibrary";
ExitUpdate(REASON_UPDATE_INIT_FAILED);
@@ -187,17 +177,22 @@ void UpdateScreen::StartUpdate() {
}
void UpdateScreen::CancelUpdate() {
- // Screen has longer lifetime than it's view.
- // View is deleted after wizard proceeds to the next screen.
- if (view())
- ExitUpdate(REASON_UPDATE_CANCELED);
+ ExitUpdate(REASON_UPDATE_CANCELED);
}
void UpdateScreen::Show() {
- DefaultViewScreen<UpdateView>::Show();
- view()->set_controller(this);
- is_downloading_update_ = false;
- view()->SetProgress(kBeforeUpdateCheckProgress);
+ is_shown_ = true;
+ actor_->Show();
+ actor_->SetProgress(kBeforeUpdateCheckProgress);
+}
+
+void UpdateScreen::Hide() {
+ actor_->Hide();
+ is_shown_ = false;
+}
+
+gfx::Size UpdateScreen::GetScreenSize() const {
+ return gfx::Size(kUpdateScreenWidth, kUpdateScreenHeight);
}
void UpdateScreen::ExitUpdate(UpdateScreen::ExitReason reason) {
@@ -205,7 +200,7 @@ void UpdateScreen::ExitUpdate(UpdateScreen::ExitReason reason) {
if (CrosLibrary::Get()->EnsureLoaded())
CrosLibrary::Get()->GetUpdateLibrary()->RemoveObserver(this);
- switch(reason) {
+ switch (reason) {
case REASON_UPDATE_CANCELED:
observer->OnExit(ScreenObserver::UPDATE_NOUPDATE);
break;
@@ -230,7 +225,7 @@ void UpdateScreen::ExitUpdate(UpdateScreen::ExitReason reason) {
break;
case UPDATE_STATUS_ERROR:
case UPDATE_STATUS_REPORTING_ERROR_EVENT:
- observer->OnExit(checking_for_update_ ?
+ observer->OnExit(is_checking_for_update_ ?
ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE :
ScreenObserver::UPDATE_ERROR_UPDATING);
break;
@@ -247,13 +242,12 @@ void UpdateScreen::ExitUpdate(UpdateScreen::ExitReason reason) {
void UpdateScreen::OnWaitForRebootTimeElapsed() {
LOG(ERROR) << "Unable to reboot - asking user for a manual reboot.";
MakeSureScreenIsShown();
- view()->ShowManualRebootInfo();
+ actor_->ShowManualRebootInfo();
}
void UpdateScreen::MakeSureScreenIsShown() {
- if (!view()) {
+ if (!is_shown_)
delegate()->ShowCurrentScreen();
- }
}
void UpdateScreen::SetRebootCheckDelay(int seconds) {
« no previous file with comments | « chrome/browser/chromeos/login/update_screen.h ('k') | chrome/browser/chromeos/login/update_screen_actor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698