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

Side by Side Diff: chrome/browser/chromeos/login/reset_browsertest.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: ShowAndCancelTest fixed. Created 6 years, 3 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 | « chrome/app/chromeos_strings.grdp ('k') | chrome/browser/chromeos/login/ui/webui_login_view.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <string> 5 #include <string>
6 6
7 #include "base/prefs/pref_service.h" 7 #include "base/prefs/pref_service.h"
8 #include "chrome/browser/browser_process.h" 8 #include "chrome/browser/browser_process.h"
9 #include "chrome/browser/chromeos/login/login_manager_test.h" 9 #include "chrome/browser/chromeos/login/login_manager_test.h"
10 #include "chrome/browser/chromeos/login/startup_utils.h" 10 #include "chrome/browser/chromeos/login/startup_utils.h"
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 67
68 bool JSExecuted(const std::string& script) { 68 bool JSExecuted(const std::string& script) {
69 return content::ExecuteScript(web_contents(), script); 69 return content::ExecuteScript(web_contents(), script);
70 } 70 }
71 71
72 void InvokeResetScreen() { 72 void InvokeResetScreen() {
73 ASSERT_TRUE(JSExecuted("cr.ui.Oobe.handleAccelerator('reset');")); 73 ASSERT_TRUE(JSExecuted("cr.ui.Oobe.handleAccelerator('reset');"));
74 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait(); 74 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait();
75 } 75 }
76 76
77 void InvokeRollbackOption() {
78 ASSERT_TRUE(JSExecuted(
79 "cr.ui.Oobe.handleAccelerator('show_rollback_on_reset_screen');"));
80 }
81
77 void CloseResetScreen() { 82 void CloseResetScreen() {
78 ASSERT_TRUE(JSExecuted("$('reset-cancel-button').click();")); 83 ASSERT_TRUE(JSExecuted("$('reset-cancel-button').click();"));
79 } 84 }
80 85
81 void ClickResetButton() { 86 void ClickResetButton() {
82 ASSERT_TRUE(JSExecuted("$('reset-button').click();")); 87 ASSERT_TRUE(JSExecuted("$('reset-button').click();"));
83 } 88 }
84 89
90 void ClickRestartButton() {
91 ASSERT_TRUE(JSExecuted("$('reset-restart-button').click();"));
92 }
93 void ClickToConfirmButton() {
94 ASSERT_TRUE(JSExecuted("$('reset-toconfirm-button').click();"));
95 }
96
85 FakeUpdateEngineClient* update_engine_client_; 97 FakeUpdateEngineClient* update_engine_client_;
86 FakeSessionManagerClient* session_manager_client_; 98 FakeSessionManagerClient* session_manager_client_;
87 FakePowerManagerClient* power_manager_client_; 99 FakePowerManagerClient* power_manager_client_;
88 }; 100 };
89 101
90 class ResetFirstAfterBootTest : public ResetTest { 102 class ResetFirstAfterBootTest : public ResetTest {
91 public: 103 public:
92 virtual ~ResetFirstAfterBootTest() {} 104 virtual ~ResetFirstAfterBootTest() {}
93 105
94 virtual void SetUpCommandLine(base::CommandLine* command_line) OVERRIDE { 106 virtual void SetUpCommandLine(base::CommandLine* command_line) OVERRIDE {
95 LoginManagerTest::SetUpCommandLine(command_line); 107 LoginManagerTest::SetUpCommandLine(command_line);
96 command_line->AppendSwitch(switches::kFirstExecAfterBoot); 108 command_line->AppendSwitch(switches::kFirstExecAfterBoot);
97 command_line->AppendSwitch(switches::kEnableRollbackOption); 109 command_line->AppendSwitch(switches::kEnableRollbackOption);
98 } 110 }
99 }; 111 };
100 112
101 IN_PROC_BROWSER_TEST_F(ResetTest, PRE_ShowAndCancel) { 113 IN_PROC_BROWSER_TEST_F(ResetTest, PRE_ShowAndCancel) {
102 RegisterSomeUser(); 114 RegisterSomeUser();
103 } 115 }
104 116
105 IN_PROC_BROWSER_TEST_F(ResetTest, ShowAndCancel) { 117 IN_PROC_BROWSER_TEST_F(ResetTest, ShowAndCancel) {
106 JSExpect("!!document.querySelector('#reset.hidden')"); 118 JSExpect("!!document.querySelector('#reset.hidden')");
107 EXPECT_EQ(0, update_engine_client_->can_rollback_call_count());
108 InvokeResetScreen(); 119 InvokeResetScreen();
109 JSExpect("!document.querySelector('#reset.hidden')"); 120 JSExpect("!document.querySelector('#reset.hidden')");
110 CloseResetScreen(); 121 CloseResetScreen();
111 JSExpect("!!document.querySelector('#reset.hidden')"); 122 JSExpect("!!document.querySelector('#reset.hidden')");
112 EXPECT_EQ(1, update_engine_client_->can_rollback_call_count());
113 } 123 }
114 124
115 IN_PROC_BROWSER_TEST_F(ResetTest, PRE_RestartBeforePowerwash) { 125 IN_PROC_BROWSER_TEST_F(ResetTest, PRE_RestartBeforePowerwash) {
116 RegisterSomeUser(); 126 RegisterSomeUser();
117 } 127 }
118 128
119 IN_PROC_BROWSER_TEST_F(ResetTest, RestartBeforePowerwash) { 129 IN_PROC_BROWSER_TEST_F(ResetTest, RestartBeforePowerwash) {
120 PrefService* prefs = g_browser_process->local_state(); 130 PrefService* prefs = g_browser_process->local_state();
121 131
122 InvokeResetScreen(); 132 InvokeResetScreen();
123 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); 133 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
124 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); 134 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count());
125 ClickResetButton(); 135 ClickRestartButton();
126 ASSERT_EQ(1, power_manager_client_->num_request_restart_calls()); 136 ASSERT_EQ(1, power_manager_client_->num_request_restart_calls());
127 ASSERT_EQ(0, session_manager_client_->start_device_wipe_call_count()); 137 ASSERT_EQ(0, session_manager_client_->start_device_wipe_call_count());
128 138
129 EXPECT_FALSE(prefs->GetBoolean(prefs::kRollbackRequested));
130 EXPECT_TRUE(prefs->GetBoolean(prefs::kFactoryResetRequested));
131 }
132
133 IN_PROC_BROWSER_TEST_F(ResetTest, PRE_RestartBeforeRollback) {
134 RegisterSomeUser();
135 update_engine_client_->set_can_rollback_check_result(true);
136 }
137
138 IN_PROC_BROWSER_TEST_F(ResetTest, RestartBeforeRollback) {
139 PrefService* prefs = g_browser_process->local_state();
140
141 InvokeResetScreen();
142 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
143 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count());
144 ASSERT_TRUE(content::ExecuteScript(
145 web_contents(),
146 "$('reset-rollback-checkbox').checked = true;"));
147 ClickResetButton();
148 ASSERT_EQ(1, power_manager_client_->num_request_restart_calls());
149 ASSERT_EQ(0, session_manager_client_->start_device_wipe_call_count());
150 EXPECT_EQ(0, update_engine_client_->rollback_call_count());
151
152 EXPECT_TRUE(prefs->GetBoolean(prefs::kRollbackRequested));
153 EXPECT_TRUE(prefs->GetBoolean(prefs::kFactoryResetRequested)); 139 EXPECT_TRUE(prefs->GetBoolean(prefs::kFactoryResetRequested));
154 } 140 }
155 141
156 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_ShortcutInvokedCases) { 142 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_ShortcutInvokedCases) {
143 PrefService* prefs = g_browser_process->local_state();
144 prefs->SetBoolean(prefs::kFactoryResetRequested, true);
157 RegisterSomeUser(); 145 RegisterSomeUser();
158 } 146 }
159 147
160 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, ShortcutInvokedCases) { 148 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, ShortcutInvokedCases) {
161 // rollback unavailable 149 // rollback unavailable
162 update_engine_client_->set_can_rollback_check_result(false); 150 update_engine_client_->set_can_rollback_check_result(false);
163 InvokeResetScreen(); 151 InvokeResetScreen();
164 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); 152 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
165 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); 153 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count());
166 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); 154 EXPECT_EQ(0, update_engine_client_->rollback_call_count());
155 InvokeRollbackOption();
156 ClickToConfirmButton();
167 ClickResetButton(); 157 ClickResetButton();
168 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); 158 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
169 EXPECT_EQ(1, session_manager_client_->start_device_wipe_call_count()); 159 EXPECT_EQ(1, session_manager_client_->start_device_wipe_call_count());
170 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); 160 EXPECT_EQ(0, update_engine_client_->rollback_call_count());
171 CloseResetScreen(); 161 CloseResetScreen();
172 OobeScreenWaiter(OobeDisplay::SCREEN_ACCOUNT_PICKER).Wait(); 162 OobeScreenWaiter(OobeDisplay::SCREEN_ACCOUNT_PICKER).Wait();
173 163
164 PrefService* prefs = g_browser_process->local_state();
165 prefs->SetBoolean(prefs::kFactoryResetRequested, true);
174 update_engine_client_->set_can_rollback_check_result(true); 166 update_engine_client_->set_can_rollback_check_result(true);
175 // rollback available and unchecked 167 // rollback available and unchecked
176 InvokeResetScreen(); 168 InvokeResetScreen();
169 ClickToConfirmButton();
177 ClickResetButton(); 170 ClickResetButton();
178 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); 171 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
179 EXPECT_EQ(2, session_manager_client_->start_device_wipe_call_count()); 172 EXPECT_EQ(2, session_manager_client_->start_device_wipe_call_count());
180 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); 173 EXPECT_EQ(0, update_engine_client_->rollback_call_count());
181 CloseResetScreen(); 174 CloseResetScreen();
182 OobeScreenWaiter(OobeDisplay::SCREEN_ACCOUNT_PICKER).Wait(); 175 OobeScreenWaiter(OobeDisplay::SCREEN_ACCOUNT_PICKER).Wait();
183 176
177 prefs->SetBoolean(prefs::kFactoryResetRequested, true);
184 // rollback available and checked 178 // rollback available and checked
185 InvokeResetScreen(); 179 InvokeResetScreen();
186 ASSERT_TRUE(content::ExecuteScript( 180 InvokeRollbackOption();
187 web_contents(), 181 ClickToConfirmButton();
188 "$('reset-rollback-checkbox').checked = true;"));
189 ClickResetButton(); 182 ClickResetButton();
190 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); 183 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
191 EXPECT_EQ(2, session_manager_client_->start_device_wipe_call_count()); 184 EXPECT_EQ(2, session_manager_client_->start_device_wipe_call_count());
192 EXPECT_EQ(1, update_engine_client_->rollback_call_count()); 185 EXPECT_EQ(1, update_engine_client_->rollback_call_count());
193 } 186 }
194 187
195 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_PowerwashRequested) { 188 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_PowerwashRequested) {
196 PrefService* prefs = g_browser_process->local_state(); 189 PrefService* prefs = g_browser_process->local_state();
197 prefs->SetBoolean(prefs::kRollbackRequested, false);
198 prefs->SetBoolean(prefs::kFactoryResetRequested, true); 190 prefs->SetBoolean(prefs::kFactoryResetRequested, true);
199 RegisterSomeUser(); 191 RegisterSomeUser();
200 } 192 }
201 193
202 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PowerwashRequested) { 194 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PowerwashRequested) {
203 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait(); 195 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait();
204 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); 196 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
205 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); 197 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count());
206 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); 198 EXPECT_EQ(0, update_engine_client_->rollback_call_count());
199 ClickToConfirmButton();
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());
207 ClickResetButton(); 203 ClickResetButton();
208 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); 204 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
209 EXPECT_EQ(1, session_manager_client_->start_device_wipe_call_count()); 205 EXPECT_EQ(1, session_manager_client_->start_device_wipe_call_count());
210 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); 206 EXPECT_EQ(0, update_engine_client_->rollback_call_count());
211 } 207 }
212 208
213 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_ErrorOnRollbackRequested) { 209 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_ErrorOnRollbackRequested) {
214 PrefService* prefs = g_browser_process->local_state(); 210 PrefService* prefs = g_browser_process->local_state();
215 prefs->SetBoolean(prefs::kRollbackRequested, true);
216 prefs->SetBoolean(prefs::kFactoryResetRequested, true); 211 prefs->SetBoolean(prefs::kFactoryResetRequested, true);
217 RegisterSomeUser(); 212 RegisterSomeUser();
218 } 213 }
219 214
220 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, ErrorOnRollbackRequested) { 215 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, ErrorOnRollbackRequested) {
216 update_engine_client_->set_can_rollback_check_result(true);
221 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait(); 217 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait();
222 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); 218 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
223 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); 219 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count());
224 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); 220 EXPECT_EQ(0, update_engine_client_->rollback_call_count());
225 JSExpect("!$('reset').classList.contains('revert-promise')"); 221 JSExpect("!$('reset').classList.contains('revert-promise-view')");
222 InvokeRollbackOption();
223 ClickToConfirmButton();
226 ClickResetButton(); 224 ClickResetButton();
227 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); 225 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
228 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); 226 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count());
229 EXPECT_EQ(1, update_engine_client_->rollback_call_count()); 227 EXPECT_EQ(1, update_engine_client_->rollback_call_count());
230 JSExpect("$('reset').classList.contains('revert-promise')"); 228 JSExpect("$('reset').classList.contains('revert-promise-view')");
231 UpdateEngineClient::Status error_update_status; 229 UpdateEngineClient::Status error_update_status;
232 error_update_status.status = UpdateEngineClient::UPDATE_STATUS_ERROR; 230 error_update_status.status = UpdateEngineClient::UPDATE_STATUS_ERROR;
233 update_engine_client_->NotifyObserversThatStatusChanged( 231 update_engine_client_->NotifyObserversThatStatusChanged(
234 error_update_status); 232 error_update_status);
235 OobeScreenWaiter(OobeDisplay::SCREEN_ERROR_MESSAGE).Wait(); 233 OobeScreenWaiter(OobeDisplay::SCREEN_ERROR_MESSAGE).Wait();
236 } 234 }
237 235
238 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, 236 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest,
239 PRE_SuccessOnRollbackRequested) { 237 PRE_SuccessOnRollbackRequested) {
240 PrefService* prefs = g_browser_process->local_state(); 238 PrefService* prefs = g_browser_process->local_state();
241 prefs->SetBoolean(prefs::kRollbackRequested, true);
242 prefs->SetBoolean(prefs::kFactoryResetRequested, true); 239 prefs->SetBoolean(prefs::kFactoryResetRequested, true);
243 RegisterSomeUser(); 240 RegisterSomeUser();
244 } 241 }
245 242
246 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, SuccessOnRollbackRequested) { 243 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, SuccessOnRollbackRequested) {
244 update_engine_client_->set_can_rollback_check_result(true);
247 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait(); 245 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait();
246 InvokeRollbackOption();
247 ClickToConfirmButton();
248 ClickResetButton(); 248 ClickResetButton();
249 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); 249 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
250 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); 250 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count());
251 EXPECT_EQ(1, update_engine_client_->rollback_call_count()); 251 EXPECT_EQ(1, update_engine_client_->rollback_call_count());
252 UpdateEngineClient::Status ready_for_reboot_status; 252 UpdateEngineClient::Status ready_for_reboot_status;
253 ready_for_reboot_status.status = 253 ready_for_reboot_status.status =
254 UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT; 254 UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT;
255 update_engine_client_->NotifyObserversThatStatusChanged( 255 update_engine_client_->NotifyObserversThatStatusChanged(
256 ready_for_reboot_status); 256 ready_for_reboot_status);
257 EXPECT_EQ(1, power_manager_client_->num_request_restart_calls()); 257 EXPECT_EQ(1, power_manager_client_->num_request_restart_calls());
258 } 258 }
259 259
260 260
261 } // namespace chromeos 261 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/app/chromeos_strings.grdp ('k') | chrome/browser/chromeos/login/ui/webui_login_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698