Chromium Code Reviews| 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 for (const char* host : {"mail.example.org:443"}) { |
| 625 HostPortPair::FromString("mail.example.org:443"); | 625 params_.origins_to_force_quic_on.insert(HostPortPair::FromString(host)); |
|
Ryan Hamilton
2016/03/20 22:46:53
Ditto, no need for loops here and below.
ramant (doing other things)
2016/03/21 17:23:48
Done.
| |
| 626 } | |
| 626 | 627 |
| 627 MockQuicData mock_quic_data; | 628 MockQuicData mock_quic_data; |
| 628 mock_quic_data.AddWrite( | 629 mock_quic_data.AddWrite( |
| 629 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, | 630 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, |
| 630 GetRequestHeaders("GET", "https", "/"))); | 631 GetRequestHeaders("GET", "https", "/"))); |
| 631 mock_quic_data.AddRead(ConstructResponseHeadersPacket( | 632 mock_quic_data.AddRead(ConstructResponseHeadersPacket( |
| 632 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); | 633 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); |
| 633 mock_quic_data.AddRead( | 634 mock_quic_data.AddRead( |
| 634 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!")); | 635 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!")); |
| 635 mock_quic_data.AddWrite(ConstructAckPacket(2, 1)); | 636 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()); | 803 request_.url = GURL("https://" + origin.host()); |
| 803 AddQuicRemoteAlternativeServiceMapping( | 804 AddQuicRemoteAlternativeServiceMapping( |
| 804 MockCryptoClientStream::CONFIRM_HANDSHAKE, alternative); | 805 MockCryptoClientStream::CONFIRM_HANDSHAKE, alternative); |
| 805 AddHangingNonAlternateProtocolSocketData(); | 806 AddHangingNonAlternateProtocolSocketData(); |
| 806 CreateSession(); | 807 CreateSession(); |
| 807 | 808 |
| 808 SendRequestAndExpectQuicResponse("hello!"); | 809 SendRequestAndExpectQuicResponse("hello!"); |
| 809 } | 810 } |
| 810 | 811 |
| 811 TEST_P(QuicNetworkTransactionTest, ForceQuicWithErrorConnecting) { | 812 TEST_P(QuicNetworkTransactionTest, ForceQuicWithErrorConnecting) { |
| 812 params_.origin_to_force_quic_on = | 813 for (const char* host : {"mail.example.org:443"}) { |
| 813 HostPortPair::FromString("mail.example.org:443"); | 814 params_.origins_to_force_quic_on.insert(HostPortPair::FromString(host)); |
| 815 } | |
| 814 | 816 |
| 815 MockQuicData mock_quic_data1; | 817 MockQuicData mock_quic_data1; |
| 816 mock_quic_data1.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); | 818 mock_quic_data1.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); |
| 817 | 819 |
| 818 MockQuicData mock_quic_data2; | 820 MockQuicData mock_quic_data2; |
| 819 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); | 821 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); |
| 820 mock_quic_data2.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); | 822 mock_quic_data2.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); |
| 821 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); | 823 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); |
| 822 | 824 |
| 823 mock_quic_data1.AddSocketDataToFactory(&socket_factory_); | 825 mock_quic_data1.AddSocketDataToFactory(&socket_factory_); |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 834 TestCompletionCallback callback; | 836 TestCompletionCallback callback; |
| 835 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); | 837 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); |
| 836 EXPECT_EQ(ERR_IO_PENDING, rv); | 838 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 837 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult()); | 839 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult()); |
| 838 EXPECT_EQ(1 + i, test_network_quality_estimator_->watcher_count()); | 840 EXPECT_EQ(1 + i, test_network_quality_estimator_->watcher_count()); |
| 839 } | 841 } |
| 840 } | 842 } |
| 841 | 843 |
| 842 TEST_P(QuicNetworkTransactionTest, DoNotForceQuicForHttps) { | 844 TEST_P(QuicNetworkTransactionTest, DoNotForceQuicForHttps) { |
| 843 // Attempt to "force" quic on 443, which will not be honored. | 845 // Attempt to "force" quic on 443, which will not be honored. |
| 844 params_.origin_to_force_quic_on = | 846 for (const char* host : {"www.google.com:443"}) { |
| 845 HostPortPair::FromString("www.google.com:443"); | 847 params_.origins_to_force_quic_on.insert(HostPortPair::FromString(host)); |
| 848 } | |
| 846 | 849 |
| 847 MockRead http_reads[] = { | 850 MockRead http_reads[] = { |
| 848 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), | 851 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), |
| 849 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | 852 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), |
| 850 MockRead(ASYNC, OK)}; | 853 MockRead(ASYNC, OK)}; |
| 851 | 854 |
| 852 StaticSocketDataProvider data(http_reads, arraysize(http_reads), nullptr, 0); | 855 StaticSocketDataProvider data(http_reads, arraysize(http_reads), nullptr, 0); |
| 853 socket_factory_.AddSocketDataProvider(&data); | 856 socket_factory_.AddSocketDataProvider(&data); |
| 854 SSLSocketDataProvider ssl(ASYNC, OK); | 857 SSLSocketDataProvider ssl(ASYNC, OK); |
| 855 socket_factory_.AddSSLSocketDataProvider(&ssl); | 858 socket_factory_.AddSSLSocketDataProvider(&ssl); |
| (...skipping 1373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2229 | 2232 |
| 2230 request_.url = GURL("https://www.example.org:443"); | 2233 request_.url = GURL("https://www.example.org:443"); |
| 2231 AddHangingNonAlternateProtocolSocketData(); | 2234 AddHangingNonAlternateProtocolSocketData(); |
| 2232 CreateSession(); | 2235 CreateSession(); |
| 2233 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE); | 2236 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE); |
| 2234 SendRequestAndExpectQuicResponse("hello!"); | 2237 SendRequestAndExpectQuicResponse("hello!"); |
| 2235 EXPECT_TRUE(rtt_observer_.rtt_notification_received()); | 2238 EXPECT_TRUE(rtt_observer_.rtt_notification_received()); |
| 2236 } | 2239 } |
| 2237 | 2240 |
| 2238 TEST_P(QuicNetworkTransactionTest, QuicUpload) { | 2241 TEST_P(QuicNetworkTransactionTest, QuicUpload) { |
| 2239 params_.origin_to_force_quic_on = | 2242 for (const char* host : {"mail.example.org:443"}) { |
| 2240 HostPortPair::FromString("mail.example.org:443"); | 2243 params_.origins_to_force_quic_on.insert(HostPortPair::FromString(host)); |
| 2244 } | |
| 2241 | 2245 |
| 2242 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 2246 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
| 2243 MockWrite writes[] = {MockWrite(SYNCHRONOUS, ERR_FAILED, 1)}; | 2247 MockWrite writes[] = {MockWrite(SYNCHRONOUS, ERR_FAILED, 1)}; |
| 2244 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 2248 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
| 2245 arraysize(writes)); | 2249 arraysize(writes)); |
| 2246 socket_factory_.AddSocketDataProvider(&socket_data); | 2250 socket_factory_.AddSocketDataProvider(&socket_data); |
| 2247 | 2251 |
| 2248 // The non-alternate protocol job needs to hang in order to guarantee that | 2252 // The non-alternate protocol job needs to hang in order to guarantee that |
| 2249 // the alternate-protocol job will "win". | 2253 // the alternate-protocol job will "win". |
| 2250 AddHangingNonAlternateProtocolSocketData(); | 2254 AddHangingNonAlternateProtocolSocketData(); |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 2261 scoped_ptr<HttpNetworkTransaction> trans( | 2265 scoped_ptr<HttpNetworkTransaction> trans( |
| 2262 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); | 2266 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); |
| 2263 TestCompletionCallback callback; | 2267 TestCompletionCallback callback; |
| 2264 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); | 2268 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); |
| 2265 EXPECT_EQ(ERR_IO_PENDING, rv); | 2269 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 2266 EXPECT_NE(OK, callback.WaitForResult()); | 2270 EXPECT_NE(OK, callback.WaitForResult()); |
| 2267 } | 2271 } |
| 2268 | 2272 |
| 2269 } // namespace test | 2273 } // namespace test |
| 2270 } // namespace net | 2274 } // namespace net |
| OLD | NEW |