Index: chrome/browser/ui/webui/chromeos/login/reset_screen_handler.cc |
diff --git a/chrome/browser/ui/webui/chromeos/login/reset_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/reset_screen_handler.cc |
index 78c1c68437d9f4d0fab56a6bf8a801b805ab885b..5b35a627c022798fbcfeb7b30d7871f688b60971 100644 |
--- a/chrome/browser/ui/webui/chromeos/login/reset_screen_handler.cc |
+++ b/chrome/browser/ui/webui/chromeos/login/reset_screen_handler.cc |
@@ -6,125 +6,51 @@ |
#include <string> |
-#include "base/command_line.h" |
-#include "base/metrics/histogram.h" |
#include "base/prefs/pref_registry_simple.h" |
-#include "base/prefs/pref_service.h" |
#include "base/values.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/chromeos/login/help_app_launcher.h" |
-#include "chrome/browser/chromeos/reset/metrics.h" |
+#include "chrome/browser/chromeos/login/screens/reset_model.h" |
#include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" |
#include "chrome/common/pref_names.h" |
#include "chrome/grit/chromium_strings.h" |
#include "chrome/grit/generated_resources.h" |
-#include "chromeos/chromeos_switches.h" |
-#include "chromeos/dbus/dbus_thread_manager.h" |
-#include "chromeos/dbus/power_manager_client.h" |
#include "chromeos/dbus/session_manager_client.h" |
-#include "chromeos/dbus/update_engine_client.h" |
#include "components/login/localized_values_builder.h" |
-#include "content/public/browser/browser_thread.h" |
namespace { |
const char kJsScreenPath[] = "login.ResetScreen"; |
-// Reset screen id. |
-const char kResetScreen[] = "reset"; |
- |
-const int kErrorUIStateRollback = 7; |
- |
} // namespace |
namespace chromeos { |
ResetScreenHandler::ResetScreenHandler() |
: BaseScreenHandler(kJsScreenPath), |
- delegate_(NULL), |
- show_on_init_(false), |
- restart_required_(true), |
- reboot_was_requested_(false), |
- rollback_available_(false), |
- rollback_checked_(false), |
- preparing_for_rollback_(false), |
- weak_ptr_factory_(this) { |
+ model_(nullptr), |
+ show_on_init_(false) { |
} |
ResetScreenHandler::~ResetScreenHandler() { |
- if (delegate_) |
- delegate_->OnActorDestroyed(this); |
- DBusThreadManager::Get()->GetUpdateEngineClient()->RemoveObserver(this); |
+ if (model_) |
+ model_->OnViewDestroyed(this); |
} |
void ResetScreenHandler::PrepareToShow() { |
} |
-void ResetScreenHandler::ShowWithParams() { |
- int dialog_type; |
- if (restart_required_) { |
- dialog_type = reset::DIALOG_SHORTCUT_RESTART_REQUIRED; |
- } else { |
- dialog_type = reset::DIALOG_SHORTCUT_OFFERING_ROLLBACK_UNAVAILABLE; |
- } |
- UMA_HISTOGRAM_ENUMERATION("Reset.ChromeOS.PowerwashDialogShown", |
- dialog_type, |
- reset::DIALOG_VIEW_TYPE_SIZE); |
- |
- PrefService* prefs = g_browser_process->local_state(); |
- prefs->SetBoolean(prefs::kFactoryResetRequested, false); |
- prefs->CommitPendingWrite(); |
- base::DictionaryValue reset_screen_params; |
- reset_screen_params.SetBoolean("restartRequired", restart_required_); |
- reset_screen_params.SetBoolean("rollbackAvailable", rollback_available_); |
-#if defined(OFFICIAL_BUILD) |
- reset_screen_params.SetBoolean("isOfficialBuild", true); |
-#endif |
- ShowScreen(kResetScreen, &reset_screen_params); |
-} |
- |
void ResetScreenHandler::Show() { |
if (!page_is_ready()) { |
show_on_init_ = true; |
return; |
} |
- |
- ChooseAndApplyShowScenario(); |
-} |
- |
-void ResetScreenHandler::ChooseAndApplyShowScenario() { |
- PrefService* prefs = g_browser_process->local_state(); |
- restart_required_ = !base::CommandLine::ForCurrentProcess()->HasSwitch( |
- switches::kFirstExecAfterBoot); |
- |
- reboot_was_requested_ = false; |
- preparing_for_rollback_ = false; |
- if (!restart_required_) // First exec after boot. |
- reboot_was_requested_ = prefs->GetBoolean(prefs::kFactoryResetRequested); |
- |
- if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
- switches::kDisableRollbackOption)) { |
- rollback_available_ = false; |
- ShowWithParams(); |
- } else if (restart_required_) { |
- // Will require restart. |
- ShowWithParams(); |
- } else { |
- chromeos::DBusThreadManager::Get()->GetUpdateEngineClient()-> |
- CanRollbackCheck(base::Bind(&ResetScreenHandler::OnRollbackCheck, |
- weak_ptr_factory_.GetWeakPtr())); |
- } |
+ ShowScreen(OobeUI::kScreenOobeReset, NULL); |
} |
void ResetScreenHandler::Hide() { |
} |
-void ResetScreenHandler::SetDelegate(Delegate* delegate) { |
- delegate_ = delegate; |
- if (page_is_ready()) |
- Initialize(); |
-} |
- |
void ResetScreenHandler::DeclareLocalizedValues( |
::login::LocalizedValuesBuilder* builder) { |
builder->Add("resetScreenTitle", IDS_RESET_SCREEN_TITLE); |
@@ -168,20 +94,13 @@ void ResetScreenHandler::DeclareLocalizedValues( |
builder->Add("confirmResetButton", IDS_RESET_SCREEN_POPUP_CONFIRM_BUTTON); |
} |
-// Invoked from call to CanRollbackCheck upon completion of the DBus call. |
-void ResetScreenHandler::OnRollbackCheck(bool can_rollback) { |
- VLOG(1) << "Callback from CanRollbackCheck, result " << can_rollback; |
- rollback_available_ = can_rollback; |
- ShowWithParams(); |
-} |
- |
// static |
void ResetScreenHandler::RegisterPrefs(PrefRegistrySimple* registry) { |
registry->RegisterBooleanPref(prefs::kFactoryResetRequested, false); |
} |
void ResetScreenHandler::Initialize() { |
- if (!page_is_ready() || !delegate_) |
+ if (!page_is_ready()) |
return; |
if (show_on_init_) { |
@@ -190,107 +109,14 @@ void ResetScreenHandler::Initialize() { |
} |
} |
-void ResetScreenHandler::RegisterMessages() { |
- AddCallback("cancelOnReset", &ResetScreenHandler::HandleOnCancel); |
- AddCallback("restartOnReset", &ResetScreenHandler::HandleOnRestart); |
- AddCallback("powerwashOnReset", &ResetScreenHandler::HandleOnPowerwash); |
- AddCallback("resetOnLearnMore", &ResetScreenHandler::HandleOnLearnMore); |
- AddCallback("toggleRollbackOnResetScreen", |
- &ResetScreenHandler::HandleOnToggleRollback); |
- AddCallback( |
- "showConfirmationOnReset", &ResetScreenHandler::HandleOnShowConfirm); |
-} |
- |
-void ResetScreenHandler::HandleOnCancel() { |
- if (preparing_for_rollback_) |
- return; |
- // Hide Rollback view for the next show. |
- if (rollback_available_ && rollback_checked_) |
- HandleOnToggleRollback(); |
- if (delegate_) |
- delegate_->OnExit(); |
- DBusThreadManager::Get()->GetUpdateEngineClient()->RemoveObserver(this); |
-} |
- |
-void ResetScreenHandler::HandleOnRestart() { |
- PrefService* prefs = g_browser_process->local_state(); |
- prefs->SetBoolean(prefs::kFactoryResetRequested, true); |
- prefs->CommitPendingWrite(); |
- |
- chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart(); |
-} |
- |
-void ResetScreenHandler::HandleOnPowerwash(bool rollback_checked) { |
- if (rollback_available_ && rollback_checked) { |
- preparing_for_rollback_ = true; |
- CallJS("updateViewOnRollbackCall"); |
- DBusThreadManager::Get()->GetUpdateEngineClient()->AddObserver(this); |
- VLOG(1) << "Starting Rollback"; |
- chromeos::DBusThreadManager::Get()->GetUpdateEngineClient()->Rollback(); |
- } else { |
- if (rollback_checked && !rollback_available_) { |
- NOTREACHED() << |
- "Rollback was checked but not available. Starting powerwash."; |
- } |
- VLOG(1) << "Starting Powerwash"; |
- chromeos::DBusThreadManager::Get()->GetSessionManagerClient()-> |
- StartDeviceWipe(); |
- } |
-} |
- |
-void ResetScreenHandler::HandleOnLearnMore() { |
- VLOG(1) << "Trying to view the help article about reset options."; |
- if (!help_app_.get()) |
- help_app_ = new HelpAppLauncher(GetNativeWindow()); |
- help_app_->ShowHelpTopic(HelpAppLauncher::HELP_POWERWASH); |
+void ResetScreenHandler::Bind(ResetModel& model) { |
+ model_ = &model; |
+ BaseScreenHandler::SetBaseScreen(model_); |
} |
-void ResetScreenHandler::HandleOnToggleRollback() { |
- // Hide Rollback if visible. |
- if (rollback_available_ && rollback_checked_) { |
- VLOG(1) << "Hiding rollback view on reset screen"; |
- CallJS("hideRollbackOption"); |
- rollback_checked_ = false; |
- return; |
- } |
- |
- // Show Rollback if available. |
- VLOG(1) << "Requested rollback availability" << rollback_available_; |
- if (rollback_available_ && !rollback_checked_) { |
- UMA_HISTOGRAM_ENUMERATION( |
- "Reset.ChromeOS.PowerwashDialogShown", |
- reset::DIALOG_SHORTCUT_OFFERING_ROLLBACK_AVAILABLE, |
- reset::DIALOG_VIEW_TYPE_SIZE); |
- CallJS("showRollbackOption"); |
- rollback_checked_ = true; |
- } |
-} |
- |
-void ResetScreenHandler::HandleOnShowConfirm() { |
- int dialog_type = rollback_checked_ ? |
- reset::DIALOG_SHORTCUT_CONFIRMING_POWERWASH_AND_ROLLBACK : |
- reset::DIALOG_SHORTCUT_CONFIRMING_POWERWASH_ONLY; |
- UMA_HISTOGRAM_ENUMERATION( |
- "Reset.ChromeOS.PowerwashDialogShown", |
- dialog_type, |
- reset::DIALOG_VIEW_TYPE_SIZE); |
-} |
- |
-void ResetScreenHandler::UpdateStatusChanged( |
- const UpdateEngineClient::Status& status) { |
- VLOG(1) << "Update status change to " << status.status; |
- if (status.status == UpdateEngineClient::UPDATE_STATUS_ERROR || |
- status.status == |
- UpdateEngineClient::UPDATE_STATUS_REPORTING_ERROR_EVENT) { |
- preparing_for_rollback_ = false; |
- // Show error screen. |
- base::DictionaryValue params; |
- params.SetInteger("uiState", kErrorUIStateRollback); |
- ShowScreen(OobeUI::kScreenErrorMessage, ¶ms); |
- } else if (status.status == |
- UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT) { |
- DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart(); |
- } |
+void ResetScreenHandler::Unbind() { |
+ model_ = nullptr; |
+ BaseScreenHandler::SetBaseScreen(nullptr); |
} |
} // namespace chromeos |