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

Side by Side Diff: chrome/browser/chromeos/login/screens/update_screen_browsertest.cc

Issue 872633008: Migrate (Network)ErrorScreen to ScreenContext (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nit Created 5 years, 10 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
OLDNEW
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_base_screen_delegate.h"
10 #include "chrome/browser/chromeos/login/screens/mock_error_screen.h" 10 #include "chrome/browser/chromeos/login/screens/mock_error_screen.h"
11 #include "chrome/browser/chromeos/login/screens/network_error.h"
11 #include "chrome/browser/chromeos/login/screens/update_screen.h" 12 #include "chrome/browser/chromeos/login/screens/update_screen.h"
12 #include "chrome/browser/chromeos/login/startup_utils.h" 13 #include "chrome/browser/chromeos/login/startup_utils.h"
13 #include "chrome/browser/chromeos/login/test/wizard_in_process_browser_test.h" 14 #include "chrome/browser/chromeos/login/test/wizard_in_process_browser_test.h"
14 #include "chrome/browser/chromeos/login/wizard_controller.h" 15 #include "chrome/browser/chromeos/login/wizard_controller.h"
15 #include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h" 16 #include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h"
16 #include "chrome/common/pref_names.h" 17 #include "chrome/common/pref_names.h"
17 #include "chromeos/chromeos_switches.h" 18 #include "chromeos/chromeos_switches.h"
18 #include "chromeos/dbus/dbus_thread_manager.h" 19 #include "chromeos/dbus/dbus_thread_manager.h"
19 #include "chromeos/dbus/fake_update_engine_client.h" 20 #include "chromeos/dbus/fake_update_engine_client.h"
20 #include "chromeos/network/portal_detector/network_portal_detector.h" 21 #include "chromeos/network/portal_detector/network_portal_detector.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 online_state.response_code = 204; 63 online_state.response_code = 204;
63 SetDefaultNetwork(kStubEthernetGuid); 64 SetDefaultNetwork(kStubEthernetGuid);
64 SetDetectionResults(kStubEthernetGuid, online_state); 65 SetDetectionResults(kStubEthernetGuid, online_state);
65 SetDetectionResults(kStubWifiGuid, online_state); 66 SetDetectionResults(kStubWifiGuid, online_state);
66 } 67 }
67 68
68 void SetUpOnMainThread() override { 69 void SetUpOnMainThread() override {
69 WizardInProcessBrowserTest::SetUpOnMainThread(); 70 WizardInProcessBrowserTest::SetUpOnMainThread();
70 71
71 mock_base_screen_delegate_.reset(new MockBaseScreenDelegate()); 72 mock_base_screen_delegate_.reset(new MockBaseScreenDelegate());
72 mock_error_screen_actor_.reset(new MockErrorScreenActor()); 73 mock_network_error_view_.reset(new MockNetworkErrorView());
73 mock_error_screen_.reset(new MockErrorScreen( 74 mock_error_screen_.reset(new MockErrorScreen(
74 mock_base_screen_delegate_.get(), mock_error_screen_actor_.get())); 75 mock_base_screen_delegate_.get(), mock_network_error_view_.get()));
75 EXPECT_CALL(*mock_base_screen_delegate_, ShowCurrentScreen()) 76 EXPECT_CALL(*mock_base_screen_delegate_, ShowCurrentScreen())
76 .Times(AnyNumber()); 77 .Times(AnyNumber());
77 EXPECT_CALL(*mock_base_screen_delegate_, GetErrorScreen()) 78 EXPECT_CALL(*mock_base_screen_delegate_, GetErrorScreen())
78 .Times(AnyNumber()) 79 .Times(AnyNumber())
79 .WillRepeatedly(Return(mock_error_screen_.get())); 80 .WillRepeatedly(Return(mock_error_screen_.get()));
80 81
81 ASSERT_TRUE(WizardController::default_controller() != NULL); 82 ASSERT_TRUE(WizardController::default_controller() != NULL);
82 update_screen_ = UpdateScreen::Get(WizardController::default_controller()); 83 update_screen_ = UpdateScreen::Get(WizardController::default_controller());
83 ASSERT_TRUE(update_screen_ != NULL); 84 ASSERT_TRUE(update_screen_ != NULL);
84 ASSERT_EQ(WizardController::default_controller()->current_screen(), 85 ASSERT_EQ(WizardController::default_controller()->current_screen(),
85 update_screen_); 86 update_screen_);
86 update_screen_->base_screen_delegate_ = mock_base_screen_delegate_.get(); 87 update_screen_->base_screen_delegate_ = mock_base_screen_delegate_.get();
87 } 88 }
88 89
89 void TearDownOnMainThread() override { 90 void TearDownOnMainThread() override {
90 mock_error_screen_.reset(); 91 mock_error_screen_.reset();
91 mock_error_screen_actor_.reset(); 92 mock_network_error_view_.reset();
92 WizardInProcessBrowserTest::TearDownOnMainThread(); 93 WizardInProcessBrowserTest::TearDownOnMainThread();
93 } 94 }
94 95
95 void TearDownInProcessBrowserTestFixture() override { 96 void TearDownInProcessBrowserTestFixture() override {
96 NetworkPortalDetector::Shutdown(); 97 NetworkPortalDetector::Shutdown();
97 WizardInProcessBrowserTest::TearDownInProcessBrowserTestFixture(); 98 WizardInProcessBrowserTest::TearDownInProcessBrowserTestFixture();
98 } 99 }
99 100
100 void SetDefaultNetwork(const std::string& guid) { 101 void SetDefaultNetwork(const std::string& guid) {
101 DCHECK(network_portal_detector_); 102 DCHECK(network_portal_detector_);
102 network_portal_detector_->SetDefaultNetworkForTesting(guid); 103 network_portal_detector_->SetDefaultNetworkForTesting(guid);
103 } 104 }
104 105
105 void SetDetectionResults( 106 void SetDetectionResults(
106 const std::string& guid, 107 const std::string& guid,
107 const NetworkPortalDetector::CaptivePortalState& state) { 108 const NetworkPortalDetector::CaptivePortalState& state) {
108 DCHECK(network_portal_detector_); 109 DCHECK(network_portal_detector_);
109 network_portal_detector_->SetDetectionResultsForTesting(guid, state); 110 network_portal_detector_->SetDetectionResultsForTesting(guid, state);
110 } 111 }
111 112
112 void NotifyPortalDetectionCompleted() { 113 void NotifyPortalDetectionCompleted() {
113 DCHECK(network_portal_detector_); 114 DCHECK(network_portal_detector_);
114 network_portal_detector_->NotifyObserversForTesting(); 115 network_portal_detector_->NotifyObserversForTesting();
115 } 116 }
116 117
117 FakeUpdateEngineClient* fake_update_engine_client_; 118 FakeUpdateEngineClient* fake_update_engine_client_;
118 scoped_ptr<MockBaseScreenDelegate> mock_base_screen_delegate_; 119 scoped_ptr<MockBaseScreenDelegate> mock_base_screen_delegate_;
119 scoped_ptr<MockErrorScreenActor> mock_error_screen_actor_; 120 scoped_ptr<MockNetworkErrorView> mock_network_error_view_;
120 scoped_ptr<MockErrorScreen> mock_error_screen_; 121 scoped_ptr<MockErrorScreen> mock_error_screen_;
121 UpdateScreen* update_screen_; 122 UpdateScreen* update_screen_;
122 NetworkPortalDetectorTestImpl* network_portal_detector_; 123 NetworkPortalDetectorTestImpl* network_portal_detector_;
123 124
124 private: 125 private:
125 DISALLOW_COPY_AND_ASSIGN(UpdateScreenTest); 126 DISALLOW_COPY_AND_ASSIGN(UpdateScreenTest);
126 }; 127 };
127 128
128 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestBasic) { 129 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestBasic) {
129 ASSERT_TRUE(update_screen_->view_ != NULL); 130 ASSERT_TRUE(update_screen_->view_ != NULL);
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 update_screen_->CancelUpdate(); 235 update_screen_->CancelUpdate();
235 236
236 // Change ethernet state to portal. 237 // Change ethernet state to portal.
237 NetworkPortalDetector::CaptivePortalState portal_state; 238 NetworkPortalDetector::CaptivePortalState portal_state;
238 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; 239 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL;
239 portal_state.response_code = 200; 240 portal_state.response_code = 200;
240 SetDetectionResults(kStubEthernetGuid, portal_state); 241 SetDetectionResults(kStubEthernetGuid, portal_state);
241 242
242 // Update screen will show error message about portal state because 243 // Update screen will show error message about portal state because
243 // ethernet is behind captive portal. 244 // ethernet is behind captive portal.
244 EXPECT_CALL(*mock_error_screen_actor_, 245 EXPECT_CALL(*mock_error_screen_,
245 SetUIState(ErrorScreen::UI_STATE_UPDATE)) 246 MockSetUIState(NetworkError::UI_STATE_UPDATE)).Times(1);
246 .Times(1); 247 EXPECT_CALL(*mock_error_screen_,
247 EXPECT_CALL(*mock_error_screen_actor_, 248 MockSetErrorState(NetworkError::ERROR_STATE_PORTAL,
248 SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, std::string())) 249 std::string())).Times(1);
249 .Times(1); 250 EXPECT_CALL(*mock_error_screen_, MockFixCaptivePortal()).Times(1);
250 EXPECT_CALL(*mock_error_screen_actor_, FixCaptivePortal())
251 .Times(1);
252 EXPECT_CALL(*mock_base_screen_delegate_, ShowErrorScreen()).Times(1); 251 EXPECT_CALL(*mock_base_screen_delegate_, ShowErrorScreen()).Times(1);
253 252
254 update_screen_->StartNetworkCheck(); 253 update_screen_->StartNetworkCheck();
255 254
256 NetworkPortalDetector::CaptivePortalState online_state; 255 NetworkPortalDetector::CaptivePortalState online_state;
257 online_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE; 256 online_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE;
258 online_state.response_code = 204; 257 online_state.response_code = 204;
259 SetDetectionResults(kStubEthernetGuid, online_state); 258 SetDetectionResults(kStubEthernetGuid, online_state);
260 259
261 // Second notification from portal detector will be about online state, 260 // Second notification from portal detector will be about online state,
(...skipping 16 matching lines...) Expand all
278 update_screen_->CancelUpdate(); 277 update_screen_->CancelUpdate();
279 278
280 // Change ethernet state to portal. 279 // Change ethernet state to portal.
281 NetworkPortalDetector::CaptivePortalState portal_state; 280 NetworkPortalDetector::CaptivePortalState portal_state;
282 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; 281 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL;
283 portal_state.response_code = 200; 282 portal_state.response_code = 200;
284 SetDetectionResults(kStubEthernetGuid, portal_state); 283 SetDetectionResults(kStubEthernetGuid, portal_state);
285 284
286 // Update screen will show error message about portal state because 285 // Update screen will show error message about portal state because
287 // ethernet is behind captive portal. 286 // ethernet is behind captive portal.
288 EXPECT_CALL(*mock_error_screen_actor_, 287 EXPECT_CALL(*mock_error_screen_,
289 SetUIState(ErrorScreen::UI_STATE_UPDATE)) 288 MockSetUIState(NetworkError::UI_STATE_UPDATE)).Times(1);
290 .Times(1); 289 EXPECT_CALL(*mock_error_screen_,
291 EXPECT_CALL(*mock_error_screen_actor_, 290 MockSetErrorState(NetworkError::ERROR_STATE_PORTAL,
292 SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, std::string())) 291 std::string())).Times(1);
293 .Times(1); 292 EXPECT_CALL(*mock_error_screen_, MockFixCaptivePortal()).Times(1);
294 EXPECT_CALL(*mock_error_screen_actor_, FixCaptivePortal())
295 .Times(1);
296 EXPECT_CALL(*mock_base_screen_delegate_, ShowErrorScreen()).Times(1); 293 EXPECT_CALL(*mock_base_screen_delegate_, ShowErrorScreen()).Times(1);
297 294
298 update_screen_->StartNetworkCheck(); 295 update_screen_->StartNetworkCheck();
299 296
300 // Change active network to the wifi behind proxy. 297 // Change active network to the wifi behind proxy.
301 NetworkPortalDetector::CaptivePortalState proxy_state; 298 NetworkPortalDetector::CaptivePortalState proxy_state;
302 proxy_state.status = 299 proxy_state.status =
303 NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED; 300 NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED;
304 proxy_state.response_code = -1; 301 proxy_state.response_code = -1;
305 SetDefaultNetwork(kStubWifiGuid); 302 SetDefaultNetwork(kStubWifiGuid);
306 SetDetectionResults(kStubWifiGuid, proxy_state); 303 SetDetectionResults(kStubWifiGuid, proxy_state);
307 304
308 // Update screen will show message about proxy error because wifie 305 // Update screen will show message about proxy error because wifie
309 // network requires proxy authentication. 306 // network requires proxy authentication.
310 EXPECT_CALL(*mock_error_screen_actor_, 307 EXPECT_CALL(*mock_error_screen_,
311 SetErrorState(ErrorScreen::ERROR_STATE_PROXY, std::string())) 308 MockSetErrorState(NetworkError::ERROR_STATE_PROXY, std::string()))
312 .Times(1); 309 .Times(1);
313 310
314 NotifyPortalDetectionCompleted(); 311 NotifyPortalDetectionCompleted();
315 } 312 }
316 313
317 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestVoidNetwork) { 314 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestVoidNetwork) {
318 SetDefaultNetwork(std::string()); 315 SetDefaultNetwork(std::string());
319 316
320 // Cancels pending update request. 317 // Cancels pending update request.
321 EXPECT_CALL(*mock_base_screen_delegate_, 318 EXPECT_CALL(*mock_base_screen_delegate_,
322 OnExit(_, BaseScreenDelegate::UPDATE_NOUPDATE, _)).Times(1); 319 OnExit(_, BaseScreenDelegate::UPDATE_NOUPDATE, _)).Times(1);
323 update_screen_->CancelUpdate(); 320 update_screen_->CancelUpdate();
324 321
325 // First portal detection attempt returns NULL network and undefined 322 // First portal detection attempt returns NULL network and undefined
326 // results, so detection is restarted. 323 // results, so detection is restarted.
327 EXPECT_CALL(*mock_error_screen_actor_, 324 EXPECT_CALL(*mock_error_screen_, MockSetUIState(_)).Times(Exactly(0));
328 SetUIState(_)) 325 EXPECT_CALL(*mock_error_screen_, MockSetErrorState(_, _)).Times(Exactly(0));
329 .Times(Exactly(0));
330 EXPECT_CALL(*mock_error_screen_actor_,
331 SetErrorState(_, _))
332 .Times(Exactly(0));
333 EXPECT_CALL(*mock_base_screen_delegate_, ShowErrorScreen()).Times(Exactly(0)); 326 EXPECT_CALL(*mock_base_screen_delegate_, ShowErrorScreen()).Times(Exactly(0));
334 update_screen_->StartNetworkCheck(); 327 update_screen_->StartNetworkCheck();
335 328
336 // Second portal detection also returns NULL network and undefined 329 // Second portal detection also returns NULL network and undefined
337 // results. In this case, offline message should be displayed. 330 // results. In this case, offline message should be displayed.
338 EXPECT_CALL(*mock_error_screen_actor_, 331 EXPECT_CALL(*mock_error_screen_,
339 SetUIState(ErrorScreen::UI_STATE_UPDATE)) 332 MockSetUIState(NetworkError::UI_STATE_UPDATE)).Times(1);
340 .Times(1); 333 EXPECT_CALL(*mock_error_screen_,
341 EXPECT_CALL(*mock_error_screen_actor_, 334 MockSetErrorState(NetworkError::ERROR_STATE_OFFLINE,
342 SetErrorState(ErrorScreen::ERROR_STATE_OFFLINE, std::string())) 335 std::string())).Times(1);
343 .Times(1);
344 EXPECT_CALL(*mock_base_screen_delegate_, ShowErrorScreen()).Times(1); 336 EXPECT_CALL(*mock_base_screen_delegate_, ShowErrorScreen()).Times(1);
345 base::MessageLoop::current()->RunUntilIdle(); 337 base::MessageLoop::current()->RunUntilIdle();
346 NotifyPortalDetectionCompleted(); 338 NotifyPortalDetectionCompleted();
347 } 339 }
348 340
349 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestAPReselection) { 341 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestAPReselection) {
350 EXPECT_CALL(*mock_base_screen_delegate_, 342 EXPECT_CALL(*mock_base_screen_delegate_,
351 OnExit(_, BaseScreenDelegate::UPDATE_NOUPDATE, _)).Times(1); 343 OnExit(_, BaseScreenDelegate::UPDATE_NOUPDATE, _)).Times(1);
352 update_screen_->CancelUpdate(); 344 update_screen_->CancelUpdate();
353 345
354 // Change ethernet state to portal. 346 // Change ethernet state to portal.
355 NetworkPortalDetector::CaptivePortalState portal_state; 347 NetworkPortalDetector::CaptivePortalState portal_state;
356 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; 348 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL;
357 portal_state.response_code = 200; 349 portal_state.response_code = 200;
358 SetDetectionResults(kStubEthernetGuid, portal_state); 350 SetDetectionResults(kStubEthernetGuid, portal_state);
359 351
360 // Update screen will show error message about portal state because 352 // Update screen will show error message about portal state because
361 // ethernet is behind captive portal. 353 // ethernet is behind captive portal.
362 EXPECT_CALL(*mock_error_screen_actor_, 354 EXPECT_CALL(*mock_error_screen_,
363 SetUIState(ErrorScreen::UI_STATE_UPDATE)) 355 MockSetUIState(NetworkError::UI_STATE_UPDATE)).Times(1);
364 .Times(1); 356 EXPECT_CALL(*mock_error_screen_,
365 EXPECT_CALL(*mock_error_screen_actor_, 357 MockSetErrorState(NetworkError::ERROR_STATE_PORTAL,
366 SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, std::string())) 358 std::string())).Times(1);
367 .Times(1); 359 EXPECT_CALL(*mock_error_screen_, MockFixCaptivePortal()).Times(1);
368 EXPECT_CALL(*mock_error_screen_actor_, FixCaptivePortal())
369 .Times(1);
370 EXPECT_CALL(*mock_base_screen_delegate_, ShowErrorScreen()).Times(1); 360 EXPECT_CALL(*mock_base_screen_delegate_, ShowErrorScreen()).Times(1);
371 361
372 update_screen_->StartNetworkCheck(); 362 update_screen_->StartNetworkCheck();
373 363
374 // User re-selects the same network manually. In this case, hide 364 // User re-selects the same network manually. In this case, hide
375 // offline message and skip network check. Since ethernet is still 365 // offline message and skip network check. Since ethernet is still
376 // behind portal, update engine fails to update. 366 // behind portal, update engine fails to update.
377 EXPECT_CALL(*mock_base_screen_delegate_, HideErrorScreen(update_screen_)) 367 EXPECT_CALL(*mock_base_screen_delegate_, HideErrorScreen(update_screen_))
378 .Times(1); 368 .Times(1);
379 fake_update_engine_client_->set_update_check_result( 369 fake_update_engine_client_->set_update_check_result(
380 chromeos::UpdateEngineClient::UPDATE_RESULT_FAILED); 370 chromeos::UpdateEngineClient::UPDATE_RESULT_FAILED);
381 EXPECT_CALL(*mock_base_screen_delegate_, 371 EXPECT_CALL(*mock_base_screen_delegate_,
382 OnExit(_, BaseScreenDelegate::UPDATE_ERROR_CHECKING_FOR_UPDATE, 372 OnExit(_, BaseScreenDelegate::UPDATE_ERROR_CHECKING_FOR_UPDATE,
383 _)).Times(1); 373 _)).Times(1);
384 374
385 update_screen_->OnConnectToNetworkRequested(); 375 update_screen_->OnConnectToNetworkRequested();
386 base::MessageLoop::current()->RunUntilIdle(); 376 base::MessageLoop::current()->RunUntilIdle();
387 } 377 }
388 378
389 } // namespace chromeos 379 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698