| 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 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 | 69 |
| 70 bool JSExecuted(const std::string& script) { | 70 bool JSExecuted(const std::string& script) { |
| 71 return content::ExecuteScript(web_contents(), script); | 71 return content::ExecuteScript(web_contents(), script); |
| 72 } | 72 } |
| 73 | 73 |
| 74 void InvokeResetScreen() { | 74 void InvokeResetScreen() { |
| 75 ASSERT_TRUE(JSExecuted("cr.ui.Oobe.handleAccelerator('reset');")); | 75 ASSERT_TRUE(JSExecuted("cr.ui.Oobe.handleAccelerator('reset');")); |
| 76 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait(); | 76 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait(); |
| 77 } | 77 } |
| 78 | 78 |
| 79 void InvokeRollbackOption() { |
| 80 ASSERT_TRUE(JSExecuted( |
| 81 "cr.ui.Oobe.handleAccelerator('show_rollback_on_reset_screen');")); |
| 82 } |
| 83 |
| 79 void CloseResetScreen() { | 84 void CloseResetScreen() { |
| 80 ASSERT_TRUE(JSExecuted("$('reset-cancel-button').click();")); | 85 ASSERT_TRUE(JSExecuted("$('reset-cancel-button').click();")); |
| 81 } | 86 } |
| 82 | 87 |
| 83 void ClickResetButton() { | 88 void ClickResetButton() { |
| 84 ASSERT_TRUE(JSExecuted("$('reset-button').click();")); | 89 ASSERT_TRUE(JSExecuted("$('reset-button').click();")); |
| 85 } | 90 } |
| 86 | 91 |
| 92 void ClickRestartButton() { |
| 93 ASSERT_TRUE(JSExecuted("$('reset-restart-button').click();")); |
| 94 } |
| 95 void ClickToConfirmButton() { |
| 96 ASSERT_TRUE(JSExecuted("$('reset-toconfirm-button').click();")); |
| 97 } |
| 98 |
| 87 FakeUpdateEngineClient* update_engine_client_; | 99 FakeUpdateEngineClient* update_engine_client_; |
| 88 FakeSessionManagerClient* session_manager_client_; | 100 FakeSessionManagerClient* session_manager_client_; |
| 89 FakePowerManagerClient* power_manager_client_; | 101 FakePowerManagerClient* power_manager_client_; |
| 90 }; | 102 }; |
| 91 | 103 |
| 92 class ResetFirstAfterBootTest : public ResetTest { | 104 class ResetFirstAfterBootTest : public ResetTest { |
| 93 public: | 105 public: |
| 94 virtual ~ResetFirstAfterBootTest() {} | 106 virtual ~ResetFirstAfterBootTest() {} |
| 95 | 107 |
| 96 virtual void SetUpCommandLine(base::CommandLine* command_line) OVERRIDE { | 108 virtual void SetUpCommandLine(base::CommandLine* command_line) OVERRIDE { |
| (...skipping 20 matching lines...) Expand all Loading... |
| 117 IN_PROC_BROWSER_TEST_F(ResetTest, PRE_RestartBeforePowerwash) { | 129 IN_PROC_BROWSER_TEST_F(ResetTest, PRE_RestartBeforePowerwash) { |
| 118 RegisterSomeUser(); | 130 RegisterSomeUser(); |
| 119 } | 131 } |
| 120 | 132 |
| 121 IN_PROC_BROWSER_TEST_F(ResetTest, RestartBeforePowerwash) { | 133 IN_PROC_BROWSER_TEST_F(ResetTest, RestartBeforePowerwash) { |
| 122 PrefService* prefs = g_browser_process->local_state(); | 134 PrefService* prefs = g_browser_process->local_state(); |
| 123 | 135 |
| 124 InvokeResetScreen(); | 136 InvokeResetScreen(); |
| 125 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); | 137 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); |
| 126 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); | 138 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); |
| 127 ClickResetButton(); | 139 ClickRestartButton(); |
| 128 ASSERT_EQ(1, power_manager_client_->num_request_restart_calls()); | 140 ASSERT_EQ(1, power_manager_client_->num_request_restart_calls()); |
| 129 ASSERT_EQ(0, session_manager_client_->start_device_wipe_call_count()); | 141 ASSERT_EQ(0, session_manager_client_->start_device_wipe_call_count()); |
| 130 | 142 |
| 131 EXPECT_FALSE(prefs->GetBoolean(prefs::kRollbackRequested)); | |
| 132 EXPECT_TRUE(prefs->GetBoolean(prefs::kFactoryResetRequested)); | 143 EXPECT_TRUE(prefs->GetBoolean(prefs::kFactoryResetRequested)); |
| 133 } | 144 } |
| 134 | 145 |
| 135 IN_PROC_BROWSER_TEST_F(ResetTest, PRE_RestartBeforeRollback) { | |
| 136 RegisterSomeUser(); | |
| 137 update_engine_client_->set_can_rollback_check_result(true); | |
| 138 } | |
| 139 | |
| 140 IN_PROC_BROWSER_TEST_F(ResetTest, RestartBeforeRollback) { | |
| 141 PrefService* prefs = g_browser_process->local_state(); | |
| 142 | |
| 143 InvokeResetScreen(); | |
| 144 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); | |
| 145 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); | |
| 146 ASSERT_TRUE(content::ExecuteScript( | |
| 147 web_contents(), | |
| 148 "$('reset-rollback-checkbox').checked = true;")); | |
| 149 ClickResetButton(); | |
| 150 ASSERT_EQ(1, power_manager_client_->num_request_restart_calls()); | |
| 151 ASSERT_EQ(0, session_manager_client_->start_device_wipe_call_count()); | |
| 152 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); | |
| 153 | |
| 154 EXPECT_TRUE(prefs->GetBoolean(prefs::kRollbackRequested)); | |
| 155 EXPECT_TRUE(prefs->GetBoolean(prefs::kFactoryResetRequested)); | |
| 156 } | |
| 157 | |
| 158 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_ShortcutInvokedCases) { | 146 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_ShortcutInvokedCases) { |
| 159 RegisterSomeUser(); | 147 RegisterSomeUser(); |
| 160 } | 148 } |
| 161 | 149 |
| 162 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, ShortcutInvokedCases) { | 150 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, ShortcutInvokedCases) { |
| 163 // rollback unavailable | 151 // rollback unavailable |
| 164 update_engine_client_->set_can_rollback_check_result(false); | 152 update_engine_client_->set_can_rollback_check_result(false); |
| 165 InvokeResetScreen(); | 153 InvokeResetScreen(); |
| 166 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); | 154 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); |
| 167 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); | 155 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); |
| 168 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); | 156 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); |
| 157 InvokeRollbackOption(); |
| 158 ClickToConfirmButton(); |
| 169 ClickResetButton(); | 159 ClickResetButton(); |
| 170 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); | 160 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); |
| 171 EXPECT_EQ(1, session_manager_client_->start_device_wipe_call_count()); | 161 EXPECT_EQ(1, session_manager_client_->start_device_wipe_call_count()); |
| 172 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); | 162 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); |
| 173 CloseResetScreen(); | 163 CloseResetScreen(); |
| 174 OobeScreenWaiter(OobeDisplay::SCREEN_ACCOUNT_PICKER).Wait(); | 164 OobeScreenWaiter(OobeDisplay::SCREEN_ACCOUNT_PICKER).Wait(); |
| 175 | 165 |
| 176 update_engine_client_->set_can_rollback_check_result(true); | 166 update_engine_client_->set_can_rollback_check_result(true); |
| 177 // rollback available and unchecked | 167 // rollback available and unchecked |
| 178 InvokeResetScreen(); | 168 InvokeResetScreen(); |
| 169 ClickToConfirmButton(); |
| 179 ClickResetButton(); | 170 ClickResetButton(); |
| 180 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); | 171 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); |
| 181 EXPECT_EQ(2, session_manager_client_->start_device_wipe_call_count()); | 172 EXPECT_EQ(2, session_manager_client_->start_device_wipe_call_count()); |
| 182 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); | 173 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); |
| 183 CloseResetScreen(); | 174 CloseResetScreen(); |
| 184 OobeScreenWaiter(OobeDisplay::SCREEN_ACCOUNT_PICKER).Wait(); | 175 OobeScreenWaiter(OobeDisplay::SCREEN_ACCOUNT_PICKER).Wait(); |
| 185 | 176 |
| 186 // rollback available and checked | 177 // rollback available and checked |
| 187 InvokeResetScreen(); | 178 InvokeResetScreen(); |
| 188 ASSERT_TRUE(content::ExecuteScript( | 179 InvokeRollbackOption(); |
| 189 web_contents(), | 180 ClickToConfirmButton(); |
| 190 "$('reset-rollback-checkbox').checked = true;")); | |
| 191 ClickResetButton(); | 181 ClickResetButton(); |
| 192 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); | 182 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); |
| 193 EXPECT_EQ(2, session_manager_client_->start_device_wipe_call_count()); | 183 EXPECT_EQ(2, session_manager_client_->start_device_wipe_call_count()); |
| 194 EXPECT_EQ(1, update_engine_client_->rollback_call_count()); | 184 EXPECT_EQ(1, update_engine_client_->rollback_call_count()); |
| 195 } | 185 } |
| 196 | 186 |
| 197 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_PowerwashRequested) { | 187 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_PowerwashRequested) { |
| 198 PrefService* prefs = g_browser_process->local_state(); | 188 PrefService* prefs = g_browser_process->local_state(); |
| 199 prefs->SetBoolean(prefs::kRollbackRequested, false); | |
| 200 prefs->SetBoolean(prefs::kFactoryResetRequested, true); | 189 prefs->SetBoolean(prefs::kFactoryResetRequested, true); |
| 201 RegisterSomeUser(); | 190 RegisterSomeUser(); |
| 202 } | 191 } |
| 203 | 192 |
| 204 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PowerwashRequested) { | 193 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PowerwashRequested) { |
| 205 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait(); | 194 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait(); |
| 206 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); | 195 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); |
| 207 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); | 196 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); |
| 208 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); | 197 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); |
| 198 ClickToConfirmButton(); |
| 199 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); |
| 200 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); |
| 201 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); |
| 209 ClickResetButton(); | 202 ClickResetButton(); |
| 210 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); | 203 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); |
| 211 EXPECT_EQ(1, session_manager_client_->start_device_wipe_call_count()); | 204 EXPECT_EQ(1, session_manager_client_->start_device_wipe_call_count()); |
| 212 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); | 205 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); |
| 213 } | 206 } |
| 214 | 207 |
| 215 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_ErrorOnRollbackRequested) { | 208 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_ErrorOnRollbackRequested) { |
| 216 PrefService* prefs = g_browser_process->local_state(); | 209 PrefService* prefs = g_browser_process->local_state(); |
| 217 prefs->SetBoolean(prefs::kRollbackRequested, true); | |
| 218 prefs->SetBoolean(prefs::kFactoryResetRequested, true); | 210 prefs->SetBoolean(prefs::kFactoryResetRequested, true); |
| 219 RegisterSomeUser(); | 211 RegisterSomeUser(); |
| 220 } | 212 } |
| 221 | 213 |
| 222 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, ErrorOnRollbackRequested) { | 214 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, ErrorOnRollbackRequested) { |
| 215 update_engine_client_->set_can_rollback_check_result(true); |
| 223 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait(); | 216 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait(); |
| 224 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); | 217 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); |
| 225 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); | 218 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); |
| 226 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); | 219 EXPECT_EQ(0, update_engine_client_->rollback_call_count()); |
| 227 JSExpect("!$('reset').classList.contains('revert-promise')"); | 220 JSExpect("!$('reset').classList.contains('revert-promise-view')"); |
| 221 InvokeRollbackOption(); |
| 222 ClickToConfirmButton(); |
| 228 ClickResetButton(); | 223 ClickResetButton(); |
| 229 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); | 224 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); |
| 230 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); | 225 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); |
| 231 EXPECT_EQ(1, update_engine_client_->rollback_call_count()); | 226 EXPECT_EQ(1, update_engine_client_->rollback_call_count()); |
| 232 JSExpect("$('reset').classList.contains('revert-promise')"); | 227 JSExpect("$('reset').classList.contains('revert-promise-view')"); |
| 233 UpdateEngineClient::Status error_update_status; | 228 UpdateEngineClient::Status error_update_status; |
| 234 error_update_status.status = UpdateEngineClient::UPDATE_STATUS_ERROR; | 229 error_update_status.status = UpdateEngineClient::UPDATE_STATUS_ERROR; |
| 235 update_engine_client_->NotifyObserversThatStatusChanged( | 230 update_engine_client_->NotifyObserversThatStatusChanged( |
| 236 error_update_status); | 231 error_update_status); |
| 237 OobeScreenWaiter(OobeDisplay::SCREEN_ERROR_MESSAGE).Wait(); | 232 OobeScreenWaiter(OobeDisplay::SCREEN_ERROR_MESSAGE).Wait(); |
| 238 } | 233 } |
| 239 | 234 |
| 240 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, | 235 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, |
| 241 PRE_SuccessOnRollbackRequested) { | 236 PRE_SuccessOnRollbackRequested) { |
| 242 PrefService* prefs = g_browser_process->local_state(); | 237 PrefService* prefs = g_browser_process->local_state(); |
| 243 prefs->SetBoolean(prefs::kRollbackRequested, true); | |
| 244 prefs->SetBoolean(prefs::kFactoryResetRequested, true); | 238 prefs->SetBoolean(prefs::kFactoryResetRequested, true); |
| 245 RegisterSomeUser(); | 239 RegisterSomeUser(); |
| 246 } | 240 } |
| 247 | 241 |
| 248 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, SuccessOnRollbackRequested) { | 242 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, SuccessOnRollbackRequested) { |
| 243 update_engine_client_->set_can_rollback_check_result(true); |
| 249 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait(); | 244 OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait(); |
| 245 InvokeRollbackOption(); |
| 246 ClickToConfirmButton(); |
| 250 ClickResetButton(); | 247 ClickResetButton(); |
| 251 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); | 248 EXPECT_EQ(0, power_manager_client_->num_request_restart_calls()); |
| 252 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); | 249 EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count()); |
| 253 EXPECT_EQ(1, update_engine_client_->rollback_call_count()); | 250 EXPECT_EQ(1, update_engine_client_->rollback_call_count()); |
| 254 UpdateEngineClient::Status ready_for_reboot_status; | 251 UpdateEngineClient::Status ready_for_reboot_status; |
| 255 ready_for_reboot_status.status = | 252 ready_for_reboot_status.status = |
| 256 UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT; | 253 UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT; |
| 257 update_engine_client_->NotifyObserversThatStatusChanged( | 254 update_engine_client_->NotifyObserversThatStatusChanged( |
| 258 ready_for_reboot_status); | 255 ready_for_reboot_status); |
| 259 EXPECT_EQ(1, power_manager_client_->num_request_restart_calls()); | 256 EXPECT_EQ(1, power_manager_client_->num_request_restart_calls()); |
| 260 } | 257 } |
| 261 | 258 |
| 262 | 259 |
| 263 } // namespace chromeos | 260 } // namespace chromeos |
| OLD | NEW |