OLD | NEW |
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 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 | 70 |
71 void InvokeResetScreen() { | 71 void InvokeResetScreen() { |
72 ASSERT_TRUE(JSExecuted("cr.ui.Oobe.handleAccelerator('reset');")); | 72 ASSERT_TRUE(JSExecuted("cr.ui.Oobe.handleAccelerator('reset');")); |
73 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait(); | 73 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait(); |
74 } | 74 } |
75 | 75 |
76 void InvokeRollbackOption() { | 76 void InvokeRollbackOption() { |
77 ASSERT_TRUE(JSExecuted("cr.ui.Oobe.handleAccelerator('reset');")); | 77 ASSERT_TRUE(JSExecuted("cr.ui.Oobe.handleAccelerator('reset');")); |
78 } | 78 } |
79 | 79 |
| 80 void HideRollbackOption() { |
| 81 ASSERT_TRUE(JSExecuted("cr.ui.Oobe.handleAccelerator('reset');")); |
| 82 } |
| 83 |
80 void CloseResetScreen() { | 84 void CloseResetScreen() { |
81 ASSERT_TRUE(JSExecuted("$('reset-cancel-button').click();")); | 85 ASSERT_TRUE(JSExecuted("$('reset-cancel-button').click();")); |
82 } | 86 } |
83 | 87 |
84 void ClickResetButton() { | 88 void ClickResetButton() { |
85 ASSERT_TRUE(JSExecuted("$('reset-confirm-commit').click();")); | 89 ASSERT_TRUE(JSExecuted("$('reset-confirm-commit').click();")); |
86 } | 90 } |
87 | 91 |
88 void ClickRestartButton() { | 92 void ClickRestartButton() { |
89 ASSERT_TRUE(JSExecuted("$('reset-restart-button').click();")); | 93 ASSERT_TRUE(JSExecuted("$('reset-restart-button').click();")); |
90 } | 94 } |
91 void ClickToConfirmButton() { | 95 void ClickToConfirmButton() { |
92 ASSERT_TRUE(JSExecuted("$('reset-toconfirm-button').click();")); | 96 ASSERT_TRUE(JSExecuted("$('reset-toconfirm-button').click();")); |
93 } | 97 } |
| 98 void ClickDismissConfirmationButton() { |
| 99 ASSERT_TRUE(JSExecuted("$('reset-confirm-dismiss').click();")); |
| 100 } |
94 | 101 |
95 FakeUpdateEngineClient* update_engine_client_; | 102 FakeUpdateEngineClient* update_engine_client_; |
96 FakeSessionManagerClient* session_manager_client_; | 103 FakeSessionManagerClient* session_manager_client_; |
97 FakePowerManagerClient* power_manager_client_; | 104 FakePowerManagerClient* power_manager_client_; |
98 }; | 105 }; |
99 | 106 |
100 class ResetFirstAfterBootTest : public ResetTest { | 107 class ResetFirstAfterBootTest : public ResetTest { |
101 public: | 108 public: |
102 virtual ~ResetFirstAfterBootTest() {} | 109 virtual ~ResetFirstAfterBootTest() {} |
103 | 110 |
(...skipping 25 matching lines...) Expand all Loading... |
129 InvokeResetScreen(); | 136 InvokeResetScreen(); |
130 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); | 137 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); |
131 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); | 138 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); |
132 ClickRestartButton(); | 139 ClickRestartButton(); |
133 ASSERT_EQ(1, power_manager_client_->num_request_restart_calls()); | 140 ASSERT_EQ(1, power_manager_client_->num_request_restart_calls()); |
134 ASSERT_EQ(0, session_manager_client_->start_device_wipe_call_count()); | 141 ASSERT_EQ(0, session_manager_client_->start_device_wipe_call_count()); |
135 | 142 |
136 EXPECT_TRUE(prefs->GetBoolean(prefs::kFactoryResetRequested)); | 143 EXPECT_TRUE(prefs->GetBoolean(prefs::kFactoryResetRequested)); |
137 } | 144 } |
138 | 145 |
139 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_ShortcutInvokedCases) { | 146 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_ViewsLogic) { |
| 147 PrefService* prefs = g_browser_process->local_state(); |
| 148 prefs->SetBoolean(prefs::kFactoryResetRequested, true); |
| 149 RegisterSomeUser(); |
| 150 update_engine_client_->set_can_rollback_check_result(false); |
| 151 } |
| 152 |
| 153 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, ViewsLogic) { |
| 154 PrefService* prefs = g_browser_process->local_state(); |
| 155 |
| 156 // Rollback unavailable. Show and cancel. |
| 157 update_engine_client_->set_can_rollback_check_result(false); |
| 158 JSExpect("document.querySelector('#reset').hidden"); |
| 159 JSExpect("document.querySelector('#overlay-reset').hidden"); |
| 160 InvokeResetScreen(); |
| 161 JSExpect("!document.querySelector('#reset').hidden"); |
| 162 JSExpect("document.querySelector('#overlay-reset').hidden"); |
| 163 CloseResetScreen(); |
| 164 JSExpect("document.querySelector('#reset').hidden"); |
| 165 |
| 166 // Go to confirmation phase, cancel from there in 2 steps. |
| 167 prefs->SetBoolean(prefs::kFactoryResetRequested, true); |
| 168 InvokeResetScreen(); |
| 169 JSExpect("document.querySelector('#overlay-reset').hidden"); |
| 170 ClickToConfirmButton(); |
| 171 JSExpect("!document.querySelector('#overlay-reset').hidden"); |
| 172 ClickDismissConfirmationButton(); |
| 173 JSExpect("document.querySelector('#overlay-reset').hidden"); |
| 174 JSExpect("!document.querySelector('#reset').hidden"); |
| 175 CloseResetScreen(); |
| 176 JSExpect("document.querySelector('#reset').hidden"); |
| 177 |
| 178 // Rollback available. Show and cancel from confirmation screen. |
| 179 update_engine_client_->set_can_rollback_check_result(true); |
| 180 prefs->SetBoolean(prefs::kFactoryResetRequested, true); |
| 181 InvokeResetScreen(); |
| 182 InvokeRollbackOption(); |
| 183 JSExpect("document.querySelector('#overlay-reset').hidden"); |
| 184 ClickToConfirmButton(); |
| 185 JSExpect("!document.querySelector('#overlay-reset').hidden"); |
| 186 ClickDismissConfirmationButton(); |
| 187 JSExpect("document.querySelector('#overlay-reset').hidden"); |
| 188 JSExpect("!document.querySelector('#reset').hidden"); |
| 189 CloseResetScreen(); |
| 190 JSExpect("document.querySelector('#reset').hidden"); |
| 191 } |
| 192 |
| 193 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_ShowAfterBootIfRequested) { |
140 PrefService* prefs = g_browser_process->local_state(); | 194 PrefService* prefs = g_browser_process->local_state(); |
141 prefs->SetBoolean(prefs::kFactoryResetRequested, true); | 195 prefs->SetBoolean(prefs::kFactoryResetRequested, true); |
142 RegisterSomeUser(); | 196 RegisterSomeUser(); |
143 } | 197 } |
144 | 198 |
145 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, ShortcutInvokedCases) { | 199 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, ShowAfterBootIfRequested) { |
146 // rollback unavailable | 200 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait(); |
| 201 JSExpect("!document.querySelector('#reset').hidden"); |
| 202 CloseResetScreen(); |
| 203 JSExpect("document.querySelector('#reset').hidden"); |
| 204 } |
| 205 |
| 206 |
| 207 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_RollbackUnavailable) { |
| 208 PrefService* prefs = g_browser_process->local_state(); |
| 209 prefs->SetBoolean(prefs::kFactoryResetRequested, true); |
| 210 RegisterSomeUser(); |
| 211 } |
| 212 |
| 213 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, RollbackUnavailable) { |
147 update_engine_client_->set_can_rollback_check_result(false); | 214 update_engine_client_->set_can_rollback_check_result(false); |
| 215 |
148 InvokeResetScreen(); | 216 InvokeResetScreen(); |
149 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); | 217 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); |
150 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); | 218 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); |
151 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); | 219 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); |
152 InvokeRollbackOption(); | 220 InvokeRollbackOption(); // No changes |
153 ClickToConfirmButton(); | 221 ClickToConfirmButton(); |
154 ClickResetButton(); | 222 ClickResetButton(); |
155 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); | 223 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); |
156 EXPECT_EQ(1, session_manager_client_->start_device_wipe_call_count()); | 224 EXPECT_EQ(1, session_manager_client_->start_device_wipe_call_count()); |
157 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); | 225 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); |
158 CloseResetScreen(); | 226 CloseResetScreen(); |
159 OobeScreenWaiter(OobeDisplay::SCREEN_ACCOUNT_PICKER).Wait(); | 227 OobeScreenWaiter(OobeDisplay::SCREEN_ACCOUNT_PICKER).Wait(); |
160 | 228 |
| 229 // Next invocation leads to rollback view. |
161 PrefService* prefs = g_browser_process->local_state(); | 230 PrefService* prefs = g_browser_process->local_state(); |
162 prefs->SetBoolean(prefs::kFactoryResetRequested, true); | 231 prefs->SetBoolean(prefs::kFactoryResetRequested, true); |
| 232 InvokeResetScreen(); |
| 233 ClickToConfirmButton(); |
| 234 ClickResetButton(); |
| 235 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); |
| 236 EXPECT_EQ(2, session_manager_client_->start_device_wipe_call_count()); |
| 237 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); |
| 238 CloseResetScreen(); |
| 239 } |
| 240 |
| 241 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_RollbackAvailable) { |
| 242 PrefService* prefs = g_browser_process->local_state(); |
| 243 prefs->SetBoolean(prefs::kFactoryResetRequested, true); |
| 244 RegisterSomeUser(); |
| 245 } |
| 246 |
| 247 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, RollbackAvailable) { |
163 update_engine_client_->set_can_rollback_check_result(true); | 248 update_engine_client_->set_can_rollback_check_result(true); |
164 // rollback available and unchecked | 249 PrefService* prefs = g_browser_process->local_state(); |
| 250 |
| 251 InvokeResetScreen(); |
| 252 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); |
| 253 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); |
| 254 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); |
| 255 ClickToConfirmButton(); |
| 256 ClickResetButton(); |
| 257 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); |
| 258 EXPECT_EQ(1, session_manager_client_->start_device_wipe_call_count()); |
| 259 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); |
| 260 CloseResetScreen(); |
| 261 OobeScreenWaiter(OobeDisplay::SCREEN_ACCOUNT_PICKER).Wait(); |
| 262 |
| 263 // Next invocation leads to simple reset, not rollback view. |
| 264 prefs->SetBoolean(prefs::kFactoryResetRequested, true); |
| 265 InvokeResetScreen(); |
| 266 InvokeRollbackOption(); // Shows rollback. |
| 267 ClickDismissConfirmationButton(); |
| 268 CloseResetScreen(); |
165 InvokeResetScreen(); | 269 InvokeResetScreen(); |
166 ClickToConfirmButton(); | 270 ClickToConfirmButton(); |
167 ClickResetButton(); | 271 ClickResetButton(); |
168 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); | 272 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); |
169 EXPECT_EQ(2, session_manager_client_->start_device_wipe_call_count()); | 273 EXPECT_EQ(2, session_manager_client_->start_device_wipe_call_count()); |
170 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); | 274 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); |
171 CloseResetScreen(); | 275 CloseResetScreen(); |
172 OobeScreenWaiter(OobeDisplay::SCREEN_ACCOUNT_PICKER).Wait(); | 276 OobeScreenWaiter(OobeDisplay::SCREEN_ACCOUNT_PICKER).Wait(); |
173 | 277 |
174 prefs->SetBoolean(prefs::kFactoryResetRequested, true); | 278 prefs->SetBoolean(prefs::kFactoryResetRequested, true); |
175 // rollback available and checked | |
176 InvokeResetScreen(); | 279 InvokeResetScreen(); |
177 InvokeRollbackOption(); | 280 InvokeRollbackOption(); // Shows rollback. |
178 ClickToConfirmButton(); | 281 ClickToConfirmButton(); |
179 ClickResetButton(); | 282 ClickResetButton(); |
180 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); | 283 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); |
181 EXPECT_EQ(2, session_manager_client_->start_device_wipe_call_count()); | 284 EXPECT_EQ(2, session_manager_client_->start_device_wipe_call_count()); |
182 EXPECT_EQ(1, update_engine_client_->rollback_call_count()); | 285 EXPECT_EQ(1, update_engine_client_->rollback_call_count()); |
183 } | 286 } |
184 | 287 |
185 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_PowerwashRequested) { | |
186 PrefService* prefs = g_browser_process->local_state(); | |
187 prefs->SetBoolean(prefs::kFactoryResetRequested, true); | |
188 RegisterSomeUser(); | |
189 } | |
190 | |
191 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PowerwashRequested) { | |
192 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait(); | |
193 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); | |
194 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); | |
195 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); | |
196 ClickToConfirmButton(); | |
197 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); | |
198 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); | |
199 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); | |
200 ClickResetButton(); | |
201 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); | |
202 EXPECT_EQ(1, session_manager_client_->start_device_wipe_call_count()); | |
203 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); | |
204 } | |
205 | |
206 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_ErrorOnRollbackRequested) { | 288 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_ErrorOnRollbackRequested) { |
207 PrefService* prefs = g_browser_process->local_state(); | 289 PrefService* prefs = g_browser_process->local_state(); |
208 prefs->SetBoolean(prefs::kFactoryResetRequested, true); | 290 prefs->SetBoolean(prefs::kFactoryResetRequested, true); |
209 RegisterSomeUser(); | 291 RegisterSomeUser(); |
210 } | 292 } |
211 | 293 |
212 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, ErrorOnRollbackRequested) { | 294 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, ErrorOnRollbackRequested) { |
213 update_engine_client_->set_can_rollback_check_result(true); | 295 update_engine_client_->set_can_rollback_check_result(true); |
214 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait(); | 296 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait(); |
215 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); | 297 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); |
216 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); | 298 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); |
217 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); | 299 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); |
218 JSExpect("!$('reset').classList.contains('revert-promise-view')"); | 300 JSExpect("!$('reset').classList.contains('revert-promise-view')"); |
219 InvokeRollbackOption(); | 301 InvokeRollbackOption(); |
220 ClickToConfirmButton(); | 302 ClickToConfirmButton(); |
221 ClickResetButton(); | 303 ClickResetButton(); |
222 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); | 304 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); |
223 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); | 305 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); |
224 EXPECT_EQ(1, update_engine_client_->rollback_call_count()); | 306 EXPECT_EQ(1, update_engine_client_->rollback_call_count()); |
225 JSExpect("$('reset').classList.contains('revert-promise-view')"); | 307 JSExpect("$('reset').classList.contains('revert-promise-view')"); |
226 UpdateEngineClient::Status error_update_status; | 308 UpdateEngineClient::Status error_update_status; |
227 error_update_status.status = UpdateEngineClient::UPDATE_STATUS_ERROR; | 309 error_update_status.status = UpdateEngineClient::UPDATE_STATUS_ERROR; |
228 update_engine_client_->NotifyObserversThatStatusChanged( | 310 update_engine_client_->NotifyObserversThatStatusChanged( |
229 error_update_status); | 311 error_update_status); |
230 OobeScreenWaiter(OobeDisplay::SCREEN_ERROR_MESSAGE).Wait(); | 312 OobeScreenWaiter(OobeDisplay::SCREEN_ERROR_MESSAGE).Wait(); |
231 } | 313 } |
232 | 314 |
233 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, | |
234 PRE_SuccessOnRollbackRequested) { | |
235 PrefService* prefs = g_browser_process->local_state(); | |
236 prefs->SetBoolean(prefs::kFactoryResetRequested, true); | |
237 RegisterSomeUser(); | |
238 } | |
239 | |
240 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, SuccessOnRollbackRequested) { | |
241 update_engine_client_->set_can_rollback_check_result(true); | |
242 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait(); | |
243 LOG(ERROR) << "1"; | |
244 InvokeRollbackOption(); | |
245 ClickToConfirmButton(); | |
246 ClickResetButton(); | |
247 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); | |
248 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); | |
249 EXPECT_EQ(1, update_engine_client_->rollback_call_count()); | |
250 UpdateEngineClient::Status ready_for_reboot_status; | |
251 ready_for_reboot_status.status = | |
252 UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT; | |
253 update_engine_client_->NotifyObserversThatStatusChanged( | |
254 ready_for_reboot_status); | |
255 EXPECT_EQ(1, power_manager_client_->num_request_restart_calls()); | |
256 } | |
257 | |
258 | |
259 } // namespace chromeos | 315 } // namespace chromeos |
OLD | NEW |