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

Unified Diff: chrome/browser/ui/webui/chromeos/login/reset_screen_handler.cc

Issue 491263002: UI flow rework for device reset options. Reset made available from gaia screen. Tests adapted. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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
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 83f9ef2d0803649f0b8bbe9baa9889ad71d05e81..72a84da7a882f48497753610a876891736399f70 100644
--- a/chrome/browser/ui/webui/chromeos/login/reset_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/reset_screen_handler.cc
@@ -46,6 +46,7 @@ ResetScreenHandler::ResetScreenHandler()
restart_required_(true),
reboot_was_requested_(false),
rollback_available_(false),
+ rollback_checked_(false),
preparing_for_rollback_(false),
weak_ptr_factory_(this) {
}
@@ -61,35 +62,26 @@ void ResetScreenHandler::PrepareToShow() {
void ResetScreenHandler::ShowWithParams() {
int dialog_type;
- if (reboot_was_requested_) {
- dialog_type = rollback_available_ ?
- reset::DIALOG_SHORTCUT_CONFIRMING_POWERWASH_AND_ROLLBACK :
- reset::DIALOG_SHORTCUT_CONFIRMING_POWERWASH_ONLY;
+ if (restart_required_) {
+ dialog_type = reset::DIALOG_SHORTCUT_RESTART_REQUIRED;
} else {
- dialog_type = rollback_available_ ?
- reset::DIALOG_SHORTCUT_OFFERING_ROLLBACK_AVAILABLE :
- reset::DIALOG_SHORTCUT_OFFERING_ROLLBACK_UNAVAILABLE;
+ dialog_type = reset::DIALOG_SHORTCUT_OFFERING_ROLLBACK_UNAVAILABLE;
}
UMA_HISTOGRAM_ENUMERATION("Reset.ChromeOS.PowerwashDialogShown",
dialog_type,
reset::DIALOG_VIEW_TYPE_SIZE);
- base::DictionaryValue reset_screen_params;
- reset_screen_params.SetBoolean("showRestartMsg", restart_required_);
- reset_screen_params.SetBoolean(
- "showRollbackOption", rollback_available_ && !reboot_was_requested_);
- reset_screen_params.SetBoolean(
- "simpleConfirm", reboot_was_requested_ && !rollback_available_);
- reset_screen_params.SetBoolean(
- "rollbackConfirm", reboot_was_requested_ && rollback_available_);
-
PrefService* prefs = g_browser_process->local_state();
prefs->SetBoolean(prefs::kFactoryResetRequested, false);
- prefs->SetBoolean(prefs::kRollbackRequested, false);
prefs->CommitPendingWrite();
+ base::DictionaryValue reset_screen_params;
+ reset_screen_params.SetBoolean("restartRequired", restart_required_);
+ reset_screen_params.SetBoolean("rollbackAvailable", rollback_available_);
ShowScreen(kResetScreen, &reset_screen_params);
}
+
+
Dmitry Polukhin 2014/08/22 07:58:23 Nit, remove duplicating empty strings.
merkulova 2014/08/22 09:46:46 Done.
void ResetScreenHandler::Show() {
if (!page_is_ready()) {
show_on_init_ = true;
@@ -103,6 +95,7 @@ void ResetScreenHandler::ChooseAndApplyShowScenario() {
PrefService* prefs = g_browser_process->local_state();
restart_required_ = !CommandLine::ForCurrentProcess()->HasSwitch(
switches::kFirstExecAfterBoot);
+
reboot_was_requested_ = false;
rollback_available_ = false;
preparing_for_rollback_ = false;
@@ -115,13 +108,12 @@ void ResetScreenHandler::ChooseAndApplyShowScenario() {
ShowWithParams();
} else if (!restart_required_ && reboot_was_requested_) {
// First exec after boot.
- PrefService* prefs = g_browser_process->local_state();
- rollback_available_ = prefs->GetBoolean(prefs::kRollbackRequested);
- ShowWithParams();
- } else {
chromeos::DBusThreadManager::Get()->GetUpdateEngineClient()->
CanRollbackCheck(base::Bind(&ResetScreenHandler::OnRollbackCheck,
weak_ptr_factory_.GetWeakPtr()));
+ } else {
+ // Will require restart.
+ ShowWithParams();
}
}
@@ -141,13 +133,15 @@ void ResetScreenHandler::DeclareLocalizedValues(
builder->Add("resetScreenAccessibleTitle", IDS_RESET_SCREEN_TITLE);
builder->Add("resetScreenIconTitle",IDS_RESET_SCREEN_ICON_TITLE);
builder->Add("cancelButton", IDS_CANCEL);
+ builder->Add("resetButtonReset", IDS_RESET_SCREEN_RESET);
+ builder->Add("resetButtonRestart", IDS_RELAUNCH_BUTTON);
+ builder->Add("resetButtonPowerwash", IDS_RESET_SCREEN_POWERWASH);
+ builder->Add("resetButtonPowerwashAndRollback",
+ IDS_RESET_SCREEN_POWERWASH_AND_REVERT);
builder->Add("resetWarningDataDetails",
IDS_RESET_SCREEN_WARNING_DETAILS_DATA);
builder->Add("resetRestartMessage", IDS_RESET_SCREEN_RESTART_MSG);
- builder->AddF("resetRollbackOption",
- IDS_RESET_SCREEN_ROLLBACK_OPTION,
- IDS_SHORT_PRODUCT_NAME);
builder->AddF("resetRevertPromise",
IDS_RESET_SCREEN_PREPARING_REVERT_PROMISE,
IDS_SHORT_PRODUCT_NAME);
@@ -155,31 +149,29 @@ void ResetScreenHandler::DeclareLocalizedValues(
IDS_RESET_SCREEN_PREPARING_REVERT_SPINNER_MESSAGE,
IDS_SHORT_PRODUCT_NAME);
- // Different variants of the same UI elements for all dialog cases.
- builder->Add("resetButtonReset", IDS_RESET_SCREEN_RESET);
- builder->Add("resetButtonRelaunch", IDS_RELAUNCH_BUTTON);
- builder->Add("resetButtonPowerwash", IDS_RESET_SCREEN_POWERWASH);
-
- builder->AddF(
- "resetAndRollbackWarningTextConfirmational",
- IDS_RESET_SCREEN_CONFIRMATION_WARNING_POWERWASH_AND_ROLLBACK_MSG,
- IDS_SHORT_PRODUCT_NAME);
- builder->AddF("resetWarningTextConfirmational",
- IDS_RESET_SCREEN_CONFIRMATION_WARNING_POWERWASH_MSG,
- IDS_SHORT_PRODUCT_NAME);
- builder->AddF("resetWarningTextInitial",
+ // Variants for screen title.
+ builder->AddF("resetWarningTitle",
IDS_RESET_SCREEN_WARNING_MSG,
IDS_SHORT_PRODUCT_NAME);
+ builder->AddF("resetPowerwashWarningTitle",
+ IDS_RESET_SCREEN_WARNING_POWERWASH_MSG,
+ IDS_SHORT_PRODUCT_NAME);
+ builder->AddF("resetPowerwasAndRollbackhWarningTitle",
+ IDS_RESET_SCREEN_WARNING_POWERWASH_AND_ROLLBACK_MSG,
+ IDS_SHORT_PRODUCT_NAME);
- builder->AddF(
- "resetAndRollbackWarningDetailsConfirmational",
- IDS_RESET_SCREEN_CONFIRMATION_WARNING_ROLLBACK_DETAILS,
- IDS_SHORT_PRODUCT_NAME);
- builder->AddF("resetWarningDetailsConfirmational",
+ // Variants for screen message.
+ builder->AddF("resetPowerwashWarningDetails",
+ IDS_RESET_SCREEN_WARNING_DETAILS,
+ IDS_SHORT_PRODUCT_NAME);
+ builder->AddF("resetPowerwashRollbackWarningDetails",
+ IDS_RESET_SCREEN_WARNING_POWERWASH_AND_ROLLBACK_MSG,
+ IDS_SHORT_PRODUCT_NAME);
+ builder->AddF("resetPowerwashConfirmationDetails",
IDS_RESET_SCREEN_CONFIRMATION_WARNING_DETAILS,
IDS_SHORT_PRODUCT_NAME);
- builder->AddF("resetWarningDetailsInitial",
- IDS_RESET_SCREEN_WARNING_DETAILS,
+ builder->AddF("resetPowerwashRollbackConfirmationDetails",
+ IDS_RESET_SCREEN_CONFIRMATION_WARNING_ROLLBACK_DETAILS,
IDS_SHORT_PRODUCT_NAME);
}
@@ -193,7 +185,6 @@ void ResetScreenHandler::OnRollbackCheck(bool can_rollback) {
// static
void ResetScreenHandler::RegisterPrefs(PrefRegistrySimple* registry) {
registry->RegisterBooleanPref(prefs::kFactoryResetRequested, false);
- registry->RegisterBooleanPref(prefs::kRollbackRequested, false);
}
void ResetScreenHandler::Initialize() {
@@ -211,6 +202,12 @@ void ResetScreenHandler::RegisterMessages() {
AddCallback("restartOnReset", &ResetScreenHandler::HandleOnRestart);
AddCallback("powerwashOnReset", &ResetScreenHandler::HandleOnPowerwash);
AddCallback("resetOnLearnMore", &ResetScreenHandler::HandleOnLearnMore);
+ AddCallback(
+ "showRollbackOnResetScreen", &ResetScreenHandler::HandleOnShowRollback);
+ AddCallback(
+ "hideRollbackOnResetScreen", &ResetScreenHandler::HandleOnHideRollback);
+ AddCallback(
+ "showConfirmationOnReset", &ResetScreenHandler::HandleOnShowConfirm);
}
void ResetScreenHandler::HandleOnCancel() {
@@ -221,26 +218,27 @@ void ResetScreenHandler::HandleOnCancel() {
DBusThreadManager::Get()->GetUpdateEngineClient()->RemoveObserver(this);
}
-void ResetScreenHandler::HandleOnRestart(bool should_rollback) {
+void ResetScreenHandler::HandleOnRestart() {
PrefService* prefs = g_browser_process->local_state();
prefs->SetBoolean(prefs::kFactoryResetRequested, true);
- prefs->SetBoolean(prefs::kRollbackRequested, should_rollback);
prefs->CommitPendingWrite();
chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart();
}
void ResetScreenHandler::HandleOnPowerwash(bool rollback_checked) {
- if (rollback_available_ && (rollback_checked || reboot_was_requested_)) {
+ 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();
}
@@ -252,6 +250,35 @@ void ResetScreenHandler::HandleOnLearnMore() {
help_app_->ShowHelpTopic(HelpAppLauncher::HELP_POWERWASH);
}
+void ResetScreenHandler::HandleOnShowRollback() {
+ VLOG(1) << "Requested rollback availability" << rollback_available_;
+ if (rollback_available_) {
+ UMA_HISTOGRAM_ENUMERATION(
+ "Reset.ChromeOS.PowerwashDialogShown",
+ reset::DIALOG_SHORTCUT_OFFERING_ROLLBACK_AVAILABLE,
+ reset::DIALOG_VIEW_TYPE_SIZE);
+ CallJS("showRollbackOption");
+ rollback_checked_ = true;
+ }
+}
+
+void ResetScreenHandler::HandleOnHideRollback() {
+ if (rollback_available_ && rollback_checked_) {
+ CallJS("hideRollbackOption");
+ rollback_checked_ = false;
+ }
+}
+
+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;

Powered by Google App Engine
This is Rietveld 408576698