| 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/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 274 | 274 |
| 275 void ExpectBrokenAlternateProtocolMapping() { | 275 void ExpectBrokenAlternateProtocolMapping() { |
| 276 ASSERT_TRUE(session_->http_server_properties()->HasAlternateProtocol( | 276 ASSERT_TRUE(session_->http_server_properties()->HasAlternateProtocol( |
| 277 HostPortPair::FromURL(request_.url))); | 277 HostPortPair::FromURL(request_.url))); |
| 278 const PortAlternateProtocolPair alternate = | 278 const PortAlternateProtocolPair alternate = |
| 279 session_->http_server_properties()->GetAlternateProtocol( | 279 session_->http_server_properties()->GetAlternateProtocol( |
| 280 HostPortPair::FromURL(request_.url)); | 280 HostPortPair::FromURL(request_.url)); |
| 281 EXPECT_EQ(ALTERNATE_PROTOCOL_BROKEN, alternate.protocol); | 281 EXPECT_EQ(ALTERNATE_PROTOCOL_BROKEN, alternate.protocol); |
| 282 } | 282 } |
| 283 | 283 |
| 284 void ExpectQuicAlternateProtocolMapping() { |
| 285 ASSERT_TRUE(session_->http_server_properties()->HasAlternateProtocol( |
| 286 HostPortPair::FromURL(request_.url))); |
| 287 const PortAlternateProtocolPair alternate = |
| 288 session_->http_server_properties()->GetAlternateProtocol( |
| 289 HostPortPair::FromURL(request_.url)); |
| 290 EXPECT_EQ(QUIC, alternate.protocol); |
| 291 } |
| 292 |
| 284 void AddHangingNonAlternateProtocolSocketData() { | 293 void AddHangingNonAlternateProtocolSocketData() { |
| 285 MockConnect hanging_connect(SYNCHRONOUS, ERR_IO_PENDING); | 294 MockConnect hanging_connect(SYNCHRONOUS, ERR_IO_PENDING); |
| 286 hanging_data_.set_connect_data(hanging_connect); | 295 hanging_data_.set_connect_data(hanging_connect); |
| 287 socket_factory_.AddSocketDataProvider(&hanging_data_); | 296 socket_factory_.AddSocketDataProvider(&hanging_data_); |
| 288 } | 297 } |
| 289 | 298 |
| 290 QuicTestPacketMaker maker_; | 299 QuicTestPacketMaker maker_; |
| 291 scoped_refptr<HttpNetworkSession> session_; | 300 scoped_refptr<HttpNetworkSession> session_; |
| 292 MockClientSocketFactory socket_factory_; | 301 MockClientSocketFactory socket_factory_; |
| 293 MockCryptoClientStreamFactory crypto_client_stream_factory_; | 302 MockCryptoClientStreamFactory crypto_client_stream_factory_; |
| (...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 782 NULL, 0); | 791 NULL, 0); |
| 783 socket_factory_.AddSocketDataProvider(&http_data); | 792 socket_factory_.AddSocketDataProvider(&http_data); |
| 784 | 793 |
| 785 CreateSession(); | 794 CreateSession(); |
| 786 | 795 |
| 787 AddQuicAlternateProtocolMapping(MockCryptoClientStream::COLD_START); | 796 AddQuicAlternateProtocolMapping(MockCryptoClientStream::COLD_START); |
| 788 SendRequestAndExpectHttpResponse("hello from http"); | 797 SendRequestAndExpectHttpResponse("hello from http"); |
| 789 ExpectBrokenAlternateProtocolMapping(); | 798 ExpectBrokenAlternateProtocolMapping(); |
| 790 } | 799 } |
| 791 | 800 |
| 801 TEST_P(QuicNetworkTransactionTest, NoBrokenAlternateProtocolIfTcpFails) { |
| 802 HttpStreamFactory::EnableNpnSpdy3(); // Enables QUIC too. |
| 803 |
| 804 // Alternate-protocol job |
| 805 MockRead quic_reads[] = { |
| 806 MockRead(ASYNC, ERR_SOCKET_NOT_CONNECTED), |
| 807 }; |
| 808 StaticSocketDataProvider quic_data(quic_reads, arraysize(quic_reads), |
| 809 NULL, 0); |
| 810 quic_data.set_connect_data(MockConnect(ASYNC, ERR_SOCKET_NOT_CONNECTED)); |
| 811 socket_factory_.AddSocketDataProvider(&quic_data); |
| 812 |
| 813 // Main job which will succeed even though the alternate job fails. |
| 814 MockRead http_reads[] = { |
| 815 MockRead(ASYNC, ERR_SOCKET_NOT_CONNECTED), |
| 816 }; |
| 817 |
| 818 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), |
| 819 NULL, 0); |
| 820 http_data.set_connect_data(MockConnect(ASYNC, ERR_SOCKET_NOT_CONNECTED)); |
| 821 socket_factory_.AddSocketDataProvider(&http_data); |
| 822 |
| 823 CreateSession(); |
| 824 |
| 825 AddQuicAlternateProtocolMapping(MockCryptoClientStream::COLD_START); |
| 826 scoped_ptr<HttpNetworkTransaction> trans( |
| 827 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); |
| 828 TestCompletionCallback callback; |
| 829 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); |
| 830 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 831 EXPECT_EQ(ERR_SOCKET_NOT_CONNECTED, callback.WaitForResult()); |
| 832 ExpectQuicAlternateProtocolMapping(); |
| 833 } |
| 834 |
| 792 TEST_P(QuicNetworkTransactionTest, FailedZeroRttBrokenAlternateProtocol) { | 835 TEST_P(QuicNetworkTransactionTest, FailedZeroRttBrokenAlternateProtocol) { |
| 793 HttpStreamFactory::EnableNpnSpdy3(); // Enables QUIC too. | 836 HttpStreamFactory::EnableNpnSpdy3(); // Enables QUIC too. |
| 794 | 837 |
| 795 // Alternate-protocol job | 838 // Alternate-protocol job |
| 796 MockRead quic_reads[] = { | 839 MockRead quic_reads[] = { |
| 797 MockRead(ASYNC, ERR_SOCKET_NOT_CONNECTED), | 840 MockRead(ASYNC, ERR_SOCKET_NOT_CONNECTED), |
| 798 }; | 841 }; |
| 799 StaticSocketDataProvider quic_data(quic_reads, arraysize(quic_reads), | 842 StaticSocketDataProvider quic_data(quic_reads, arraysize(quic_reads), |
| 800 NULL, 0); | 843 NULL, 0); |
| 801 socket_factory_.AddSocketDataProvider(&quic_data); | 844 socket_factory_.AddSocketDataProvider(&quic_data); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 864 NULL, | 907 NULL, |
| 865 net_log_.bound()); | 908 net_log_.bound()); |
| 866 | 909 |
| 867 CreateSession(); | 910 CreateSession(); |
| 868 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT); | 911 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT); |
| 869 SendRequestAndExpectHttpResponse("hello world"); | 912 SendRequestAndExpectHttpResponse("hello world"); |
| 870 } | 913 } |
| 871 | 914 |
| 872 } // namespace test | 915 } // namespace test |
| 873 } // namespace net | 916 } // namespace net |
| OLD | NEW |