Commit 1ee042ec authored by Toni Barzic's avatar Toni Barzic Committed by Commit Bot

Reenable reset screen on welcome screen

When switching to polymer style for defining OOBE screens, welcome
screen was removed from RESET action whitelist, without setting
resetAllowed screen setting.

BUG=955968

Change-Id: Ic2d0a170d41d698cd76bfd5c247003813694de11
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1586229Reviewed-by: default avatarAlexander Alekseev <alemate@chromium.org>
Commit-Queue: Toni Baržić <tbarzic@chromium.org>
Cr-Commit-Position: refs/heads/master@{#654617}
parent b1eb2722
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "chrome/browser/chromeos/login/startup_utils.h" #include "chrome/browser/chromeos/login/startup_utils.h"
#include "chrome/browser/chromeos/login/test/js_checker.h" #include "chrome/browser/chromeos/login/test/js_checker.h"
#include "chrome/browser/chromeos/login/test/login_manager_mixin.h" #include "chrome/browser/chromeos/login/test/login_manager_mixin.h"
#include "chrome/browser/chromeos/login/test/oobe_base_test.h"
#include "chrome/browser/chromeos/login/test/oobe_screen_exit_waiter.h" #include "chrome/browser/chromeos/login/test/oobe_screen_exit_waiter.h"
#include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h" #include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h"
#include "chrome/browser/chromeos/login/ui/login_display_host.h" #include "chrome/browser/chromeos/login/ui/login_display_host.h"
...@@ -36,6 +37,36 @@ namespace { ...@@ -36,6 +37,36 @@ namespace {
constexpr char kTestUser1[] = "test-user1@gmail.com"; constexpr char kTestUser1[] = "test-user1@gmail.com";
constexpr char kTestUser1GaiaId[] = "test-user1@gmail.com"; constexpr char kTestUser1GaiaId[] = "test-user1@gmail.com";
void InvokeRollbackOption() {
test::ExecuteOobeJS("cr.ui.Oobe.handleAccelerator('reset');");
}
void CloseResetScreen() {
test::ExecuteOobeJS(
"chrome.send('login.ResetScreen.userActed', ['cancel-reset']);");
}
void ClickResetButton() {
test::ExecuteOobeJS(
"chrome.send('login.ResetScreen.userActed', ['powerwash-pressed']);");
}
void ClickRestartButton() {
test::ExecuteOobeJS(
"chrome.send('login.ResetScreen.userActed', ['restart-pressed']);");
}
void ClickToConfirmButton() {
test::ExecuteOobeJS(
"chrome.send('login.ResetScreen.userActed', ['show-confirmation']);");
}
void ClickDismissConfirmationButton() {
test::ExecuteOobeJS(
"chrome.send('login.ResetScreen.userActed', "
"['reset-confirm-dismissed']);");
}
} // namespace } // namespace
class ResetTest : public MixinBasedInProcessBrowserTest { class ResetTest : public MixinBasedInProcessBrowserTest {
...@@ -54,50 +85,52 @@ class ResetTest : public MixinBasedInProcessBrowserTest { ...@@ -54,50 +85,52 @@ class ResetTest : public MixinBasedInProcessBrowserTest {
MixinBasedInProcessBrowserTest::SetUpInProcessBrowserTestFixture(); MixinBasedInProcessBrowserTest::SetUpInProcessBrowserTestFixture();
} }
FakeUpdateEngineClient* update_engine_client_ = nullptr;
// Simulates reset screen request from views based login.
void InvokeResetScreen() { void InvokeResetScreen() {
chromeos::LoginDisplayHost::default_host()->ShowResetScreen(); chromeos::LoginDisplayHost::default_host()->ShowResetScreen();
OobeScreenWaiter(OobeScreen::SCREEN_OOBE_RESET).Wait(); OobeScreenWaiter(OobeScreen::SCREEN_OOBE_RESET).Wait();
} }
void InvokeRollbackOption() { private:
test::ExecuteOobeJS("cr.ui.Oobe.handleAccelerator('reset');"); LoginManagerMixin::TestUserInfo test_user_{
} AccountId::FromUserEmailGaiaId(kTestUser1, kTestUser1GaiaId)};
LoginManagerMixin login_manager_mixin_{&mixin_host_, {test_user_}};
DISALLOW_COPY_AND_ASSIGN(ResetTest);
};
void HideRollbackOption() { class ResetOobeTest : public OobeBaseTest {
test::ExecuteOobeJS("cr.ui.Oobe.handleAccelerator('reset');"); public:
} ResetOobeTest() = default;
~ResetOobeTest() override = default;
void CloseResetScreen() { // OobeBaseTest:
test::ExecuteOobeJS( void SetUpCommandLine(base::CommandLine* command_line) override {
"chrome.send('login.ResetScreen.userActed', ['cancel-reset']);"); command_line->AppendSwitch(switches::kFirstExecAfterBoot);
OobeBaseTest::SetUpCommandLine(command_line);
} }
void ClickResetButton() { void SetUpInProcessBrowserTestFixture() override {
test::ExecuteOobeJS( std::unique_ptr<DBusThreadManagerSetter> dbus_setter =
"chrome.send('login.ResetScreen.userActed', ['powerwash-pressed']);"); chromeos::DBusThreadManager::GetSetterForTesting();
} update_engine_client_ = new FakeUpdateEngineClient;
dbus_setter->SetUpdateEngineClient(
std::unique_ptr<UpdateEngineClient>(update_engine_client_));
void ClickRestartButton() { OobeBaseTest::SetUpInProcessBrowserTestFixture();
test::ExecuteOobeJS(
"chrome.send('login.ResetScreen.userActed', ['restart-pressed']);");
} }
void ClickToConfirmButton() {
test::ExecuteOobeJS( // Simulates reset screen request from OOBE UI.
"chrome.send('login.ResetScreen.userActed', ['show-confirmation']);"); void InvokeResetScreen() {
} test::ExecuteOobeJS("cr.ui.Oobe.handleAccelerator('reset');");
void ClickDismissConfirmationButton() {
test::ExecuteOobeJS(
"chrome.send('login.ResetScreen.userActed', "
"['reset-confirm-dismissed']);");
} }
protected:
FakeUpdateEngineClient* update_engine_client_ = nullptr; FakeUpdateEngineClient* update_engine_client_ = nullptr;
private: private:
LoginManagerMixin::TestUserInfo test_user_{ DISALLOW_COPY_AND_ASSIGN(ResetOobeTest);
AccountId::FromUserEmailGaiaId(kTestUser1, kTestUser1GaiaId)};
LoginManagerMixin login_manager_mixin_{&mixin_host_, {test_user_}};
DISALLOW_COPY_AND_ASSIGN(ResetTest);
}; };
class ResetFirstAfterBootTest : public ResetTest { class ResetFirstAfterBootTest : public ResetTest {
...@@ -197,6 +230,34 @@ IN_PROC_BROWSER_TEST_F(ResetTest, RestartBeforePowerwash) { ...@@ -197,6 +230,34 @@ IN_PROC_BROWSER_TEST_F(ResetTest, RestartBeforePowerwash) {
EXPECT_TRUE(prefs->GetBoolean(prefs::kFactoryResetRequested)); EXPECT_TRUE(prefs->GetBoolean(prefs::kFactoryResetRequested));
} }
IN_PROC_BROWSER_TEST_F(ResetOobeTest, ResetOnWelcomeScreen) {
OobeScreenWaiter(OobeScreen::SCREEN_OOBE_WELCOME).Wait();
InvokeResetScreen();
OobeScreenWaiter(OobeScreen::SCREEN_OOBE_RESET).Wait();
test::OobeJS().ExpectVisible("reset");
ClickResetButton();
EXPECT_EQ(0, FakePowerManagerClient::Get()->num_request_restart_calls());
EXPECT_EQ(1, FakeSessionManagerClient::Get()->start_device_wipe_call_count());
EXPECT_EQ(0, update_engine_client_->rollback_call_count());
}
IN_PROC_BROWSER_TEST_F(ResetOobeTest, RequestAndCancleResetOnWelcomeScreen) {
OobeScreenWaiter(OobeScreen::SCREEN_OOBE_WELCOME).Wait();
InvokeResetScreen();
OobeScreenWaiter(OobeScreen::SCREEN_OOBE_RESET).Wait();
test::OobeJS().ExpectVisible("reset");
CloseResetScreen();
OobeScreenWaiter(OobeScreen::SCREEN_OOBE_WELCOME).Wait();
test::OobeJS().ExpectHidden("reset");
EXPECT_EQ(0, FakePowerManagerClient::Get()->num_request_restart_calls());
EXPECT_EQ(0, FakeSessionManagerClient::Get()->start_device_wipe_call_count());
EXPECT_EQ(0, update_engine_client_->rollback_call_count());
}
IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_ViewsLogic) { IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_ViewsLogic) {
PrefService* prefs = g_browser_process->local_state(); PrefService* prefs = g_browser_process->local_state();
prefs->SetBoolean(prefs::kFactoryResetRequested, true); prefs->SetBoolean(prefs::kFactoryResetRequested, true);
......
...@@ -91,6 +91,7 @@ Polymer({ ...@@ -91,6 +91,7 @@ Polymer({
/** @override */ /** @override */
ready: function() { ready: function() {
this.initializeLoginScreen('WelcomeScreen', { this.initializeLoginScreen('WelcomeScreen', {
resetAllowed: true,
commonScreenSize: true, commonScreenSize: true,
enableDebuggingAllowed: true, enableDebuggingAllowed: true,
enterDemoModeAllowed: true, enterDemoModeAllowed: true,
......
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