| 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 "net/socket/transport_client_socket_pool.h" | 5 #include "net/socket/transport_client_socket_pool.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/callback.h" | 9 #include "base/callback.h" |
| 10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 } | 64 } |
| 65 virtual bool IsConnectedAndIdle() const { | 65 virtual bool IsConnectedAndIdle() const { |
| 66 return connected_; | 66 return connected_; |
| 67 } | 67 } |
| 68 virtual int GetPeerAddress(IPEndPoint* address) const { | 68 virtual int GetPeerAddress(IPEndPoint* address) const { |
| 69 return ERR_UNEXPECTED; | 69 return ERR_UNEXPECTED; |
| 70 } | 70 } |
| 71 virtual int GetLocalAddress(IPEndPoint* address) const { | 71 virtual int GetLocalAddress(IPEndPoint* address) const { |
| 72 if (!connected_) | 72 if (!connected_) |
| 73 return ERR_SOCKET_NOT_CONNECTED; | 73 return ERR_SOCKET_NOT_CONNECTED; |
| 74 if (addrlist_.front().GetFamily() == AF_INET) | 74 if (addrlist_.front().GetFamily() == ADDRESS_FAMILY_IPV4) |
| 75 SetIPv4Address(address); | 75 SetIPv4Address(address); |
| 76 else | 76 else |
| 77 SetIPv6Address(address); | 77 SetIPv6Address(address); |
| 78 return OK; | 78 return OK; |
| 79 } | 79 } |
| 80 virtual const BoundNetLog& NetLog() const { | 80 virtual const BoundNetLog& NetLog() const { |
| 81 return net_log_; | 81 return net_log_; |
| 82 } | 82 } |
| 83 | 83 |
| 84 virtual void SetSubresourceSpeculation() {} | 84 virtual void SetSubresourceSpeculation() {} |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 } | 215 } |
| 216 virtual bool IsConnectedAndIdle() const { | 216 virtual bool IsConnectedAndIdle() const { |
| 217 return is_connected_; | 217 return is_connected_; |
| 218 } | 218 } |
| 219 virtual int GetPeerAddress(IPEndPoint* address) const { | 219 virtual int GetPeerAddress(IPEndPoint* address) const { |
| 220 return ERR_UNEXPECTED; | 220 return ERR_UNEXPECTED; |
| 221 } | 221 } |
| 222 virtual int GetLocalAddress(IPEndPoint* address) const { | 222 virtual int GetLocalAddress(IPEndPoint* address) const { |
| 223 if (!is_connected_) | 223 if (!is_connected_) |
| 224 return ERR_SOCKET_NOT_CONNECTED; | 224 return ERR_SOCKET_NOT_CONNECTED; |
| 225 if (addrlist_.front().GetFamily() == AF_INET) | 225 if (addrlist_.front().GetFamily() == ADDRESS_FAMILY_IPV4) |
| 226 SetIPv4Address(address); | 226 SetIPv4Address(address); |
| 227 else | 227 else |
| 228 SetIPv6Address(address); | 228 SetIPv6Address(address); |
| 229 return OK; | 229 return OK; |
| 230 } | 230 } |
| 231 virtual const BoundNetLog& NetLog() const { | 231 virtual const BoundNetLog& NetLog() const { |
| 232 return net_log_; | 232 return net_log_; |
| 233 } | 233 } |
| 234 | 234 |
| 235 virtual void SetSubresourceSpeculation() {} | 235 virtual void SetSubresourceSpeculation() {} |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 461 IPEndPoint addrlist_v6_2(ip_number, 80); | 461 IPEndPoint addrlist_v6_2(ip_number, 80); |
| 462 | 462 |
| 463 AddressList addrlist; | 463 AddressList addrlist; |
| 464 | 464 |
| 465 // Test 1: IPv4 only. Expect no change. | 465 // Test 1: IPv4 only. Expect no change. |
| 466 addrlist.clear(); | 466 addrlist.clear(); |
| 467 addrlist.push_back(addrlist_v4_1); | 467 addrlist.push_back(addrlist_v4_1); |
| 468 addrlist.push_back(addrlist_v4_2); | 468 addrlist.push_back(addrlist_v4_2); |
| 469 TransportConnectJob::MakeAddressListStartWithIPv4(&addrlist); | 469 TransportConnectJob::MakeAddressListStartWithIPv4(&addrlist); |
| 470 ASSERT_EQ(2u, addrlist.size()); | 470 ASSERT_EQ(2u, addrlist.size()); |
| 471 EXPECT_EQ(AF_INET, addrlist[0].GetFamily()); | 471 EXPECT_EQ(ADDRESS_FAMILY_IPV4, addrlist[0].GetFamily()); |
| 472 EXPECT_EQ(AF_INET, addrlist[1].GetFamily()); | 472 EXPECT_EQ(ADDRESS_FAMILY_IPV4, addrlist[1].GetFamily()); |
| 473 | 473 |
| 474 // Test 2: IPv6 only. Expect no change. | 474 // Test 2: IPv6 only. Expect no change. |
| 475 addrlist.clear(); | 475 addrlist.clear(); |
| 476 addrlist.push_back(addrlist_v6_1); | 476 addrlist.push_back(addrlist_v6_1); |
| 477 addrlist.push_back(addrlist_v6_2); | 477 addrlist.push_back(addrlist_v6_2); |
| 478 TransportConnectJob::MakeAddressListStartWithIPv4(&addrlist); | 478 TransportConnectJob::MakeAddressListStartWithIPv4(&addrlist); |
| 479 ASSERT_EQ(2u, addrlist.size()); | 479 ASSERT_EQ(2u, addrlist.size()); |
| 480 EXPECT_EQ(AF_INET6, addrlist[0].GetFamily()); | 480 EXPECT_EQ(ADDRESS_FAMILY_IPV6, addrlist[0].GetFamily()); |
| 481 EXPECT_EQ(AF_INET6, addrlist[1].GetFamily()); | 481 EXPECT_EQ(ADDRESS_FAMILY_IPV6, addrlist[1].GetFamily()); |
| 482 | 482 |
| 483 // Test 3: IPv4 then IPv6. Expect no change. | 483 // Test 3: IPv4 then IPv6. Expect no change. |
| 484 addrlist.clear(); | 484 addrlist.clear(); |
| 485 addrlist.push_back(addrlist_v4_1); | 485 addrlist.push_back(addrlist_v4_1); |
| 486 addrlist.push_back(addrlist_v4_2); | 486 addrlist.push_back(addrlist_v4_2); |
| 487 addrlist.push_back(addrlist_v6_1); | 487 addrlist.push_back(addrlist_v6_1); |
| 488 addrlist.push_back(addrlist_v6_2); | 488 addrlist.push_back(addrlist_v6_2); |
| 489 TransportConnectJob::MakeAddressListStartWithIPv4(&addrlist); | 489 TransportConnectJob::MakeAddressListStartWithIPv4(&addrlist); |
| 490 ASSERT_EQ(4u, addrlist.size()); | 490 ASSERT_EQ(4u, addrlist.size()); |
| 491 EXPECT_EQ(AF_INET, addrlist[0].GetFamily()); | 491 EXPECT_EQ(ADDRESS_FAMILY_IPV4, addrlist[0].GetFamily()); |
| 492 EXPECT_EQ(AF_INET, addrlist[1].GetFamily()); | 492 EXPECT_EQ(ADDRESS_FAMILY_IPV4, addrlist[1].GetFamily()); |
| 493 EXPECT_EQ(AF_INET6, addrlist[2].GetFamily()); | 493 EXPECT_EQ(ADDRESS_FAMILY_IPV6, addrlist[2].GetFamily()); |
| 494 EXPECT_EQ(AF_INET6, addrlist[3].GetFamily()); | 494 EXPECT_EQ(ADDRESS_FAMILY_IPV6, addrlist[3].GetFamily()); |
| 495 | 495 |
| 496 // Test 4: IPv6, IPv4, IPv6, IPv4. Expect first IPv6 moved to the end. | 496 // Test 4: IPv6, IPv4, IPv6, IPv4. Expect first IPv6 moved to the end. |
| 497 addrlist.clear(); | 497 addrlist.clear(); |
| 498 addrlist.push_back(addrlist_v6_1); | 498 addrlist.push_back(addrlist_v6_1); |
| 499 addrlist.push_back(addrlist_v4_1); | 499 addrlist.push_back(addrlist_v4_1); |
| 500 addrlist.push_back(addrlist_v6_2); | 500 addrlist.push_back(addrlist_v6_2); |
| 501 addrlist.push_back(addrlist_v4_2); | 501 addrlist.push_back(addrlist_v4_2); |
| 502 TransportConnectJob::MakeAddressListStartWithIPv4(&addrlist); | 502 TransportConnectJob::MakeAddressListStartWithIPv4(&addrlist); |
| 503 ASSERT_EQ(4u, addrlist.size()); | 503 ASSERT_EQ(4u, addrlist.size()); |
| 504 EXPECT_EQ(AF_INET, addrlist[0].GetFamily()); | 504 EXPECT_EQ(ADDRESS_FAMILY_IPV4, addrlist[0].GetFamily()); |
| 505 EXPECT_EQ(AF_INET6, addrlist[1].GetFamily()); | 505 EXPECT_EQ(ADDRESS_FAMILY_IPV6, addrlist[1].GetFamily()); |
| 506 EXPECT_EQ(AF_INET, addrlist[2].GetFamily()); | 506 EXPECT_EQ(ADDRESS_FAMILY_IPV4, addrlist[2].GetFamily()); |
| 507 EXPECT_EQ(AF_INET6, addrlist[3].GetFamily()); | 507 EXPECT_EQ(ADDRESS_FAMILY_IPV6, addrlist[3].GetFamily()); |
| 508 | 508 |
| 509 // Test 5: IPv6, IPv6, IPv4, IPv4. Expect first two IPv6's moved to the end. | 509 // Test 5: IPv6, IPv6, IPv4, IPv4. Expect first two IPv6's moved to the end. |
| 510 addrlist.clear(); | 510 addrlist.clear(); |
| 511 addrlist.push_back(addrlist_v6_1); | 511 addrlist.push_back(addrlist_v6_1); |
| 512 addrlist.push_back(addrlist_v6_2); | 512 addrlist.push_back(addrlist_v6_2); |
| 513 addrlist.push_back(addrlist_v4_1); | 513 addrlist.push_back(addrlist_v4_1); |
| 514 addrlist.push_back(addrlist_v4_2); | 514 addrlist.push_back(addrlist_v4_2); |
| 515 TransportConnectJob::MakeAddressListStartWithIPv4(&addrlist); | 515 TransportConnectJob::MakeAddressListStartWithIPv4(&addrlist); |
| 516 ASSERT_EQ(4u, addrlist.size()); | 516 ASSERT_EQ(4u, addrlist.size()); |
| 517 EXPECT_EQ(AF_INET, addrlist[0].GetFamily()); | 517 EXPECT_EQ(ADDRESS_FAMILY_IPV4, addrlist[0].GetFamily()); |
| 518 EXPECT_EQ(AF_INET, addrlist[1].GetFamily()); | 518 EXPECT_EQ(ADDRESS_FAMILY_IPV4, addrlist[1].GetFamily()); |
| 519 EXPECT_EQ(AF_INET6, addrlist[2].GetFamily()); | 519 EXPECT_EQ(ADDRESS_FAMILY_IPV6, addrlist[2].GetFamily()); |
| 520 EXPECT_EQ(AF_INET6, addrlist[3].GetFamily()); | 520 EXPECT_EQ(ADDRESS_FAMILY_IPV6, addrlist[3].GetFamily()); |
| 521 } | 521 } |
| 522 | 522 |
| 523 TEST_F(TransportClientSocketPoolTest, Basic) { | 523 TEST_F(TransportClientSocketPoolTest, Basic) { |
| 524 TestCompletionCallback callback; | 524 TestCompletionCallback callback; |
| 525 ClientSocketHandle handle; | 525 ClientSocketHandle handle; |
| 526 int rv = handle.Init("a", low_params_, LOW, callback.callback(), &pool_, | 526 int rv = handle.Init("a", low_params_, LOW, callback.callback(), &pool_, |
| 527 BoundNetLog()); | 527 BoundNetLog()); |
| 528 EXPECT_EQ(ERR_IO_PENDING, rv); | 528 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 529 EXPECT_FALSE(handle.is_initialized()); | 529 EXPECT_FALSE(handle.is_initialized()); |
| 530 EXPECT_FALSE(handle.socket()); | 530 EXPECT_FALSE(handle.socket()); |
| (...skipping 743 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1274 EXPECT_TRUE(handle.socket()); | 1274 EXPECT_TRUE(handle.socket()); |
| 1275 IPEndPoint endpoint; | 1275 IPEndPoint endpoint; |
| 1276 handle.socket()->GetLocalAddress(&endpoint); | 1276 handle.socket()->GetLocalAddress(&endpoint); |
| 1277 EXPECT_EQ(kIPv4AddressSize, endpoint.address().size()); | 1277 EXPECT_EQ(kIPv4AddressSize, endpoint.address().size()); |
| 1278 EXPECT_EQ(1, client_socket_factory_.allocation_count()); | 1278 EXPECT_EQ(1, client_socket_factory_.allocation_count()); |
| 1279 } | 1279 } |
| 1280 | 1280 |
| 1281 } // namespace | 1281 } // namespace |
| 1282 | 1282 |
| 1283 } // namespace net | 1283 } // namespace net |
| OLD | NEW |