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

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: remove last reference to lastNetworkType 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"
11 #include "chrome/browser/chromeos/login/wizard_controller.h" 11 #include "chrome/browser/chromeos/login/wizard_controller.h"
12 #include "chrome/browser/chromeos/login/wizard_in_process_browser_test.h" 12 #include "chrome/browser/chromeos/login/wizard_in_process_browser_test.h"
13 #include "chrome/browser/chromeos/net/network_portal_detector.h" 13 #include "chrome/browser/chromeos/net/network_portal_detector.h"
14 #include "chrome/browser/chromeos/net/network_portal_detector_stub.h" 14 #include "chrome/browser/chromeos/net/network_portal_detector_stub.h"
15 #include "chromeos/chromeos_switches.h" 15 #include "chromeos/chromeos_switches.h"
16 #include "chromeos/dbus/mock_dbus_thread_manager.h" 16 #include "chromeos/dbus/mock_dbus_thread_manager.h"
17 #include "chromeos/dbus/mock_session_manager_client.h" 17 #include "chromeos/dbus/mock_session_manager_client.h"
18 #include "chromeos/dbus/mock_update_engine_client.h" 18 #include "chromeos/dbus/mock_update_engine_client.h"
19 #include "chromeos/network/network_state.h"
19 #include "testing/gmock/include/gmock/gmock.h" 20 #include "testing/gmock/include/gmock/gmock.h"
20 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
21 22
22 using ::testing::_; 23 using ::testing::_;
23 using ::testing::AnyNumber; 24 using ::testing::AnyNumber;
24 using ::testing::AtLeast; 25 using ::testing::AtLeast;
25 using ::testing::Invoke; 26 using ::testing::Invoke;
26 using ::testing::Return; 27 using ::testing::Return;
27 28
28 namespace chromeos { 29 namespace chromeos {
29 30
30 namespace { 31 namespace {
31 32
32 const char kDefaultEthernetServicePath[] = "eth0"; 33 const char kDefaultEthernetServicePath[] = "eth0";
33 const char kDefaultWifiServicePath[] = "wlan0"; 34 const char kDefaultWifiServicePath[] = "wlan0";
34 35
35 static void RequestUpdateCheckSuccess( 36 static void RequestUpdateCheckSuccess(
36 UpdateEngineClient::UpdateCheckCallback callback) { 37 UpdateEngineClient::UpdateCheckCallback callback) {
37 callback.Run(UpdateEngineClient::UPDATE_RESULT_SUCCESS); 38 callback.Run(UpdateEngineClient::UPDATE_RESULT_SUCCESS);
38 } 39 }
39 40
40 } // namespace 41 } // namespace
41 42
42 class UpdateScreenTest : public WizardInProcessBrowserTest { 43 class UpdateScreenTest : public WizardInProcessBrowserTest {
43 public: 44 public:
44 UpdateScreenTest() : WizardInProcessBrowserTest("update"), 45 UpdateScreenTest() : WizardInProcessBrowserTest("update"),
45 mock_update_engine_client_(NULL), 46 mock_update_engine_client_(NULL),
46 mock_network_library_(NULL), 47 mock_network_library_(NULL),
48 stub_ethernet_(kDefaultEthernetServicePath),
49 stub_wifi_(kDefaultWifiServicePath),
47 network_portal_detector_stub_(NULL) { 50 network_portal_detector_stub_(NULL) {
48 } 51 }
49 52
50 protected: 53 protected:
51 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { 54 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
52 MockDBusThreadManager* mock_dbus_thread_manager = 55 MockDBusThreadManager* mock_dbus_thread_manager =
53 new MockDBusThreadManager; 56 new MockDBusThreadManager;
54 EXPECT_CALL(*mock_dbus_thread_manager, GetSystemBus()) 57 EXPECT_CALL(*mock_dbus_thread_manager, GetSystemBus())
55 .WillRepeatedly(Return(reinterpret_cast<dbus::Bus*>(NULL))); 58 .WillRepeatedly(Return(reinterpret_cast<dbus::Bus*>(NULL)));
56 DBusThreadManager::InitializeForTesting(mock_dbus_thread_manager); 59 DBusThreadManager::InitializeForTesting(mock_dbus_thread_manager);
(...skipping 14 matching lines...) Expand all
71 // should be set up here. 74 // should be set up here.
72 EXPECT_CALL(*mock_update_engine_client_, AddObserver(_)) 75 EXPECT_CALL(*mock_update_engine_client_, AddObserver(_))
73 .Times(AtLeast(1)); 76 .Times(AtLeast(1));
74 EXPECT_CALL(*mock_update_engine_client_, RemoveObserver(_)) 77 EXPECT_CALL(*mock_update_engine_client_, RemoveObserver(_))
75 .Times(AtLeast(1)); 78 .Times(AtLeast(1));
76 EXPECT_CALL(*mock_update_engine_client_, RequestUpdateCheck(_)) 79 EXPECT_CALL(*mock_update_engine_client_, RequestUpdateCheck(_))
77 .Times(1) 80 .Times(1)
78 .WillOnce(Invoke(RequestUpdateCheckSuccess)); 81 .WillOnce(Invoke(RequestUpdateCheckSuccess));
79 82
80 mock_network_library_ = cros_mock_->mock_network_library(); 83 mock_network_library_ = cros_mock_->mock_network_library();
81 stub_ethernet_.reset(new EthernetNetwork(kDefaultEthernetServicePath));
82 stub_wifi_.reset(new WifiNetwork(kDefaultWifiServicePath));
83 EXPECT_CALL(*mock_network_library_, SetDefaultCheckPortalList()) 84 EXPECT_CALL(*mock_network_library_, SetDefaultCheckPortalList())
84 .Times(1); 85 .Times(1);
85 EXPECT_CALL(*mock_network_library_, AddNetworkManagerObserver(_))
86 .Times(1)
87 .RetiresOnSaturation();
88 EXPECT_CALL(*mock_network_library_, AddUserActionObserver(_))
89 .Times(AnyNumber());
90 EXPECT_CALL(*mock_network_library_, FindWifiDevice())
91 .Times(AnyNumber());
92 EXPECT_CALL(*mock_network_library_, FindEthernetDevice())
93 .Times(AnyNumber());
94 EXPECT_CALL(*mock_network_library_, LoadOncNetworks(_, _)) 86 EXPECT_CALL(*mock_network_library_, LoadOncNetworks(_, _))
95 .Times(AnyNumber()); 87 .Times(AnyNumber());
96 EXPECT_CALL(*mock_network_library_,
97 FindNetworkByPath(kDefaultEthernetServicePath))
98 .Times(AnyNumber())
99 .WillRepeatedly((Return(stub_ethernet_.get())));
100 EXPECT_CALL(*mock_network_library_,
101 FindNetworkByPath(kDefaultWifiServicePath))
102 .Times(AnyNumber())
103 .WillRepeatedly((Return(stub_wifi_.get())));
104 88
105 // Setup network portal detector to return online state for both 89 // Setup network portal detector to return online state for both
106 // ethernet and wifi networks. Ethernet is an active network by 90 // ethernet and wifi networks. Ethernet is an active network by
107 // default. 91 // default.
108 network_portal_detector_stub_ = 92 network_portal_detector_stub_ =
109 static_cast<NetworkPortalDetectorStub*>( 93 static_cast<NetworkPortalDetectorStub*>(
110 NetworkPortalDetector::GetInstance()); 94 NetworkPortalDetector::GetInstance());
111 NetworkPortalDetector::CaptivePortalState online_state; 95 NetworkPortalDetector::CaptivePortalState online_state;
112 online_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE; 96 online_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE;
113 online_state.response_code = 204; 97 online_state.response_code = 204;
114 SetActiveNetwork(stub_ethernet_.get()); 98 SetDefaultNetwork(&stub_ethernet_);
115 SetDetectionResults(stub_ethernet_.get(), online_state); 99 SetDetectionResults(&stub_ethernet_, online_state);
116 SetDetectionResults(stub_wifi_.get(), online_state); 100 SetDetectionResults(&stub_wifi_, online_state);
117 } 101 }
118 102
119 virtual void SetUpOnMainThread() OVERRIDE { 103 virtual void SetUpOnMainThread() OVERRIDE {
120 WizardInProcessBrowserTest::SetUpOnMainThread(); 104 WizardInProcessBrowserTest::SetUpOnMainThread();
121 105
122 mock_screen_observer_.reset(new MockScreenObserver()); 106 mock_screen_observer_.reset(new MockScreenObserver());
123 mock_error_screen_actor_.reset(new MockErrorScreenActor()); 107 mock_error_screen_actor_.reset(new MockErrorScreenActor());
124 mock_error_screen_.reset( 108 mock_error_screen_.reset(
125 new MockErrorScreen(mock_screen_observer_.get(), 109 new MockErrorScreen(mock_screen_observer_.get(),
126 mock_error_screen_actor_.get())); 110 mock_error_screen_actor_.get()));
127 EXPECT_CALL(*mock_screen_observer_, ShowCurrentScreen()) 111 EXPECT_CALL(*mock_screen_observer_, ShowCurrentScreen())
128 .Times(AnyNumber()); 112 .Times(AnyNumber());
129 EXPECT_CALL(*mock_screen_observer_, GetErrorScreen()) 113 EXPECT_CALL(*mock_screen_observer_, GetErrorScreen())
130 .Times(AnyNumber()) 114 .Times(AnyNumber())
131 .WillRepeatedly(Return(mock_error_screen_.get())); 115 .WillRepeatedly(Return(mock_error_screen_.get()));
132 116
133 ASSERT_TRUE(WizardController::default_controller() != NULL); 117 ASSERT_TRUE(WizardController::default_controller() != NULL);
134 update_screen_ = WizardController::default_controller()->GetUpdateScreen(); 118 update_screen_ = WizardController::default_controller()->GetUpdateScreen();
135 ASSERT_TRUE(update_screen_ != NULL); 119 ASSERT_TRUE(update_screen_ != NULL);
136 ASSERT_EQ(WizardController::default_controller()->current_screen(), 120 ASSERT_EQ(WizardController::default_controller()->current_screen(),
137 update_screen_); 121 update_screen_);
138 update_screen_->screen_observer_ = mock_screen_observer_.get(); 122 update_screen_->screen_observer_ = mock_screen_observer_.get();
139 } 123 }
140 124
141 virtual void TearDownInProcessBrowserTestFixture() OVERRIDE { 125 virtual void TearDownInProcessBrowserTestFixture() OVERRIDE {
142 WizardInProcessBrowserTest::TearDownInProcessBrowserTestFixture(); 126 WizardInProcessBrowserTest::TearDownInProcessBrowserTestFixture();
143 DBusThreadManager::Shutdown(); 127 DBusThreadManager::Shutdown();
144 } 128 }
145 129
146 void SetActiveNetwork(const Network* network) { 130 void SetDefaultNetwork(const NetworkState* network) {
147 DCHECK(network_portal_detector_stub_); 131 DCHECK(network_portal_detector_stub_);
148 network_portal_detector_stub_->SetActiveNetworkForTesting(network); 132 network_portal_detector_stub_->SetDefaultNetworkForTesting(network);
149 } 133 }
150 134
151 void SetDetectionResults( 135 void SetDetectionResults(
152 const Network* network, 136 const NetworkState* network,
153 const NetworkPortalDetector::CaptivePortalState& state) { 137 const NetworkPortalDetector::CaptivePortalState& state) {
154 DCHECK(network_portal_detector_stub_); 138 DCHECK(network_portal_detector_stub_);
155 network_portal_detector_stub_->SetDetectionResultsForTesting(network, 139 network_portal_detector_stub_->SetDetectionResultsForTesting(network,
156 state); 140 state);
157 } 141 }
158 142
159 void NotifyPortalDetectionCompleted() { 143 void NotifyPortalDetectionCompleted() {
160 DCHECK(network_portal_detector_stub_); 144 DCHECK(network_portal_detector_stub_);
161 network_portal_detector_stub_->NotifyObserversForTesting(); 145 network_portal_detector_stub_->NotifyObserversForTesting();
162 } 146 }
163 147
164 MockUpdateEngineClient* mock_update_engine_client_; 148 MockUpdateEngineClient* mock_update_engine_client_;
165 MockNetworkLibrary* mock_network_library_; 149 MockNetworkLibrary* mock_network_library_;
166 scoped_ptr<Network> stub_ethernet_; 150 NetworkState stub_ethernet_;
167 scoped_ptr<Network> stub_wifi_; 151 NetworkState stub_wifi_;
168 scoped_ptr<MockScreenObserver> mock_screen_observer_; 152 scoped_ptr<MockScreenObserver> mock_screen_observer_;
169 scoped_ptr<MockErrorScreenActor> mock_error_screen_actor_; 153 scoped_ptr<MockErrorScreenActor> mock_error_screen_actor_;
170 scoped_ptr<MockErrorScreen> mock_error_screen_; 154 scoped_ptr<MockErrorScreen> mock_error_screen_;
171 UpdateScreen* update_screen_; 155 UpdateScreen* update_screen_;
172 NetworkPortalDetectorStub* network_portal_detector_stub_; 156 NetworkPortalDetectorStub* network_portal_detector_stub_;
173 157
174 private: 158 private:
175 DISALLOW_COPY_AND_ASSIGN(UpdateScreenTest); 159 DISALLOW_COPY_AND_ASSIGN(UpdateScreenTest);
176 }; 160 };
177 161
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestTemproraryOfflineNetwork) { 278 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestTemproraryOfflineNetwork) {
295 EXPECT_CALL(*mock_screen_observer_, 279 EXPECT_CALL(*mock_screen_observer_,
296 OnExit(ScreenObserver::UPDATE_NOUPDATE)) 280 OnExit(ScreenObserver::UPDATE_NOUPDATE))
297 .Times(1); 281 .Times(1);
298 update_screen_->CancelUpdate(); 282 update_screen_->CancelUpdate();
299 283
300 // Change ethernet state to portal. 284 // Change ethernet state to portal.
301 NetworkPortalDetector::CaptivePortalState portal_state; 285 NetworkPortalDetector::CaptivePortalState portal_state;
302 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; 286 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL;
303 portal_state.response_code = 200; 287 portal_state.response_code = 200;
304 SetDetectionResults(stub_ethernet_.get(), portal_state); 288 SetDetectionResults(&stub_ethernet_, portal_state);
305 289
306 // Update screen will show error message about portal state because 290 // Update screen will show error message about portal state because
307 // ethernet is behind captive portal. 291 // ethernet is behind captive portal.
308 EXPECT_CALL(*mock_error_screen_actor_, 292 EXPECT_CALL(*mock_error_screen_actor_,
309 SetUIState(ErrorScreen::UI_STATE_UPDATE)) 293 SetUIState(ErrorScreen::UI_STATE_UPDATE))
310 .Times(1); 294 .Times(1);
311 EXPECT_CALL(*mock_error_screen_actor_, 295 EXPECT_CALL(*mock_error_screen_actor_,
312 SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, std::string())) 296 SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, std::string()))
313 .Times(1); 297 .Times(1);
314 EXPECT_CALL(*mock_error_screen_actor_, FixCaptivePortal()) 298 EXPECT_CALL(*mock_error_screen_actor_, FixCaptivePortal())
315 .Times(1); 299 .Times(1);
316 EXPECT_CALL(*mock_screen_observer_, ShowErrorScreen()) 300 EXPECT_CALL(*mock_screen_observer_, ShowErrorScreen())
317 .Times(1); 301 .Times(1);
318 302
319 update_screen_->StartNetworkCheck(); 303 update_screen_->StartNetworkCheck();
320 304
321 NetworkPortalDetector::CaptivePortalState online_state; 305 NetworkPortalDetector::CaptivePortalState online_state;
322 online_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE; 306 online_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE;
323 online_state.response_code = 204; 307 online_state.response_code = 204;
324 SetDetectionResults(stub_ethernet_.get(), online_state); 308 SetDetectionResults(&stub_ethernet_, online_state);
325 309
326 // Second notification from portal detector will be about online state, 310 // Second notification from portal detector will be about online state,
327 // so update screen will hide error message and proceed to update. 311 // so update screen will hide error message and proceed to update.
328 EXPECT_CALL(*mock_screen_observer_, HideErrorScreen(update_screen_)) 312 EXPECT_CALL(*mock_screen_observer_, HideErrorScreen(update_screen_))
329 .Times(1); 313 .Times(1);
330 EXPECT_CALL(*mock_update_engine_client_, RequestUpdateCheck(_)) 314 EXPECT_CALL(*mock_update_engine_client_, RequestUpdateCheck(_))
331 .Times(1) 315 .Times(1)
332 .WillOnce(Invoke(RequestUpdateCheckFail)); 316 .WillOnce(Invoke(RequestUpdateCheckFail));
333 EXPECT_CALL(*mock_screen_observer_, 317 EXPECT_CALL(*mock_screen_observer_,
334 OnExit(ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE)) 318 OnExit(ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE))
335 .Times(1); 319 .Times(1);
336 320
337 NotifyPortalDetectionCompleted(); 321 NotifyPortalDetectionCompleted();
338 } 322 }
339 323
340 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestTwoOfflineNetworks) { 324 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestTwoOfflineNetworks) {
341 EXPECT_CALL(*mock_screen_observer_, 325 EXPECT_CALL(*mock_screen_observer_,
342 OnExit(ScreenObserver::UPDATE_NOUPDATE)) 326 OnExit(ScreenObserver::UPDATE_NOUPDATE))
343 .Times(1); 327 .Times(1);
344 update_screen_->CancelUpdate(); 328 update_screen_->CancelUpdate();
345 329
346 // Change ethernet state to portal. 330 // Change ethernet state to portal.
347 NetworkPortalDetector::CaptivePortalState portal_state; 331 NetworkPortalDetector::CaptivePortalState portal_state;
348 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; 332 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL;
349 portal_state.response_code = 200; 333 portal_state.response_code = 200;
350 SetDetectionResults(stub_ethernet_.get(), portal_state); 334 SetDetectionResults(&stub_ethernet_, portal_state);
351 335
352 // Update screen will show error message about portal state because 336 // Update screen will show error message about portal state because
353 // ethernet is behind captive portal. 337 // ethernet is behind captive portal.
354 EXPECT_CALL(*mock_error_screen_actor_, 338 EXPECT_CALL(*mock_error_screen_actor_,
355 SetUIState(ErrorScreen::UI_STATE_UPDATE)) 339 SetUIState(ErrorScreen::UI_STATE_UPDATE))
356 .Times(1); 340 .Times(1);
357 EXPECT_CALL(*mock_error_screen_actor_, 341 EXPECT_CALL(*mock_error_screen_actor_,
358 SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, std::string())) 342 SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, std::string()))
359 .Times(1); 343 .Times(1);
360 EXPECT_CALL(*mock_error_screen_actor_, FixCaptivePortal()) 344 EXPECT_CALL(*mock_error_screen_actor_, FixCaptivePortal())
361 .Times(1); 345 .Times(1);
362 EXPECT_CALL(*mock_screen_observer_, ShowErrorScreen()) 346 EXPECT_CALL(*mock_screen_observer_, ShowErrorScreen())
363 .Times(1); 347 .Times(1);
364 348
365 update_screen_->StartNetworkCheck(); 349 update_screen_->StartNetworkCheck();
366 350
367 // Change active network to the wifi behind proxy. 351 // Change active network to the wifi behind proxy.
368 NetworkPortalDetector::CaptivePortalState proxy_state; 352 NetworkPortalDetector::CaptivePortalState proxy_state;
369 proxy_state.status = 353 proxy_state.status =
370 NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED; 354 NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED;
371 proxy_state.response_code = -1; 355 proxy_state.response_code = -1;
372 SetActiveNetwork(stub_wifi_.get()); 356 SetDefaultNetwork(&stub_wifi_);
373 SetDetectionResults(stub_wifi_.get(), proxy_state); 357 SetDetectionResults(&stub_wifi_, proxy_state);
374 358
375 // Update screen will show message about proxy error because wifie 359 // Update screen will show message about proxy error because wifie
376 // network requires proxy authentication. 360 // network requires proxy authentication.
377 EXPECT_CALL(*mock_error_screen_actor_, 361 EXPECT_CALL(*mock_error_screen_actor_,
378 SetErrorState(ErrorScreen::ERROR_STATE_PROXY, std::string())) 362 SetErrorState(ErrorScreen::ERROR_STATE_PROXY, std::string()))
379 .Times(1); 363 .Times(1);
380 364
381 NotifyPortalDetectionCompleted(); 365 NotifyPortalDetectionCompleted();
382 } 366 }
383 367
384 } // namespace chromeos 368 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698