| 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 "base/command_line.h" | 5 #include "base/command_line.h" |
| 6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
| 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/screens/mock_base_screen_delegate.h" |
| 9 #include "chrome/browser/chromeos/login/screens/mock_error_screen.h" | 10 #include "chrome/browser/chromeos/login/screens/mock_error_screen.h" |
| 10 #include "chrome/browser/chromeos/login/screens/mock_screen_observer.h" | |
| 11 #include "chrome/browser/chromeos/login/screens/update_screen.h" | 11 #include "chrome/browser/chromeos/login/screens/update_screen.h" |
| 12 #include "chrome/browser/chromeos/login/startup_utils.h" | 12 #include "chrome/browser/chromeos/login/startup_utils.h" |
| 13 #include "chrome/browser/chromeos/login/test/wizard_in_process_browser_test.h" | 13 #include "chrome/browser/chromeos/login/test/wizard_in_process_browser_test.h" |
| 14 #include "chrome/browser/chromeos/login/wizard_controller.h" | 14 #include "chrome/browser/chromeos/login/wizard_controller.h" |
| 15 #include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h" | 15 #include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h" |
| 16 #include "chrome/common/pref_names.h" | 16 #include "chrome/common/pref_names.h" |
| 17 #include "chromeos/chromeos_switches.h" | 17 #include "chromeos/chromeos_switches.h" |
| 18 #include "chromeos/dbus/dbus_thread_manager.h" | 18 #include "chromeos/dbus/dbus_thread_manager.h" |
| 19 #include "chromeos/dbus/fake_update_engine_client.h" | 19 #include "chromeos/dbus/fake_update_engine_client.h" |
| 20 #include "chromeos/network/portal_detector/network_portal_detector.h" | 20 #include "chromeos/network/portal_detector/network_portal_detector.h" |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 online_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE; | 61 online_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE; |
| 62 online_state.response_code = 204; | 62 online_state.response_code = 204; |
| 63 SetDefaultNetwork(kStubEthernetGuid); | 63 SetDefaultNetwork(kStubEthernetGuid); |
| 64 SetDetectionResults(kStubEthernetGuid, online_state); | 64 SetDetectionResults(kStubEthernetGuid, online_state); |
| 65 SetDetectionResults(kStubWifiGuid, online_state); | 65 SetDetectionResults(kStubWifiGuid, online_state); |
| 66 } | 66 } |
| 67 | 67 |
| 68 virtual void SetUpOnMainThread() override { | 68 virtual void SetUpOnMainThread() override { |
| 69 WizardInProcessBrowserTest::SetUpOnMainThread(); | 69 WizardInProcessBrowserTest::SetUpOnMainThread(); |
| 70 | 70 |
| 71 mock_screen_observer_.reset(new MockScreenObserver()); | 71 mock_base_screen_delegate_.reset(new MockBaseScreenDelegate()); |
| 72 mock_error_screen_actor_.reset(new MockErrorScreenActor()); | 72 mock_error_screen_actor_.reset(new MockErrorScreenActor()); |
| 73 mock_error_screen_.reset( | 73 mock_error_screen_.reset(new MockErrorScreen( |
| 74 new MockErrorScreen(mock_screen_observer_.get(), | 74 mock_base_screen_delegate_.get(), mock_error_screen_actor_.get())); |
| 75 mock_error_screen_actor_.get())); | 75 EXPECT_CALL(*mock_base_screen_delegate_, ShowCurrentScreen()) |
| 76 EXPECT_CALL(*mock_screen_observer_, ShowCurrentScreen()) | |
| 77 .Times(AnyNumber()); | 76 .Times(AnyNumber()); |
| 78 EXPECT_CALL(*mock_screen_observer_, GetErrorScreen()) | 77 EXPECT_CALL(*mock_base_screen_delegate_, GetErrorScreen()) |
| 79 .Times(AnyNumber()) | 78 .Times(AnyNumber()) |
| 80 .WillRepeatedly(Return(mock_error_screen_.get())); | 79 .WillRepeatedly(Return(mock_error_screen_.get())); |
| 81 | 80 |
| 82 ASSERT_TRUE(WizardController::default_controller() != NULL); | 81 ASSERT_TRUE(WizardController::default_controller() != NULL); |
| 83 update_screen_ = UpdateScreen::Get(WizardController::default_controller()); | 82 update_screen_ = UpdateScreen::Get(WizardController::default_controller()); |
| 84 ASSERT_TRUE(update_screen_ != NULL); | 83 ASSERT_TRUE(update_screen_ != NULL); |
| 85 ASSERT_EQ(WizardController::default_controller()->current_screen(), | 84 ASSERT_EQ(WizardController::default_controller()->current_screen(), |
| 86 update_screen_); | 85 update_screen_); |
| 87 update_screen_->screen_observer_ = mock_screen_observer_.get(); | 86 update_screen_->base_screen_delegate_ = mock_base_screen_delegate_.get(); |
| 88 } | 87 } |
| 89 | 88 |
| 90 virtual void TearDownOnMainThread() override { | 89 virtual void TearDownOnMainThread() override { |
| 91 mock_error_screen_.reset(); | 90 mock_error_screen_.reset(); |
| 92 mock_error_screen_actor_.reset(); | 91 mock_error_screen_actor_.reset(); |
| 93 WizardInProcessBrowserTest::TearDownOnMainThread(); | 92 WizardInProcessBrowserTest::TearDownOnMainThread(); |
| 94 } | 93 } |
| 95 | 94 |
| 96 virtual void TearDownInProcessBrowserTestFixture() override { | 95 virtual void TearDownInProcessBrowserTestFixture() override { |
| 97 NetworkPortalDetector::Shutdown(); | 96 NetworkPortalDetector::Shutdown(); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 109 DCHECK(network_portal_detector_); | 108 DCHECK(network_portal_detector_); |
| 110 network_portal_detector_->SetDetectionResultsForTesting(guid, state); | 109 network_portal_detector_->SetDetectionResultsForTesting(guid, state); |
| 111 } | 110 } |
| 112 | 111 |
| 113 void NotifyPortalDetectionCompleted() { | 112 void NotifyPortalDetectionCompleted() { |
| 114 DCHECK(network_portal_detector_); | 113 DCHECK(network_portal_detector_); |
| 115 network_portal_detector_->NotifyObserversForTesting(); | 114 network_portal_detector_->NotifyObserversForTesting(); |
| 116 } | 115 } |
| 117 | 116 |
| 118 FakeUpdateEngineClient* fake_update_engine_client_; | 117 FakeUpdateEngineClient* fake_update_engine_client_; |
| 119 scoped_ptr<MockScreenObserver> mock_screen_observer_; | 118 scoped_ptr<MockBaseScreenDelegate> mock_base_screen_delegate_; |
| 120 scoped_ptr<MockErrorScreenActor> mock_error_screen_actor_; | 119 scoped_ptr<MockErrorScreenActor> mock_error_screen_actor_; |
| 121 scoped_ptr<MockErrorScreen> mock_error_screen_; | 120 scoped_ptr<MockErrorScreen> mock_error_screen_; |
| 122 UpdateScreen* update_screen_; | 121 UpdateScreen* update_screen_; |
| 123 NetworkPortalDetectorTestImpl* network_portal_detector_; | 122 NetworkPortalDetectorTestImpl* network_portal_detector_; |
| 124 | 123 |
| 125 private: | 124 private: |
| 126 DISALLOW_COPY_AND_ASSIGN(UpdateScreenTest); | 125 DISALLOW_COPY_AND_ASSIGN(UpdateScreenTest); |
| 127 }; | 126 }; |
| 128 | 127 |
| 129 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestBasic) { | 128 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestBasic) { |
| 130 ASSERT_TRUE(update_screen_->actor_ != NULL); | 129 ASSERT_TRUE(update_screen_->actor_ != NULL); |
| 131 } | 130 } |
| 132 | 131 |
| 133 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestNoUpdate) { | 132 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestNoUpdate) { |
| 134 update_screen_->SetIgnoreIdleStatus(true); | 133 update_screen_->SetIgnoreIdleStatus(true); |
| 135 UpdateEngineClient::Status status; | 134 UpdateEngineClient::Status status; |
| 136 status.status = UpdateEngineClient::UPDATE_STATUS_IDLE; | 135 status.status = UpdateEngineClient::UPDATE_STATUS_IDLE; |
| 137 update_screen_->UpdateStatusChanged(status); | 136 update_screen_->UpdateStatusChanged(status); |
| 138 status.status = UpdateEngineClient::UPDATE_STATUS_CHECKING_FOR_UPDATE; | 137 status.status = UpdateEngineClient::UPDATE_STATUS_CHECKING_FOR_UPDATE; |
| 139 update_screen_->UpdateStatusChanged(status); | 138 update_screen_->UpdateStatusChanged(status); |
| 140 status.status = UpdateEngineClient::UPDATE_STATUS_IDLE; | 139 status.status = UpdateEngineClient::UPDATE_STATUS_IDLE; |
| 141 // GetLastStatus() will be called via ExitUpdate() called from | 140 // GetLastStatus() will be called via ExitUpdate() called from |
| 142 // UpdateStatusChanged(). | 141 // UpdateStatusChanged(). |
| 143 fake_update_engine_client_->set_default_status(status); | 142 fake_update_engine_client_->set_default_status(status); |
| 144 | 143 |
| 145 EXPECT_CALL(*mock_screen_observer_, OnExit(ScreenObserver::UPDATE_NOUPDATE)) | 144 EXPECT_CALL(*mock_base_screen_delegate_, |
| 146 .Times(1); | 145 OnExit(BaseScreenDelegate::UPDATE_NOUPDATE)).Times(1); |
| 147 update_screen_->UpdateStatusChanged(status); | 146 update_screen_->UpdateStatusChanged(status); |
| 148 } | 147 } |
| 149 | 148 |
| 150 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestUpdateAvailable) { | 149 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestUpdateAvailable) { |
| 151 update_screen_->is_ignore_update_deadlines_ = true; | 150 update_screen_->is_ignore_update_deadlines_ = true; |
| 152 | 151 |
| 153 UpdateEngineClient::Status status; | 152 UpdateEngineClient::Status status; |
| 154 status.status = UpdateEngineClient::UPDATE_STATUS_UPDATE_AVAILABLE; | 153 status.status = UpdateEngineClient::UPDATE_STATUS_UPDATE_AVAILABLE; |
| 155 status.new_version = "latest and greatest"; | 154 status.new_version = "latest and greatest"; |
| 156 update_screen_->UpdateStatusChanged(status); | 155 update_screen_->UpdateStatusChanged(status); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 177 EXPECT_EQ(1, fake_update_engine_client_->reboot_after_update_call_count()); | 176 EXPECT_EQ(1, fake_update_engine_client_->reboot_after_update_call_count()); |
| 178 // Check that OOBE will resume back at this screen. | 177 // Check that OOBE will resume back at this screen. |
| 179 base::MessageLoop::current()->RunUntilIdle(); | 178 base::MessageLoop::current()->RunUntilIdle(); |
| 180 EXPECT_FALSE(StartupUtils::IsOobeCompleted()); | 179 EXPECT_FALSE(StartupUtils::IsOobeCompleted()); |
| 181 EXPECT_EQ(update_screen_->GetName(), | 180 EXPECT_EQ(update_screen_->GetName(), |
| 182 g_browser_process->local_state()->GetString(prefs::kOobeScreenPending)); | 181 g_browser_process->local_state()->GetString(prefs::kOobeScreenPending)); |
| 183 } | 182 } |
| 184 | 183 |
| 185 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorIssuingUpdateCheck) { | 184 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorIssuingUpdateCheck) { |
| 186 // First, cancel the update that is already in progress. | 185 // First, cancel the update that is already in progress. |
| 187 EXPECT_CALL(*mock_screen_observer_, | 186 EXPECT_CALL(*mock_base_screen_delegate_, |
| 188 OnExit(ScreenObserver::UPDATE_NOUPDATE)) | 187 OnExit(BaseScreenDelegate::UPDATE_NOUPDATE)).Times(1); |
| 189 .Times(1); | |
| 190 update_screen_->CancelUpdate(); | 188 update_screen_->CancelUpdate(); |
| 191 | 189 |
| 192 fake_update_engine_client_->set_update_check_result( | 190 fake_update_engine_client_->set_update_check_result( |
| 193 chromeos::UpdateEngineClient::UPDATE_RESULT_FAILED); | 191 chromeos::UpdateEngineClient::UPDATE_RESULT_FAILED); |
| 194 EXPECT_CALL(*mock_screen_observer_, | 192 EXPECT_CALL(*mock_base_screen_delegate_, |
| 195 OnExit(ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE)) | 193 OnExit(BaseScreenDelegate::UPDATE_ERROR_CHECKING_FOR_UPDATE)) |
| 196 .Times(1); | 194 .Times(1); |
| 197 update_screen_->StartNetworkCheck(); | 195 update_screen_->StartNetworkCheck(); |
| 198 } | 196 } |
| 199 | 197 |
| 200 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorCheckingForUpdate) { | 198 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorCheckingForUpdate) { |
| 201 UpdateEngineClient::Status status; | 199 UpdateEngineClient::Status status; |
| 202 status.status = UpdateEngineClient::UPDATE_STATUS_ERROR; | 200 status.status = UpdateEngineClient::UPDATE_STATUS_ERROR; |
| 203 // GetLastStatus() will be called via ExitUpdate() called from | 201 // GetLastStatus() will be called via ExitUpdate() called from |
| 204 // UpdateStatusChanged(). | 202 // UpdateStatusChanged(). |
| 205 fake_update_engine_client_->set_default_status(status); | 203 fake_update_engine_client_->set_default_status(status); |
| 206 | 204 |
| 207 EXPECT_CALL(*mock_screen_observer_, | 205 EXPECT_CALL(*mock_base_screen_delegate_, |
| 208 OnExit(ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE)) | 206 OnExit(BaseScreenDelegate::UPDATE_ERROR_CHECKING_FOR_UPDATE)) |
| 209 .Times(1); | 207 .Times(1); |
| 210 update_screen_->UpdateStatusChanged(status); | 208 update_screen_->UpdateStatusChanged(status); |
| 211 } | 209 } |
| 212 | 210 |
| 213 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorUpdating) { | 211 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestErrorUpdating) { |
| 214 UpdateEngineClient::Status status; | 212 UpdateEngineClient::Status status; |
| 215 status.status = UpdateEngineClient::UPDATE_STATUS_UPDATE_AVAILABLE; | 213 status.status = UpdateEngineClient::UPDATE_STATUS_UPDATE_AVAILABLE; |
| 216 status.new_version = "latest and greatest"; | 214 status.new_version = "latest and greatest"; |
| 217 // GetLastStatus() will be called via ExitUpdate() called from | 215 // GetLastStatus() will be called via ExitUpdate() called from |
| 218 // UpdateStatusChanged(). | 216 // UpdateStatusChanged(). |
| 219 fake_update_engine_client_->set_default_status(status); | 217 fake_update_engine_client_->set_default_status(status); |
| 220 | 218 |
| 221 update_screen_->UpdateStatusChanged(status); | 219 update_screen_->UpdateStatusChanged(status); |
| 222 | 220 |
| 223 status.status = UpdateEngineClient::UPDATE_STATUS_ERROR; | 221 status.status = UpdateEngineClient::UPDATE_STATUS_ERROR; |
| 224 // GetLastStatus() will be called via ExitUpdate() called from | 222 // GetLastStatus() will be called via ExitUpdate() called from |
| 225 // UpdateStatusChanged(). | 223 // UpdateStatusChanged(). |
| 226 fake_update_engine_client_->set_default_status(status); | 224 fake_update_engine_client_->set_default_status(status); |
| 227 | 225 |
| 228 EXPECT_CALL(*mock_screen_observer_, | 226 EXPECT_CALL(*mock_base_screen_delegate_, |
| 229 OnExit(ScreenObserver::UPDATE_ERROR_UPDATING)) | 227 OnExit(BaseScreenDelegate::UPDATE_ERROR_UPDATING)).Times(1); |
| 230 .Times(1); | |
| 231 update_screen_->UpdateStatusChanged(status); | 228 update_screen_->UpdateStatusChanged(status); |
| 232 } | 229 } |
| 233 | 230 |
| 234 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestTemproraryOfflineNetwork) { | 231 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestTemproraryOfflineNetwork) { |
| 235 EXPECT_CALL(*mock_screen_observer_, | 232 EXPECT_CALL(*mock_base_screen_delegate_, |
| 236 OnExit(ScreenObserver::UPDATE_NOUPDATE)) | 233 OnExit(BaseScreenDelegate::UPDATE_NOUPDATE)).Times(1); |
| 237 .Times(1); | |
| 238 update_screen_->CancelUpdate(); | 234 update_screen_->CancelUpdate(); |
| 239 | 235 |
| 240 // Change ethernet state to portal. | 236 // Change ethernet state to portal. |
| 241 NetworkPortalDetector::CaptivePortalState portal_state; | 237 NetworkPortalDetector::CaptivePortalState portal_state; |
| 242 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; | 238 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; |
| 243 portal_state.response_code = 200; | 239 portal_state.response_code = 200; |
| 244 SetDetectionResults(kStubEthernetGuid, portal_state); | 240 SetDetectionResults(kStubEthernetGuid, portal_state); |
| 245 | 241 |
| 246 // Update screen will show error message about portal state because | 242 // Update screen will show error message about portal state because |
| 247 // ethernet is behind captive portal. | 243 // ethernet is behind captive portal. |
| 248 EXPECT_CALL(*mock_error_screen_actor_, | 244 EXPECT_CALL(*mock_error_screen_actor_, |
| 249 SetUIState(ErrorScreen::UI_STATE_UPDATE)) | 245 SetUIState(ErrorScreen::UI_STATE_UPDATE)) |
| 250 .Times(1); | 246 .Times(1); |
| 251 EXPECT_CALL(*mock_error_screen_actor_, | 247 EXPECT_CALL(*mock_error_screen_actor_, |
| 252 SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, std::string())) | 248 SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, std::string())) |
| 253 .Times(1); | 249 .Times(1); |
| 254 EXPECT_CALL(*mock_error_screen_actor_, FixCaptivePortal()) | 250 EXPECT_CALL(*mock_error_screen_actor_, FixCaptivePortal()) |
| 255 .Times(1); | 251 .Times(1); |
| 256 EXPECT_CALL(*mock_screen_observer_, ShowErrorScreen()) | 252 EXPECT_CALL(*mock_base_screen_delegate_, ShowErrorScreen()).Times(1); |
| 257 .Times(1); | |
| 258 | 253 |
| 259 update_screen_->StartNetworkCheck(); | 254 update_screen_->StartNetworkCheck(); |
| 260 | 255 |
| 261 NetworkPortalDetector::CaptivePortalState online_state; | 256 NetworkPortalDetector::CaptivePortalState online_state; |
| 262 online_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE; | 257 online_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE; |
| 263 online_state.response_code = 204; | 258 online_state.response_code = 204; |
| 264 SetDetectionResults(kStubEthernetGuid, online_state); | 259 SetDetectionResults(kStubEthernetGuid, online_state); |
| 265 | 260 |
| 266 // Second notification from portal detector will be about online state, | 261 // Second notification from portal detector will be about online state, |
| 267 // so update screen will hide error message and proceed to update. | 262 // so update screen will hide error message and proceed to update. |
| 268 EXPECT_CALL(*mock_screen_observer_, HideErrorScreen(update_screen_)) | 263 EXPECT_CALL(*mock_base_screen_delegate_, HideErrorScreen(update_screen_)) |
| 269 .Times(1); | 264 .Times(1); |
| 270 fake_update_engine_client_->set_update_check_result( | 265 fake_update_engine_client_->set_update_check_result( |
| 271 chromeos::UpdateEngineClient::UPDATE_RESULT_FAILED); | 266 chromeos::UpdateEngineClient::UPDATE_RESULT_FAILED); |
| 272 | 267 |
| 273 EXPECT_CALL(*mock_screen_observer_, | 268 EXPECT_CALL(*mock_base_screen_delegate_, |
| 274 OnExit(ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE)) | 269 OnExit(BaseScreenDelegate::UPDATE_ERROR_CHECKING_FOR_UPDATE)) |
| 275 .Times(1); | 270 .Times(1); |
| 276 | 271 |
| 277 NotifyPortalDetectionCompleted(); | 272 NotifyPortalDetectionCompleted(); |
| 278 } | 273 } |
| 279 | 274 |
| 280 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestTwoOfflineNetworks) { | 275 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestTwoOfflineNetworks) { |
| 281 EXPECT_CALL(*mock_screen_observer_, | 276 EXPECT_CALL(*mock_base_screen_delegate_, |
| 282 OnExit(ScreenObserver::UPDATE_NOUPDATE)) | 277 OnExit(BaseScreenDelegate::UPDATE_NOUPDATE)).Times(1); |
| 283 .Times(1); | |
| 284 update_screen_->CancelUpdate(); | 278 update_screen_->CancelUpdate(); |
| 285 | 279 |
| 286 // Change ethernet state to portal. | 280 // Change ethernet state to portal. |
| 287 NetworkPortalDetector::CaptivePortalState portal_state; | 281 NetworkPortalDetector::CaptivePortalState portal_state; |
| 288 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; | 282 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; |
| 289 portal_state.response_code = 200; | 283 portal_state.response_code = 200; |
| 290 SetDetectionResults(kStubEthernetGuid, portal_state); | 284 SetDetectionResults(kStubEthernetGuid, portal_state); |
| 291 | 285 |
| 292 // Update screen will show error message about portal state because | 286 // Update screen will show error message about portal state because |
| 293 // ethernet is behind captive portal. | 287 // ethernet is behind captive portal. |
| 294 EXPECT_CALL(*mock_error_screen_actor_, | 288 EXPECT_CALL(*mock_error_screen_actor_, |
| 295 SetUIState(ErrorScreen::UI_STATE_UPDATE)) | 289 SetUIState(ErrorScreen::UI_STATE_UPDATE)) |
| 296 .Times(1); | 290 .Times(1); |
| 297 EXPECT_CALL(*mock_error_screen_actor_, | 291 EXPECT_CALL(*mock_error_screen_actor_, |
| 298 SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, std::string())) | 292 SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, std::string())) |
| 299 .Times(1); | 293 .Times(1); |
| 300 EXPECT_CALL(*mock_error_screen_actor_, FixCaptivePortal()) | 294 EXPECT_CALL(*mock_error_screen_actor_, FixCaptivePortal()) |
| 301 .Times(1); | 295 .Times(1); |
| 302 EXPECT_CALL(*mock_screen_observer_, ShowErrorScreen()) | 296 EXPECT_CALL(*mock_base_screen_delegate_, ShowErrorScreen()).Times(1); |
| 303 .Times(1); | |
| 304 | 297 |
| 305 update_screen_->StartNetworkCheck(); | 298 update_screen_->StartNetworkCheck(); |
| 306 | 299 |
| 307 // Change active network to the wifi behind proxy. | 300 // Change active network to the wifi behind proxy. |
| 308 NetworkPortalDetector::CaptivePortalState proxy_state; | 301 NetworkPortalDetector::CaptivePortalState proxy_state; |
| 309 proxy_state.status = | 302 proxy_state.status = |
| 310 NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED; | 303 NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED; |
| 311 proxy_state.response_code = -1; | 304 proxy_state.response_code = -1; |
| 312 SetDefaultNetwork(kStubWifiGuid); | 305 SetDefaultNetwork(kStubWifiGuid); |
| 313 SetDetectionResults(kStubWifiGuid, proxy_state); | 306 SetDetectionResults(kStubWifiGuid, proxy_state); |
| 314 | 307 |
| 315 // Update screen will show message about proxy error because wifie | 308 // Update screen will show message about proxy error because wifie |
| 316 // network requires proxy authentication. | 309 // network requires proxy authentication. |
| 317 EXPECT_CALL(*mock_error_screen_actor_, | 310 EXPECT_CALL(*mock_error_screen_actor_, |
| 318 SetErrorState(ErrorScreen::ERROR_STATE_PROXY, std::string())) | 311 SetErrorState(ErrorScreen::ERROR_STATE_PROXY, std::string())) |
| 319 .Times(1); | 312 .Times(1); |
| 320 | 313 |
| 321 NotifyPortalDetectionCompleted(); | 314 NotifyPortalDetectionCompleted(); |
| 322 } | 315 } |
| 323 | 316 |
| 324 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestVoidNetwork) { | 317 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestVoidNetwork) { |
| 325 SetDefaultNetwork(std::string()); | 318 SetDefaultNetwork(std::string()); |
| 326 | 319 |
| 327 // Cancels pending update request. | 320 // Cancels pending update request. |
| 328 EXPECT_CALL(*mock_screen_observer_, | 321 EXPECT_CALL(*mock_base_screen_delegate_, |
| 329 OnExit(ScreenObserver::UPDATE_NOUPDATE)) | 322 OnExit(BaseScreenDelegate::UPDATE_NOUPDATE)).Times(1); |
| 330 .Times(1); | |
| 331 update_screen_->CancelUpdate(); | 323 update_screen_->CancelUpdate(); |
| 332 | 324 |
| 333 // First portal detection attempt returns NULL network and undefined | 325 // First portal detection attempt returns NULL network and undefined |
| 334 // results, so detection is restarted. | 326 // results, so detection is restarted. |
| 335 EXPECT_CALL(*mock_error_screen_actor_, | 327 EXPECT_CALL(*mock_error_screen_actor_, |
| 336 SetUIState(_)) | 328 SetUIState(_)) |
| 337 .Times(Exactly(0)); | 329 .Times(Exactly(0)); |
| 338 EXPECT_CALL(*mock_error_screen_actor_, | 330 EXPECT_CALL(*mock_error_screen_actor_, |
| 339 SetErrorState(_, _)) | 331 SetErrorState(_, _)) |
| 340 .Times(Exactly(0)); | 332 .Times(Exactly(0)); |
| 341 EXPECT_CALL(*mock_screen_observer_, ShowErrorScreen()) | 333 EXPECT_CALL(*mock_base_screen_delegate_, ShowErrorScreen()).Times(Exactly(0)); |
| 342 .Times(Exactly(0)); | |
| 343 update_screen_->StartNetworkCheck(); | 334 update_screen_->StartNetworkCheck(); |
| 344 | 335 |
| 345 // Second portal detection also returns NULL network and undefined | 336 // Second portal detection also returns NULL network and undefined |
| 346 // results. In this case, offline message should be displayed. | 337 // results. In this case, offline message should be displayed. |
| 347 EXPECT_CALL(*mock_error_screen_actor_, | 338 EXPECT_CALL(*mock_error_screen_actor_, |
| 348 SetUIState(ErrorScreen::UI_STATE_UPDATE)) | 339 SetUIState(ErrorScreen::UI_STATE_UPDATE)) |
| 349 .Times(1); | 340 .Times(1); |
| 350 EXPECT_CALL(*mock_error_screen_actor_, | 341 EXPECT_CALL(*mock_error_screen_actor_, |
| 351 SetErrorState(ErrorScreen::ERROR_STATE_OFFLINE, std::string())) | 342 SetErrorState(ErrorScreen::ERROR_STATE_OFFLINE, std::string())) |
| 352 .Times(1); | 343 .Times(1); |
| 353 EXPECT_CALL(*mock_screen_observer_, ShowErrorScreen()) | 344 EXPECT_CALL(*mock_base_screen_delegate_, ShowErrorScreen()).Times(1); |
| 354 .Times(1); | |
| 355 base::MessageLoop::current()->RunUntilIdle(); | 345 base::MessageLoop::current()->RunUntilIdle(); |
| 356 NotifyPortalDetectionCompleted(); | 346 NotifyPortalDetectionCompleted(); |
| 357 } | 347 } |
| 358 | 348 |
| 359 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestAPReselection) { | 349 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestAPReselection) { |
| 360 EXPECT_CALL(*mock_screen_observer_, | 350 EXPECT_CALL(*mock_base_screen_delegate_, |
| 361 OnExit(ScreenObserver::UPDATE_NOUPDATE)) | 351 OnExit(BaseScreenDelegate::UPDATE_NOUPDATE)).Times(1); |
| 362 .Times(1); | |
| 363 update_screen_->CancelUpdate(); | 352 update_screen_->CancelUpdate(); |
| 364 | 353 |
| 365 // Change ethernet state to portal. | 354 // Change ethernet state to portal. |
| 366 NetworkPortalDetector::CaptivePortalState portal_state; | 355 NetworkPortalDetector::CaptivePortalState portal_state; |
| 367 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; | 356 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; |
| 368 portal_state.response_code = 200; | 357 portal_state.response_code = 200; |
| 369 SetDetectionResults(kStubEthernetGuid, portal_state); | 358 SetDetectionResults(kStubEthernetGuid, portal_state); |
| 370 | 359 |
| 371 // Update screen will show error message about portal state because | 360 // Update screen will show error message about portal state because |
| 372 // ethernet is behind captive portal. | 361 // ethernet is behind captive portal. |
| 373 EXPECT_CALL(*mock_error_screen_actor_, | 362 EXPECT_CALL(*mock_error_screen_actor_, |
| 374 SetUIState(ErrorScreen::UI_STATE_UPDATE)) | 363 SetUIState(ErrorScreen::UI_STATE_UPDATE)) |
| 375 .Times(1); | 364 .Times(1); |
| 376 EXPECT_CALL(*mock_error_screen_actor_, | 365 EXPECT_CALL(*mock_error_screen_actor_, |
| 377 SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, std::string())) | 366 SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, std::string())) |
| 378 .Times(1); | 367 .Times(1); |
| 379 EXPECT_CALL(*mock_error_screen_actor_, FixCaptivePortal()) | 368 EXPECT_CALL(*mock_error_screen_actor_, FixCaptivePortal()) |
| 380 .Times(1); | 369 .Times(1); |
| 381 EXPECT_CALL(*mock_screen_observer_, ShowErrorScreen()) | 370 EXPECT_CALL(*mock_base_screen_delegate_, ShowErrorScreen()).Times(1); |
| 382 .Times(1); | |
| 383 | 371 |
| 384 update_screen_->StartNetworkCheck(); | 372 update_screen_->StartNetworkCheck(); |
| 385 | 373 |
| 386 // User re-selects the same network manually. In this case, hide | 374 // User re-selects the same network manually. In this case, hide |
| 387 // offline message and skip network check. Since ethernet is still | 375 // offline message and skip network check. Since ethernet is still |
| 388 // behind portal, update engine fails to update. | 376 // behind portal, update engine fails to update. |
| 389 EXPECT_CALL(*mock_screen_observer_, HideErrorScreen(update_screen_)) | 377 EXPECT_CALL(*mock_base_screen_delegate_, HideErrorScreen(update_screen_)) |
| 390 .Times(1); | 378 .Times(1); |
| 391 fake_update_engine_client_->set_update_check_result( | 379 fake_update_engine_client_->set_update_check_result( |
| 392 chromeos::UpdateEngineClient::UPDATE_RESULT_FAILED); | 380 chromeos::UpdateEngineClient::UPDATE_RESULT_FAILED); |
| 393 EXPECT_CALL(*mock_screen_observer_, | 381 EXPECT_CALL(*mock_base_screen_delegate_, |
| 394 OnExit(ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE)) | 382 OnExit(BaseScreenDelegate::UPDATE_ERROR_CHECKING_FOR_UPDATE)) |
| 395 .Times(1); | 383 .Times(1); |
| 396 | 384 |
| 397 update_screen_->OnConnectToNetworkRequested(); | 385 update_screen_->OnConnectToNetworkRequested(); |
| 398 base::MessageLoop::current()->RunUntilIdle(); | 386 base::MessageLoop::current()->RunUntilIdle(); |
| 399 } | 387 } |
| 400 | 388 |
| 401 } // namespace chromeos | 389 } // namespace chromeos |
| OLD | NEW |