Index: chrome/browser/chromeos/login/wizard_controller.cc |
diff --git a/chrome/browser/chromeos/login/wizard_controller.cc b/chrome/browser/chromeos/login/wizard_controller.cc |
index bba472f61c4af8720eb6d88e8a015d4e84ed39fd..0049bcafb5309eeed4a55480ea7a2faeab2cbca4 100644 |
--- a/chrome/browser/chromeos/login/wizard_controller.cc |
+++ b/chrome/browser/chromeos/login/wizard_controller.cc |
@@ -277,143 +277,110 @@ void WizardController::Init( |
} |
chromeos::NetworkScreen* WizardController::GetNetworkScreen() { |
- if (!network_screen_.get()) |
- network_screen_.reset(new chromeos::NetworkScreen( |
- this, oobe_display_->GetNetworkScreenActor())); |
- return network_screen_.get(); |
+ return static_cast<chromeos::NetworkScreen*>(GetScreen(kNetworkScreenName)); |
} |
chromeos::UpdateScreen* WizardController::GetUpdateScreen() { |
- if (!update_screen_.get()) { |
- update_screen_.reset(new chromeos::UpdateScreen( |
- this, oobe_display_->GetUpdateScreenActor())); |
- update_screen_->SetRebootCheckDelay(kWaitForRebootTimeSec); |
- } |
- return update_screen_.get(); |
+ return static_cast<chromeos::UpdateScreen*>(GetScreen(kUpdateScreenName)); |
} |
chromeos::UserImageScreen* WizardController::GetUserImageScreen() { |
- if (!user_image_screen_.get()) |
- user_image_screen_.reset( |
- new chromeos::UserImageScreen( |
- this, oobe_display_->GetUserImageScreenActor())); |
- return user_image_screen_.get(); |
-} |
- |
-chromeos::EulaScreen* WizardController::GetEulaScreen() { |
- if (!eula_screen_.get()) |
- eula_screen_.reset(new chromeos::EulaScreen( |
- this, oobe_display_->GetEulaScreenActor())); |
- return eula_screen_.get(); |
-} |
- |
-chromeos::EnrollmentScreen* |
- WizardController::GetEnrollmentScreen() { |
- if (!enrollment_screen_.get()) { |
- enrollment_screen_.reset( |
- new chromeos::EnrollmentScreen( |
- this, oobe_display_->GetEnrollmentScreenActor())); |
- } |
- return enrollment_screen_.get(); |
-} |
- |
-chromeos::ResetScreen* WizardController::GetResetScreen() { |
- if (!reset_screen_.get()) { |
- reset_screen_.reset( |
- new chromeos::ResetScreen(this, oobe_display_->GetResetScreenActor())); |
- } |
- return reset_screen_.get(); |
-} |
- |
-chromeos::KioskEnableScreen* WizardController::GetKioskEnableScreen() { |
- if (!kiosk_enable_screen_.get()) { |
- kiosk_enable_screen_.reset( |
- new chromeos::KioskEnableScreen( |
- this, |
- oobe_display_->GetKioskEnableScreenActor())); |
- } |
- return kiosk_enable_screen_.get(); |
-} |
- |
-chromeos::KioskAutolaunchScreen* WizardController::GetKioskAutolaunchScreen() { |
- if (!autolaunch_screen_.get()) { |
- autolaunch_screen_.reset( |
- new chromeos::KioskAutolaunchScreen( |
- this, oobe_display_->GetKioskAutolaunchScreenActor())); |
- } |
- return autolaunch_screen_.get(); |
+ return static_cast<chromeos::UserImageScreen*>( |
+ GetScreen(kUserImageScreenName)); |
} |
-chromeos::TermsOfServiceScreen* WizardController::GetTermsOfServiceScreen() { |
- if (!terms_of_service_screen_.get()) { |
- terms_of_service_screen_.reset( |
- new chromeos::TermsOfServiceScreen( |
- this, oobe_display_->GetTermsOfServiceScreenActor())); |
- } |
- return terms_of_service_screen_.get(); |
-} |
- |
-chromeos::WrongHWIDScreen* WizardController::GetWrongHWIDScreen() { |
- if (!wrong_hwid_screen_.get()) { |
- wrong_hwid_screen_.reset( |
- new chromeos::WrongHWIDScreen( |
- this, oobe_display_->GetWrongHWIDScreenActor())); |
- } |
- return wrong_hwid_screen_.get(); |
+chromeos::EnrollmentScreen* WizardController::GetEnrollmentScreen() { |
+ return static_cast<chromeos::EnrollmentScreen*>( |
+ GetScreen(kEnrollmentScreenName)); |
} |
chromeos::AutoEnrollmentCheckScreen* |
WizardController::GetAutoEnrollmentCheckScreen() { |
- if (!auto_enrollment_check_screen_.get()) { |
- auto_enrollment_check_screen_.reset( |
- new chromeos::AutoEnrollmentCheckScreen( |
- this, |
- oobe_display_->GetAutoEnrollmentCheckScreenActor())); |
- } |
- return auto_enrollment_check_screen_.get(); |
+ return static_cast<chromeos::AutoEnrollmentCheckScreen*>( |
+ GetScreen(kAutoEnrollmentCheckScreenName)); |
} |
chromeos::SupervisedUserCreationScreen* |
WizardController::GetSupervisedUserCreationScreen() { |
- if (!supervised_user_creation_screen_.get()) { |
- supervised_user_creation_screen_.reset( |
- new chromeos::SupervisedUserCreationScreen( |
- this, oobe_display_->GetSupervisedUserCreationScreenActor())); |
- } |
- return supervised_user_creation_screen_.get(); |
+ return static_cast<chromeos::SupervisedUserCreationScreen*>( |
+ GetScreen(kSupervisedUserCreationScreenName)); |
} |
-chromeos::HIDDetectionScreen* WizardController::GetHIDDetectionScreen() { |
- if (!hid_detection_screen_.get()) { |
- hid_detection_screen_.reset( |
- new chromeos::HIDDetectionScreen( |
- this, oobe_display_->GetHIDDetectionScreenActor())); |
- } |
- return hid_detection_screen_.get(); |
+chromeos::ErrorScreen* WizardController::GetErrorScreen() { |
+ return static_cast<chromeos::ErrorScreen*>(GetScreen(kErrorScreenName)); |
} |
-ControllerPairingScreen* WizardController::GetControllerPairingScreen() { |
- if (!controller_pairing_screen_) { |
- controller_pairing_screen_.reset(new ControllerPairingScreen( |
- this, oobe_display_->GetControllerPairingScreenActor())); |
+WizardScreen* WizardController::GetScreen(const std::string& screen_name) { |
+ ScreenMap::const_iterator iter = screens_.find(screen_name); |
+ if (iter != screens_.end()) { |
+ return iter->second.get(); |
} |
- return controller_pairing_screen_.get(); |
+ WizardScreen* result = CreateScreen(screen_name); |
+ DCHECK(result) << "Can not create screen named " << screen_name; |
+ screens_[screen_name] = make_linked_ptr(result); |
+ return result; |
} |
-HostPairingScreen* WizardController::GetHostPairingScreen() { |
- if (!host_pairing_screen_) { |
- host_pairing_screen_.reset(new HostPairingScreen( |
- this, oobe_display_->GetHostPairingScreenActor())); |
+WizardScreen* WizardController::CreateScreen(const std::string& screen_name) { |
+ if (screen_name == kNetworkScreenName) { |
+ return new chromeos::NetworkScreen(this, |
+ oobe_display_->GetNetworkScreenActor()); |
+ } else if (screen_name == kErrorScreenName) { |
+ return new chromeos::ErrorScreen(this, |
+ oobe_display_->GetErrorScreenActor()); |
+ } else if (screen_name == kUpdateScreenName) { |
+ chromeos::UpdateScreen* result = |
+ new chromeos::UpdateScreen(this, oobe_display_->GetUpdateScreenActor()); |
+ result->SetRebootCheckDelay(kWaitForRebootTimeSec); |
+ return result; |
+ } else if (screen_name == kUserImageScreenName) { |
+ return new chromeos::UserImageScreen( |
+ this, oobe_display_->GetUserImageScreenActor()); |
+ } else if (screen_name == kEulaScreenName) { |
+ return new chromeos::EulaScreen(this, oobe_display_->GetEulaScreenActor()); |
+ } else if (screen_name == kEnrollmentScreenName) { |
+ return new chromeos::EnrollmentScreen( |
+ this, oobe_display_->GetEnrollmentScreenActor()); |
+ } else if (screen_name == kResetScreenName) { |
+ return new chromeos::ResetScreen(this, |
+ oobe_display_->GetResetScreenActor()); |
+ } else if (screen_name == kKioskEnableScreenName) { |
+ return new chromeos::KioskEnableScreen( |
+ this, oobe_display_->GetKioskEnableScreenActor()); |
+ } else if (screen_name == kKioskAutolaunchScreenName) { |
+ return new chromeos::KioskAutolaunchScreen( |
+ this, oobe_display_->GetKioskAutolaunchScreenActor()); |
+ } else if (screen_name == kTermsOfServiceScreenName) { |
+ return new chromeos::TermsOfServiceScreen( |
+ this, oobe_display_->GetTermsOfServiceScreenActor()); |
+ } else if (screen_name == kWrongHWIDScreenName) { |
+ return new chromeos::WrongHWIDScreen( |
+ this, oobe_display_->GetWrongHWIDScreenActor()); |
+ } else if (screen_name == kSupervisedUserCreationScreenName) { |
+ return new chromeos::SupervisedUserCreationScreen( |
+ this, oobe_display_->GetSupervisedUserCreationScreenActor()); |
+ } else if (screen_name == kHIDDetectionScreenName) { |
+ return new chromeos::HIDDetectionScreen( |
+ this, oobe_display_->GetHIDDetectionScreenActor()); |
+ } else if (screen_name == kAutoEnrollmentCheckScreenName) { |
+ return new chromeos::AutoEnrollmentCheckScreen( |
+ this, oobe_display_->GetAutoEnrollmentCheckScreenActor()); |
+ } else if (screen_name == kControllerPairingScreenName) { |
+ return new ControllerPairingScreen( |
+ this, oobe_display_->GetControllerPairingScreenActor()); |
+ } else if (screen_name == kHostPairingScreenName) { |
+ return new HostPairingScreen(this, |
+ oobe_display_->GetHostPairingScreenActor()); |
} |
- return host_pairing_screen_.get(); |
+ return NULL; |
} |
void WizardController::ShowNetworkScreen() { |
VLOG(1) << "Showing network screen."; |
// Hide the status area initially; it only appears after OOBE first animates |
// in. Keep it visible if the user goes back to the existing network screen. |
- SetStatusAreaVisible(network_screen_.get()); |
- SetCurrentScreen(GetNetworkScreen()); |
+ SetStatusAreaVisible(screens_.count(kNetworkScreenName) > 0); |
+ SetCurrentScreen(GetScreen(kNetworkScreenName)); |
} |
void WizardController::ShowLoginScreen(const LoginScreenContext& context) { |
@@ -440,7 +407,7 @@ void WizardController::ResumeLoginScreen() { |
void WizardController::ShowUpdateScreen() { |
VLOG(1) << "Showing update screen."; |
SetStatusAreaVisible(true); |
- SetCurrentScreen(GetUpdateScreen()); |
+ SetCurrentScreen(GetScreen(kUpdateScreenName)); |
} |
void WizardController::ShowUserImageScreen() { |
@@ -459,13 +426,13 @@ void WizardController::ShowUserImageScreen() { |
// this produces undesired UX transitions. |
SetStatusAreaVisible(true); |
- SetCurrentScreen(GetUserImageScreen()); |
+ SetCurrentScreen(GetScreen(kUserImageScreenName)); |
} |
void WizardController::ShowEulaScreen() { |
VLOG(1) << "Showing EULA screen."; |
SetStatusAreaVisible(true); |
- SetCurrentScreen(GetEulaScreen()); |
+ SetCurrentScreen(GetScreen(kEulaScreenName)); |
} |
void WizardController::ShowEnrollmentScreen() { |
@@ -500,19 +467,19 @@ void WizardController::ShowEnrollmentScreen() { |
void WizardController::ShowResetScreen() { |
VLOG(1) << "Showing reset screen."; |
SetStatusAreaVisible(false); |
- SetCurrentScreen(GetResetScreen()); |
+ SetCurrentScreen(GetScreen(kResetScreenName)); |
} |
void WizardController::ShowKioskEnableScreen() { |
VLOG(1) << "Showing kiosk enable screen."; |
SetStatusAreaVisible(false); |
- SetCurrentScreen(GetKioskEnableScreen()); |
+ SetCurrentScreen(GetScreen(kKioskEnableScreenName)); |
} |
void WizardController::ShowKioskAutolaunchScreen() { |
VLOG(1) << "Showing kiosk autolaunch screen."; |
SetStatusAreaVisible(false); |
- SetCurrentScreen(GetKioskAutolaunchScreen()); |
+ SetCurrentScreen(GetScreen(kKioskAutolaunchScreenName)); |
} |
void WizardController::ShowTermsOfServiceScreen() { |
@@ -528,13 +495,13 @@ void WizardController::ShowTermsOfServiceScreen() { |
VLOG(1) << "Showing Terms of Service screen."; |
SetStatusAreaVisible(true); |
- SetCurrentScreen(GetTermsOfServiceScreen()); |
+ SetCurrentScreen(GetScreen(kTermsOfServiceScreenName)); |
} |
void WizardController::ShowWrongHWIDScreen() { |
VLOG(1) << "Showing wrong HWID screen."; |
SetStatusAreaVisible(false); |
- SetCurrentScreen(GetWrongHWIDScreen()); |
+ SetCurrentScreen(GetScreen(kWrongHWIDScreenName)); |
} |
void WizardController::ShowAutoEnrollmentCheckScreen() { |
@@ -548,27 +515,25 @@ void WizardController::ShowAutoEnrollmentCheckScreen() { |
void WizardController::ShowSupervisedUserCreationScreen() { |
VLOG(1) << "Showing Locally managed user creation screen screen."; |
SetStatusAreaVisible(true); |
- SupervisedUserCreationScreen* screen = |
- GetSupervisedUserCreationScreen(); |
- SetCurrentScreen(screen); |
+ SetCurrentScreen(GetScreen(kSupervisedUserCreationScreenName)); |
} |
void WizardController::ShowHIDDetectionScreen() { |
VLOG(1) << "Showing HID discovery screen."; |
SetStatusAreaVisible(true); |
- SetCurrentScreen(GetHIDDetectionScreen()); |
+ SetCurrentScreen(GetScreen(kHIDDetectionScreenName)); |
} |
void WizardController::ShowControllerPairingScreen() { |
VLOG(1) << "Showing controller pairing screen."; |
SetStatusAreaVisible(false); |
- SetCurrentScreen(GetControllerPairingScreen()); |
+ SetCurrentScreen(GetScreen(kControllerPairingScreenName)); |
} |
void WizardController::ShowHostPairingScreen() { |
VLOG(1) << "Showing host pairing screen."; |
SetStatusAreaVisible(false); |
- SetCurrentScreen(GetHostPairingScreen()); |
+ SetCurrentScreen(GetScreen(kHostPairingScreenName)); |
} |
void WizardController::SkipToLoginForTesting( |
@@ -797,7 +762,7 @@ void WizardController::OnHostPairingFinished() { |
void WizardController::InitiateOOBEUpdate() { |
PerformPostEulaActions(); |
- SetCurrentScreenSmooth(GetUpdateScreen(), true); |
+ SetCurrentScreenSmooth(GetScreen(kUpdateScreenName), true); |
GetUpdateScreen()->StartNetworkCheck(); |
} |
@@ -1059,17 +1024,9 @@ bool WizardController::GetUsageStatisticsReporting() const { |
return usage_statistics_reporting_; |
} |
-chromeos::ErrorScreen* WizardController::GetErrorScreen() { |
- if (!error_screen_.get()) { |
- error_screen_.reset( |
- new chromeos::ErrorScreen(this, oobe_display_->GetErrorScreenActor())); |
- } |
- return error_screen_.get(); |
-} |
- |
void WizardController::ShowErrorScreen() { |
VLOG(1) << "Showing error screen."; |
- SetCurrentScreen(GetErrorScreen()); |
+ SetCurrentScreen(GetScreen(kErrorScreenName)); |
} |
void WizardController::HideErrorScreen(WizardScreen* parent_screen) { |