Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Side by Side Diff: net/quic/quic_network_transaction_unittest.cc

Issue 612323013: QUIC - (no behavior change) s/NULL/nullptr/g in .../quic/... (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/quic/quic_in_memory_cache.cc ('k') | net/quic/quic_packet_creator.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 } 80 }
81 81
82 void AddWrite(scoped_ptr<QuicEncryptedPacket> packet) { 82 void AddWrite(scoped_ptr<QuicEncryptedPacket> packet) {
83 writes_.push_back(MockWrite(SYNCHRONOUS, packet->data(), packet->length(), 83 writes_.push_back(MockWrite(SYNCHRONOUS, packet->data(), packet->length(),
84 sequence_number_++)); 84 sequence_number_++));
85 packets_.push_back(packet.release()); 85 packets_.push_back(packet.release());
86 } 86 }
87 87
88 void AddDelayedSocketDataToFactory(MockClientSocketFactory* factory, 88 void AddDelayedSocketDataToFactory(MockClientSocketFactory* factory,
89 size_t delay) { 89 size_t delay) {
90 MockRead* reads = reads_.empty() ? NULL : &reads_[0]; 90 MockRead* reads = reads_.empty() ? nullptr : &reads_[0];
91 MockWrite* writes = writes_.empty() ? NULL : &writes_[0]; 91 MockWrite* writes = writes_.empty() ? nullptr : &writes_[0];
92 socket_data_.reset(new DelayedSocketData( 92 socket_data_.reset(new DelayedSocketData(
93 delay, reads, reads_.size(), writes, writes_.size())); 93 delay, reads, reads_.size(), writes, writes_.size()));
94 factory->AddSocketDataProvider(socket_data_.get()); 94 factory->AddSocketDataProvider(socket_data_.get());
95 } 95 }
96 96
97 private: 97 private:
98 std::vector<QuicEncryptedPacket*> packets_; 98 std::vector<QuicEncryptedPacket*> packets_;
99 std::vector<MockWrite> writes_; 99 std::vector<MockWrite> writes_;
100 std::vector<MockRead> reads_; 100 std::vector<MockRead> reads_;
101 size_t sequence_number_; 101 size_t sequence_number_;
102 scoped_ptr<SocketDataProvider> socket_data_; 102 scoped_ptr<SocketDataProvider> socket_data_;
103 }; 103 };
104 104
105 class QuicNetworkTransactionTest 105 class QuicNetworkTransactionTest
106 : public PlatformTest, 106 : public PlatformTest,
107 public ::testing::WithParamInterface<QuicVersion> { 107 public ::testing::WithParamInterface<QuicVersion> {
108 protected: 108 protected:
109 QuicNetworkTransactionTest() 109 QuicNetworkTransactionTest()
110 : clock_(new MockClock), 110 : clock_(new MockClock),
111 maker_(GetParam(), 0, clock_), 111 maker_(GetParam(), 0, clock_),
112 ssl_config_service_(new SSLConfigServiceDefaults), 112 ssl_config_service_(new SSLConfigServiceDefaults),
113 proxy_service_(ProxyService::CreateDirect()), 113 proxy_service_(ProxyService::CreateDirect()),
114 auth_handler_factory_( 114 auth_handler_factory_(
115 HttpAuthHandlerFactory::CreateDefault(&host_resolver_)), 115 HttpAuthHandlerFactory::CreateDefault(&host_resolver_)),
116 random_generator_(0), 116 random_generator_(0),
117 hanging_data_(NULL, 0, NULL, 0) { 117 hanging_data_(nullptr, 0, nullptr, 0) {
118 request_.method = "GET"; 118 request_.method = "GET";
119 request_.url = GURL("http://www.google.com/"); 119 request_.url = GURL("http://www.google.com/");
120 request_.load_flags = 0; 120 request_.load_flags = 0;
121 clock_->AdvanceTime(QuicTime::Delta::FromMilliseconds(20)); 121 clock_->AdvanceTime(QuicTime::Delta::FromMilliseconds(20));
122 } 122 }
123 123
124 virtual void SetUp() { 124 virtual void SetUp() {
125 NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); 125 NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests();
126 base::MessageLoop::current()->RunUntilIdle(); 126 base::MessageLoop::current()->RunUntilIdle();
127 } 127 }
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 params_.use_alternate_protocols = true; 216 params_.use_alternate_protocols = true;
217 params_.next_protos = NextProtosSpdy3(); 217 params_.next_protos = NextProtosSpdy3();
218 } 218 }
219 219
220 session_ = new HttpNetworkSession(params_); 220 session_ = new HttpNetworkSession(params_);
221 session_->quic_stream_factory()->set_require_confirmation(false); 221 session_->quic_stream_factory()->set_require_confirmation(false);
222 } 222 }
223 223
224 void CheckWasQuicResponse(const scoped_ptr<HttpNetworkTransaction>& trans) { 224 void CheckWasQuicResponse(const scoped_ptr<HttpNetworkTransaction>& trans) {
225 const HttpResponseInfo* response = trans->GetResponseInfo(); 225 const HttpResponseInfo* response = trans->GetResponseInfo();
226 ASSERT_TRUE(response != NULL); 226 ASSERT_TRUE(response != nullptr);
227 ASSERT_TRUE(response->headers.get() != NULL); 227 ASSERT_TRUE(response->headers.get() != nullptr);
228 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); 228 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
229 EXPECT_TRUE(response->was_fetched_via_spdy); 229 EXPECT_TRUE(response->was_fetched_via_spdy);
230 EXPECT_TRUE(response->was_npn_negotiated); 230 EXPECT_TRUE(response->was_npn_negotiated);
231 EXPECT_EQ(HttpResponseInfo::CONNECTION_INFO_QUIC1_SPDY3, 231 EXPECT_EQ(HttpResponseInfo::CONNECTION_INFO_QUIC1_SPDY3,
232 response->connection_info); 232 response->connection_info);
233 } 233 }
234 234
235 void CheckWasHttpResponse(const scoped_ptr<HttpNetworkTransaction>& trans) { 235 void CheckWasHttpResponse(const scoped_ptr<HttpNetworkTransaction>& trans) {
236 const HttpResponseInfo* response = trans->GetResponseInfo(); 236 const HttpResponseInfo* response = trans->GetResponseInfo();
237 ASSERT_TRUE(response != NULL); 237 ASSERT_TRUE(response != nullptr);
238 ASSERT_TRUE(response->headers.get() != NULL); 238 ASSERT_TRUE(response->headers.get() != nullptr);
239 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); 239 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
240 EXPECT_FALSE(response->was_fetched_via_spdy); 240 EXPECT_FALSE(response->was_fetched_via_spdy);
241 EXPECT_FALSE(response->was_npn_negotiated); 241 EXPECT_FALSE(response->was_npn_negotiated);
242 EXPECT_EQ(HttpResponseInfo::CONNECTION_INFO_HTTP1, 242 EXPECT_EQ(HttpResponseInfo::CONNECTION_INFO_HTTP1,
243 response->connection_info); 243 response->connection_info);
244 } 244 }
245 245
246 void CheckResponseData(HttpNetworkTransaction* trans, 246 void CheckResponseData(HttpNetworkTransaction* trans,
247 const std::string& expected) { 247 const std::string& expected) {
248 std::string response_data; 248 std::string response_data;
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 params_.origin_to_force_quic_on = 438 params_.origin_to_force_quic_on =
439 HostPortPair::FromString("www.google.com:443"); 439 HostPortPair::FromString("www.google.com:443");
440 440
441 MockRead http_reads[] = { 441 MockRead http_reads[] = {
442 MockRead("HTTP/1.1 200 OK\r\n\r\n"), 442 MockRead("HTTP/1.1 200 OK\r\n\r\n"),
443 MockRead("hello world"), 443 MockRead("hello world"),
444 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 444 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
445 MockRead(ASYNC, OK) 445 MockRead(ASYNC, OK)
446 }; 446 };
447 447
448 StaticSocketDataProvider data(http_reads, arraysize(http_reads), NULL, 0); 448 StaticSocketDataProvider data(http_reads, arraysize(http_reads), nullptr, 0);
449 socket_factory_.AddSocketDataProvider(&data); 449 socket_factory_.AddSocketDataProvider(&data);
450 SSLSocketDataProvider ssl(ASYNC, OK); 450 SSLSocketDataProvider ssl(ASYNC, OK);
451 socket_factory_.AddSSLSocketDataProvider(&ssl); 451 socket_factory_.AddSSLSocketDataProvider(&ssl);
452 452
453 CreateSession(); 453 CreateSession();
454 454
455 SendRequestAndExpectHttpResponse("hello world"); 455 SendRequestAndExpectHttpResponse("hello world");
456 } 456 }
457 457
458 TEST_P(QuicNetworkTransactionTest, UseAlternateProtocolForQuic) { 458 TEST_P(QuicNetworkTransactionTest, UseAlternateProtocolForQuic) {
459 MockRead http_reads[] = { 459 MockRead http_reads[] = {
460 MockRead("HTTP/1.1 200 OK\r\n"), 460 MockRead("HTTP/1.1 200 OK\r\n"),
461 MockRead(kQuicAlternateProtocolHttpHeader), 461 MockRead(kQuicAlternateProtocolHttpHeader),
462 MockRead("hello world"), 462 MockRead("hello world"),
463 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 463 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
464 MockRead(ASYNC, OK) 464 MockRead(ASYNC, OK)
465 }; 465 };
466 466
467 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), 467 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads),
468 NULL, 0); 468 nullptr, 0);
469 socket_factory_.AddSocketDataProvider(&http_data); 469 socket_factory_.AddSocketDataProvider(&http_data);
470 470
471 MockQuicData mock_quic_data; 471 MockQuicData mock_quic_data;
472 mock_quic_data.AddWrite( 472 mock_quic_data.AddWrite(
473 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, 473 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true,
474 GetRequestHeaders("GET", "http", "/"))); 474 GetRequestHeaders("GET", "http", "/")));
475 mock_quic_data.AddRead( 475 mock_quic_data.AddRead(
476 ConstructResponseHeadersPacket(1, kClientDataStreamId1, false, false, 476 ConstructResponseHeadersPacket(1, kClientDataStreamId1, false, false,
477 GetResponseHeaders("200 OK"))); 477 GetResponseHeaders("200 OK")));
478 mock_quic_data.AddRead( 478 mock_quic_data.AddRead(
(...skipping 16 matching lines...) Expand all
495 TEST_P(QuicNetworkTransactionTest, UseAlternateProtocolProbabilityForQuic) { 495 TEST_P(QuicNetworkTransactionTest, UseAlternateProtocolProbabilityForQuic) {
496 MockRead http_reads[] = { 496 MockRead http_reads[] = {
497 MockRead("HTTP/1.1 200 OK\r\n"), 497 MockRead("HTTP/1.1 200 OK\r\n"),
498 MockRead(kQuicAlternateProtocol50pctHttpHeader), 498 MockRead(kQuicAlternateProtocol50pctHttpHeader),
499 MockRead("hello world"), 499 MockRead("hello world"),
500 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 500 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
501 MockRead(ASYNC, OK) 501 MockRead(ASYNC, OK)
502 }; 502 };
503 503
504 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), 504 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads),
505 NULL, 0); 505 nullptr, 0);
506 socket_factory_.AddSocketDataProvider(&http_data); 506 socket_factory_.AddSocketDataProvider(&http_data);
507 507
508 MockQuicData mock_quic_data; 508 MockQuicData mock_quic_data;
509 mock_quic_data.AddWrite( 509 mock_quic_data.AddWrite(
510 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, 510 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true,
511 GetRequestHeaders("GET", "http", "/"))); 511 GetRequestHeaders("GET", "http", "/")));
512 mock_quic_data.AddRead( 512 mock_quic_data.AddRead(
513 ConstructResponseHeadersPacket(1, kClientDataStreamId1, false, false, 513 ConstructResponseHeadersPacket(1, kClientDataStreamId1, false, false,
514 GetResponseHeaders("200 OK"))); 514 GetResponseHeaders("200 OK")));
515 mock_quic_data.AddRead( 515 mock_quic_data.AddRead(
(...skipping 17 matching lines...) Expand all
533 TEST_P(QuicNetworkTransactionTest, DontUseAlternateProtocolProbabilityForQuic) { 533 TEST_P(QuicNetworkTransactionTest, DontUseAlternateProtocolProbabilityForQuic) {
534 MockRead http_reads[] = { 534 MockRead http_reads[] = {
535 MockRead("HTTP/1.1 200 OK\r\n"), 535 MockRead("HTTP/1.1 200 OK\r\n"),
536 MockRead(kQuicAlternateProtocol50pctHttpHeader), 536 MockRead(kQuicAlternateProtocol50pctHttpHeader),
537 MockRead("hello world"), 537 MockRead("hello world"),
538 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 538 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
539 MockRead(ASYNC, OK) 539 MockRead(ASYNC, OK)
540 }; 540 };
541 541
542 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), 542 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads),
543 NULL, 0); 543 nullptr, 0);
544 socket_factory_.AddSocketDataProvider(&http_data); 544 socket_factory_.AddSocketDataProvider(&http_data);
545 socket_factory_.AddSocketDataProvider(&http_data); 545 socket_factory_.AddSocketDataProvider(&http_data);
546 546
547 params_.alternate_protocol_probability_threshold = .75; 547 params_.alternate_protocol_probability_threshold = .75;
548 CreateSessionWithNextProtos(); 548 CreateSessionWithNextProtos();
549 549
550 SendRequestAndExpectHttpResponse("hello world"); 550 SendRequestAndExpectHttpResponse("hello world");
551 SendRequestAndExpectHttpResponse("hello world"); 551 SendRequestAndExpectHttpResponse("hello world");
552 } 552 }
553 553
554 TEST_P(QuicNetworkTransactionTest, 554 TEST_P(QuicNetworkTransactionTest,
555 DontUseAlternateProtocolWithBadProbabilityForQuic) { 555 DontUseAlternateProtocolWithBadProbabilityForQuic) {
556 MockRead http_reads[] = { 556 MockRead http_reads[] = {
557 MockRead("HTTP/1.1 200 OK\r\n"), 557 MockRead("HTTP/1.1 200 OK\r\n"),
558 MockRead("Alternate-Protocol: 443:quic,p=2\r\n\r\n"), 558 MockRead("Alternate-Protocol: 443:quic,p=2\r\n\r\n"),
559 MockRead("hello world"), 559 MockRead("hello world"),
560 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 560 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
561 MockRead(ASYNC, OK) 561 MockRead(ASYNC, OK)
562 }; 562 };
563 563
564 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), 564 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads),
565 NULL, 0); 565 nullptr, 0);
566 socket_factory_.AddSocketDataProvider(&http_data); 566 socket_factory_.AddSocketDataProvider(&http_data);
567 socket_factory_.AddSocketDataProvider(&http_data); 567 socket_factory_.AddSocketDataProvider(&http_data);
568 568
569 params_.alternate_protocol_probability_threshold = .75; 569 params_.alternate_protocol_probability_threshold = .75;
570 CreateSessionWithNextProtos(); 570 CreateSessionWithNextProtos();
571 571
572 SendRequestAndExpectHttpResponse("hello world"); 572 SendRequestAndExpectHttpResponse("hello world");
573 SendRequestAndExpectHttpResponse("hello world"); 573 SendRequestAndExpectHttpResponse("hello world");
574 } 574 }
575 575
576 TEST_P(QuicNetworkTransactionTest, UseAlternateProtocolForQuicForHttps) { 576 TEST_P(QuicNetworkTransactionTest, UseAlternateProtocolForQuicForHttps) {
577 params_.origin_to_force_quic_on = 577 params_.origin_to_force_quic_on =
578 HostPortPair::FromString("www.google.com:443"); 578 HostPortPair::FromString("www.google.com:443");
579 579
580 MockRead http_reads[] = { 580 MockRead http_reads[] = {
581 MockRead("HTTP/1.1 200 OK\r\n"), 581 MockRead("HTTP/1.1 200 OK\r\n"),
582 MockRead(kQuicAlternateProtocolHttpsHeader), 582 MockRead(kQuicAlternateProtocolHttpsHeader),
583 MockRead("hello world"), 583 MockRead("hello world"),
584 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 584 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
585 MockRead(ASYNC, OK) 585 MockRead(ASYNC, OK)
586 }; 586 };
587 587
588 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), 588 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads),
589 NULL, 0); 589 nullptr, 0);
590 socket_factory_.AddSocketDataProvider(&http_data); 590 socket_factory_.AddSocketDataProvider(&http_data);
591 591
592 MockQuicData mock_quic_data; 592 MockQuicData mock_quic_data;
593 mock_quic_data.AddWrite( 593 mock_quic_data.AddWrite(
594 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, 594 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true,
595 GetRequestHeaders("GET", "http", "/"))); 595 GetRequestHeaders("GET", "http", "/")));
596 mock_quic_data.AddRead( 596 mock_quic_data.AddRead(
597 ConstructResponseHeadersPacket(1, kClientDataStreamId1, false, false, 597 ConstructResponseHeadersPacket(1, kClientDataStreamId1, false, false,
598 GetResponseHeaders("200 OK"))); 598 GetResponseHeaders("200 OK")));
599 mock_quic_data.AddRead( 599 mock_quic_data.AddRead(
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
713 // without racing an HTTP connection, we need the host resolution to happen 713 // without racing an HTTP connection, we need the host resolution to happen
714 // synchronously. 714 // synchronously.
715 host_resolver_.set_synchronous_mode(true); 715 host_resolver_.set_synchronous_mode(true);
716 host_resolver_.rules()->AddIPLiteralRule("www.google.com", "192.168.0.1", ""); 716 host_resolver_.rules()->AddIPLiteralRule("www.google.com", "192.168.0.1", "");
717 HostResolver::RequestInfo info(HostPortPair("www.google.com", 80)); 717 HostResolver::RequestInfo info(HostPortPair("www.google.com", 80));
718 AddressList address; 718 AddressList address;
719 host_resolver_.Resolve(info, 719 host_resolver_.Resolve(info,
720 DEFAULT_PRIORITY, 720 DEFAULT_PRIORITY,
721 &address, 721 &address,
722 CompletionCallback(), 722 CompletionCallback(),
723 NULL, 723 nullptr,
724 net_log_.bound()); 724 net_log_.bound());
725 725
726 CreateSessionWithNextProtos(); 726 CreateSessionWithNextProtos();
727 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT); 727 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT);
728 SendRequestAndExpectQuicResponse("hello!"); 728 SendRequestAndExpectQuicResponse("hello!");
729 } 729 }
730 730
731 TEST_P(QuicNetworkTransactionTest, ZeroRTTWithProxy) { 731 TEST_P(QuicNetworkTransactionTest, ZeroRTTWithProxy) {
732 proxy_service_.reset( 732 proxy_service_.reset(
733 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); 733 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70"));
(...skipping 20 matching lines...) Expand all
754 // without racing an HTTP connection, we need the host resolution to happen 754 // without racing an HTTP connection, we need the host resolution to happen
755 // synchronously. 755 // synchronously.
756 host_resolver_.set_synchronous_mode(true); 756 host_resolver_.set_synchronous_mode(true);
757 host_resolver_.rules()->AddIPLiteralRule("www.google.com", "192.168.0.1", ""); 757 host_resolver_.rules()->AddIPLiteralRule("www.google.com", "192.168.0.1", "");
758 HostResolver::RequestInfo info(HostPortPair("www.google.com", 80)); 758 HostResolver::RequestInfo info(HostPortPair("www.google.com", 80));
759 AddressList address; 759 AddressList address;
760 host_resolver_.Resolve(info, 760 host_resolver_.Resolve(info,
761 DEFAULT_PRIORITY, 761 DEFAULT_PRIORITY,
762 &address, 762 &address,
763 CompletionCallback(), 763 CompletionCallback(),
764 NULL, 764 nullptr,
765 net_log_.bound()); 765 net_log_.bound());
766 766
767 CreateSessionWithNextProtos(); 767 CreateSessionWithNextProtos();
768 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT); 768 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT);
769 SendRequestAndExpectHttpResponse("hello world"); 769 SendRequestAndExpectHttpResponse("hello world");
770 } 770 }
771 771
772 TEST_P(QuicNetworkTransactionTest, ZeroRTTWithConfirmationRequired) { 772 TEST_P(QuicNetworkTransactionTest, ZeroRTTWithConfirmationRequired) {
773 MockQuicData mock_quic_data; 773 MockQuicData mock_quic_data;
774 mock_quic_data.AddWrite( 774 mock_quic_data.AddWrite(
(...skipping 15 matching lines...) Expand all
790 // In order for a new QUIC session to be established via alternate-protocol 790 // In order for a new QUIC session to be established via alternate-protocol
791 // without racing an HTTP connection, we need the host resolution to happen 791 // without racing an HTTP connection, we need the host resolution to happen
792 // synchronously. Of course, even though QUIC *could* perform a 0-RTT 792 // synchronously. Of course, even though QUIC *could* perform a 0-RTT
793 // connection to the the server, in this test we require confirmation 793 // connection to the the server, in this test we require confirmation
794 // before encrypting so the HTTP job will still start. 794 // before encrypting so the HTTP job will still start.
795 host_resolver_.set_synchronous_mode(true); 795 host_resolver_.set_synchronous_mode(true);
796 host_resolver_.rules()->AddIPLiteralRule("www.google.com", "192.168.0.1", ""); 796 host_resolver_.rules()->AddIPLiteralRule("www.google.com", "192.168.0.1", "");
797 HostResolver::RequestInfo info(HostPortPair("www.google.com", 80)); 797 HostResolver::RequestInfo info(HostPortPair("www.google.com", 80));
798 AddressList address; 798 AddressList address;
799 host_resolver_.Resolve(info, DEFAULT_PRIORITY, &address, 799 host_resolver_.Resolve(info, DEFAULT_PRIORITY, &address,
800 CompletionCallback(), NULL, net_log_.bound()); 800 CompletionCallback(), nullptr, net_log_.bound());
801 801
802 CreateSessionWithNextProtos(); 802 CreateSessionWithNextProtos();
803 session_->quic_stream_factory()->set_require_confirmation(true); 803 session_->quic_stream_factory()->set_require_confirmation(true);
804 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT); 804 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT);
805 805
806 scoped_ptr<HttpNetworkTransaction> trans( 806 scoped_ptr<HttpNetworkTransaction> trans(
807 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); 807 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get()));
808 TestCompletionCallback callback; 808 TestCompletionCallback callback;
809 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); 809 int rv = trans->Start(&request_, callback.callback(), net_log_.bound());
810 EXPECT_EQ(ERR_IO_PENDING, rv); 810 EXPECT_EQ(ERR_IO_PENDING, rv);
811 811
812 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent( 812 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent(
813 QuicSession::HANDSHAKE_CONFIRMED); 813 QuicSession::HANDSHAKE_CONFIRMED);
814 EXPECT_EQ(OK, callback.WaitForResult()); 814 EXPECT_EQ(OK, callback.WaitForResult());
815 } 815 }
816 816
817 TEST_P(QuicNetworkTransactionTest, BrokenAlternateProtocol) { 817 TEST_P(QuicNetworkTransactionTest, BrokenAlternateProtocol) {
818 // Alternate-protocol job 818 // Alternate-protocol job
819 scoped_ptr<QuicEncryptedPacket> close(ConstructConnectionClosePacket(1)); 819 scoped_ptr<QuicEncryptedPacket> close(ConstructConnectionClosePacket(1));
820 MockRead quic_reads[] = { 820 MockRead quic_reads[] = {
821 MockRead(ASYNC, close->data(), close->length()), 821 MockRead(ASYNC, close->data(), close->length()),
822 MockRead(ASYNC, OK), // EOF 822 MockRead(ASYNC, OK), // EOF
823 }; 823 };
824 StaticSocketDataProvider quic_data(quic_reads, arraysize(quic_reads), 824 StaticSocketDataProvider quic_data(quic_reads, arraysize(quic_reads),
825 NULL, 0); 825 nullptr, 0);
826 socket_factory_.AddSocketDataProvider(&quic_data); 826 socket_factory_.AddSocketDataProvider(&quic_data);
827 827
828 // Main job which will succeed even though the alternate job fails. 828 // Main job which will succeed even though the alternate job fails.
829 MockRead http_reads[] = { 829 MockRead http_reads[] = {
830 MockRead("HTTP/1.1 200 OK\r\n\r\n"), 830 MockRead("HTTP/1.1 200 OK\r\n\r\n"),
831 MockRead("hello from http"), 831 MockRead("hello from http"),
832 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 832 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
833 MockRead(ASYNC, OK) 833 MockRead(ASYNC, OK)
834 }; 834 };
835 835
836 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), 836 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads),
837 NULL, 0); 837 nullptr, 0);
838 socket_factory_.AddSocketDataProvider(&http_data); 838 socket_factory_.AddSocketDataProvider(&http_data);
839 839
840 CreateSessionWithNextProtos(); 840 CreateSessionWithNextProtos();
841 AddQuicAlternateProtocolMapping(MockCryptoClientStream::COLD_START); 841 AddQuicAlternateProtocolMapping(MockCryptoClientStream::COLD_START);
842 SendRequestAndExpectHttpResponse("hello from http"); 842 SendRequestAndExpectHttpResponse("hello from http");
843 ExpectBrokenAlternateProtocolMapping(); 843 ExpectBrokenAlternateProtocolMapping();
844 } 844 }
845 845
846 TEST_P(QuicNetworkTransactionTest, BrokenAlternateProtocolReadError) { 846 TEST_P(QuicNetworkTransactionTest, BrokenAlternateProtocolReadError) {
847 // Alternate-protocol job 847 // Alternate-protocol job
848 MockRead quic_reads[] = { 848 MockRead quic_reads[] = {
849 MockRead(ASYNC, ERR_SOCKET_NOT_CONNECTED), 849 MockRead(ASYNC, ERR_SOCKET_NOT_CONNECTED),
850 }; 850 };
851 StaticSocketDataProvider quic_data(quic_reads, arraysize(quic_reads), 851 StaticSocketDataProvider quic_data(quic_reads, arraysize(quic_reads),
852 NULL, 0); 852 nullptr, 0);
853 socket_factory_.AddSocketDataProvider(&quic_data); 853 socket_factory_.AddSocketDataProvider(&quic_data);
854 854
855 // Main job which will succeed even though the alternate job fails. 855 // Main job which will succeed even though the alternate job fails.
856 MockRead http_reads[] = { 856 MockRead http_reads[] = {
857 MockRead("HTTP/1.1 200 OK\r\n\r\n"), 857 MockRead("HTTP/1.1 200 OK\r\n\r\n"),
858 MockRead("hello from http"), 858 MockRead("hello from http"),
859 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 859 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
860 MockRead(ASYNC, OK) 860 MockRead(ASYNC, OK)
861 }; 861 };
862 862
863 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), 863 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads),
864 NULL, 0); 864 nullptr, 0);
865 socket_factory_.AddSocketDataProvider(&http_data); 865 socket_factory_.AddSocketDataProvider(&http_data);
866 866
867 CreateSessionWithNextProtos(); 867 CreateSessionWithNextProtos();
868 868
869 AddQuicAlternateProtocolMapping(MockCryptoClientStream::COLD_START); 869 AddQuicAlternateProtocolMapping(MockCryptoClientStream::COLD_START);
870 SendRequestAndExpectHttpResponse("hello from http"); 870 SendRequestAndExpectHttpResponse("hello from http");
871 ExpectBrokenAlternateProtocolMapping(); 871 ExpectBrokenAlternateProtocolMapping();
872 } 872 }
873 873
874 TEST_P(QuicNetworkTransactionTest, NoBrokenAlternateProtocolIfTcpFails) { 874 TEST_P(QuicNetworkTransactionTest, NoBrokenAlternateProtocolIfTcpFails) {
875 // Alternate-protocol job will fail when the session attempts to read. 875 // Alternate-protocol job will fail when the session attempts to read.
876 MockRead quic_reads[] = { 876 MockRead quic_reads[] = {
877 MockRead(ASYNC, ERR_SOCKET_NOT_CONNECTED), 877 MockRead(ASYNC, ERR_SOCKET_NOT_CONNECTED),
878 }; 878 };
879 StaticSocketDataProvider quic_data(quic_reads, arraysize(quic_reads), 879 StaticSocketDataProvider quic_data(quic_reads, arraysize(quic_reads),
880 NULL, 0); 880 nullptr, 0);
881 socket_factory_.AddSocketDataProvider(&quic_data); 881 socket_factory_.AddSocketDataProvider(&quic_data);
882 882
883 // Main job will also fail. 883 // Main job will also fail.
884 MockRead http_reads[] = { 884 MockRead http_reads[] = {
885 MockRead(ASYNC, ERR_SOCKET_NOT_CONNECTED), 885 MockRead(ASYNC, ERR_SOCKET_NOT_CONNECTED),
886 }; 886 };
887 887
888 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), 888 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads),
889 NULL, 0); 889 nullptr, 0);
890 http_data.set_connect_data(MockConnect(ASYNC, ERR_SOCKET_NOT_CONNECTED)); 890 http_data.set_connect_data(MockConnect(ASYNC, ERR_SOCKET_NOT_CONNECTED));
891 socket_factory_.AddSocketDataProvider(&http_data); 891 socket_factory_.AddSocketDataProvider(&http_data);
892 892
893 CreateSessionWithNextProtos(); 893 CreateSessionWithNextProtos();
894 894
895 AddQuicAlternateProtocolMapping(MockCryptoClientStream::COLD_START); 895 AddQuicAlternateProtocolMapping(MockCryptoClientStream::COLD_START);
896 scoped_ptr<HttpNetworkTransaction> trans( 896 scoped_ptr<HttpNetworkTransaction> trans(
897 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); 897 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get()));
898 TestCompletionCallback callback; 898 TestCompletionCallback callback;
899 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); 899 int rv = trans->Start(&request_, callback.callback(), net_log_.bound());
900 EXPECT_EQ(ERR_IO_PENDING, rv); 900 EXPECT_EQ(ERR_IO_PENDING, rv);
901 EXPECT_EQ(ERR_SOCKET_NOT_CONNECTED, callback.WaitForResult()); 901 EXPECT_EQ(ERR_SOCKET_NOT_CONNECTED, callback.WaitForResult());
902 ExpectQuicAlternateProtocolMapping(); 902 ExpectQuicAlternateProtocolMapping();
903 } 903 }
904 904
905 TEST_P(QuicNetworkTransactionTest, FailedZeroRttBrokenAlternateProtocol) { 905 TEST_P(QuicNetworkTransactionTest, FailedZeroRttBrokenAlternateProtocol) {
906 // Alternate-protocol job 906 // Alternate-protocol job
907 MockRead quic_reads[] = { 907 MockRead quic_reads[] = {
908 MockRead(ASYNC, ERR_SOCKET_NOT_CONNECTED), 908 MockRead(ASYNC, ERR_SOCKET_NOT_CONNECTED),
909 }; 909 };
910 StaticSocketDataProvider quic_data(quic_reads, arraysize(quic_reads), 910 StaticSocketDataProvider quic_data(quic_reads, arraysize(quic_reads),
911 NULL, 0); 911 nullptr, 0);
912 socket_factory_.AddSocketDataProvider(&quic_data); 912 socket_factory_.AddSocketDataProvider(&quic_data);
913 913
914 AddHangingNonAlternateProtocolSocketData(); 914 AddHangingNonAlternateProtocolSocketData();
915 915
916 // Second Alternate-protocol job which will race with the TCP job. 916 // Second Alternate-protocol job which will race with the TCP job.
917 StaticSocketDataProvider quic_data2(quic_reads, arraysize(quic_reads), 917 StaticSocketDataProvider quic_data2(quic_reads, arraysize(quic_reads),
918 NULL, 0); 918 nullptr, 0);
919 socket_factory_.AddSocketDataProvider(&quic_data2); 919 socket_factory_.AddSocketDataProvider(&quic_data2);
920 920
921 // Final job that will proceed when the QUIC job fails. 921 // Final job that will proceed when the QUIC job fails.
922 MockRead http_reads[] = { 922 MockRead http_reads[] = {
923 MockRead("HTTP/1.1 200 OK\r\n\r\n"), 923 MockRead("HTTP/1.1 200 OK\r\n\r\n"),
924 MockRead("hello from http"), 924 MockRead("hello from http"),
925 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 925 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
926 MockRead(ASYNC, OK) 926 MockRead(ASYNC, OK)
927 }; 927 };
928 928
929 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), 929 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads),
930 NULL, 0); 930 nullptr, 0);
931 socket_factory_.AddSocketDataProvider(&http_data); 931 socket_factory_.AddSocketDataProvider(&http_data);
932 932
933 CreateSessionWithNextProtos(); 933 CreateSessionWithNextProtos();
934 934
935 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT); 935 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT);
936 936
937 SendRequestAndExpectHttpResponse("hello from http"); 937 SendRequestAndExpectHttpResponse("hello from http");
938 938
939 ExpectBrokenAlternateProtocolMapping(); 939 ExpectBrokenAlternateProtocolMapping();
940 940
941 EXPECT_TRUE(quic_data.at_read_eof()); 941 EXPECT_TRUE(quic_data.at_read_eof());
942 EXPECT_TRUE(quic_data.at_write_eof()); 942 EXPECT_TRUE(quic_data.at_write_eof());
943 } 943 }
944 944
945 TEST_P(QuicNetworkTransactionTest, DISABLED_HangingZeroRttFallback) { 945 TEST_P(QuicNetworkTransactionTest, DISABLED_HangingZeroRttFallback) {
946 // Alternate-protocol job 946 // Alternate-protocol job
947 MockRead quic_reads[] = { 947 MockRead quic_reads[] = {
948 MockRead(ASYNC, ERR_IO_PENDING), 948 MockRead(ASYNC, ERR_IO_PENDING),
949 }; 949 };
950 StaticSocketDataProvider quic_data(quic_reads, arraysize(quic_reads), 950 StaticSocketDataProvider quic_data(quic_reads, arraysize(quic_reads),
951 NULL, 0); 951 nullptr, 0);
952 socket_factory_.AddSocketDataProvider(&quic_data); 952 socket_factory_.AddSocketDataProvider(&quic_data);
953 953
954 // Main job that will proceed when the QUIC job fails. 954 // Main job that will proceed when the QUIC job fails.
955 MockRead http_reads[] = { 955 MockRead http_reads[] = {
956 MockRead("HTTP/1.1 200 OK\r\n\r\n"), 956 MockRead("HTTP/1.1 200 OK\r\n\r\n"),
957 MockRead("hello from http"), 957 MockRead("hello from http"),
958 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 958 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
959 MockRead(ASYNC, OK) 959 MockRead(ASYNC, OK)
960 }; 960 };
961 961
962 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), 962 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads),
963 NULL, 0); 963 nullptr, 0);
964 socket_factory_.AddSocketDataProvider(&http_data); 964 socket_factory_.AddSocketDataProvider(&http_data);
965 965
966 CreateSessionWithNextProtos(); 966 CreateSessionWithNextProtos();
967 967
968 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT); 968 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT);
969 969
970 SendRequestAndExpectHttpResponse("hello from http"); 970 SendRequestAndExpectHttpResponse("hello from http");
971 } 971 }
972 972
973 TEST_P(QuicNetworkTransactionTest, BrokenAlternateProtocolOnConnectFailure) { 973 TEST_P(QuicNetworkTransactionTest, BrokenAlternateProtocolOnConnectFailure) {
974 // Alternate-protocol job will fail before creating a QUIC session. 974 // Alternate-protocol job will fail before creating a QUIC session.
975 StaticSocketDataProvider quic_data(NULL, 0, NULL, 0); 975 StaticSocketDataProvider quic_data(nullptr, 0, nullptr, 0);
976 quic_data.set_connect_data(MockConnect(SYNCHRONOUS, 976 quic_data.set_connect_data(MockConnect(SYNCHRONOUS,
977 ERR_INTERNET_DISCONNECTED)); 977 ERR_INTERNET_DISCONNECTED));
978 socket_factory_.AddSocketDataProvider(&quic_data); 978 socket_factory_.AddSocketDataProvider(&quic_data);
979 979
980 // Main job which will succeed even though the alternate job fails. 980 // Main job which will succeed even though the alternate job fails.
981 MockRead http_reads[] = { 981 MockRead http_reads[] = {
982 MockRead("HTTP/1.1 200 OK\r\n\r\n"), 982 MockRead("HTTP/1.1 200 OK\r\n\r\n"),
983 MockRead("hello from http"), 983 MockRead("hello from http"),
984 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 984 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
985 MockRead(ASYNC, OK) 985 MockRead(ASYNC, OK)
986 }; 986 };
987 987
988 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), 988 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads),
989 NULL, 0); 989 nullptr, 0);
990 socket_factory_.AddSocketDataProvider(&http_data); 990 socket_factory_.AddSocketDataProvider(&http_data);
991 991
992 CreateSessionWithNextProtos(); 992 CreateSessionWithNextProtos();
993 AddQuicAlternateProtocolMapping(MockCryptoClientStream::COLD_START); 993 AddQuicAlternateProtocolMapping(MockCryptoClientStream::COLD_START);
994 SendRequestAndExpectHttpResponse("hello from http"); 994 SendRequestAndExpectHttpResponse("hello from http");
995 995
996 ExpectBrokenAlternateProtocolMapping(); 996 ExpectBrokenAlternateProtocolMapping();
997 } 997 }
998 998
999 TEST_P(QuicNetworkTransactionTest, ConnectionCloseDuringConnect) { 999 TEST_P(QuicNetworkTransactionTest, ConnectionCloseDuringConnect) {
1000 MockQuicData mock_quic_data; 1000 MockQuicData mock_quic_data;
1001 mock_quic_data.AddRead(ConstructConnectionClosePacket(1)); 1001 mock_quic_data.AddRead(ConstructConnectionClosePacket(1));
1002 mock_quic_data.AddWrite( 1002 mock_quic_data.AddWrite(
1003 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, 1003 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true,
1004 GetRequestHeaders("GET", "http", "/"))); 1004 GetRequestHeaders("GET", "http", "/")));
1005 mock_quic_data.AddWrite(ConstructAckPacket(2, 1)); 1005 mock_quic_data.AddWrite(ConstructAckPacket(2, 1));
1006 mock_quic_data.AddDelayedSocketDataToFactory(&socket_factory_, 0); 1006 mock_quic_data.AddDelayedSocketDataToFactory(&socket_factory_, 0);
1007 1007
1008 // When the QUIC connection fails, we will try the request again over HTTP. 1008 // When the QUIC connection fails, we will try the request again over HTTP.
1009 MockRead http_reads[] = { 1009 MockRead http_reads[] = {
1010 MockRead("HTTP/1.1 200 OK\r\n"), 1010 MockRead("HTTP/1.1 200 OK\r\n"),
1011 MockRead(kQuicAlternateProtocolHttpHeader), 1011 MockRead(kQuicAlternateProtocolHttpHeader),
1012 MockRead("hello world"), 1012 MockRead("hello world"),
1013 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 1013 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
1014 MockRead(ASYNC, OK) 1014 MockRead(ASYNC, OK)
1015 }; 1015 };
1016 1016
1017 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), 1017 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads),
1018 NULL, 0); 1018 nullptr, 0);
1019 socket_factory_.AddSocketDataProvider(&http_data); 1019 socket_factory_.AddSocketDataProvider(&http_data);
1020 1020
1021 // In order for a new QUIC session to be established via alternate-protocol 1021 // In order for a new QUIC session to be established via alternate-protocol
1022 // without racing an HTTP connection, we need the host resolution to happen 1022 // without racing an HTTP connection, we need the host resolution to happen
1023 // synchronously. 1023 // synchronously.
1024 host_resolver_.set_synchronous_mode(true); 1024 host_resolver_.set_synchronous_mode(true);
1025 host_resolver_.rules()->AddIPLiteralRule("www.google.com", "192.168.0.1", ""); 1025 host_resolver_.rules()->AddIPLiteralRule("www.google.com", "192.168.0.1", "");
1026 HostResolver::RequestInfo info(HostPortPair("www.google.com", 80)); 1026 HostResolver::RequestInfo info(HostPortPair("www.google.com", 80));
1027 AddressList address; 1027 AddressList address;
1028 host_resolver_.Resolve(info, 1028 host_resolver_.Resolve(info,
1029 DEFAULT_PRIORITY, 1029 DEFAULT_PRIORITY,
1030 &address, 1030 &address,
1031 CompletionCallback(), 1031 CompletionCallback(),
1032 NULL, 1032 nullptr,
1033 net_log_.bound()); 1033 net_log_.bound());
1034 1034
1035 CreateSessionWithNextProtos(); 1035 CreateSessionWithNextProtos();
1036 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT); 1036 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT);
1037 SendRequestAndExpectHttpResponse("hello world"); 1037 SendRequestAndExpectHttpResponse("hello world");
1038 } 1038 }
1039 1039
1040 } // namespace test 1040 } // namespace test
1041 } // namespace net 1041 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_in_memory_cache.cc ('k') | net/quic/quic_packet_creator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698