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

Side by Side Diff: chrome/browser/chromeos/login/reset_browsertest.cc

Issue 216883004: Browsertests for improved reset options: powerwash and rollback. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Const issue. Created 6 years, 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/chrome_tests.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include <string>
6
7 #include "base/prefs/pref_service.h"
8 #include "chrome/browser/browser_process.h"
9 #include "chrome/browser/chromeos/login/login_display_host_impl.h"
10 #include "chrome/browser/chromeos/login/login_manager_test.h"
11 #include "chrome/browser/chromeos/login/oobe_display.h"
12 #include "chrome/browser/chromeos/login/startup_utils.h"
13 #include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h"
14 #include "chrome/browser/chromeos/login/webui_login_view.h"
15 #include "chrome/common/chrome_switches.h"
16 #include "chrome/common/pref_names.h"
17 #include "chromeos/chromeos_switches.h"
18 #include "chromeos/dbus/dbus_thread_manager.h"
19 #include "chromeos/dbus/fake_dbus_thread_manager.h"
20 #include "chromeos/dbus/fake_power_manager_client.h"
21 #include "chromeos/dbus/fake_session_manager_client.h"
22 #include "chromeos/dbus/fake_update_engine_client.h"
23 #include "content/public/test/browser_test_utils.h"
24
25 namespace chromeos {
26
27 namespace {
28
29 const char kTestUser1[] = "test-user1@gmail.com";
30
31 } // namespace
32
33 class ResetTest : public LoginManagerTest {
34 public:
35 ResetTest() : LoginManagerTest(false),
36 update_engine_client_(NULL),
37 session_manager_client_(NULL),
38 power_manager_client_(NULL) {
39 }
40 virtual ~ResetTest() {}
41
42 // LoginManagerTest overrides:
43 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
44 FakeDBusThreadManager* dbus_manager = new FakeDBusThreadManager;
45 dbus_manager->SetFakeClients();
46 session_manager_client_ = new FakeSessionManagerClient;
47 dbus_manager->SetSessionManagerClient(
48 scoped_ptr<SessionManagerClient>(session_manager_client_));
49 power_manager_client_ = new FakePowerManagerClient;
50 dbus_manager->SetPowerManagerClient(
51 scoped_ptr<PowerManagerClient>(power_manager_client_));
52 update_engine_client_ = new FakeUpdateEngineClient;
53 dbus_manager->SetUpdateEngineClient(
54 scoped_ptr<UpdateEngineClient>(update_engine_client_));
55 DBusThreadManager::SetInstanceForTesting(dbus_manager);
56
57 LoginManagerTest::SetUpInProcessBrowserTestFixture();
58 }
59
60 void RegisterSomeUser() {
61 RegisterUser(kTestUser1);
62 StartupUtils::MarkOobeCompleted();
63 }
64
65 bool JSExecuted(const std::string& script) {
66 return content::ExecuteScript(web_contents(), script);
67 }
68
69 void InvokeResetScreen() {
70 ASSERT_TRUE(JSExecuted("cr.ui.Oobe.handleAccelerator('reset');"));
71 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait();
72 }
73
74 void CloseResetScreen() {
75 ASSERT_TRUE(JSExecuted("$('reset-cancel-button').click();"));
76 }
77
78 void ClickResetButton() {
79 ASSERT_TRUE(JSExecuted("$('reset-button').click();"));
80 }
81
82 FakeUpdateEngineClient* update_engine_client_;
83 FakeSessionManagerClient* session_manager_client_;
84 FakePowerManagerClient* power_manager_client_;
85 };
86
87 class ResetFirstAfterBootTest : public ResetTest {
88 public:
89 virtual ~ResetFirstAfterBootTest() {}
90
91 virtual void SetUpCommandLine(base::CommandLine* command_line) OVERRIDE {
92 LoginManagerTest::SetUpCommandLine(command_line);
93 command_line->AppendSwitch(switches::kFirstExecAfterBoot);
94 }
95 };
96
97 IN_PROC_BROWSER_TEST_F(ResetTest, PRE_ShowAndCancel) {
98 RegisterSomeUser();
99 }
100
101 IN_PROC_BROWSER_TEST_F(ResetTest, ShowAndCancel) {
102 JSExpect("!!document.querySelector('#reset.hidden')");
103 EXPECT_EQ(0, update_engine_client_->can_rollback_call_count());
104 InvokeResetScreen();
105 JSExpect("!document.querySelector('#reset.hidden')");
106 CloseResetScreen();
107 JSExpect("!!document.querySelector('#reset.hidden')");
108 EXPECT_EQ(1, update_engine_client_->can_rollback_call_count());
109 }
110
111 IN_PROC_BROWSER_TEST_F(ResetTest, PRE_RestartBeforePowerwash) {
112 RegisterSomeUser();
113 }
114
115 IN_PROC_BROWSER_TEST_F(ResetTest, RestartBeforePowerwash) {
116 PrefService* prefs = g_browser_process->local_state();
117
118 InvokeResetScreen();
119 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
120 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count());
121 ClickResetButton();
122 ASSERT_EQ(1, power_manager_client_->num_request_restart_calls());
123 ASSERT_EQ(0, session_manager_client_->start_device_wipe_call_count());
124
125 EXPECT_FALSE(prefs->GetBoolean(prefs::kRollbackRequested));
126 EXPECT_TRUE(prefs->GetBoolean(prefs::kFactoryResetRequested));
127 }
128
129 IN_PROC_BROWSER_TEST_F(ResetTest, PRE_RestartBeforeRollback) {
130 RegisterSomeUser();
131 update_engine_client_->set_can_rollback_check_result(true);
132 }
133
134 IN_PROC_BROWSER_TEST_F(ResetTest, RestartBeforeRollback) {
135 PrefService* prefs = g_browser_process->local_state();
136
137 InvokeResetScreen();
138 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
139 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count());
140 ASSERT_TRUE(content::ExecuteScript(
141 web_contents(),
142 "$('reset-rollback-checkbox').checked = true;"));
143 ClickResetButton();
144 ASSERT_EQ(1, power_manager_client_->num_request_restart_calls());
145 ASSERT_EQ(0, session_manager_client_->start_device_wipe_call_count());
146 EXPECT_EQ(0, update_engine_client_->rollback_call_count());
147
148 EXPECT_TRUE(prefs->GetBoolean(prefs::kRollbackRequested));
149 EXPECT_TRUE(prefs->GetBoolean(prefs::kFactoryResetRequested));
150 }
151
152 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_ShortcutInvokedCases) {
153 RegisterSomeUser();
154 }
155
156 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, ShortcutInvokedCases) {
157 // rollback unavailable
158 update_engine_client_->set_can_rollback_check_result(false);
159 InvokeResetScreen();
160 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
161 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count());
162 EXPECT_EQ(0, update_engine_client_->rollback_call_count());
163 ClickResetButton();
164 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
165 EXPECT_EQ(1, session_manager_client_->start_device_wipe_call_count());
166 EXPECT_EQ(0, update_engine_client_->rollback_call_count());
167 CloseResetScreen();
168 OobeScreenWaiter(OobeDisplay::SCREEN_ACCOUNT_PICKER).Wait();
169
170 update_engine_client_->set_can_rollback_check_result(true);
171 // rollback available and unchecked
172 InvokeResetScreen();
173 ClickResetButton();
174 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
175 EXPECT_EQ(2, session_manager_client_->start_device_wipe_call_count());
176 EXPECT_EQ(0, update_engine_client_->rollback_call_count());
177 CloseResetScreen();
178 OobeScreenWaiter(OobeDisplay::SCREEN_ACCOUNT_PICKER).Wait();
179
180 // rollback available and checked
181 InvokeResetScreen();
182 ASSERT_TRUE(content::ExecuteScript(
183 web_contents(),
184 "$('reset-rollback-checkbox').checked = true;"));
185 ClickResetButton();
186 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
187 EXPECT_EQ(2, session_manager_client_->start_device_wipe_call_count());
188 EXPECT_EQ(1, update_engine_client_->rollback_call_count());
189 }
190
191 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_PowerwashRequested) {
192 PrefService* prefs = g_browser_process->local_state();
193 prefs->SetBoolean(prefs::kRollbackRequested, false);
194 prefs->SetBoolean(prefs::kFactoryResetRequested, true);
195 RegisterSomeUser();
196 }
197
198 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PowerwashRequested) {
199 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait();
200 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
201 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count());
202 EXPECT_EQ(0, update_engine_client_->rollback_call_count());
203 ClickResetButton();
204 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
205 EXPECT_EQ(1, session_manager_client_->start_device_wipe_call_count());
206 EXPECT_EQ(0, update_engine_client_->rollback_call_count());
207 }
208
209 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_RollbackRequested) {
210 PrefService* prefs = g_browser_process->local_state();
211 prefs->SetBoolean(prefs::kRollbackRequested, true);
212 prefs->SetBoolean(prefs::kFactoryResetRequested, true);
213 RegisterSomeUser();
214 }
215
216 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, RollbackRequested) {
217 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait();
218 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
219 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count());
220 EXPECT_EQ(0, update_engine_client_->rollback_call_count());
221 ClickResetButton();
222 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
223 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count());
224 EXPECT_EQ(1, update_engine_client_->rollback_call_count());
225 }
226
227 } // namespace chromeos
OLDNEW
« no previous file with comments | « no previous file | chrome/chrome_tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698