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 "chromeos/network/network_connection_handler_impl.h" | 5 #include "chromeos/network/network_connection_handler_impl.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <memory> | 8 #include <memory> |
9 #include <set> | 9 #include <set> |
10 | 10 |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 | 80 |
81 private: | 81 private: |
82 std::set<std::string> requests_; | 82 std::set<std::string> requests_; |
83 std::map<std::string, std::string> results_; | 83 std::map<std::string, std::string> results_; |
84 | 84 |
85 DISALLOW_COPY_AND_ASSIGN(TestNetworkConnectionObserver); | 85 DISALLOW_COPY_AND_ASSIGN(TestNetworkConnectionObserver); |
86 }; | 86 }; |
87 | 87 |
88 class FakeTetherDelegate : public NetworkConnectionHandler::TetherDelegate { | 88 class FakeTetherDelegate : public NetworkConnectionHandler::TetherDelegate { |
89 public: | 89 public: |
90 FakeTetherDelegate() {} | 90 FakeTetherDelegate() |
| 91 : last_delegate_function_type_(DelegateFunctionType::NONE) {} |
91 ~FakeTetherDelegate() override {} | 92 ~FakeTetherDelegate() override {} |
92 | 93 |
| 94 enum class DelegateFunctionType { NONE, CONNECT, DISCONNECT }; |
| 95 |
| 96 DelegateFunctionType last_delegate_function_type() { |
| 97 return last_delegate_function_type_; |
| 98 } |
| 99 |
93 void ConnectToNetwork( | 100 void ConnectToNetwork( |
94 const std::string& service_path, | 101 const std::string& service_path, |
95 const base::Closure& success_callback, | 102 const base::Closure& success_callback, |
96 const network_handler::StringResultCallback& error_callback) override { | 103 const network_handler::StringResultCallback& error_callback) override { |
| 104 last_delegate_function_type_ = DelegateFunctionType::CONNECT; |
97 last_service_path_ = service_path; | 105 last_service_path_ = service_path; |
98 last_success_callback_ = success_callback; | 106 last_success_callback_ = success_callback; |
99 last_error_callback_ = error_callback; | 107 last_error_callback_ = error_callback; |
| 108 } |
| 109 |
| 110 void DisconnectFromNetwork( |
| 111 const std::string& service_path, |
| 112 const base::Closure& success_callback, |
| 113 const network_handler::StringResultCallback& error_callback) override { |
| 114 last_delegate_function_type_ = DelegateFunctionType::DISCONNECT; |
| 115 last_service_path_ = service_path; |
| 116 last_success_callback_ = success_callback; |
| 117 last_error_callback_ = error_callback; |
100 } | 118 } |
101 | 119 |
102 std::string& last_service_path() { return last_service_path_; } | 120 std::string& last_service_path() { return last_service_path_; } |
103 | 121 |
104 base::Closure& last_success_callback() { return last_success_callback_; } | 122 base::Closure& last_success_callback() { return last_success_callback_; } |
105 | 123 |
106 network_handler::StringResultCallback& last_error_callback() { | 124 network_handler::StringResultCallback& last_error_callback() { |
107 return last_error_callback_; | 125 return last_error_callback_; |
108 } | 126 } |
109 | 127 |
110 private: | 128 private: |
111 std::string last_service_path_; | 129 std::string last_service_path_; |
112 base::Closure last_success_callback_; | 130 base::Closure last_success_callback_; |
113 network_handler::StringResultCallback last_error_callback_; | 131 network_handler::StringResultCallback last_error_callback_; |
| 132 DelegateFunctionType last_delegate_function_type_; |
114 }; | 133 }; |
115 | 134 |
116 } // namespace | 135 } // namespace |
117 | 136 |
118 class NetworkConnectionHandlerTest : public NetworkStateTest { | 137 class NetworkConnectionHandlerImplTest : public NetworkStateTest { |
119 public: | 138 public: |
120 NetworkConnectionHandlerTest() : scoped_task_scheduler_(&message_loop_) {} | 139 NetworkConnectionHandlerImplTest() : scoped_task_scheduler_(&message_loop_) {} |
121 | 140 |
122 ~NetworkConnectionHandlerTest() override {} | 141 ~NetworkConnectionHandlerImplTest() override {} |
123 | 142 |
124 void SetUp() override { | 143 void SetUp() override { |
125 ASSERT_TRUE(test_nssdb_.is_open()); | 144 ASSERT_TRUE(test_nssdb_.is_open()); |
126 | 145 |
127 // Use the same DB for public and private slot. | 146 // Use the same DB for public and private slot. |
128 test_nsscertdb_.reset(new net::NSSCertDatabaseChromeOS( | 147 test_nsscertdb_.reset(new net::NSSCertDatabaseChromeOS( |
129 crypto::ScopedPK11Slot(PK11_ReferenceSlot(test_nssdb_.slot())), | 148 crypto::ScopedPK11Slot(PK11_ReferenceSlot(test_nssdb_.slot())), |
130 crypto::ScopedPK11Slot(PK11_ReferenceSlot(test_nssdb_.slot())))); | 149 crypto::ScopedPK11Slot(PK11_ReferenceSlot(test_nssdb_.slot())))); |
131 test_nsscertdb_->SetSlowTaskRunnerForTest(message_loop_.task_runner()); | 150 test_nsscertdb_->SetSlowTaskRunnerForTest(message_loop_.task_runner()); |
132 | 151 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 | 203 |
185 DBusThreadManager::Shutdown(); | 204 DBusThreadManager::Shutdown(); |
186 CertLoader::Shutdown(); | 205 CertLoader::Shutdown(); |
187 } | 206 } |
188 | 207 |
189 protected: | 208 protected: |
190 void Connect(const std::string& service_path) { | 209 void Connect(const std::string& service_path) { |
191 const bool check_error_state = true; | 210 const bool check_error_state = true; |
192 network_connection_handler_->ConnectToNetwork( | 211 network_connection_handler_->ConnectToNetwork( |
193 service_path, | 212 service_path, |
194 base::Bind(&NetworkConnectionHandlerTest::SuccessCallback, | 213 base::Bind(&NetworkConnectionHandlerImplTest::SuccessCallback, |
195 base::Unretained(this)), | 214 base::Unretained(this)), |
196 base::Bind(&NetworkConnectionHandlerTest::ErrorCallback, | 215 base::Bind(&NetworkConnectionHandlerImplTest::ErrorCallback, |
197 base::Unretained(this)), | 216 base::Unretained(this)), |
198 check_error_state); | 217 check_error_state); |
199 base::RunLoop().RunUntilIdle(); | 218 base::RunLoop().RunUntilIdle(); |
200 } | 219 } |
201 | 220 |
202 void Disconnect(const std::string& service_path) { | 221 void Disconnect(const std::string& service_path) { |
203 network_connection_handler_->DisconnectNetwork( | 222 network_connection_handler_->DisconnectNetwork( |
204 service_path, | 223 service_path, |
205 base::Bind(&NetworkConnectionHandlerTest::SuccessCallback, | 224 base::Bind(&NetworkConnectionHandlerImplTest::SuccessCallback, |
206 base::Unretained(this)), | 225 base::Unretained(this)), |
207 base::Bind(&NetworkConnectionHandlerTest::ErrorCallback, | 226 base::Bind(&NetworkConnectionHandlerImplTest::ErrorCallback, |
208 base::Unretained(this))); | 227 base::Unretained(this))); |
209 base::RunLoop().RunUntilIdle(); | 228 base::RunLoop().RunUntilIdle(); |
210 } | 229 } |
211 | 230 |
212 void SuccessCallback() { result_ = kSuccessResult; } | 231 void SuccessCallback() { result_ = kSuccessResult; } |
213 | 232 |
214 void ErrorCallback(const std::string& error_name, | 233 void ErrorCallback(const std::string& error_name, |
215 std::unique_ptr<base::DictionaryValue> error_data) { | 234 std::unique_ptr<base::DictionaryValue> error_data) { |
216 result_ = error_name; | 235 result_ = error_name; |
217 } | 236 } |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
290 std::unique_ptr<NetworkProfileHandler> network_profile_handler_; | 309 std::unique_ptr<NetworkProfileHandler> network_profile_handler_; |
291 crypto::ScopedTestNSSDB test_nssdb_; | 310 crypto::ScopedTestNSSDB test_nssdb_; |
292 std::unique_ptr<net::NSSCertDatabaseChromeOS> test_nsscertdb_; | 311 std::unique_ptr<net::NSSCertDatabaseChromeOS> test_nsscertdb_; |
293 base::MessageLoopForUI message_loop_; | 312 base::MessageLoopForUI message_loop_; |
294 std::string result_; | 313 std::string result_; |
295 std::unique_ptr<FakeTetherDelegate> fake_tether_delegate_; | 314 std::unique_ptr<FakeTetherDelegate> fake_tether_delegate_; |
296 | 315 |
297 private: | 316 private: |
298 base::test::ScopedTaskScheduler scoped_task_scheduler_; | 317 base::test::ScopedTaskScheduler scoped_task_scheduler_; |
299 | 318 |
300 DISALLOW_COPY_AND_ASSIGN(NetworkConnectionHandlerTest); | 319 DISALLOW_COPY_AND_ASSIGN(NetworkConnectionHandlerImplTest); |
301 }; | 320 }; |
302 | 321 |
303 namespace { | 322 namespace { |
304 | 323 |
305 const char* kNoNetwork = "no-network"; | 324 const char* kNoNetwork = "no-network"; |
306 const char* kWifi0 = "wifi0"; | 325 const char* kWifi0 = "wifi0"; |
307 const char* kWifi1 = "wifi1"; | 326 const char* kWifi1 = "wifi1"; |
308 const char* kWifi2 = "wifi2"; | 327 const char* kWifi2 = "wifi2"; |
309 const char* kWifi3 = "wifi3"; | 328 const char* kWifi3 = "wifi3"; |
310 | 329 |
311 const char* kConfigConnectable = | 330 const char* kConfigConnectable = |
312 "{ \"GUID\": \"wifi0\", \"Type\": \"wifi\", \"State\": \"idle\", " | 331 "{ \"GUID\": \"wifi0\", \"Type\": \"wifi\", \"State\": \"idle\", " |
313 " \"Connectable\": true }"; | 332 " \"Connectable\": true }"; |
314 const char* kConfigConnected = | 333 const char* kConfigConnected = |
315 "{ \"GUID\": \"wifi1\", \"Type\": \"wifi\", \"State\": \"online\" }"; | 334 "{ \"GUID\": \"wifi1\", \"Type\": \"wifi\", \"State\": \"online\" }"; |
316 const char* kConfigConnecting = | 335 const char* kConfigConnecting = |
317 "{ \"GUID\": \"wifi2\", \"Type\": \"wifi\", \"State\": \"association\" }"; | 336 "{ \"GUID\": \"wifi2\", \"Type\": \"wifi\", \"State\": \"association\" }"; |
318 const char* kConfigRequiresPassphrase = | 337 const char* kConfigRequiresPassphrase = |
319 "{ \"GUID\": \"wifi3\", \"Type\": \"wifi\", " | 338 "{ \"GUID\": \"wifi3\", \"Type\": \"wifi\", " |
320 " \"PassphraseRequired\": true }"; | 339 " \"PassphraseRequired\": true }"; |
321 | 340 |
322 const char* kPolicyWifi0 = | 341 const char* kPolicyWifi0 = |
323 "[{ \"GUID\": \"wifi0\", \"IPAddressConfigType\": \"DHCP\", " | 342 "[{ \"GUID\": \"wifi0\", \"IPAddressConfigType\": \"DHCP\", " |
324 " \"Type\": \"WiFi\", \"Name\": \"My WiFi Network\"," | 343 " \"Type\": \"WiFi\", \"Name\": \"My WiFi Network\"," |
325 " \"WiFi\": { \"SSID\": \"wifi0\"}}]"; | 344 " \"WiFi\": { \"SSID\": \"wifi0\"}}]"; |
326 | 345 |
327 } // namespace | 346 } // namespace |
328 | 347 |
329 TEST_F(NetworkConnectionHandlerTest, NetworkConnectionHandlerConnectSuccess) { | 348 TEST_F(NetworkConnectionHandlerImplTest, |
| 349 NetworkConnectionHandlerConnectSuccess) { |
330 EXPECT_FALSE(ConfigureService(kConfigConnectable).empty()); | 350 EXPECT_FALSE(ConfigureService(kConfigConnectable).empty()); |
331 Connect(kWifi0); | 351 Connect(kWifi0); |
332 EXPECT_EQ(kSuccessResult, GetResultAndReset()); | 352 EXPECT_EQ(kSuccessResult, GetResultAndReset()); |
333 EXPECT_EQ(shill::kStateOnline, | 353 EXPECT_EQ(shill::kStateOnline, |
334 GetServiceStringProperty(kWifi0, shill::kStateProperty)); | 354 GetServiceStringProperty(kWifi0, shill::kStateProperty)); |
335 // Observer expectations | 355 // Observer expectations |
336 EXPECT_TRUE(network_connection_observer_->GetRequested(kWifi0)); | 356 EXPECT_TRUE(network_connection_observer_->GetRequested(kWifi0)); |
337 EXPECT_EQ(kSuccessResult, network_connection_observer_->GetResult(kWifi0)); | 357 EXPECT_EQ(kSuccessResult, network_connection_observer_->GetResult(kWifi0)); |
338 } | 358 } |
339 | 359 |
340 TEST_F(NetworkConnectionHandlerTest, | 360 TEST_F(NetworkConnectionHandlerImplTest, |
341 NetworkConnectionHandlerConnectProhibited) { | 361 NetworkConnectionHandlerConnectProhibited) { |
342 EXPECT_FALSE(ConfigureService(kConfigConnectable).empty()); | 362 EXPECT_FALSE(ConfigureService(kConfigConnectable).empty()); |
343 base::DictionaryValue global_config; | 363 base::DictionaryValue global_config; |
344 global_config.SetBooleanWithoutPathExpansion( | 364 global_config.SetBooleanWithoutPathExpansion( |
345 ::onc::global_network_config::kAllowOnlyPolicyNetworksToConnect, true); | 365 ::onc::global_network_config::kAllowOnlyPolicyNetworksToConnect, true); |
346 SetupPolicy("[]", global_config, false /* load as device policy */); | 366 SetupPolicy("[]", global_config, false /* load as device policy */); |
347 LoginToRegularUser(); | 367 LoginToRegularUser(); |
348 Connect(kWifi0); | 368 Connect(kWifi0); |
349 EXPECT_EQ(NetworkConnectionHandler::kErrorUnmanagedNetwork, | 369 EXPECT_EQ(NetworkConnectionHandler::kErrorUnmanagedNetwork, |
350 GetResultAndReset()); | 370 GetResultAndReset()); |
351 | 371 |
352 SetupPolicy(kPolicyWifi0, global_config, false /* load as device policy */); | 372 SetupPolicy(kPolicyWifi0, global_config, false /* load as device policy */); |
353 Connect(kWifi0); | 373 Connect(kWifi0); |
354 EXPECT_EQ(kSuccessResult, GetResultAndReset()); | 374 EXPECT_EQ(kSuccessResult, GetResultAndReset()); |
355 } | 375 } |
356 | 376 |
357 // Handles basic failure cases. | 377 // Handles basic failure cases. |
358 TEST_F(NetworkConnectionHandlerTest, NetworkConnectionHandlerConnectFailure) { | 378 TEST_F(NetworkConnectionHandlerImplTest, |
| 379 NetworkConnectionHandlerConnectFailure) { |
359 Connect(kNoNetwork); | 380 Connect(kNoNetwork); |
360 EXPECT_EQ(NetworkConnectionHandler::kErrorConfigureFailed, | 381 EXPECT_EQ(NetworkConnectionHandler::kErrorConfigureFailed, |
361 GetResultAndReset()); | 382 GetResultAndReset()); |
362 EXPECT_TRUE(network_connection_observer_->GetRequested(kNoNetwork)); | 383 EXPECT_TRUE(network_connection_observer_->GetRequested(kNoNetwork)); |
363 EXPECT_EQ(NetworkConnectionHandler::kErrorConfigureFailed, | 384 EXPECT_EQ(NetworkConnectionHandler::kErrorConfigureFailed, |
364 network_connection_observer_->GetResult(kNoNetwork)); | 385 network_connection_observer_->GetResult(kNoNetwork)); |
365 | 386 |
366 EXPECT_FALSE(ConfigureService(kConfigConnected).empty()); | 387 EXPECT_FALSE(ConfigureService(kConfigConnected).empty()); |
367 Connect(kWifi1); | 388 Connect(kWifi1); |
368 EXPECT_EQ(NetworkConnectionHandler::kErrorConnected, GetResultAndReset()); | 389 EXPECT_EQ(NetworkConnectionHandler::kErrorConnected, GetResultAndReset()); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
403 " \"CommonName\" : \"%s\"" | 424 " \"CommonName\" : \"%s\"" |
404 " }" | 425 " }" |
405 " }" | 426 " }" |
406 " }" | 427 " }" |
407 " }" | 428 " }" |
408 "} ]"; | 429 "} ]"; |
409 | 430 |
410 } // namespace | 431 } // namespace |
411 | 432 |
412 // Handle certificates. | 433 // Handle certificates. |
413 TEST_F(NetworkConnectionHandlerTest, ConnectCertificateMissing) { | 434 TEST_F(NetworkConnectionHandlerImplTest, ConnectCertificateMissing) { |
414 StartCertLoader(); | 435 StartCertLoader(); |
415 SetupPolicy(base::StringPrintf(kPolicyWithCertPatternTemplate, "unknown"), | 436 SetupPolicy(base::StringPrintf(kPolicyWithCertPatternTemplate, "unknown"), |
416 base::DictionaryValue(), // no global config | 437 base::DictionaryValue(), // no global config |
417 true); // load as user policy | 438 true); // load as user policy |
418 | 439 |
419 Connect("wifi4"); | 440 Connect("wifi4"); |
420 EXPECT_EQ(NetworkConnectionHandler::kErrorCertificateRequired, | 441 EXPECT_EQ(NetworkConnectionHandler::kErrorCertificateRequired, |
421 GetResultAndReset()); | 442 GetResultAndReset()); |
422 } | 443 } |
423 | 444 |
424 TEST_F(NetworkConnectionHandlerTest, ConnectWithCertificateSuccess) { | 445 TEST_F(NetworkConnectionHandlerImplTest, ConnectWithCertificateSuccess) { |
425 StartCertLoader(); | 446 StartCertLoader(); |
426 scoped_refptr<net::X509Certificate> cert = ImportTestClientCert(); | 447 scoped_refptr<net::X509Certificate> cert = ImportTestClientCert(); |
427 ASSERT_TRUE(cert.get()); | 448 ASSERT_TRUE(cert.get()); |
428 | 449 |
429 SetupPolicy(base::StringPrintf(kPolicyWithCertPatternTemplate, | 450 SetupPolicy(base::StringPrintf(kPolicyWithCertPatternTemplate, |
430 cert->subject().common_name.c_str()), | 451 cert->subject().common_name.c_str()), |
431 base::DictionaryValue(), // no global config | 452 base::DictionaryValue(), // no global config |
432 true); // load as user policy | 453 true); // load as user policy |
433 | 454 |
434 Connect("wifi4"); | 455 Connect("wifi4"); |
435 EXPECT_EQ(kSuccessResult, GetResultAndReset()); | 456 EXPECT_EQ(kSuccessResult, GetResultAndReset()); |
436 } | 457 } |
437 | 458 |
438 // Disabled, see http://crbug.com/396729. | 459 // Disabled, see http://crbug.com/396729. |
439 TEST_F(NetworkConnectionHandlerTest, | 460 TEST_F(NetworkConnectionHandlerImplTest, |
440 DISABLED_ConnectWithCertificateRequestedBeforeCertsAreLoaded) { | 461 DISABLED_ConnectWithCertificateRequestedBeforeCertsAreLoaded) { |
441 scoped_refptr<net::X509Certificate> cert = ImportTestClientCert(); | 462 scoped_refptr<net::X509Certificate> cert = ImportTestClientCert(); |
442 ASSERT_TRUE(cert.get()); | 463 ASSERT_TRUE(cert.get()); |
443 | 464 |
444 SetupPolicy(base::StringPrintf(kPolicyWithCertPatternTemplate, | 465 SetupPolicy(base::StringPrintf(kPolicyWithCertPatternTemplate, |
445 cert->subject().common_name.c_str()), | 466 cert->subject().common_name.c_str()), |
446 base::DictionaryValue(), // no global config | 467 base::DictionaryValue(), // no global config |
447 true); // load as user policy | 468 true); // load as user policy |
448 | 469 |
449 Connect("wifi4"); | 470 Connect("wifi4"); |
450 | 471 |
451 // Connect request came before the cert loader loaded certificates, so the | 472 // Connect request came before the cert loader loaded certificates, so the |
452 // connect request should have been throttled until the certificates are | 473 // connect request should have been throttled until the certificates are |
453 // loaded. | 474 // loaded. |
454 EXPECT_EQ("", GetResultAndReset()); | 475 EXPECT_EQ("", GetResultAndReset()); |
455 | 476 |
456 StartCertLoader(); | 477 StartCertLoader(); |
457 | 478 |
458 // |StartCertLoader| should have triggered certificate loading. | 479 // |StartCertLoader| should have triggered certificate loading. |
459 // When the certificates got loaded, the connection request should have | 480 // When the certificates got loaded, the connection request should have |
460 // proceeded and eventually succeeded. | 481 // proceeded and eventually succeeded. |
461 EXPECT_EQ(kSuccessResult, GetResultAndReset()); | 482 EXPECT_EQ(kSuccessResult, GetResultAndReset()); |
462 } | 483 } |
463 | 484 |
464 TEST_F(NetworkConnectionHandlerTest, | 485 TEST_F(NetworkConnectionHandlerImplTest, |
465 NetworkConnectionHandlerDisconnectSuccess) { | 486 NetworkConnectionHandlerDisconnectSuccess) { |
466 EXPECT_FALSE(ConfigureService(kConfigConnected).empty()); | 487 EXPECT_FALSE(ConfigureService(kConfigConnected).empty()); |
467 Disconnect(kWifi1); | 488 Disconnect(kWifi1); |
468 EXPECT_TRUE(network_connection_observer_->GetRequested(kWifi1)); | 489 EXPECT_TRUE(network_connection_observer_->GetRequested(kWifi1)); |
469 EXPECT_EQ(kSuccessResult, GetResultAndReset()); | 490 EXPECT_EQ(kSuccessResult, GetResultAndReset()); |
470 } | 491 } |
471 | 492 |
472 TEST_F(NetworkConnectionHandlerTest, | 493 TEST_F(NetworkConnectionHandlerImplTest, |
473 NetworkConnectionHandlerDisconnectFailure) { | 494 NetworkConnectionHandlerDisconnectFailure) { |
474 Connect(kNoNetwork); | 495 Connect(kNoNetwork); |
475 EXPECT_EQ(NetworkConnectionHandler::kErrorConfigureFailed, | 496 EXPECT_EQ(NetworkConnectionHandler::kErrorConfigureFailed, |
476 GetResultAndReset()); | 497 GetResultAndReset()); |
477 | 498 |
478 EXPECT_FALSE(ConfigureService(kConfigConnectable).empty()); | 499 EXPECT_FALSE(ConfigureService(kConfigConnectable).empty()); |
479 Disconnect(kWifi0); | 500 Disconnect(kWifi0); |
480 EXPECT_EQ(NetworkConnectionHandler::kErrorNotConnected, GetResultAndReset()); | 501 EXPECT_EQ(NetworkConnectionHandler::kErrorNotConnected, GetResultAndReset()); |
481 } | 502 } |
482 | 503 |
483 TEST_F(NetworkConnectionHandlerTest, ConnectToTetherNetwork_Success) { | 504 TEST_F(NetworkConnectionHandlerImplTest, ConnectToTetherNetwork_Success) { |
484 network_state_handler()->SetTetherTechnologyState( | 505 network_state_handler()->SetTetherTechnologyState( |
485 NetworkStateHandler::TECHNOLOGY_ENABLED); | 506 NetworkStateHandler::TECHNOLOGY_ENABLED); |
486 network_state_handler()->AddTetherNetworkState( | 507 network_state_handler()->AddTetherNetworkState( |
487 kTetherGuid, "TetherNetwork", "Carrier", 100 /* battery_percentage */, | 508 kTetherGuid, "TetherNetwork", "Carrier", 100 /* battery_percentage */, |
488 100 /* signal_strength */, true /* has_connected_to_host */); | 509 100 /* signal_strength */, true /* has_connected_to_host */); |
489 network_connection_handler_->SetTetherDelegate(fake_tether_delegate_.get()); | 510 network_connection_handler_->SetTetherDelegate(fake_tether_delegate_.get()); |
490 | 511 |
491 Connect(kTetherGuid /* service_path */); | 512 Connect(kTetherGuid /* service_path */); |
492 | 513 |
| 514 EXPECT_EQ(FakeTetherDelegate::DelegateFunctionType::CONNECT, |
| 515 fake_tether_delegate_->last_delegate_function_type()); |
493 EXPECT_EQ(kTetherGuid, fake_tether_delegate_->last_service_path()); | 516 EXPECT_EQ(kTetherGuid, fake_tether_delegate_->last_service_path()); |
494 fake_tether_delegate_->last_success_callback().Run(); | 517 fake_tether_delegate_->last_success_callback().Run(); |
495 EXPECT_EQ(kSuccessResult, GetResultAndReset()); | 518 EXPECT_EQ(kSuccessResult, GetResultAndReset()); |
496 EXPECT_TRUE(network_connection_observer_->GetRequested(kTetherGuid)); | 519 EXPECT_TRUE(network_connection_observer_->GetRequested(kTetherGuid)); |
497 EXPECT_EQ(kSuccessResult, | 520 EXPECT_EQ(kSuccessResult, |
498 network_connection_observer_->GetResult(kTetherGuid)); | 521 network_connection_observer_->GetResult(kTetherGuid)); |
499 } | 522 } |
500 | 523 |
501 TEST_F(NetworkConnectionHandlerTest, ConnectToTetherNetwork_Failure) { | 524 TEST_F(NetworkConnectionHandlerImplTest, ConnectToTetherNetwork_Failure) { |
502 network_state_handler()->SetTetherTechnologyState( | 525 network_state_handler()->SetTetherTechnologyState( |
503 NetworkStateHandler::TECHNOLOGY_ENABLED); | 526 NetworkStateHandler::TECHNOLOGY_ENABLED); |
504 network_state_handler()->AddTetherNetworkState( | 527 network_state_handler()->AddTetherNetworkState( |
505 kTetherGuid, "TetherNetwork", "Carrier", 100 /* battery_percentage */, | 528 kTetherGuid, "TetherNetwork", "Carrier", 100 /* battery_percentage */, |
506 100 /* signal_strength */, true /* has_connected_to_host */); | 529 100 /* signal_strength */, true /* has_connected_to_host */); |
507 network_connection_handler_->SetTetherDelegate(fake_tether_delegate_.get()); | 530 network_connection_handler_->SetTetherDelegate(fake_tether_delegate_.get()); |
508 | 531 |
509 Connect(kTetherGuid /* service_path */); | 532 Connect(kTetherGuid /* service_path */); |
510 | 533 |
| 534 EXPECT_EQ(FakeTetherDelegate::DelegateFunctionType::CONNECT, |
| 535 fake_tether_delegate_->last_delegate_function_type()); |
511 EXPECT_EQ(kTetherGuid, fake_tether_delegate_->last_service_path()); | 536 EXPECT_EQ(kTetherGuid, fake_tether_delegate_->last_service_path()); |
512 fake_tether_delegate_->last_error_callback().Run( | 537 fake_tether_delegate_->last_error_callback().Run( |
513 NetworkConnectionHandler::kErrorConnectFailed); | 538 NetworkConnectionHandler::kErrorConnectFailed); |
514 EXPECT_EQ(NetworkConnectionHandler::kErrorConnectFailed, GetResultAndReset()); | 539 EXPECT_EQ(NetworkConnectionHandler::kErrorConnectFailed, GetResultAndReset()); |
515 EXPECT_TRUE(network_connection_observer_->GetRequested(kTetherGuid)); | 540 EXPECT_TRUE(network_connection_observer_->GetRequested(kTetherGuid)); |
516 EXPECT_EQ(NetworkConnectionHandler::kErrorConnectFailed, | 541 EXPECT_EQ(NetworkConnectionHandler::kErrorConnectFailed, |
517 network_connection_observer_->GetResult(kTetherGuid)); | 542 network_connection_observer_->GetResult(kTetherGuid)); |
518 } | 543 } |
519 | 544 |
520 TEST_F(NetworkConnectionHandlerTest, ConnectToTetherNetwork_NoTetherDelegate) { | 545 TEST_F(NetworkConnectionHandlerImplTest, |
| 546 ConnectToTetherNetwork_NoTetherDelegate) { |
521 network_state_handler()->SetTetherTechnologyState( | 547 network_state_handler()->SetTetherTechnologyState( |
522 NetworkStateHandler::TECHNOLOGY_ENABLED); | 548 NetworkStateHandler::TECHNOLOGY_ENABLED); |
523 network_state_handler()->AddTetherNetworkState( | 549 network_state_handler()->AddTetherNetworkState( |
524 kTetherGuid, "TetherNetwork", "Carrier", 100 /* battery_percentage */, | 550 kTetherGuid, "TetherNetwork", "Carrier", 100 /* battery_percentage */, |
525 100 /* signal_strength */, true /* has_connected_to_host */); | 551 100 /* signal_strength */, true /* has_connected_to_host */); |
526 | 552 |
527 // Do not set a tether delegate. | 553 // Do not set a tether delegate. |
528 | 554 |
529 Connect(kTetherGuid /* service_path */); | 555 Connect(kTetherGuid /* service_path */); |
530 | 556 |
531 EXPECT_EQ( | 557 EXPECT_EQ(FakeTetherDelegate::DelegateFunctionType::NONE, |
532 NetworkConnectionHandler::kErrorTetherConnectionAttemptWithNoDelegate, | 558 fake_tether_delegate_->last_delegate_function_type()); |
533 GetResultAndReset()); | 559 EXPECT_EQ(NetworkConnectionHandler::kErrorTetherAttemptWithNoDelegate, |
| 560 GetResultAndReset()); |
534 EXPECT_TRUE(network_connection_observer_->GetRequested(kTetherGuid)); | 561 EXPECT_TRUE(network_connection_observer_->GetRequested(kTetherGuid)); |
535 EXPECT_EQ( | 562 EXPECT_EQ(NetworkConnectionHandler::kErrorTetherAttemptWithNoDelegate, |
536 NetworkConnectionHandler::kErrorTetherConnectionAttemptWithNoDelegate, | 563 network_connection_observer_->GetResult(kTetherGuid)); |
537 network_connection_observer_->GetResult(kTetherGuid)); | 564 } |
| 565 |
| 566 TEST_F(NetworkConnectionHandlerImplTest, DisconnectFromTetherNetwork_Success) { |
| 567 network_state_handler()->SetTetherTechnologyState( |
| 568 NetworkStateHandler::TECHNOLOGY_ENABLED); |
| 569 network_state_handler()->AddTetherNetworkState( |
| 570 kTetherGuid, "TetherNetwork", "Carrier", 100 /* battery_percentage */, |
| 571 100 /* signal_strength */, true /* has_connected_to_host */); |
| 572 network_state_handler()->SetTetherNetworkStateConnecting(kTetherGuid); |
| 573 network_connection_handler_->SetTetherDelegate(fake_tether_delegate_.get()); |
| 574 |
| 575 Disconnect(kTetherGuid /* service_path */); |
| 576 |
| 577 EXPECT_EQ(FakeTetherDelegate::DelegateFunctionType::DISCONNECT, |
| 578 fake_tether_delegate_->last_delegate_function_type()); |
| 579 EXPECT_EQ(kTetherGuid, fake_tether_delegate_->last_service_path()); |
| 580 fake_tether_delegate_->last_success_callback().Run(); |
| 581 EXPECT_EQ(kSuccessResult, GetResultAndReset()); |
| 582 EXPECT_TRUE(network_connection_observer_->GetRequested(kTetherGuid)); |
| 583 EXPECT_EQ(kSuccessResult, |
| 584 network_connection_observer_->GetResult(kTetherGuid)); |
| 585 } |
| 586 |
| 587 TEST_F(NetworkConnectionHandlerImplTest, DisconnectFromTetherNetwork_Failure) { |
| 588 network_state_handler()->SetTetherTechnologyState( |
| 589 NetworkStateHandler::TECHNOLOGY_ENABLED); |
| 590 network_state_handler()->AddTetherNetworkState( |
| 591 kTetherGuid, "TetherNetwork", "Carrier", 100 /* battery_percentage */, |
| 592 100 /* signal_strength */, true /* has_connected_to_host */); |
| 593 network_state_handler()->SetTetherNetworkStateConnecting(kTetherGuid); |
| 594 network_connection_handler_->SetTetherDelegate(fake_tether_delegate_.get()); |
| 595 |
| 596 Disconnect(kTetherGuid /* service_path */); |
| 597 |
| 598 EXPECT_EQ(FakeTetherDelegate::DelegateFunctionType::DISCONNECT, |
| 599 fake_tether_delegate_->last_delegate_function_type()); |
| 600 EXPECT_EQ(kTetherGuid, fake_tether_delegate_->last_service_path()); |
| 601 fake_tether_delegate_->last_error_callback().Run( |
| 602 NetworkConnectionHandler::kErrorConnectFailed); |
| 603 EXPECT_EQ(NetworkConnectionHandler::kErrorConnectFailed, GetResultAndReset()); |
| 604 EXPECT_TRUE(network_connection_observer_->GetRequested(kTetherGuid)); |
| 605 EXPECT_EQ(NetworkConnectionHandler::kErrorConnectFailed, |
| 606 network_connection_observer_->GetResult(kTetherGuid)); |
| 607 } |
| 608 |
| 609 TEST_F(NetworkConnectionHandlerImplTest, |
| 610 DisconnectFromTetherNetwork_NoTetherDelegate) { |
| 611 network_state_handler()->SetTetherTechnologyState( |
| 612 NetworkStateHandler::TECHNOLOGY_ENABLED); |
| 613 network_state_handler()->AddTetherNetworkState( |
| 614 kTetherGuid, "TetherNetwork", "Carrier", 100 /* battery_percentage */, |
| 615 100 /* signal_strength */, true /* has_connected_to_host */); |
| 616 network_state_handler()->SetTetherNetworkStateConnecting(kTetherGuid); |
| 617 |
| 618 // Do not set a tether delegate. |
| 619 |
| 620 Disconnect(kTetherGuid /* service_path */); |
| 621 |
| 622 EXPECT_EQ(FakeTetherDelegate::DelegateFunctionType::NONE, |
| 623 fake_tether_delegate_->last_delegate_function_type()); |
| 624 EXPECT_EQ(NetworkConnectionHandler::kErrorTetherAttemptWithNoDelegate, |
| 625 GetResultAndReset()); |
| 626 EXPECT_TRUE(network_connection_observer_->GetRequested(kTetherGuid)); |
| 627 EXPECT_EQ(NetworkConnectionHandler::kErrorTetherAttemptWithNoDelegate, |
| 628 network_connection_observer_->GetResult(kTetherGuid)); |
538 } | 629 } |
539 | 630 |
540 } // namespace chromeos | 631 } // namespace chromeos |
OLD | NEW |