Rollback option put behind the flag.

Recreation of issue 267393011.

BUG=368860

Review URL: https://codereview.chromium.org/280123003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@269851 0039d316-1c4b-4281-b951-d872f2087c98
parent f11bf40a
......@@ -105,7 +105,10 @@ IN_PROC_BROWSER_TEST_F(ResetTest, ShowAndCancel) {
JSExpect("!document.querySelector('#reset.hidden')");
CloseResetScreen();
JSExpect("!!document.querySelector('#reset.hidden')");
EXPECT_EQ(1, update_engine_client_->can_rollback_call_count());
if (CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableRollbackOption)) {
EXPECT_EQ(1, update_engine_client_->can_rollback_call_count());
}
}
IN_PROC_BROWSER_TEST_F(ResetTest, PRE_RestartBeforePowerwash) {
......@@ -177,15 +180,18 @@ IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, ShortcutInvokedCases) {
CloseResetScreen();
OobeScreenWaiter(OobeDisplay::SCREEN_ACCOUNT_PICKER).Wait();
// rollback available and checked
InvokeResetScreen();
ASSERT_TRUE(content::ExecuteScript(
web_contents(),
"$('reset-rollback-checkbox').checked = true;"));
ClickResetButton();
EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
EXPECT_EQ(2, session_manager_client_->start_device_wipe_call_count());
EXPECT_EQ(1, update_engine_client_->rollback_call_count());
if (CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableRollbackOption)) {
// rollback available and checked
InvokeResetScreen();
ASSERT_TRUE(content::ExecuteScript(
web_contents(),
"$('reset-rollback-checkbox').checked = true;"));
ClickResetButton();
EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
EXPECT_EQ(2, session_manager_client_->start_device_wipe_call_count());
EXPECT_EQ(1, update_engine_client_->rollback_call_count());
}
}
IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_PowerwashRequested) {
......@@ -220,14 +226,18 @@ IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, ErrorOnRollbackRequested) {
EXPECT_EQ(0, update_engine_client_->rollback_call_count());
JSExpect("!$('reset').classList.contains('revert-promise')");
ClickResetButton();
EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count());
EXPECT_EQ(1, update_engine_client_->rollback_call_count());
JSExpect("$('reset').classList.contains('revert-promise')");
UpdateEngineClient::Status error_update_status;
error_update_status.status = UpdateEngineClient::UPDATE_STATUS_ERROR;
update_engine_client_->NotifyObserversThatStatusChanged(error_update_status);
OobeScreenWaiter(OobeDisplay::SCREEN_ERROR_MESSAGE).Wait();
if (CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableRollbackOption)) {
EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count());
EXPECT_EQ(1, update_engine_client_->rollback_call_count());
JSExpect("$('reset').classList.contains('revert-promise')");
UpdateEngineClient::Status error_update_status;
error_update_status.status = UpdateEngineClient::UPDATE_STATUS_ERROR;
update_engine_client_->NotifyObserversThatStatusChanged(
error_update_status);
OobeScreenWaiter(OobeDisplay::SCREEN_ERROR_MESSAGE).Wait();
}
}
IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest,
......@@ -239,17 +249,20 @@ IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest,
}
IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, SuccessOnRollbackRequested) {
OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait();
ClickResetButton();
EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count());
EXPECT_EQ(1, update_engine_client_->rollback_call_count());
UpdateEngineClient::Status ready_for_reboot_status;
ready_for_reboot_status.status =
UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT;
update_engine_client_->NotifyObserversThatStatusChanged(
ready_for_reboot_status);
EXPECT_EQ(1, power_manager_client_->num_request_restart_calls());
if (CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableRollbackOption)) {
OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait();
ClickResetButton();
EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count());
EXPECT_EQ(1, update_engine_client_->rollback_call_count());
UpdateEngineClient::Status ready_for_reboot_status;
ready_for_reboot_status.status =
UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT;
update_engine_client_->NotifyObserversThatStatusChanged(
ready_for_reboot_status);
EXPECT_EQ(1, power_manager_client_->num_request_restart_calls());
}
}
......
......@@ -14,7 +14,6 @@
#include "chrome/browser/chromeos/login/help_app_launcher.h"
#include "chrome/browser/chromeos/reset/metrics.h"
#include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/pref_names.h"
#include "chromeos/chromeos_switches.h"
#include "chromeos/dbus/dbus_thread_manager.h"
......@@ -102,7 +101,11 @@ void ResetScreenHandler::Show() {
rollback_available_ = false;
if (!restart_required_) // First exec after boot.
reboot_was_requested_ = prefs->GetBoolean(prefs::kFactoryResetRequested);
if (!restart_required_ && reboot_was_requested_) {
if (!CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableRollbackOption)) {
rollback_available_ = false;
ShowWithParams();
} else if (!restart_required_ && reboot_was_requested_) {
// First exec after boot.
rollback_available_ = prefs->GetBoolean(prefs::kRollbackRequested);
ShowWithParams();
......@@ -231,6 +234,7 @@ void ResetScreenHandler::HandleOnLearnMore() {
void ResetScreenHandler::UpdateStatusChanged(
const UpdateEngineClient::Status& status) {
VLOG(1) << "Update status change to " << status.status;
if (status.status == UpdateEngineClient::UPDATE_STATUS_ERROR) {
// Show error screen.
base::DictionaryValue params;
......
......@@ -90,6 +90,9 @@ const char kEnableTouchpadThreeFingerClick[]
// than the kiosk app mode.
const char kEnableKioskMode[] = "enable-kiosk-mode";
// Enables rollback option for resetting ChromeOS.
const char kEnableRollbackOption[] = "enable-rollback-option";
// Enables request of tablet site (via user agent override).
const char kEnableRequestTabletSite[] = "enable-request-tablet-site";
......
......@@ -40,6 +40,7 @@ CHROMEOS_EXPORT extern const char kEchoExtensionPath[];
CHROMEOS_EXPORT extern const char kEnableCarrierSwitching[];
CHROMEOS_EXPORT extern const char kEnableConsumerManagement[];
CHROMEOS_EXPORT extern const char kEnableFileManagerMTP[];
CHROMEOS_EXPORT extern const char kEnableRollbackOption[];
CHROMEOS_EXPORT extern const char kEnableHIDDetectionOnOOBE[];
CHROMEOS_EXPORT extern const char kEnableKioskMode[];
CHROMEOS_EXPORT extern const char kEnableNetworkPortalNotification[];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment