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

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

Issue 14134007: NetworkPortalDetector/NetworkStateInformer: Switch over to use NetworkStateHandler (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase again Created 7 years, 7 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 | Annotate | Revision Log
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 "chrome/browser/chromeos/cros/mock_network_library.h" 7 #include "chrome/browser/chromeos/cros/mock_network_library.h"
8 #include "chrome/browser/chromeos/login/screens/mock_error_screen.h" 8 #include "chrome/browser/chromeos/login/screens/mock_error_screen.h"
9 #include "chrome/browser/chromeos/login/screens/mock_screen_observer.h" 9 #include "chrome/browser/chromeos/login/screens/mock_screen_observer.h"
10 #include "chrome/browser/chromeos/login/screens/update_screen.h" 10 #include "chrome/browser/chromeos/login/screens/update_screen.h"
(...skipping 11 matching lines...) Expand all
22 using ::testing::AtLeast; 22 using ::testing::AtLeast;
23 using ::testing::Exactly; 23 using ::testing::Exactly;
24 using ::testing::Invoke; 24 using ::testing::Invoke;
25 using ::testing::Return; 25 using ::testing::Return;
26 using ::testing::_; 26 using ::testing::_;
27 27
28 namespace chromeos { 28 namespace chromeos {
29 29
30 namespace { 30 namespace {
31 31
32 const char kDefaultEthernetServicePath[] = "eth0"; 32 const char kStubEthernetServicePath[] = "eth0";
33 const char kDefaultWifiServicePath[] = "wlan0"; 33 const char kStubWifiServicePath[] = "wlan0";
34 34
35 } // namespace 35 } // namespace
36 36
37 class UpdateScreenTest : public WizardInProcessBrowserTest { 37 class UpdateScreenTest : public WizardInProcessBrowserTest {
38 public: 38 public:
39 UpdateScreenTest() : WizardInProcessBrowserTest("update"), 39 UpdateScreenTest() : WizardInProcessBrowserTest("update"),
40 fake_update_engine_client_(NULL), 40 fake_update_engine_client_(NULL),
41 mock_network_library_(NULL), 41 mock_network_library_(NULL),
42 network_portal_detector_stub_(NULL) { 42 network_portal_detector_stub_(NULL) {
43 } 43 }
44 44
45 protected: 45 protected:
46 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { 46 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
47 MockDBusThreadManagerWithoutGMock* mock_dbus_thread_manager = 47 MockDBusThreadManagerWithoutGMock* mock_dbus_thread_manager =
48 new MockDBusThreadManagerWithoutGMock; 48 new MockDBusThreadManagerWithoutGMock;
49 DBusThreadManager::InitializeForTesting(mock_dbus_thread_manager); 49 DBusThreadManager::InitializeForTesting(mock_dbus_thread_manager);
50 WizardInProcessBrowserTest::SetUpInProcessBrowserTestFixture(); 50 WizardInProcessBrowserTest::SetUpInProcessBrowserTestFixture();
51 cros_mock_->InitStatusAreaMocks(); 51 cros_mock_->InitStatusAreaMocks();
52 cros_mock_->SetStatusAreaMocksExpectations(); 52 cros_mock_->SetStatusAreaMocksExpectations();
53 53
54 fake_update_engine_client_ 54 fake_update_engine_client_
55 = mock_dbus_thread_manager->fake_update_engine_client(); 55 = mock_dbus_thread_manager->fake_update_engine_client();
56 56
57 mock_network_library_ = cros_mock_->mock_network_library(); 57 mock_network_library_ = cros_mock_->mock_network_library();
58 stub_ethernet_.reset(new EthernetNetwork(kDefaultEthernetServicePath));
59 stub_wifi_.reset(new WifiNetwork(kDefaultWifiServicePath));
60 EXPECT_CALL(*mock_network_library_, SetDefaultCheckPortalList()) 58 EXPECT_CALL(*mock_network_library_, SetDefaultCheckPortalList())
61 .Times(1); 59 .Times(1);
62 EXPECT_CALL(*mock_network_library_, AddNetworkManagerObserver(_))
63 .Times(1)
64 .RetiresOnSaturation();
65 EXPECT_CALL(*mock_network_library_, AddUserActionObserver(_))
66 .Times(AnyNumber());
67 EXPECT_CALL(*mock_network_library_, FindWifiDevice())
68 .Times(AnyNumber());
69 EXPECT_CALL(*mock_network_library_, FindEthernetDevice())
70 .Times(AnyNumber());
71 EXPECT_CALL(*mock_network_library_, LoadOncNetworks(_, _)) 60 EXPECT_CALL(*mock_network_library_, LoadOncNetworks(_, _))
72 .Times(AnyNumber()); 61 .Times(AnyNumber());
73 EXPECT_CALL(*mock_network_library_,
74 FindNetworkByPath(kDefaultEthernetServicePath))
75 .Times(AnyNumber())
76 .WillRepeatedly((Return(stub_ethernet_.get())));
77 EXPECT_CALL(*mock_network_library_,
78 FindNetworkByPath(kDefaultWifiServicePath))
79 .Times(AnyNumber())
80 .WillRepeatedly((Return(stub_wifi_.get())));
81 62
82 // Setup network portal detector to return online state for both 63 // Setup network portal detector to return online state for both
83 // ethernet and wifi networks. Ethernet is an active network by 64 // ethernet and wifi networks. Ethernet is an active network by
84 // default. 65 // default.
85 network_portal_detector_stub_ = 66 network_portal_detector_stub_ =
86 static_cast<NetworkPortalDetectorStub*>( 67 static_cast<NetworkPortalDetectorStub*>(
87 NetworkPortalDetector::GetInstance()); 68 NetworkPortalDetector::GetInstance());
88 NetworkPortalDetector::CaptivePortalState online_state; 69 NetworkPortalDetector::CaptivePortalState online_state;
89 online_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE; 70 online_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE;
90 online_state.response_code = 204; 71 online_state.response_code = 204;
91 SetActiveNetwork(stub_ethernet_.get()); 72 SetDefaultNetworkPath(kStubEthernetServicePath);
92 SetDetectionResults(stub_ethernet_.get(), online_state); 73 SetDetectionResults(kStubEthernetServicePath, online_state);
93 SetDetectionResults(stub_wifi_.get(), online_state); 74 SetDetectionResults(kStubWifiServicePath, online_state);
94 } 75 }
95 76
96 virtual void SetUpOnMainThread() OVERRIDE { 77 virtual void SetUpOnMainThread() OVERRIDE {
97 WizardInProcessBrowserTest::SetUpOnMainThread(); 78 WizardInProcessBrowserTest::SetUpOnMainThread();
98 79
99 mock_screen_observer_.reset(new MockScreenObserver()); 80 mock_screen_observer_.reset(new MockScreenObserver());
100 mock_error_screen_actor_.reset(new MockErrorScreenActor()); 81 mock_error_screen_actor_.reset(new MockErrorScreenActor());
101 mock_error_screen_.reset( 82 mock_error_screen_.reset(
102 new MockErrorScreen(mock_screen_observer_.get(), 83 new MockErrorScreen(mock_screen_observer_.get(),
103 mock_error_screen_actor_.get())); 84 mock_error_screen_actor_.get()));
104 EXPECT_CALL(*mock_screen_observer_, ShowCurrentScreen()) 85 EXPECT_CALL(*mock_screen_observer_, ShowCurrentScreen())
105 .Times(AnyNumber()); 86 .Times(AnyNumber());
106 EXPECT_CALL(*mock_screen_observer_, GetErrorScreen()) 87 EXPECT_CALL(*mock_screen_observer_, GetErrorScreen())
107 .Times(AnyNumber()) 88 .Times(AnyNumber())
108 .WillRepeatedly(Return(mock_error_screen_.get())); 89 .WillRepeatedly(Return(mock_error_screen_.get()));
109 90
110 ASSERT_TRUE(WizardController::default_controller() != NULL); 91 ASSERT_TRUE(WizardController::default_controller() != NULL);
111 update_screen_ = WizardController::default_controller()->GetUpdateScreen(); 92 update_screen_ = WizardController::default_controller()->GetUpdateScreen();
112 ASSERT_TRUE(update_screen_ != NULL); 93 ASSERT_TRUE(update_screen_ != NULL);
113 ASSERT_EQ(WizardController::default_controller()->current_screen(), 94 ASSERT_EQ(WizardController::default_controller()->current_screen(),
114 update_screen_); 95 update_screen_);
115 update_screen_->screen_observer_ = mock_screen_observer_.get(); 96 update_screen_->screen_observer_ = mock_screen_observer_.get();
116 } 97 }
117 98
118 virtual void TearDownInProcessBrowserTestFixture() OVERRIDE { 99 virtual void TearDownInProcessBrowserTestFixture() OVERRIDE {
119 WizardInProcessBrowserTest::TearDownInProcessBrowserTestFixture(); 100 WizardInProcessBrowserTest::TearDownInProcessBrowserTestFixture();
120 DBusThreadManager::Shutdown(); 101 DBusThreadManager::Shutdown();
121 } 102 }
122 103
123 void SetActiveNetwork(const Network* network) { 104 void SetDefaultNetworkPath(const std::string& service_path) {
124 DCHECK(network_portal_detector_stub_); 105 DCHECK(network_portal_detector_stub_);
125 network_portal_detector_stub_->SetActiveNetworkForTesting(network); 106 network_portal_detector_stub_->SetDefaultNetworkPathForTesting(
107 service_path);
126 } 108 }
127 109
128 void SetDetectionResults( 110 void SetDetectionResults(
129 const Network* network, 111 const std::string& service_path,
130 const NetworkPortalDetector::CaptivePortalState& state) { 112 const NetworkPortalDetector::CaptivePortalState& state) {
131 DCHECK(network_portal_detector_stub_); 113 DCHECK(network_portal_detector_stub_);
132 network_portal_detector_stub_->SetDetectionResultsForTesting(network, 114 network_portal_detector_stub_->SetDetectionResultsForTesting(service_path,
133 state); 115 state);
134 } 116 }
135 117
136 void NotifyPortalDetectionCompleted() { 118 void NotifyPortalDetectionCompleted() {
137 DCHECK(network_portal_detector_stub_); 119 DCHECK(network_portal_detector_stub_);
138 network_portal_detector_stub_->NotifyObserversForTesting(); 120 network_portal_detector_stub_->NotifyObserversForTesting();
139 } 121 }
140 122
141 FakeUpdateEngineClient* fake_update_engine_client_; 123 FakeUpdateEngineClient* fake_update_engine_client_;
142 MockNetworkLibrary* mock_network_library_; 124 MockNetworkLibrary* mock_network_library_;
143 scoped_ptr<Network> stub_ethernet_;
144 scoped_ptr<Network> stub_wifi_;
145 scoped_ptr<MockScreenObserver> mock_screen_observer_; 125 scoped_ptr<MockScreenObserver> mock_screen_observer_;
146 scoped_ptr<MockErrorScreenActor> mock_error_screen_actor_; 126 scoped_ptr<MockErrorScreenActor> mock_error_screen_actor_;
147 scoped_ptr<MockErrorScreen> mock_error_screen_; 127 scoped_ptr<MockErrorScreen> mock_error_screen_;
148 UpdateScreen* update_screen_; 128 UpdateScreen* update_screen_;
149 NetworkPortalDetectorStub* network_portal_detector_stub_; 129 NetworkPortalDetectorStub* network_portal_detector_stub_;
150 130
151 private: 131 private:
152 DISALLOW_COPY_AND_ASSIGN(UpdateScreenTest); 132 DISALLOW_COPY_AND_ASSIGN(UpdateScreenTest);
153 }; 133 };
154 134
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestTemproraryOfflineNetwork) { 235 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestTemproraryOfflineNetwork) {
256 EXPECT_CALL(*mock_screen_observer_, 236 EXPECT_CALL(*mock_screen_observer_,
257 OnExit(ScreenObserver::UPDATE_NOUPDATE)) 237 OnExit(ScreenObserver::UPDATE_NOUPDATE))
258 .Times(1); 238 .Times(1);
259 update_screen_->CancelUpdate(); 239 update_screen_->CancelUpdate();
260 240
261 // Change ethernet state to portal. 241 // Change ethernet state to portal.
262 NetworkPortalDetector::CaptivePortalState portal_state; 242 NetworkPortalDetector::CaptivePortalState portal_state;
263 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; 243 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL;
264 portal_state.response_code = 200; 244 portal_state.response_code = 200;
265 SetDetectionResults(stub_ethernet_.get(), portal_state); 245 SetDetectionResults(kStubEthernetServicePath, portal_state);
266 246
267 // Update screen will show error message about portal state because 247 // Update screen will show error message about portal state because
268 // ethernet is behind captive portal. 248 // ethernet is behind captive portal.
269 EXPECT_CALL(*mock_error_screen_actor_, 249 EXPECT_CALL(*mock_error_screen_actor_,
270 SetUIState(ErrorScreen::UI_STATE_UPDATE)) 250 SetUIState(ErrorScreen::UI_STATE_UPDATE))
271 .Times(1); 251 .Times(1);
272 EXPECT_CALL(*mock_error_screen_actor_, 252 EXPECT_CALL(*mock_error_screen_actor_,
273 SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, std::string())) 253 SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, std::string()))
274 .Times(1); 254 .Times(1);
275 EXPECT_CALL(*mock_error_screen_actor_, FixCaptivePortal()) 255 EXPECT_CALL(*mock_error_screen_actor_, FixCaptivePortal())
276 .Times(1); 256 .Times(1);
277 EXPECT_CALL(*mock_screen_observer_, ShowErrorScreen()) 257 EXPECT_CALL(*mock_screen_observer_, ShowErrorScreen())
278 .Times(1); 258 .Times(1);
279 259
280 update_screen_->StartNetworkCheck(); 260 update_screen_->StartNetworkCheck();
281 261
282 NetworkPortalDetector::CaptivePortalState online_state; 262 NetworkPortalDetector::CaptivePortalState online_state;
283 online_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE; 263 online_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE;
284 online_state.response_code = 204; 264 online_state.response_code = 204;
285 SetDetectionResults(stub_ethernet_.get(), online_state); 265 SetDetectionResults(kStubEthernetServicePath, online_state);
286 266
287 // Second notification from portal detector will be about online state, 267 // Second notification from portal detector will be about online state,
288 // so update screen will hide error message and proceed to update. 268 // so update screen will hide error message and proceed to update.
289 EXPECT_CALL(*mock_screen_observer_, HideErrorScreen(update_screen_)) 269 EXPECT_CALL(*mock_screen_observer_, HideErrorScreen(update_screen_))
290 .Times(1); 270 .Times(1);
291 fake_update_engine_client_->set_update_check_result( 271 fake_update_engine_client_->set_update_check_result(
292 chromeos::UpdateEngineClient::UPDATE_RESULT_FAILED); 272 chromeos::UpdateEngineClient::UPDATE_RESULT_FAILED);
293 273
294 EXPECT_CALL(*mock_screen_observer_, 274 EXPECT_CALL(*mock_screen_observer_,
295 OnExit(ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE)) 275 OnExit(ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE))
296 .Times(1); 276 .Times(1);
297 277
298 NotifyPortalDetectionCompleted(); 278 NotifyPortalDetectionCompleted();
299 } 279 }
300 280
301 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestTwoOfflineNetworks) { 281 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestTwoOfflineNetworks) {
302 EXPECT_CALL(*mock_screen_observer_, 282 EXPECT_CALL(*mock_screen_observer_,
303 OnExit(ScreenObserver::UPDATE_NOUPDATE)) 283 OnExit(ScreenObserver::UPDATE_NOUPDATE))
304 .Times(1); 284 .Times(1);
305 update_screen_->CancelUpdate(); 285 update_screen_->CancelUpdate();
306 286
307 // Change ethernet state to portal. 287 // Change ethernet state to portal.
308 NetworkPortalDetector::CaptivePortalState portal_state; 288 NetworkPortalDetector::CaptivePortalState portal_state;
309 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; 289 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL;
310 portal_state.response_code = 200; 290 portal_state.response_code = 200;
311 SetDetectionResults(stub_ethernet_.get(), portal_state); 291 SetDetectionResults(kStubEthernetServicePath, portal_state);
312 292
313 // Update screen will show error message about portal state because 293 // Update screen will show error message about portal state because
314 // ethernet is behind captive portal. 294 // ethernet is behind captive portal.
315 EXPECT_CALL(*mock_error_screen_actor_, 295 EXPECT_CALL(*mock_error_screen_actor_,
316 SetUIState(ErrorScreen::UI_STATE_UPDATE)) 296 SetUIState(ErrorScreen::UI_STATE_UPDATE))
317 .Times(1); 297 .Times(1);
318 EXPECT_CALL(*mock_error_screen_actor_, 298 EXPECT_CALL(*mock_error_screen_actor_,
319 SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, std::string())) 299 SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, std::string()))
320 .Times(1); 300 .Times(1);
321 EXPECT_CALL(*mock_error_screen_actor_, FixCaptivePortal()) 301 EXPECT_CALL(*mock_error_screen_actor_, FixCaptivePortal())
322 .Times(1); 302 .Times(1);
323 EXPECT_CALL(*mock_screen_observer_, ShowErrorScreen()) 303 EXPECT_CALL(*mock_screen_observer_, ShowErrorScreen())
324 .Times(1); 304 .Times(1);
325 305
326 update_screen_->StartNetworkCheck(); 306 update_screen_->StartNetworkCheck();
327 307
328 // Change active network to the wifi behind proxy. 308 // Change active network to the wifi behind proxy.
329 NetworkPortalDetector::CaptivePortalState proxy_state; 309 NetworkPortalDetector::CaptivePortalState proxy_state;
330 proxy_state.status = 310 proxy_state.status =
331 NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED; 311 NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED;
332 proxy_state.response_code = -1; 312 proxy_state.response_code = -1;
333 SetActiveNetwork(stub_wifi_.get()); 313 SetDefaultNetworkPath(kStubWifiServicePath);
334 SetDetectionResults(stub_wifi_.get(), proxy_state); 314 SetDetectionResults(kStubWifiServicePath, proxy_state);
335 315
336 // Update screen will show message about proxy error because wifie 316 // Update screen will show message about proxy error because wifie
337 // network requires proxy authentication. 317 // network requires proxy authentication.
338 EXPECT_CALL(*mock_error_screen_actor_, 318 EXPECT_CALL(*mock_error_screen_actor_,
339 SetErrorState(ErrorScreen::ERROR_STATE_PROXY, std::string())) 319 SetErrorState(ErrorScreen::ERROR_STATE_PROXY, std::string()))
340 .Times(1); 320 .Times(1);
341 321
342 NotifyPortalDetectionCompleted(); 322 NotifyPortalDetectionCompleted();
343 } 323 }
344 324
345 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestVoidNetwork) { 325 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestVoidNetwork) {
346 SetActiveNetwork(NULL); 326 SetDefaultNetworkPath("");
347 327
348 // Cancels pending update request. 328 // Cancels pending update request.
349 EXPECT_CALL(*mock_screen_observer_, 329 EXPECT_CALL(*mock_screen_observer_,
350 OnExit(ScreenObserver::UPDATE_NOUPDATE)) 330 OnExit(ScreenObserver::UPDATE_NOUPDATE))
351 .Times(1); 331 .Times(1);
352 update_screen_->CancelUpdate(); 332 update_screen_->CancelUpdate();
353 333
354 // First portal detection attempt returns NULL network and undefined 334 // First portal detection attempt returns NULL network and undefined
355 // results, so detection is restarted. 335 // results, so detection is restarted.
356 EXPECT_CALL(*mock_error_screen_actor_, 336 EXPECT_CALL(*mock_error_screen_actor_,
(...skipping 14 matching lines...) Expand all
371 EXPECT_CALL(*mock_error_screen_actor_, 351 EXPECT_CALL(*mock_error_screen_actor_,
372 SetErrorState(ErrorScreen::ERROR_STATE_OFFLINE, std::string())) 352 SetErrorState(ErrorScreen::ERROR_STATE_OFFLINE, std::string()))
373 .Times(1); 353 .Times(1);
374 EXPECT_CALL(*mock_screen_observer_, ShowErrorScreen()) 354 EXPECT_CALL(*mock_screen_observer_, ShowErrorScreen())
375 .Times(1); 355 .Times(1);
376 MessageLoop::current()->RunUntilIdle(); 356 MessageLoop::current()->RunUntilIdle();
377 NotifyPortalDetectionCompleted(); 357 NotifyPortalDetectionCompleted();
378 } 358 }
379 359
380 } // namespace chromeos 360 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/login/screens/update_screen.cc ('k') | chrome/browser/chromeos/net/network_portal_detector.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698