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

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 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/fake_update_engine_client.h" 16 #include "chromeos/dbus/fake_update_engine_client.h"
17 #include "chromeos/dbus/mock_dbus_thread_manager_without_gmock.h" 17 #include "chromeos/dbus/mock_dbus_thread_manager_without_gmock.h"
18 #include "chromeos/network/network_state.h"
18 #include "testing/gmock/include/gmock/gmock.h" 19 #include "testing/gmock/include/gmock/gmock.h"
19 #include "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
20 21
21 using ::testing::_; 22 using ::testing::_;
22 using ::testing::AnyNumber; 23 using ::testing::AnyNumber;
23 using ::testing::AtLeast; 24 using ::testing::AtLeast;
24 using ::testing::Invoke; 25 using ::testing::Invoke;
25 using ::testing::Return; 26 using ::testing::Return;
26 27
27 namespace chromeos { 28 namespace chromeos {
28 29
29 namespace { 30 namespace {
30 31
31 const char kDefaultEthernetServicePath[] = "eth0"; 32 const char kDefaultEthernetServicePath[] = "eth0";
32 const char kDefaultWifiServicePath[] = "wlan0"; 33 const char kDefaultWifiServicePath[] = "wlan0";
33 34
34 } // namespace 35 } // namespace
35 36
36 class UpdateScreenTest : public WizardInProcessBrowserTest { 37 class UpdateScreenTest : public WizardInProcessBrowserTest {
37 public: 38 public:
38 UpdateScreenTest() : WizardInProcessBrowserTest("update"), 39 UpdateScreenTest() : WizardInProcessBrowserTest("update"),
39 fake_update_engine_client_(NULL), 40 fake_update_engine_client_(NULL),
40 mock_network_library_(NULL), 41 mock_network_library_(NULL),
42 stub_ethernet_(kDefaultEthernetServicePath),
43 stub_wifi_(kDefaultWifiServicePath),
41 network_portal_detector_stub_(NULL) { 44 network_portal_detector_stub_(NULL) {
42 } 45 }
43 46
44 protected: 47 protected:
45 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { 48 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
46 MockDBusThreadManagerWithoutGMock* mock_dbus_thread_manager = 49 MockDBusThreadManagerWithoutGMock* mock_dbus_thread_manager =
47 new MockDBusThreadManagerWithoutGMock; 50 new MockDBusThreadManagerWithoutGMock;
48 DBusThreadManager::InitializeForTesting(mock_dbus_thread_manager); 51 DBusThreadManager::InitializeForTesting(mock_dbus_thread_manager);
49 WizardInProcessBrowserTest::SetUpInProcessBrowserTestFixture(); 52 WizardInProcessBrowserTest::SetUpInProcessBrowserTestFixture();
50 cros_mock_->InitStatusAreaMocks(); 53 cros_mock_->InitStatusAreaMocks();
51 cros_mock_->SetStatusAreaMocksExpectations(); 54 cros_mock_->SetStatusAreaMocksExpectations();
52 55
53 fake_update_engine_client_ 56 fake_update_engine_client_
54 = mock_dbus_thread_manager->fake_update_engine_client(); 57 = mock_dbus_thread_manager->fake_update_engine_client();
55 58
56 mock_network_library_ = cros_mock_->mock_network_library(); 59 mock_network_library_ = cros_mock_->mock_network_library();
57 stub_ethernet_.reset(new EthernetNetwork(kDefaultEthernetServicePath));
58 stub_wifi_.reset(new WifiNetwork(kDefaultWifiServicePath));
59 EXPECT_CALL(*mock_network_library_, SetDefaultCheckPortalList()) 60 EXPECT_CALL(*mock_network_library_, SetDefaultCheckPortalList())
60 .Times(1); 61 .Times(1);
61 EXPECT_CALL(*mock_network_library_, AddNetworkManagerObserver(_))
62 .Times(1)
63 .RetiresOnSaturation();
64 EXPECT_CALL(*mock_network_library_, AddUserActionObserver(_))
65 .Times(AnyNumber());
66 EXPECT_CALL(*mock_network_library_, FindWifiDevice())
67 .Times(AnyNumber());
68 EXPECT_CALL(*mock_network_library_, FindEthernetDevice())
69 .Times(AnyNumber());
70 EXPECT_CALL(*mock_network_library_, LoadOncNetworks(_, _)) 62 EXPECT_CALL(*mock_network_library_, LoadOncNetworks(_, _))
71 .Times(AnyNumber()); 63 .Times(AnyNumber());
72 EXPECT_CALL(*mock_network_library_,
73 FindNetworkByPath(kDefaultEthernetServicePath))
74 .Times(AnyNumber())
75 .WillRepeatedly((Return(stub_ethernet_.get())));
76 EXPECT_CALL(*mock_network_library_,
77 FindNetworkByPath(kDefaultWifiServicePath))
78 .Times(AnyNumber())
79 .WillRepeatedly((Return(stub_wifi_.get())));
80 64
81 // Setup network portal detector to return online state for both 65 // Setup network portal detector to return online state for both
82 // ethernet and wifi networks. Ethernet is an active network by 66 // ethernet and wifi networks. Ethernet is an active network by
83 // default. 67 // default.
84 network_portal_detector_stub_ = 68 network_portal_detector_stub_ =
85 static_cast<NetworkPortalDetectorStub*>( 69 static_cast<NetworkPortalDetectorStub*>(
86 NetworkPortalDetector::GetInstance()); 70 NetworkPortalDetector::GetInstance());
87 NetworkPortalDetector::CaptivePortalState online_state; 71 NetworkPortalDetector::CaptivePortalState online_state;
88 online_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE; 72 online_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE;
89 online_state.response_code = 204; 73 online_state.response_code = 204;
90 SetActiveNetwork(stub_ethernet_.get()); 74 SetDefaultNetwork(&stub_ethernet_);
91 SetDetectionResults(stub_ethernet_.get(), online_state); 75 SetDetectionResults(&stub_ethernet_, online_state);
92 SetDetectionResults(stub_wifi_.get(), online_state); 76 SetDetectionResults(&stub_wifi_, online_state);
93 } 77 }
94 78
95 virtual void SetUpOnMainThread() OVERRIDE { 79 virtual void SetUpOnMainThread() OVERRIDE {
96 WizardInProcessBrowserTest::SetUpOnMainThread(); 80 WizardInProcessBrowserTest::SetUpOnMainThread();
97 81
98 mock_screen_observer_.reset(new MockScreenObserver()); 82 mock_screen_observer_.reset(new MockScreenObserver());
99 mock_error_screen_actor_.reset(new MockErrorScreenActor()); 83 mock_error_screen_actor_.reset(new MockErrorScreenActor());
100 mock_error_screen_.reset( 84 mock_error_screen_.reset(
101 new MockErrorScreen(mock_screen_observer_.get(), 85 new MockErrorScreen(mock_screen_observer_.get(),
102 mock_error_screen_actor_.get())); 86 mock_error_screen_actor_.get()));
103 EXPECT_CALL(*mock_screen_observer_, ShowCurrentScreen()) 87 EXPECT_CALL(*mock_screen_observer_, ShowCurrentScreen())
104 .Times(AnyNumber()); 88 .Times(AnyNumber());
105 EXPECT_CALL(*mock_screen_observer_, GetErrorScreen()) 89 EXPECT_CALL(*mock_screen_observer_, GetErrorScreen())
106 .Times(AnyNumber()) 90 .Times(AnyNumber())
107 .WillRepeatedly(Return(mock_error_screen_.get())); 91 .WillRepeatedly(Return(mock_error_screen_.get()));
108 92
109 ASSERT_TRUE(WizardController::default_controller() != NULL); 93 ASSERT_TRUE(WizardController::default_controller() != NULL);
110 update_screen_ = WizardController::default_controller()->GetUpdateScreen(); 94 update_screen_ = WizardController::default_controller()->GetUpdateScreen();
111 ASSERT_TRUE(update_screen_ != NULL); 95 ASSERT_TRUE(update_screen_ != NULL);
112 ASSERT_EQ(WizardController::default_controller()->current_screen(), 96 ASSERT_EQ(WizardController::default_controller()->current_screen(),
113 update_screen_); 97 update_screen_);
114 update_screen_->screen_observer_ = mock_screen_observer_.get(); 98 update_screen_->screen_observer_ = mock_screen_observer_.get();
115 } 99 }
116 100
117 virtual void TearDownInProcessBrowserTestFixture() OVERRIDE { 101 virtual void TearDownInProcessBrowserTestFixture() OVERRIDE {
118 WizardInProcessBrowserTest::TearDownInProcessBrowserTestFixture(); 102 WizardInProcessBrowserTest::TearDownInProcessBrowserTestFixture();
119 DBusThreadManager::Shutdown(); 103 DBusThreadManager::Shutdown();
120 } 104 }
121 105
122 void SetActiveNetwork(const Network* network) { 106 void SetDefaultNetwork(const NetworkState* network) {
123 DCHECK(network_portal_detector_stub_); 107 DCHECK(network_portal_detector_stub_);
124 network_portal_detector_stub_->SetActiveNetworkForTesting(network); 108 network_portal_detector_stub_->SetDefaultNetworkForTesting(network);
125 } 109 }
126 110
127 void SetDetectionResults( 111 void SetDetectionResults(
128 const Network* network, 112 const NetworkState* network,
129 const NetworkPortalDetector::CaptivePortalState& state) { 113 const NetworkPortalDetector::CaptivePortalState& state) {
130 DCHECK(network_portal_detector_stub_); 114 DCHECK(network_portal_detector_stub_);
131 network_portal_detector_stub_->SetDetectionResultsForTesting(network, 115 network_portal_detector_stub_->SetDetectionResultsForTesting(network,
132 state); 116 state);
133 } 117 }
134 118
135 void NotifyPortalDetectionCompleted() { 119 void NotifyPortalDetectionCompleted() {
136 DCHECK(network_portal_detector_stub_); 120 DCHECK(network_portal_detector_stub_);
137 network_portal_detector_stub_->NotifyObserversForTesting(); 121 network_portal_detector_stub_->NotifyObserversForTesting();
138 } 122 }
139 123
140 FakeUpdateEngineClient* fake_update_engine_client_; 124 FakeUpdateEngineClient* fake_update_engine_client_;
141 MockNetworkLibrary* mock_network_library_; 125 MockNetworkLibrary* mock_network_library_;
142 scoped_ptr<Network> stub_ethernet_; 126 NetworkState stub_ethernet_;
143 scoped_ptr<Network> stub_wifi_; 127 NetworkState stub_wifi_;
144 scoped_ptr<MockScreenObserver> mock_screen_observer_; 128 scoped_ptr<MockScreenObserver> mock_screen_observer_;
145 scoped_ptr<MockErrorScreenActor> mock_error_screen_actor_; 129 scoped_ptr<MockErrorScreenActor> mock_error_screen_actor_;
146 scoped_ptr<MockErrorScreen> mock_error_screen_; 130 scoped_ptr<MockErrorScreen> mock_error_screen_;
147 UpdateScreen* update_screen_; 131 UpdateScreen* update_screen_;
148 NetworkPortalDetectorStub* network_portal_detector_stub_; 132 NetworkPortalDetectorStub* network_portal_detector_stub_;
149 133
150 private: 134 private:
151 DISALLOW_COPY_AND_ASSIGN(UpdateScreenTest); 135 DISALLOW_COPY_AND_ASSIGN(UpdateScreenTest);
152 }; 136 };
153 137
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestTemproraryOfflineNetwork) { 238 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestTemproraryOfflineNetwork) {
255 EXPECT_CALL(*mock_screen_observer_, 239 EXPECT_CALL(*mock_screen_observer_,
256 OnExit(ScreenObserver::UPDATE_NOUPDATE)) 240 OnExit(ScreenObserver::UPDATE_NOUPDATE))
257 .Times(1); 241 .Times(1);
258 update_screen_->CancelUpdate(); 242 update_screen_->CancelUpdate();
259 243
260 // Change ethernet state to portal. 244 // Change ethernet state to portal.
261 NetworkPortalDetector::CaptivePortalState portal_state; 245 NetworkPortalDetector::CaptivePortalState portal_state;
262 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; 246 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL;
263 portal_state.response_code = 200; 247 portal_state.response_code = 200;
264 SetDetectionResults(stub_ethernet_.get(), portal_state); 248 SetDetectionResults(&stub_ethernet_, portal_state);
265 249
266 // Update screen will show error message about portal state because 250 // Update screen will show error message about portal state because
267 // ethernet is behind captive portal. 251 // ethernet is behind captive portal.
268 EXPECT_CALL(*mock_error_screen_actor_, 252 EXPECT_CALL(*mock_error_screen_actor_,
269 SetUIState(ErrorScreen::UI_STATE_UPDATE)) 253 SetUIState(ErrorScreen::UI_STATE_UPDATE))
270 .Times(1); 254 .Times(1);
271 EXPECT_CALL(*mock_error_screen_actor_, 255 EXPECT_CALL(*mock_error_screen_actor_,
272 SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, std::string())) 256 SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, std::string()))
273 .Times(1); 257 .Times(1);
274 EXPECT_CALL(*mock_error_screen_actor_, FixCaptivePortal()) 258 EXPECT_CALL(*mock_error_screen_actor_, FixCaptivePortal())
275 .Times(1); 259 .Times(1);
276 EXPECT_CALL(*mock_screen_observer_, ShowErrorScreen()) 260 EXPECT_CALL(*mock_screen_observer_, ShowErrorScreen())
277 .Times(1); 261 .Times(1);
278 262
279 update_screen_->StartNetworkCheck(); 263 update_screen_->StartNetworkCheck();
280 264
281 NetworkPortalDetector::CaptivePortalState online_state; 265 NetworkPortalDetector::CaptivePortalState online_state;
282 online_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE; 266 online_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE;
283 online_state.response_code = 204; 267 online_state.response_code = 204;
284 SetDetectionResults(stub_ethernet_.get(), online_state); 268 SetDetectionResults(&stub_ethernet_, online_state);
285 269
286 // Second notification from portal detector will be about online state, 270 // Second notification from portal detector will be about online state,
287 // so update screen will hide error message and proceed to update. 271 // so update screen will hide error message and proceed to update.
288 EXPECT_CALL(*mock_screen_observer_, HideErrorScreen(update_screen_)) 272 EXPECT_CALL(*mock_screen_observer_, HideErrorScreen(update_screen_))
289 .Times(1); 273 .Times(1);
290 fake_update_engine_client_->set_update_check_result( 274 fake_update_engine_client_->set_update_check_result(
291 chromeos::UpdateEngineClient::UPDATE_RESULT_FAILED); 275 chromeos::UpdateEngineClient::UPDATE_RESULT_FAILED);
292 276
293 EXPECT_CALL(*mock_screen_observer_, 277 EXPECT_CALL(*mock_screen_observer_,
294 OnExit(ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE)) 278 OnExit(ScreenObserver::UPDATE_ERROR_CHECKING_FOR_UPDATE))
295 .Times(1); 279 .Times(1);
296 280
297 NotifyPortalDetectionCompleted(); 281 NotifyPortalDetectionCompleted();
298 } 282 }
299 283
300 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestTwoOfflineNetworks) { 284 IN_PROC_BROWSER_TEST_F(UpdateScreenTest, TestTwoOfflineNetworks) {
301 EXPECT_CALL(*mock_screen_observer_, 285 EXPECT_CALL(*mock_screen_observer_,
302 OnExit(ScreenObserver::UPDATE_NOUPDATE)) 286 OnExit(ScreenObserver::UPDATE_NOUPDATE))
303 .Times(1); 287 .Times(1);
304 update_screen_->CancelUpdate(); 288 update_screen_->CancelUpdate();
305 289
306 // Change ethernet state to portal. 290 // Change ethernet state to portal.
307 NetworkPortalDetector::CaptivePortalState portal_state; 291 NetworkPortalDetector::CaptivePortalState portal_state;
308 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; 292 portal_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL;
309 portal_state.response_code = 200; 293 portal_state.response_code = 200;
310 SetDetectionResults(stub_ethernet_.get(), portal_state); 294 SetDetectionResults(&stub_ethernet_, portal_state);
311 295
312 // Update screen will show error message about portal state because 296 // Update screen will show error message about portal state because
313 // ethernet is behind captive portal. 297 // ethernet is behind captive portal.
314 EXPECT_CALL(*mock_error_screen_actor_, 298 EXPECT_CALL(*mock_error_screen_actor_,
315 SetUIState(ErrorScreen::UI_STATE_UPDATE)) 299 SetUIState(ErrorScreen::UI_STATE_UPDATE))
316 .Times(1); 300 .Times(1);
317 EXPECT_CALL(*mock_error_screen_actor_, 301 EXPECT_CALL(*mock_error_screen_actor_,
318 SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, std::string())) 302 SetErrorState(ErrorScreen::ERROR_STATE_PORTAL, std::string()))
319 .Times(1); 303 .Times(1);
320 EXPECT_CALL(*mock_error_screen_actor_, FixCaptivePortal()) 304 EXPECT_CALL(*mock_error_screen_actor_, FixCaptivePortal())
321 .Times(1); 305 .Times(1);
322 EXPECT_CALL(*mock_screen_observer_, ShowErrorScreen()) 306 EXPECT_CALL(*mock_screen_observer_, ShowErrorScreen())
323 .Times(1); 307 .Times(1);
324 308
325 update_screen_->StartNetworkCheck(); 309 update_screen_->StartNetworkCheck();
326 310
327 // Change active network to the wifi behind proxy. 311 // Change active network to the wifi behind proxy.
328 NetworkPortalDetector::CaptivePortalState proxy_state; 312 NetworkPortalDetector::CaptivePortalState proxy_state;
329 proxy_state.status = 313 proxy_state.status =
330 NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED; 314 NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED;
331 proxy_state.response_code = -1; 315 proxy_state.response_code = -1;
332 SetActiveNetwork(stub_wifi_.get()); 316 SetDefaultNetwork(&stub_wifi_);
333 SetDetectionResults(stub_wifi_.get(), proxy_state); 317 SetDetectionResults(&stub_wifi_, proxy_state);
334 318
335 // Update screen will show message about proxy error because wifie 319 // Update screen will show message about proxy error because wifie
336 // network requires proxy authentication. 320 // network requires proxy authentication.
337 EXPECT_CALL(*mock_error_screen_actor_, 321 EXPECT_CALL(*mock_error_screen_actor_,
338 SetErrorState(ErrorScreen::ERROR_STATE_PROXY, std::string())) 322 SetErrorState(ErrorScreen::ERROR_STATE_PROXY, std::string()))
339 .Times(1); 323 .Times(1);
340 324
341 NotifyPortalDetectionCompleted(); 325 NotifyPortalDetectionCompleted();
342 } 326 }
343 327
344 } // namespace chromeos 328 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698