OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/http/http_proxy_client_socket_pool.h" | 5 #include "net/http/http_proxy_client_socket_pool.h" |
6 | 6 |
7 #include "base/callback.h" | 7 #include "base/callback.h" |
8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
10 #include "base/time.h" | 10 #include "base/time.h" |
(...skipping 657 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
668 }; | 668 }; |
669 | 669 |
670 host_resolver_.set_synchronous_mode(true); | 670 host_resolver_.set_synchronous_mode(true); |
671 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_hosts); i++) { | 671 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_hosts); i++) { |
672 host_resolver_.rules()->AddIPLiteralRule(test_hosts[i].name, | 672 host_resolver_.rules()->AddIPLiteralRule(test_hosts[i].name, |
673 test_hosts[i].iplist, ""); | 673 test_hosts[i].iplist, ""); |
674 | 674 |
675 // This test requires that the HostResolver cache be populated. Normal | 675 // This test requires that the HostResolver cache be populated. Normal |
676 // code would have done this already, but we do it manually. | 676 // code would have done this already, but we do it manually. |
677 HostResolver::RequestInfo info(HostPortPair(test_hosts[i].name, kTestPort)); | 677 HostResolver::RequestInfo info(HostPortPair(test_hosts[i].name, kTestPort)); |
678 host_resolver_.Resolve(info, &test_hosts[i].addresses, NULL, NULL, | 678 host_resolver_.Resolve(info, &test_hosts[i].addresses, CompletionCallback(), |
679 BoundNetLog()); | 679 NULL, BoundNetLog()); |
680 | 680 |
681 // Setup a HostPortProxyPair | 681 // Setup a HostPortProxyPair |
682 test_hosts[i].pair = HostPortProxyPair( | 682 test_hosts[i].pair = HostPortProxyPair( |
683 HostPortPair(test_hosts[i].name, kTestPort), ProxyServer::Direct()); | 683 HostPortPair(test_hosts[i].name, kTestPort), ProxyServer::Direct()); |
684 } | 684 } |
685 | 685 |
686 MockRead reads[] = { | 686 MockRead reads[] = { |
687 MockRead(true, ERR_IO_PENDING), | 687 MockRead(true, ERR_IO_PENDING), |
688 }; | 688 }; |
689 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); | 689 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
744 struct TestHosts { | 744 struct TestHosts { |
745 std::string name; | 745 std::string name; |
746 std::string iplist; | 746 std::string iplist; |
747 HostPortProxyPair pair; | 747 HostPortProxyPair pair; |
748 AddressList addresses; | 748 AddressList addresses; |
749 } test_hosts[] = { | 749 } test_hosts[] = { |
750 { "www.webkit.org", "192.0.2.33,192.168.0.1,192.168.0.5" }, | 750 { "www.webkit.org", "192.0.2.33,192.168.0.1,192.168.0.5" }, |
751 { "js.webkit.org", "192.168.0.4,192.168.0.1,192.0.2.33" }, | 751 { "js.webkit.org", "192.168.0.4,192.168.0.1,192.0.2.33" }, |
752 }; | 752 }; |
753 | 753 |
754 TestOldCompletionCallback callback; | 754 TestCompletionCallback callback; |
| 755 TestOldCompletionCallback old_callback; |
755 int rv; | 756 int rv; |
756 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_hosts); i++) { | 757 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_hosts); i++) { |
757 host_resolver_.rules()->AddIPLiteralRule(test_hosts[i].name, | 758 host_resolver_.rules()->AddIPLiteralRule(test_hosts[i].name, |
758 test_hosts[i].iplist, ""); | 759 test_hosts[i].iplist, ""); |
759 | 760 |
760 // This test requires that the HostResolver cache be populated. Normal | 761 // This test requires that the HostResolver cache be populated. Normal |
761 // code would have done this already, but we do it manually. | 762 // code would have done this already, but we do it manually. |
762 HostResolver::RequestInfo info(HostPortPair(test_hosts[i].name, kTestPort)); | 763 HostResolver::RequestInfo info(HostPortPair(test_hosts[i].name, kTestPort)); |
763 rv = host_resolver_.Resolve(info, &test_hosts[i].addresses, &callback, | 764 rv = host_resolver_.Resolve(info, &test_hosts[i].addresses, |
764 NULL, BoundNetLog()); | 765 callback.callback(), NULL, BoundNetLog()); |
765 EXPECT_EQ(OK, callback.GetResult(rv)); | 766 EXPECT_EQ(OK, callback.GetResult(rv)); |
766 | 767 |
767 // Setup a HostPortProxyPair | 768 // Setup a HostPortProxyPair |
768 test_hosts[i].pair = HostPortProxyPair( | 769 test_hosts[i].pair = HostPortProxyPair( |
769 HostPortPair(test_hosts[i].name, kTestPort), ProxyServer::Direct()); | 770 HostPortPair(test_hosts[i].name, kTestPort), ProxyServer::Direct()); |
770 } | 771 } |
771 | 772 |
772 MockRead reads[] = { | 773 MockRead reads[] = { |
773 MockRead(true, ERR_IO_PENDING), | 774 MockRead(true, ERR_IO_PENDING), |
774 }; | 775 }; |
775 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); | 776 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); |
776 socket_factory_.AddSocketDataProvider(&data); | 777 socket_factory_.AddSocketDataProvider(&data); |
777 SSLSocketDataProvider ssl(true, OK); | 778 SSLSocketDataProvider ssl(true, OK); |
778 ssl.cert = X509Certificate::CreateFromBytes( | 779 ssl.cert = X509Certificate::CreateFromBytes( |
779 reinterpret_cast<const char*>(webkit_der), sizeof(webkit_der)); | 780 reinterpret_cast<const char*>(webkit_der), sizeof(webkit_der)); |
780 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 781 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
781 ssl.next_proto = "spdy/2"; | 782 ssl.next_proto = "spdy/2"; |
782 ssl.client_cert_sent = true; | 783 ssl.client_cert_sent = true; |
783 socket_factory_.AddSSLSocketDataProvider(&ssl); | 784 socket_factory_.AddSSLSocketDataProvider(&ssl); |
784 | 785 |
785 CreatePool(true /* tcp pool */, false, false); | 786 CreatePool(true /* tcp pool */, false, false); |
786 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, | 787 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, |
787 true); | 788 true); |
788 | 789 |
789 scoped_ptr<ClientSocketHandle> handle(new ClientSocketHandle()); | 790 scoped_ptr<ClientSocketHandle> handle(new ClientSocketHandle()); |
790 rv = handle->Init( | 791 rv = handle->Init( |
791 "a", params, MEDIUM, &callback, pool_.get(), BoundNetLog()); | 792 "a", params, MEDIUM, &old_callback, pool_.get(), BoundNetLog()); |
792 EXPECT_EQ(ERR_IO_PENDING, rv); | 793 EXPECT_EQ(ERR_IO_PENDING, rv); |
793 EXPECT_FALSE(handle->is_initialized()); | 794 EXPECT_FALSE(handle->is_initialized()); |
794 EXPECT_FALSE(handle->socket()); | 795 EXPECT_FALSE(handle->socket()); |
795 | 796 |
796 EXPECT_EQ(OK, callback.WaitForResult()); | 797 EXPECT_EQ(OK, old_callback.WaitForResult()); |
797 EXPECT_TRUE(handle->is_initialized()); | 798 EXPECT_TRUE(handle->is_initialized()); |
798 EXPECT_TRUE(handle->socket()); | 799 EXPECT_TRUE(handle->socket()); |
799 | 800 |
800 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle->socket()); | 801 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle->socket()); |
801 EXPECT_TRUE(ssl_socket->was_npn_negotiated()); | 802 EXPECT_TRUE(ssl_socket->was_npn_negotiated()); |
802 std::string proto; | 803 std::string proto; |
803 ssl_socket->GetNextProto(&proto); | 804 ssl_socket->GetNextProto(&proto); |
804 EXPECT_EQ(SSLClientSocket::NextProtoFromString(proto), | 805 EXPECT_EQ(SSLClientSocket::NextProtoFromString(proto), |
805 SSLClientSocket::kProtoSPDY2); | 806 SSLClientSocket::kProtoSPDY2); |
806 | 807 |
(...skipping 13 matching lines...) Expand all Loading... |
820 EXPECT_FALSE(session_->spdy_session_pool()->HasSession(test_hosts[1].pair)); | 821 EXPECT_FALSE(session_->spdy_session_pool()->HasSession(test_hosts[1].pair)); |
821 | 822 |
822 session_->spdy_session_pool()->CloseAllSessions(); | 823 session_->spdy_session_pool()->CloseAllSessions(); |
823 } | 824 } |
824 | 825 |
825 // It would be nice to also test the timeouts in SSLClientSocketPool. | 826 // It would be nice to also test the timeouts in SSLClientSocketPool. |
826 | 827 |
827 } // namespace | 828 } // namespace |
828 | 829 |
829 } // namespace net | 830 } // namespace net |
OLD | NEW |