| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/chromeos/login/screens/update_screen.h" | 5 #include "chrome/browser/chromeos/login/screens/update_screen.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 status.status = UpdateEngineClient::UPDATE_STATUS_IDLE; | 140 status.status = UpdateEngineClient::UPDATE_STATUS_IDLE; |
| 141 update_screen_->UpdateStatusChanged(status); | 141 update_screen_->UpdateStatusChanged(status); |
| 142 status.status = UpdateEngineClient::UPDATE_STATUS_CHECKING_FOR_UPDATE; | 142 status.status = UpdateEngineClient::UPDATE_STATUS_CHECKING_FOR_UPDATE; |
| 143 update_screen_->UpdateStatusChanged(status); | 143 update_screen_->UpdateStatusChanged(status); |
| 144 status.status = UpdateEngineClient::UPDATE_STATUS_IDLE; | 144 status.status = UpdateEngineClient::UPDATE_STATUS_IDLE; |
| 145 // GetLastStatus() will be called via ExitUpdate() called from | 145 // GetLastStatus() will be called via ExitUpdate() called from |
| 146 // UpdateStatusChanged(). | 146 // UpdateStatusChanged(). |
| 147 fake_update_engine_client_->set_default_status(status); | 147 fake_update_engine_client_->set_default_status(status); |
| 148 | 148 |
| 149 EXPECT_CALL(*mock_base_screen_delegate_, | 149 EXPECT_CALL(*mock_base_screen_delegate_, |
| 150 OnExit(_, BaseScreenDelegate::UPDATE_NOUPDATE, _)).Times(1); | 150 OnExit(_, ScreenExitCode::UPDATE_NOUPDATE, _)) |
| 151 .Times(1); |
| 151 update_screen_->UpdateStatusChanged(status); | 152 update_screen_->UpdateStatusChanged(status); |
| 152 } | 153 } |
| 153 | 154 |
| 154 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestUpdateAvailable) { | 155 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestUpdateAvailable) { |
| 155 update_screen_->is_ignore_update_deadlines_ = true; | 156 update_screen_->is_ignore_update_deadlines_ = true; |
| 156 | 157 |
| 157 UpdateEngineClient::Status status; | 158 UpdateEngineClient::Status status; |
| 158 status.status = UpdateEngineClient::UPDATE_STATUS_UPDATE_AVAILABLE; | 159 status.status = UpdateEngineClient::UPDATE_STATUS_UPDATE_AVAILABLE; |
| 159 status.new_version = "latest and greatest"; | 160 status.new_version = "latest and greatest"; |
| 160 update_screen_->UpdateStatusChanged(status); | 161 update_screen_->UpdateStatusChanged(status); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 183 base::RunLoop().RunUntilIdle(); | 184 base::RunLoop().RunUntilIdle(); |
| 184 EXPECT_FALSE(StartupUtils::IsOobeCompleted()); | 185 EXPECT_FALSE(StartupUtils::IsOobeCompleted()); |
| 185 EXPECT_EQ(update_screen_->screen_id(), | 186 EXPECT_EQ(update_screen_->screen_id(), |
| 186 GetOobeScreenFromName(g_browser_process->local_state()->GetString( | 187 GetOobeScreenFromName(g_browser_process->local_state()->GetString( |
| 187 prefs::kOobeScreenPending))); | 188 prefs::kOobeScreenPending))); |
| 188 } | 189 } |
| 189 | 190 |
| 190 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorIssuingUpdateCheck) { | 191 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorIssuingUpdateCheck) { |
| 191 // First, cancel the update that is already in progress. | 192 // First, cancel the update that is already in progress. |
| 192 EXPECT_CALL(*mock_base_screen_delegate_, | 193 EXPECT_CALL(*mock_base_screen_delegate_, |
| 193 OnExit(_, BaseScreenDelegate::UPDATE_NOUPDATE, _)).Times(1); | 194 OnExit(_, ScreenExitCode::UPDATE_NOUPDATE, _)) |
| 195 .Times(1); |
| 194 update_screen_->CancelUpdate(); | 196 update_screen_->CancelUpdate(); |
| 195 | 197 |
| 196 fake_update_engine_client_->set_update_check_result( | 198 fake_update_engine_client_->set_update_check_result( |
| 197 chromeos::UpdateEngineClient::UPDATE_RESULT_FAILED); | 199 chromeos::UpdateEngineClient::UPDATE_RESULT_FAILED); |
| 198 EXPECT_CALL(*mock_base_screen_delegate_, | 200 EXPECT_CALL(*mock_base_screen_delegate_, |
| 199 OnExit(_, BaseScreenDelegate::UPDATE_ERROR_CHECKING_FOR_UPDATE, | 201 OnExit(_, ScreenExitCode::UPDATE_ERROR_CHECKING_FOR_UPDATE, _)) |
| 200 _)).Times(1); | 202 .Times(1); |
| 201 update_screen_->StartNetworkCheck(); | 203 update_screen_->StartNetworkCheck(); |
| 202 } | 204 } |
| 203 | 205 |
| 204 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorCheckingForUpdate) { | 206 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorCheckingForUpdate) { |
| 205 UpdateEngineClient::Status status; | 207 UpdateEngineClient::Status status; |
| 206 status.status = UpdateEngineClient::UPDATE_STATUS_ERROR; | 208 status.status = UpdateEngineClient::UPDATE_STATUS_ERROR; |
| 207 // GetLastStatus() will be called via ExitUpdate() called from | 209 // GetLastStatus() will be called via ExitUpdate() called from |
| 208 // UpdateStatusChanged(). | 210 // UpdateStatusChanged(). |
| 209 fake_update_engine_client_->set_default_status(status); | 211 fake_update_engine_client_->set_default_status(status); |
| 210 | 212 |
| 211 EXPECT_CALL(*mock_base_screen_delegate_, | 213 EXPECT_CALL(*mock_base_screen_delegate_, |
| 212 OnExit(_, BaseScreenDelegate::UPDATE_ERROR_CHECKING_FOR_UPDATE, | 214 OnExit(_, ScreenExitCode::UPDATE_ERROR_CHECKING_FOR_UPDATE, _)) |
| 213 _)).Times(1); | 215 .Times(1); |
| 214 update_screen_->UpdateStatusChanged(status); | 216 update_screen_->UpdateStatusChanged(status); |
| 215 } | 217 } |
| 216 | 218 |
| 217 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorUpdating) { | 219 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorUpdating) { |
| 218 UpdateEngineClient::Status status; | 220 UpdateEngineClient::Status status; |
| 219 status.status = UpdateEngineClient::UPDATE_STATUS_UPDATE_AVAILABLE; | 221 status.status = UpdateEngineClient::UPDATE_STATUS_UPDATE_AVAILABLE; |
| 220 status.new_version = "latest and greatest"; | 222 status.new_version = "latest and greatest"; |
| 221 // GetLastStatus() will be called via ExitUpdate() called from | 223 // GetLastStatus() will be called via ExitUpdate() called from |
| 222 // UpdateStatusChanged(). | 224 // UpdateStatusChanged(). |
| 223 fake_update_engine_client_->set_default_status(status); | 225 fake_update_engine_client_->set_default_status(status); |
| 224 | 226 |
| 225 update_screen_->UpdateStatusChanged(status); | 227 update_screen_->UpdateStatusChanged(status); |
| 226 | 228 |
| 227 status.status = UpdateEngineClient::UPDATE_STATUS_ERROR; | 229 status.status = UpdateEngineClient::UPDATE_STATUS_ERROR; |
| 228 // GetLastStatus() will be called via ExitUpdate() called from | 230 // GetLastStatus() will be called via ExitUpdate() called from |
| 229 // UpdateStatusChanged(). | 231 // UpdateStatusChanged(). |
| 230 fake_update_engine_client_->set_default_status(status); | 232 fake_update_engine_client_->set_default_status(status); |
| 231 | 233 |
| 232 EXPECT_CALL(*mock_base_screen_delegate_, | 234 EXPECT_CALL(*mock_base_screen_delegate_, |
| 233 OnExit(_, BaseScreenDelegate::UPDATE_ERROR_UPDATING, _)).Times(1); | 235 OnExit(_, ScreenExitCode::UPDATE_ERROR_UPDATING, _)) |
| 236 .Times(1); |
| 234 update_screen_->UpdateStatusChanged(status); | 237 update_screen_->UpdateStatusChanged(status); |
| 235 } | 238 } |
| 236 | 239 |
| 237 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestTemproraryOfflineNetwork) { | 240 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestTemproraryOfflineNetwork) { |
| 238 EXPECT_CALL(*mock_base_screen_delegate_, | 241 EXPECT_CALL(*mock_base_screen_delegate_, |
| 239 OnExit(_, BaseScreenDelegate::UPDATE_NOUPDATE, _)).Times(1); | 242 OnExit(_, ScreenExitCode::UPDATE_NOUPDATE, _)) |
| 243 .Times(1); |
| 240 update_screen_->CancelUpdate(); | 244 update_screen_->CancelUpdate(); |
| 241 | 245 |
| 242 // Change ethernet state to portal. | 246 // Change ethernet state to portal. |
| 243 NetworkPortalDetector::CaptivePortalState portal_state; | 247 NetworkPortalDetector::CaptivePortalState portal_state; |
| 244 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; | 248 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; |
| 245 portal_state.response_code = 200; | 249 portal_state.response_code = 200; |
| 246 SetDetectionResults(kStubEthernetGuid, portal_state); | 250 SetDetectionResults(kStubEthernetGuid, portal_state); |
| 247 | 251 |
| 248 // Update screen will delay error message about portal state because | 252 // Update screen will delay error message about portal state because |
| 249 // ethernet is behind captive portal. | 253 // ethernet is behind captive portal. |
| (...skipping 22 matching lines...) Expand all Loading... |
| 272 SetDetectionResults(kStubEthernetGuid, online_state); | 276 SetDetectionResults(kStubEthernetGuid, online_state); |
| 273 | 277 |
| 274 // Second notification from portal detector will be about online state, | 278 // Second notification from portal detector will be about online state, |
| 275 // so update screen will hide error message and proceed to update. | 279 // so update screen will hide error message and proceed to update. |
| 276 EXPECT_CALL(*mock_base_screen_delegate_, HideErrorScreen(update_screen_)) | 280 EXPECT_CALL(*mock_base_screen_delegate_, HideErrorScreen(update_screen_)) |
| 277 .Times(1); | 281 .Times(1); |
| 278 fake_update_engine_client_->set_update_check_result( | 282 fake_update_engine_client_->set_update_check_result( |
| 279 chromeos::UpdateEngineClient::UPDATE_RESULT_FAILED); | 283 chromeos::UpdateEngineClient::UPDATE_RESULT_FAILED); |
| 280 | 284 |
| 281 EXPECT_CALL(*mock_base_screen_delegate_, | 285 EXPECT_CALL(*mock_base_screen_delegate_, |
| 282 OnExit(_, BaseScreenDelegate::UPDATE_ERROR_CHECKING_FOR_UPDATE, | 286 OnExit(_, ScreenExitCode::UPDATE_ERROR_CHECKING_FOR_UPDATE, _)) |
| 283 _)).Times(1); | 287 .Times(1); |
| 284 | 288 |
| 285 NotifyPortalDetectionCompleted(); | 289 NotifyPortalDetectionCompleted(); |
| 286 } | 290 } |
| 287 | 291 |
| 288 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestTwoOfflineNetworks) { | 292 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestTwoOfflineNetworks) { |
| 289 EXPECT_CALL(*mock_base_screen_delegate_, | 293 EXPECT_CALL(*mock_base_screen_delegate_, |
| 290 OnExit(_, BaseScreenDelegate::UPDATE_NOUPDATE, _)).Times(1); | 294 OnExit(_, ScreenExitCode::UPDATE_NOUPDATE, _)) |
| 295 .Times(1); |
| 291 update_screen_->CancelUpdate(); | 296 update_screen_->CancelUpdate(); |
| 292 | 297 |
| 293 // Change ethernet state to portal. | 298 // Change ethernet state to portal. |
| 294 NetworkPortalDetector::CaptivePortalState portal_state; | 299 NetworkPortalDetector::CaptivePortalState portal_state; |
| 295 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; | 300 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; |
| 296 portal_state.response_code = 200; | 301 portal_state.response_code = 200; |
| 297 SetDetectionResults(kStubEthernetGuid, portal_state); | 302 SetDetectionResults(kStubEthernetGuid, portal_state); |
| 298 | 303 |
| 299 // Update screen will delay error message about portal state because | 304 // Update screen will delay error message about portal state because |
| 300 // ethernet is behind captive portal. | 305 // ethernet is behind captive portal. |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 332 .Times(1); | 337 .Times(1); |
| 333 | 338 |
| 334 NotifyPortalDetectionCompleted(); | 339 NotifyPortalDetectionCompleted(); |
| 335 } | 340 } |
| 336 | 341 |
| 337 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestVoidNetwork) { | 342 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestVoidNetwork) { |
| 338 SetDefaultNetwork(std::string()); | 343 SetDefaultNetwork(std::string()); |
| 339 | 344 |
| 340 // Cancels pending update request. | 345 // Cancels pending update request. |
| 341 EXPECT_CALL(*mock_base_screen_delegate_, | 346 EXPECT_CALL(*mock_base_screen_delegate_, |
| 342 OnExit(_, BaseScreenDelegate::UPDATE_NOUPDATE, _)).Times(1); | 347 OnExit(_, ScreenExitCode::UPDATE_NOUPDATE, _)) |
| 348 .Times(1); |
| 343 update_screen_->CancelUpdate(); | 349 update_screen_->CancelUpdate(); |
| 344 | 350 |
| 345 // First portal detection attempt returns NULL network and undefined | 351 // First portal detection attempt returns NULL network and undefined |
| 346 // results, so detection is restarted. | 352 // results, so detection is restarted. |
| 347 EXPECT_CALL(*mock_error_screen_, MockSetUIState(_)).Times(Exactly(0)); | 353 EXPECT_CALL(*mock_error_screen_, MockSetUIState(_)).Times(Exactly(0)); |
| 348 EXPECT_CALL(*mock_error_screen_, MockSetErrorState(_, _)).Times(Exactly(0)); | 354 EXPECT_CALL(*mock_error_screen_, MockSetErrorState(_, _)).Times(Exactly(0)); |
| 349 EXPECT_CALL(*mock_base_screen_delegate_, ShowErrorScreen()).Times(Exactly(0)); | 355 EXPECT_CALL(*mock_base_screen_delegate_, ShowErrorScreen()).Times(Exactly(0)); |
| 350 update_screen_->StartNetworkCheck(); | 356 update_screen_->StartNetworkCheck(); |
| 351 | 357 |
| 352 // Second portal detection also returns NULL network and undefined | 358 // Second portal detection also returns NULL network and undefined |
| 353 // results. In this case, offline message should be displayed. | 359 // results. In this case, offline message should be displayed. |
| 354 EXPECT_CALL(*mock_error_screen_, | 360 EXPECT_CALL(*mock_error_screen_, |
| 355 MockSetUIState(NetworkError::UI_STATE_UPDATE)).Times(1); | 361 MockSetUIState(NetworkError::UI_STATE_UPDATE)).Times(1); |
| 356 EXPECT_CALL(*mock_error_screen_, | 362 EXPECT_CALL(*mock_error_screen_, |
| 357 MockSetErrorState(NetworkError::ERROR_STATE_OFFLINE, | 363 MockSetErrorState(NetworkError::ERROR_STATE_OFFLINE, |
| 358 std::string())).Times(1); | 364 std::string())).Times(1); |
| 359 EXPECT_CALL(*mock_base_screen_delegate_, ShowErrorScreen()).Times(1); | 365 EXPECT_CALL(*mock_base_screen_delegate_, ShowErrorScreen()).Times(1); |
| 360 base::RunLoop().RunUntilIdle(); | 366 base::RunLoop().RunUntilIdle(); |
| 361 NotifyPortalDetectionCompleted(); | 367 NotifyPortalDetectionCompleted(); |
| 362 } | 368 } |
| 363 | 369 |
| 364 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestAPReselection) { | 370 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestAPReselection) { |
| 365 EXPECT_CALL(*mock_base_screen_delegate_, | 371 EXPECT_CALL(*mock_base_screen_delegate_, |
| 366 OnExit(_, BaseScreenDelegate::UPDATE_NOUPDATE, _)).Times(1); | 372 OnExit(_, ScreenExitCode::UPDATE_NOUPDATE, _)) |
| 373 .Times(1); |
| 367 update_screen_->CancelUpdate(); | 374 update_screen_->CancelUpdate(); |
| 368 | 375 |
| 369 // Change ethernet state to portal. | 376 // Change ethernet state to portal. |
| 370 NetworkPortalDetector::CaptivePortalState portal_state; | 377 NetworkPortalDetector::CaptivePortalState portal_state; |
| 371 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; | 378 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; |
| 372 portal_state.response_code = 200; | 379 portal_state.response_code = 200; |
| 373 SetDetectionResults(kStubEthernetGuid, portal_state); | 380 SetDetectionResults(kStubEthernetGuid, portal_state); |
| 374 | 381 |
| 375 // Update screen will delay error message about portal state because | 382 // Update screen will delay error message about portal state because |
| 376 // ethernet is behind captive portal. | 383 // ethernet is behind captive portal. |
| (...skipping 17 matching lines...) Expand all Loading... |
| 394 } | 401 } |
| 395 | 402 |
| 396 // User re-selects the same network manually. In this case, hide | 403 // User re-selects the same network manually. In this case, hide |
| 397 // offline message and skip network check. Since ethernet is still | 404 // offline message and skip network check. Since ethernet is still |
| 398 // behind portal, update engine fails to update. | 405 // behind portal, update engine fails to update. |
| 399 EXPECT_CALL(*mock_base_screen_delegate_, HideErrorScreen(update_screen_)) | 406 EXPECT_CALL(*mock_base_screen_delegate_, HideErrorScreen(update_screen_)) |
| 400 .Times(1); | 407 .Times(1); |
| 401 fake_update_engine_client_->set_update_check_result( | 408 fake_update_engine_client_->set_update_check_result( |
| 402 chromeos::UpdateEngineClient::UPDATE_RESULT_FAILED); | 409 chromeos::UpdateEngineClient::UPDATE_RESULT_FAILED); |
| 403 EXPECT_CALL(*mock_base_screen_delegate_, | 410 EXPECT_CALL(*mock_base_screen_delegate_, |
| 404 OnExit(_, BaseScreenDelegate::UPDATE_ERROR_CHECKING_FOR_UPDATE, | 411 OnExit(_, ScreenExitCode::UPDATE_ERROR_CHECKING_FOR_UPDATE, _)) |
| 405 _)).Times(1); | 412 .Times(1); |
| 406 | 413 |
| 407 update_screen_->OnConnectRequested(); | 414 update_screen_->OnConnectRequested(); |
| 408 base::RunLoop().RunUntilIdle(); | 415 base::RunLoop().RunUntilIdle(); |
| 409 } | 416 } |
| 410 | 417 |
| 411 } // namespace chromeos | 418 } // namespace chromeos |
| OLD | NEW |