| 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 <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "base/compiler_specific.h" | 7 #include "base/compiler_specific.h" |
| 8 #include "base/macros.h" | 8 #include "base/macros.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
| (...skipping 603 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 614 CheckResponseData(trans, expected); | 614 CheckResponseData(trans, expected); |
| 615 EXPECT_EQ(used_proxy, proxy_headers_handler.was_called()); | 615 EXPECT_EQ(used_proxy, proxy_headers_handler.was_called()); |
| 616 } | 616 } |
| 617 }; | 617 }; |
| 618 | 618 |
| 619 INSTANTIATE_TEST_CASE_P(Version, | 619 INSTANTIATE_TEST_CASE_P(Version, |
| 620 QuicNetworkTransactionTest, | 620 QuicNetworkTransactionTest, |
| 621 ::testing::ValuesIn(QuicSupportedVersions())); | 621 ::testing::ValuesIn(QuicSupportedVersions())); |
| 622 | 622 |
| 623 TEST_P(QuicNetworkTransactionTest, ForceQuic) { | 623 TEST_P(QuicNetworkTransactionTest, ForceQuic) { |
| 624 params_.origin_to_force_quic_on = | 624 params_.origins_to_force_quic_on.insert( |
| 625 HostPortPair::FromString("mail.example.org:443"); | 625 HostPortPair::FromString("mail.example.org:443")); |
| 626 | 626 |
| 627 MockQuicData mock_quic_data; | 627 MockQuicData mock_quic_data; |
| 628 mock_quic_data.AddWrite( | 628 mock_quic_data.AddWrite( |
| 629 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, | 629 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, |
| 630 GetRequestHeaders("GET", "https", "/"))); | 630 GetRequestHeaders("GET", "https", "/"))); |
| 631 mock_quic_data.AddRead(ConstructResponseHeadersPacket( | 631 mock_quic_data.AddRead(ConstructResponseHeadersPacket( |
| 632 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); | 632 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); |
| 633 mock_quic_data.AddRead( | 633 mock_quic_data.AddRead( |
| 634 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!")); | 634 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!")); |
| 635 mock_quic_data.AddWrite(ConstructAckPacket(2, 1)); | 635 mock_quic_data.AddWrite(ConstructAckPacket(2, 1)); |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 802 request_.url = GURL("https://" + origin.host()); | 802 request_.url = GURL("https://" + origin.host()); |
| 803 AddQuicRemoteAlternativeServiceMapping( | 803 AddQuicRemoteAlternativeServiceMapping( |
| 804 MockCryptoClientStream::CONFIRM_HANDSHAKE, alternative); | 804 MockCryptoClientStream::CONFIRM_HANDSHAKE, alternative); |
| 805 AddHangingNonAlternateProtocolSocketData(); | 805 AddHangingNonAlternateProtocolSocketData(); |
| 806 CreateSession(); | 806 CreateSession(); |
| 807 | 807 |
| 808 SendRequestAndExpectQuicResponse("hello!"); | 808 SendRequestAndExpectQuicResponse("hello!"); |
| 809 } | 809 } |
| 810 | 810 |
| 811 TEST_P(QuicNetworkTransactionTest, ForceQuicWithErrorConnecting) { | 811 TEST_P(QuicNetworkTransactionTest, ForceQuicWithErrorConnecting) { |
| 812 params_.origin_to_force_quic_on = | 812 params_.origins_to_force_quic_on.insert( |
| 813 HostPortPair::FromString("mail.example.org:443"); | 813 HostPortPair::FromString("mail.example.org:443")); |
| 814 | 814 |
| 815 MockQuicData mock_quic_data1; | 815 MockQuicData mock_quic_data1; |
| 816 mock_quic_data1.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); | 816 mock_quic_data1.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); |
| 817 | 817 |
| 818 MockQuicData mock_quic_data2; | 818 MockQuicData mock_quic_data2; |
| 819 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); | 819 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); |
| 820 mock_quic_data2.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); | 820 mock_quic_data2.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); |
| 821 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); | 821 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); |
| 822 | 822 |
| 823 mock_quic_data1.AddSocketDataToFactory(&socket_factory_); | 823 mock_quic_data1.AddSocketDataToFactory(&socket_factory_); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 834 TestCompletionCallback callback; | 834 TestCompletionCallback callback; |
| 835 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); | 835 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); |
| 836 EXPECT_EQ(ERR_IO_PENDING, rv); | 836 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 837 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult()); | 837 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult()); |
| 838 EXPECT_EQ(1 + i, test_network_quality_estimator_->watcher_count()); | 838 EXPECT_EQ(1 + i, test_network_quality_estimator_->watcher_count()); |
| 839 } | 839 } |
| 840 } | 840 } |
| 841 | 841 |
| 842 TEST_P(QuicNetworkTransactionTest, DoNotForceQuicForHttps) { | 842 TEST_P(QuicNetworkTransactionTest, DoNotForceQuicForHttps) { |
| 843 // Attempt to "force" quic on 443, which will not be honored. | 843 // Attempt to "force" quic on 443, which will not be honored. |
| 844 params_.origin_to_force_quic_on = | 844 params_.origins_to_force_quic_on.insert( |
| 845 HostPortPair::FromString("www.google.com:443"); | 845 HostPortPair::FromString("www.google.com:443")); |
| 846 | 846 |
| 847 MockRead http_reads[] = { | 847 MockRead http_reads[] = { |
| 848 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), | 848 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), |
| 849 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | 849 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), |
| 850 MockRead(ASYNC, OK)}; | 850 MockRead(ASYNC, OK)}; |
| 851 | 851 |
| 852 StaticSocketDataProvider data(http_reads, arraysize(http_reads), nullptr, 0); | 852 StaticSocketDataProvider data(http_reads, arraysize(http_reads), nullptr, 0); |
| 853 socket_factory_.AddSocketDataProvider(&data); | 853 socket_factory_.AddSocketDataProvider(&data); |
| 854 SSLSocketDataProvider ssl(ASYNC, OK); | 854 SSLSocketDataProvider ssl(ASYNC, OK); |
| 855 socket_factory_.AddSSLSocketDataProvider(&ssl); | 855 socket_factory_.AddSSLSocketDataProvider(&ssl); |
| (...skipping 1373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2229 | 2229 |
| 2230 request_.url = GURL("https://www.example.org:443"); | 2230 request_.url = GURL("https://www.example.org:443"); |
| 2231 AddHangingNonAlternateProtocolSocketData(); | 2231 AddHangingNonAlternateProtocolSocketData(); |
| 2232 CreateSession(); | 2232 CreateSession(); |
| 2233 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE); | 2233 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE); |
| 2234 SendRequestAndExpectQuicResponse("hello!"); | 2234 SendRequestAndExpectQuicResponse("hello!"); |
| 2235 EXPECT_TRUE(rtt_observer_.rtt_notification_received()); | 2235 EXPECT_TRUE(rtt_observer_.rtt_notification_received()); |
| 2236 } | 2236 } |
| 2237 | 2237 |
| 2238 TEST_P(QuicNetworkTransactionTest, QuicUpload) { | 2238 TEST_P(QuicNetworkTransactionTest, QuicUpload) { |
| 2239 params_.origin_to_force_quic_on = | 2239 params_.origins_to_force_quic_on.insert( |
| 2240 HostPortPair::FromString("mail.example.org:443"); | 2240 HostPortPair::FromString("mail.example.org:443")); |
| 2241 | 2241 |
| 2242 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 2242 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
| 2243 MockWrite writes[] = {MockWrite(SYNCHRONOUS, ERR_FAILED, 1)}; | 2243 MockWrite writes[] = {MockWrite(SYNCHRONOUS, ERR_FAILED, 1)}; |
| 2244 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 2244 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
| 2245 arraysize(writes)); | 2245 arraysize(writes)); |
| 2246 socket_factory_.AddSocketDataProvider(&socket_data); | 2246 socket_factory_.AddSocketDataProvider(&socket_data); |
| 2247 | 2247 |
| 2248 // The non-alternate protocol job needs to hang in order to guarantee that | 2248 // The non-alternate protocol job needs to hang in order to guarantee that |
| 2249 // the alternate-protocol job will "win". | 2249 // the alternate-protocol job will "win". |
| 2250 AddHangingNonAlternateProtocolSocketData(); | 2250 AddHangingNonAlternateProtocolSocketData(); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 2261 scoped_ptr<HttpNetworkTransaction> trans( | 2261 scoped_ptr<HttpNetworkTransaction> trans( |
| 2262 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); | 2262 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); |
| 2263 TestCompletionCallback callback; | 2263 TestCompletionCallback callback; |
| 2264 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); | 2264 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); |
| 2265 EXPECT_EQ(ERR_IO_PENDING, rv); | 2265 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 2266 EXPECT_NE(OK, callback.WaitForResult()); | 2266 EXPECT_NE(OK, callback.WaitForResult()); |
| 2267 } | 2267 } |
| 2268 | 2268 |
| 2269 } // namespace test | 2269 } // namespace test |
| 2270 } // namespace net | 2270 } // namespace net |
| OLD | NEW |