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

Side by Side Diff: net/http/bidirectional_stream_unittest.cc

Issue 1852423004: Implement SpdySerializedFrame move semantics. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 | « no previous file | net/http/http_network_transaction_unittest.cc » ('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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/bidirectional_stream.h" 5 #include "net/http/bidirectional_stream.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after
349 scoped_ptr<HttpNetworkSession> session(new HttpNetworkSession(params)); 349 scoped_ptr<HttpNetworkSession> session(new HttpNetworkSession(params));
350 delegate.SetRunUntilCompletion(true); 350 delegate.SetRunUntilCompletion(true);
351 delegate.Start(std::move(request_info), session.get()); 351 delegate.Start(std::move(request_info), session.get());
352 352
353 EXPECT_EQ(ERR_DISALLOWED_URL_SCHEME, delegate.error()); 353 EXPECT_EQ(ERR_DISALLOWED_URL_SCHEME, delegate.error());
354 } 354 }
355 355
356 // Simulates user calling ReadData after END_STREAM has been received in 356 // Simulates user calling ReadData after END_STREAM has been received in
357 // BidirectionalStreamSpdyImpl. 357 // BidirectionalStreamSpdyImpl.
358 TEST_F(BidirectionalStreamTest, TestReadDataAfterClose) { 358 TEST_F(BidirectionalStreamTest, TestReadDataAfterClose) {
359 scoped_ptr<SpdyFrame> req( 359 scoped_ptr<SpdySerializedFrame> req(
360 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); 360 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST));
361 // Empty DATA frame with an END_STREAM flag. 361 // Empty DATA frame with an END_STREAM flag.
362 scoped_ptr<SpdyFrame> end_stream( 362 scoped_ptr<SpdySerializedFrame> end_stream(
363 spdy_util_.ConstructSpdyBodyFrame(1, nullptr, 0, true)); 363 spdy_util_.ConstructSpdyBodyFrame(1, nullptr, 0, true));
364 MockWrite writes[] = { 364 MockWrite writes[] = {
365 CreateMockWrite(*req.get(), 0), 365 CreateMockWrite(*req.get(), 0),
366 }; 366 };
367 367
368 const char* const kExtraResponseHeaders[] = {"header-name", "header-value"}; 368 const char* const kExtraResponseHeaders[] = {"header-name", "header-value"};
369 369
370 scoped_ptr<SpdyFrame> resp( 370 scoped_ptr<SpdySerializedFrame> resp(
371 spdy_util_.ConstructSpdyGetSynReply(kExtraResponseHeaders, 1, 1)); 371 spdy_util_.ConstructSpdyGetSynReply(kExtraResponseHeaders, 1, 1));
372 372
373 scoped_ptr<SpdyFrame> body_frame(spdy_util_.ConstructSpdyBodyFrame(1, false)); 373 scoped_ptr<SpdySerializedFrame> body_frame(
374 spdy_util_.ConstructSpdyBodyFrame(1, false));
374 // Last body frame has END_STREAM flag set. 375 // Last body frame has END_STREAM flag set.
375 scoped_ptr<SpdyFrame> last_body_frame( 376 scoped_ptr<SpdySerializedFrame> last_body_frame(
376 spdy_util_.ConstructSpdyBodyFrame(1, true)); 377 spdy_util_.ConstructSpdyBodyFrame(1, true));
377 378
378 MockRead reads[] = { 379 MockRead reads[] = {
379 CreateMockRead(*resp, 1), 380 CreateMockRead(*resp, 1),
380 MockRead(ASYNC, ERR_IO_PENDING, 2), // Force a pause. 381 MockRead(ASYNC, ERR_IO_PENDING, 2), // Force a pause.
381 CreateMockRead(*body_frame, 3), 382 CreateMockRead(*body_frame, 3),
382 MockRead(ASYNC, ERR_IO_PENDING, 4), // Force a pause. 383 MockRead(ASYNC, ERR_IO_PENDING, 4), // Force a pause.
383 CreateMockRead(*body_frame, 5), 384 CreateMockRead(*body_frame, 5),
384 CreateMockRead(*last_body_frame, 6), 385 CreateMockRead(*last_body_frame, 6),
385 MockRead(SYNCHRONOUS, 0, 7), 386 MockRead(SYNCHRONOUS, 0, 7),
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol()); 440 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol());
440 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), 441 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)),
441 delegate->GetTotalSentBytes()); 442 delegate->GetTotalSentBytes());
442 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), 443 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)),
443 delegate->GetTotalReceivedBytes()); 444 delegate->GetTotalReceivedBytes());
444 } 445 }
445 446
446 TEST_F(BidirectionalStreamTest, TestInterleaveReadDataAndSendData) { 447 TEST_F(BidirectionalStreamTest, TestInterleaveReadDataAndSendData) {
447 BufferedSpdyFramer framer(spdy_util_.spdy_version()); 448 BufferedSpdyFramer framer(spdy_util_.spdy_version());
448 449
449 scoped_ptr<SpdyFrame> req(spdy_util_.ConstructSpdyPost( 450 scoped_ptr<SpdySerializedFrame> req(spdy_util_.ConstructSpdyPost(
450 "https://www.example.org", 1, kBodyDataSize * 3, LOWEST, nullptr, 0)); 451 "https://www.example.org", 1, kBodyDataSize * 3, LOWEST, nullptr, 0));
451 scoped_ptr<SpdyFrame> data_frame1( 452 scoped_ptr<SpdySerializedFrame> data_frame1(
452 framer.CreateDataFrame(1, kBodyData, kBodyDataSize, DATA_FLAG_NONE)); 453 framer.CreateDataFrame(1, kBodyData, kBodyDataSize, DATA_FLAG_NONE));
453 scoped_ptr<SpdyFrame> data_frame2( 454 scoped_ptr<SpdySerializedFrame> data_frame2(
454 framer.CreateDataFrame(1, kBodyData, kBodyDataSize, DATA_FLAG_NONE)); 455 framer.CreateDataFrame(1, kBodyData, kBodyDataSize, DATA_FLAG_NONE));
455 scoped_ptr<SpdyFrame> data_frame3( 456 scoped_ptr<SpdySerializedFrame> data_frame3(
456 framer.CreateDataFrame(1, kBodyData, kBodyDataSize, DATA_FLAG_FIN)); 457 framer.CreateDataFrame(1, kBodyData, kBodyDataSize, DATA_FLAG_FIN));
457 MockWrite writes[] = { 458 MockWrite writes[] = {
458 CreateMockWrite(*req, 0), CreateMockWrite(*data_frame1, 3), 459 CreateMockWrite(*req, 0), CreateMockWrite(*data_frame1, 3),
459 CreateMockWrite(*data_frame2, 6), CreateMockWrite(*data_frame3, 9), 460 CreateMockWrite(*data_frame2, 6), CreateMockWrite(*data_frame3, 9),
460 }; 461 };
461 462
462 scoped_ptr<SpdyFrame> resp( 463 scoped_ptr<SpdySerializedFrame> resp(
463 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); 464 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1));
464 scoped_ptr<SpdyFrame> response_body_frame1( 465 scoped_ptr<SpdySerializedFrame> response_body_frame1(
465 spdy_util_.ConstructSpdyBodyFrame(1, false)); 466 spdy_util_.ConstructSpdyBodyFrame(1, false));
466 scoped_ptr<SpdyFrame> response_body_frame2( 467 scoped_ptr<SpdySerializedFrame> response_body_frame2(
467 spdy_util_.ConstructSpdyBodyFrame(1, true)); 468 spdy_util_.ConstructSpdyBodyFrame(1, true));
468 469
469 MockRead reads[] = { 470 MockRead reads[] = {
470 CreateMockRead(*resp, 1), 471 CreateMockRead(*resp, 1),
471 MockRead(ASYNC, ERR_IO_PENDING, 2), // Force a pause. 472 MockRead(ASYNC, ERR_IO_PENDING, 2), // Force a pause.
472 CreateMockRead(*response_body_frame1, 4), 473 CreateMockRead(*response_body_frame1, 4),
473 MockRead(ASYNC, ERR_IO_PENDING, 5), // Force a pause. 474 MockRead(ASYNC, ERR_IO_PENDING, 5), // Force a pause.
474 CreateMockRead(*response_body_frame2, 7), 475 CreateMockRead(*response_body_frame2, 7),
475 MockRead(ASYNC, ERR_IO_PENDING, 8), // Force a pause. 476 MockRead(ASYNC, ERR_IO_PENDING, 8), // Force a pause.
476 MockRead(ASYNC, 0, 10), 477 MockRead(ASYNC, 0, 10),
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
546 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol()); 547 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol());
547 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), 548 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)),
548 delegate->GetTotalSentBytes()); 549 delegate->GetTotalSentBytes());
549 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), 550 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)),
550 delegate->GetTotalReceivedBytes()); 551 delegate->GetTotalReceivedBytes());
551 } 552 }
552 553
553 // Tests that BidirectionalStreamSpdyImpl::OnClose will complete any remaining 554 // Tests that BidirectionalStreamSpdyImpl::OnClose will complete any remaining
554 // read even if the read queue is empty. 555 // read even if the read queue is empty.
555 TEST_F(BidirectionalStreamTest, TestCompleteAsyncRead) { 556 TEST_F(BidirectionalStreamTest, TestCompleteAsyncRead) {
556 scoped_ptr<SpdyFrame> req( 557 scoped_ptr<SpdySerializedFrame> req(
557 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); 558 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST));
558 // Empty DATA frame with an END_STREAM flag. 559 // Empty DATA frame with an END_STREAM flag.
559 scoped_ptr<SpdyFrame> end_stream( 560 scoped_ptr<SpdySerializedFrame> end_stream(
560 spdy_util_.ConstructSpdyBodyFrame(1, nullptr, 0, true)); 561 spdy_util_.ConstructSpdyBodyFrame(1, nullptr, 0, true));
561 562
562 MockWrite writes[] = {CreateMockWrite(*req.get(), 0)}; 563 MockWrite writes[] = {CreateMockWrite(*req.get(), 0)};
563 564
564 scoped_ptr<SpdyFrame> resp( 565 scoped_ptr<SpdySerializedFrame> resp(
565 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); 566 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1));
566 567
567 scoped_ptr<SpdyFrame> response_body_frame( 568 scoped_ptr<SpdySerializedFrame> response_body_frame(
568 spdy_util_.ConstructSpdyBodyFrame(1, nullptr, 0, true)); 569 spdy_util_.ConstructSpdyBodyFrame(1, nullptr, 0, true));
569 570
570 MockRead reads[] = { 571 MockRead reads[] = {
571 CreateMockRead(*resp, 1), 572 CreateMockRead(*resp, 1),
572 MockRead(ASYNC, ERR_IO_PENDING, 2), // Force a pause. 573 MockRead(ASYNC, ERR_IO_PENDING, 2), // Force a pause.
573 CreateMockRead(*response_body_frame, 3), MockRead(SYNCHRONOUS, 0, 4), 574 CreateMockRead(*response_body_frame, 3), MockRead(SYNCHRONOUS, 0, 4),
574 }; 575 };
575 576
576 HostPortPair host_port_pair("www.example.org", 443); 577 HostPortPair host_port_pair("www.example.org", 443);
577 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), 578 SpdySessionKey key(host_port_pair, ProxyServer::Direct(),
(...skipping 30 matching lines...) Expand all
608 EXPECT_EQ(0u, delegate->data_received().size()); 609 EXPECT_EQ(0u, delegate->data_received().size());
609 EXPECT_EQ(0, delegate->on_data_sent_count()); 610 EXPECT_EQ(0, delegate->on_data_sent_count());
610 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol()); 611 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol());
611 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), 612 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)),
612 delegate->GetTotalSentBytes()); 613 delegate->GetTotalSentBytes());
613 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), 614 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)),
614 delegate->GetTotalReceivedBytes()); 615 delegate->GetTotalReceivedBytes());
615 } 616 }
616 617
617 TEST_F(BidirectionalStreamTest, TestBuffering) { 618 TEST_F(BidirectionalStreamTest, TestBuffering) {
618 scoped_ptr<SpdyFrame> req( 619 scoped_ptr<SpdySerializedFrame> req(
619 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); 620 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST));
620 // Empty DATA frame with an END_STREAM flag. 621 // Empty DATA frame with an END_STREAM flag.
621 scoped_ptr<SpdyFrame> end_stream( 622 scoped_ptr<SpdySerializedFrame> end_stream(
622 spdy_util_.ConstructSpdyBodyFrame(1, nullptr, 0, true)); 623 spdy_util_.ConstructSpdyBodyFrame(1, nullptr, 0, true));
623 624
624 MockWrite writes[] = {CreateMockWrite(*req.get(), 0)}; 625 MockWrite writes[] = {CreateMockWrite(*req.get(), 0)};
625 626
626 const char* const kExtraResponseHeaders[] = {"header-name", "header-value"}; 627 const char* const kExtraResponseHeaders[] = {"header-name", "header-value"};
627 628
628 scoped_ptr<SpdyFrame> resp( 629 scoped_ptr<SpdySerializedFrame> resp(
629 spdy_util_.ConstructSpdyGetSynReply(kExtraResponseHeaders, 1, 1)); 630 spdy_util_.ConstructSpdyGetSynReply(kExtraResponseHeaders, 1, 1));
630 631
631 scoped_ptr<SpdyFrame> body_frame(spdy_util_.ConstructSpdyBodyFrame(1, false)); 632 scoped_ptr<SpdySerializedFrame> body_frame(
633 spdy_util_.ConstructSpdyBodyFrame(1, false));
632 // Last body frame has END_STREAM flag set. 634 // Last body frame has END_STREAM flag set.
633 scoped_ptr<SpdyFrame> last_body_frame( 635 scoped_ptr<SpdySerializedFrame> last_body_frame(
634 spdy_util_.ConstructSpdyBodyFrame(1, true)); 636 spdy_util_.ConstructSpdyBodyFrame(1, true));
635 637
636 MockRead reads[] = { 638 MockRead reads[] = {
637 CreateMockRead(*resp, 1), 639 CreateMockRead(*resp, 1),
638 CreateMockRead(*body_frame, 2), 640 CreateMockRead(*body_frame, 2),
639 CreateMockRead(*body_frame, 3), 641 CreateMockRead(*body_frame, 3),
640 MockRead(ASYNC, ERR_IO_PENDING, 4), // Force a pause. 642 MockRead(ASYNC, ERR_IO_PENDING, 4), // Force a pause.
641 CreateMockRead(*last_body_frame, 5), 643 CreateMockRead(*last_body_frame, 5),
642 MockRead(SYNCHRONOUS, 0, 6), 644 MockRead(SYNCHRONOUS, 0, 6),
643 }; 645 };
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
689 EXPECT_EQ("header-value", response_headers.find("header-name")->second); 691 EXPECT_EQ("header-value", response_headers.find("header-name")->second);
690 EXPECT_EQ(0, delegate->on_data_sent_count()); 692 EXPECT_EQ(0, delegate->on_data_sent_count());
691 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol()); 693 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol());
692 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), 694 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)),
693 delegate->GetTotalSentBytes()); 695 delegate->GetTotalSentBytes());
694 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), 696 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)),
695 delegate->GetTotalReceivedBytes()); 697 delegate->GetTotalReceivedBytes());
696 } 698 }
697 699
698 TEST_F(BidirectionalStreamTest, TestBufferingWithTrailers) { 700 TEST_F(BidirectionalStreamTest, TestBufferingWithTrailers) {
699 scoped_ptr<SpdyFrame> req( 701 scoped_ptr<SpdySerializedFrame> req(
700 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); 702 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST));
701 // Empty DATA frame with an END_STREAM flag. 703 // Empty DATA frame with an END_STREAM flag.
702 scoped_ptr<SpdyFrame> end_stream( 704 scoped_ptr<SpdySerializedFrame> end_stream(
703 spdy_util_.ConstructSpdyBodyFrame(1, nullptr, 0, true)); 705 spdy_util_.ConstructSpdyBodyFrame(1, nullptr, 0, true));
704 706
705 MockWrite writes[] = { 707 MockWrite writes[] = {
706 CreateMockWrite(*req.get(), 0), 708 CreateMockWrite(*req.get(), 0),
707 }; 709 };
708 710
709 const char* const kExtraResponseHeaders[] = {"header-name", "header-value"}; 711 const char* const kExtraResponseHeaders[] = {"header-name", "header-value"};
710 712
711 scoped_ptr<SpdyFrame> resp( 713 scoped_ptr<SpdySerializedFrame> resp(
712 spdy_util_.ConstructSpdyGetSynReply(kExtraResponseHeaders, 1, 1)); 714 spdy_util_.ConstructSpdyGetSynReply(kExtraResponseHeaders, 1, 1));
713 715
714 scoped_ptr<SpdyFrame> body_frame(spdy_util_.ConstructSpdyBodyFrame(1, false)); 716 scoped_ptr<SpdySerializedFrame> body_frame(
717 spdy_util_.ConstructSpdyBodyFrame(1, false));
715 718
716 SpdyHeaderBlock late_headers; 719 SpdyHeaderBlock late_headers;
717 late_headers["foo"] = "bar"; 720 late_headers["foo"] = "bar";
718 scoped_ptr<SpdyFrame> trailers( 721 scoped_ptr<SpdySerializedFrame> trailers(
719 spdy_util_.ConstructSpdyResponseHeaders(1, late_headers, true)); 722 spdy_util_.ConstructSpdyResponseHeaders(1, late_headers, true));
720 723
721 MockRead reads[] = { 724 MockRead reads[] = {
722 CreateMockRead(*resp, 1), CreateMockRead(*body_frame, 2), 725 CreateMockRead(*resp, 1), CreateMockRead(*body_frame, 2),
723 CreateMockRead(*body_frame, 3), CreateMockRead(*body_frame, 4), 726 CreateMockRead(*body_frame, 3), CreateMockRead(*body_frame, 4),
724 MockRead(ASYNC, ERR_IO_PENDING, 5), // Force a pause. 727 MockRead(ASYNC, ERR_IO_PENDING, 5), // Force a pause.
725 CreateMockRead(*trailers, 6), MockRead(SYNCHRONOUS, 0, 7), 728 CreateMockRead(*trailers, 6), MockRead(SYNCHRONOUS, 0, 7),
726 }; 729 };
727 730
728 HostPortPair host_port_pair("www.example.org", 443); 731 HostPortPair host_port_pair("www.example.org", 443);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
768 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol()); 771 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol());
769 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), 772 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)),
770 delegate->GetTotalSentBytes()); 773 delegate->GetTotalSentBytes());
771 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), 774 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)),
772 delegate->GetTotalReceivedBytes()); 775 delegate->GetTotalReceivedBytes());
773 } 776 }
774 777
775 TEST_F(BidirectionalStreamTest, CancelStreamAfterSendData) { 778 TEST_F(BidirectionalStreamTest, CancelStreamAfterSendData) {
776 BufferedSpdyFramer framer(spdy_util_.spdy_version()); 779 BufferedSpdyFramer framer(spdy_util_.spdy_version());
777 780
778 scoped_ptr<SpdyFrame> req(spdy_util_.ConstructSpdyPost( 781 scoped_ptr<SpdySerializedFrame> req(spdy_util_.ConstructSpdyPost(
779 "https://www.example.org", 1, kBodyDataSize * 3, LOWEST, nullptr, 0)); 782 "https://www.example.org", 1, kBodyDataSize * 3, LOWEST, nullptr, 0));
780 scoped_ptr<SpdyFrame> data_frame( 783 scoped_ptr<SpdySerializedFrame> data_frame(
781 framer.CreateDataFrame(1, kBodyData, kBodyDataSize, DATA_FLAG_NONE)); 784 framer.CreateDataFrame(1, kBodyData, kBodyDataSize, DATA_FLAG_NONE));
782 scoped_ptr<SpdyFrame> rst( 785 scoped_ptr<SpdySerializedFrame> rst(
783 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 786 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL));
784 787
785 MockWrite writes[] = { 788 MockWrite writes[] = {
786 CreateMockWrite(*req, 0), CreateMockWrite(*data_frame, 3), 789 CreateMockWrite(*req, 0), CreateMockWrite(*data_frame, 3),
787 CreateMockWrite(*rst, 5), 790 CreateMockWrite(*rst, 5),
788 }; 791 };
789 792
790 scoped_ptr<SpdyFrame> resp( 793 scoped_ptr<SpdySerializedFrame> resp(
791 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); 794 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1));
792 scoped_ptr<SpdyFrame> response_body_frame( 795 scoped_ptr<SpdySerializedFrame> response_body_frame(
793 spdy_util_.ConstructSpdyBodyFrame(1, false)); 796 spdy_util_.ConstructSpdyBodyFrame(1, false));
794 797
795 MockRead reads[] = { 798 MockRead reads[] = {
796 CreateMockRead(*resp, 1), 799 CreateMockRead(*resp, 1),
797 MockRead(ASYNC, ERR_IO_PENDING, 2), // Force a pause. 800 MockRead(ASYNC, ERR_IO_PENDING, 2), // Force a pause.
798 MockRead(ASYNC, ERR_IO_PENDING, 4), // Force a pause. 801 MockRead(ASYNC, ERR_IO_PENDING, 4), // Force a pause.
799 MockRead(ASYNC, 0, 6), 802 MockRead(ASYNC, 0, 6),
800 }; 803 };
801 804
802 HostPortPair host_port_pair("www.example.org", 443); 805 HostPortPair host_port_pair("www.example.org", 443);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
838 // OnDataSent may or may not have been invoked. 841 // OnDataSent may or may not have been invoked.
839 // Calling after stream is canceled gives kProtoUnknown. 842 // Calling after stream is canceled gives kProtoUnknown.
840 EXPECT_EQ(kProtoUnknown, delegate->GetProtocol()); 843 EXPECT_EQ(kProtoUnknown, delegate->GetProtocol());
841 EXPECT_EQ(0, delegate->GetTotalSentBytes()); 844 EXPECT_EQ(0, delegate->GetTotalSentBytes());
842 EXPECT_EQ(0, delegate->GetTotalReceivedBytes()); 845 EXPECT_EQ(0, delegate->GetTotalReceivedBytes());
843 } 846 }
844 847
845 TEST_F(BidirectionalStreamTest, CancelStreamDuringReadData) { 848 TEST_F(BidirectionalStreamTest, CancelStreamDuringReadData) {
846 BufferedSpdyFramer framer(spdy_util_.spdy_version()); 849 BufferedSpdyFramer framer(spdy_util_.spdy_version());
847 850
848 scoped_ptr<SpdyFrame> req(spdy_util_.ConstructSpdyPost( 851 scoped_ptr<SpdySerializedFrame> req(spdy_util_.ConstructSpdyPost(
849 "https://www.example.org", 1, kBodyDataSize * 3, LOWEST, nullptr, 0)); 852 "https://www.example.org", 1, kBodyDataSize * 3, LOWEST, nullptr, 0));
850 scoped_ptr<SpdyFrame> data_frame( 853 scoped_ptr<SpdySerializedFrame> data_frame(
851 framer.CreateDataFrame(1, kBodyData, kBodyDataSize, DATA_FLAG_NONE)); 854 framer.CreateDataFrame(1, kBodyData, kBodyDataSize, DATA_FLAG_NONE));
852 scoped_ptr<SpdyFrame> rst( 855 scoped_ptr<SpdySerializedFrame> rst(
853 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 856 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL));
854 857
855 MockWrite writes[] = { 858 MockWrite writes[] = {
856 CreateMockWrite(*req, 0), CreateMockWrite(*rst, 4), 859 CreateMockWrite(*req, 0), CreateMockWrite(*rst, 4),
857 }; 860 };
858 861
859 scoped_ptr<SpdyFrame> resp( 862 scoped_ptr<SpdySerializedFrame> resp(
860 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); 863 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1));
861 scoped_ptr<SpdyFrame> response_body_frame( 864 scoped_ptr<SpdySerializedFrame> response_body_frame(
862 spdy_util_.ConstructSpdyBodyFrame(1, false)); 865 spdy_util_.ConstructSpdyBodyFrame(1, false));
863 866
864 MockRead reads[] = { 867 MockRead reads[] = {
865 CreateMockRead(*resp, 1), 868 CreateMockRead(*resp, 1),
866 MockRead(ASYNC, ERR_IO_PENDING, 2), // Force a pause. 869 MockRead(ASYNC, ERR_IO_PENDING, 2), // Force a pause.
867 CreateMockRead(*response_body_frame, 3), MockRead(ASYNC, 0, 5), 870 CreateMockRead(*response_body_frame, 3), MockRead(ASYNC, 0, 5),
868 }; 871 };
869 872
870 HostPortPair host_port_pair("www.example.org", 443); 873 HostPortPair host_port_pair("www.example.org", 443);
871 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), 874 SpdySessionKey key(host_port_pair, ProxyServer::Direct(),
(...skipping 29 matching lines...) Expand all
901 EXPECT_EQ(0, delegate->on_data_sent_count()); 904 EXPECT_EQ(0, delegate->on_data_sent_count());
902 // Calling after stream is canceled gives kProtoUnknown. 905 // Calling after stream is canceled gives kProtoUnknown.
903 EXPECT_EQ(kProtoUnknown, delegate->GetProtocol()); 906 EXPECT_EQ(kProtoUnknown, delegate->GetProtocol());
904 EXPECT_EQ(0, delegate->GetTotalSentBytes()); 907 EXPECT_EQ(0, delegate->GetTotalSentBytes());
905 EXPECT_EQ(0, delegate->GetTotalReceivedBytes()); 908 EXPECT_EQ(0, delegate->GetTotalReceivedBytes());
906 } 909 }
907 910
908 // Receiving a header with uppercase ASCII will result in a protocol error, 911 // Receiving a header with uppercase ASCII will result in a protocol error,
909 // which should be propagated via Delegate::OnFailed. 912 // which should be propagated via Delegate::OnFailed.
910 TEST_F(BidirectionalStreamTest, PropagateProtocolError) { 913 TEST_F(BidirectionalStreamTest, PropagateProtocolError) {
911 scoped_ptr<SpdyFrame> req(spdy_util_.ConstructSpdyPost( 914 scoped_ptr<SpdySerializedFrame> req(spdy_util_.ConstructSpdyPost(
912 "https://www.example.org", 1, kBodyDataSize * 3, LOW, nullptr, 0)); 915 "https://www.example.org", 1, kBodyDataSize * 3, LOW, nullptr, 0));
913 scoped_ptr<SpdyFrame> rst( 916 scoped_ptr<SpdySerializedFrame> rst(
914 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR)); 917 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR));
915 918
916 MockWrite writes[] = { 919 MockWrite writes[] = {
917 CreateMockWrite(*req, 0), CreateMockWrite(*rst, 2), 920 CreateMockWrite(*req, 0), CreateMockWrite(*rst, 2),
918 }; 921 };
919 922
920 const char* const kExtraHeaders[] = {"X-UpperCase", "yes"}; 923 const char* const kExtraHeaders[] = {"X-UpperCase", "yes"};
921 scoped_ptr<SpdyFrame> resp( 924 scoped_ptr<SpdySerializedFrame> resp(
922 spdy_util_.ConstructSpdyGetSynReply(kExtraHeaders, 1, 1)); 925 spdy_util_.ConstructSpdyGetSynReply(kExtraHeaders, 1, 1));
923 926
924 MockRead reads[] = { 927 MockRead reads[] = {
925 CreateMockRead(*resp, 1), MockRead(ASYNC, 0, 3), 928 CreateMockRead(*resp, 1), MockRead(ASYNC, 0, 3),
926 }; 929 };
927 930
928 HostPortPair host_port_pair("www.example.org", 443); 931 HostPortPair host_port_pair("www.example.org", 443);
929 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), 932 SpdySessionKey key(host_port_pair, ProxyServer::Direct(),
930 PRIVACY_MODE_DISABLED); 933 PRIVACY_MODE_DISABLED);
931 InitSession(reads, arraysize(reads), writes, arraysize(writes), key); 934 InitSession(reads, arraysize(reads), writes, arraysize(writes), key);
(...skipping 23 matching lines...) Expand all
955 EXPECT_EQ(CountWriteBytes(writes, 1), delegate->GetTotalSentBytes()); 958 EXPECT_EQ(CountWriteBytes(writes, 1), delegate->GetTotalSentBytes());
956 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), 959 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)),
957 delegate->GetTotalReceivedBytes()); 960 delegate->GetTotalReceivedBytes());
958 } 961 }
959 962
960 INSTANTIATE_TEST_CASE_P(CancelOrDeleteTests, 963 INSTANTIATE_TEST_CASE_P(CancelOrDeleteTests,
961 BidirectionalStreamTest, 964 BidirectionalStreamTest,
962 ::testing::Values(true, false)); 965 ::testing::Values(true, false));
963 966
964 TEST_P(BidirectionalStreamTest, CancelOrDeleteStreamDuringOnHeadersReceived) { 967 TEST_P(BidirectionalStreamTest, CancelOrDeleteStreamDuringOnHeadersReceived) {
965 scoped_ptr<SpdyFrame> req( 968 scoped_ptr<SpdySerializedFrame> req(
966 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); 969 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST));
967 970
968 scoped_ptr<SpdyFrame> rst( 971 scoped_ptr<SpdySerializedFrame> rst(
969 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 972 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL));
970 MockWrite writes[] = { 973 MockWrite writes[] = {
971 CreateMockWrite(*req, 0), CreateMockWrite(*rst, 2), 974 CreateMockWrite(*req, 0), CreateMockWrite(*rst, 2),
972 }; 975 };
973 976
974 const char* const kExtraResponseHeaders[] = {"header-name", "header-value"}; 977 const char* const kExtraResponseHeaders[] = {"header-name", "header-value"};
975 978
976 scoped_ptr<SpdyFrame> resp( 979 scoped_ptr<SpdySerializedFrame> resp(
977 spdy_util_.ConstructSpdyGetSynReply(kExtraResponseHeaders, 1, 1)); 980 spdy_util_.ConstructSpdyGetSynReply(kExtraResponseHeaders, 1, 1));
978 981
979 MockRead reads[] = { 982 MockRead reads[] = {
980 CreateMockRead(*resp, 1), MockRead(ASYNC, 0, 3), 983 CreateMockRead(*resp, 1), MockRead(ASYNC, 0, 3),
981 }; 984 };
982 985
983 HostPortPair host_port_pair("www.example.org", 443); 986 HostPortPair host_port_pair("www.example.org", 443);
984 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), 987 SpdySessionKey key(host_port_pair, ProxyServer::Direct(),
985 PRIVACY_MODE_DISABLED); 988 PRIVACY_MODE_DISABLED);
986 InitSession(reads, arraysize(reads), writes, arraysize(writes), key); 989 InitSession(reads, arraysize(reads), writes, arraysize(writes), key);
(...skipping 24 matching lines...) Expand all
1011 1014
1012 // If stream is destroyed, do not call into stream. 1015 // If stream is destroyed, do not call into stream.
1013 if (!GetParam()) 1016 if (!GetParam())
1014 return; 1017 return;
1015 EXPECT_EQ(0, delegate->GetTotalSentBytes()); 1018 EXPECT_EQ(0, delegate->GetTotalSentBytes());
1016 EXPECT_EQ(0, delegate->GetTotalReceivedBytes()); 1019 EXPECT_EQ(0, delegate->GetTotalReceivedBytes());
1017 EXPECT_EQ(kProtoUnknown, delegate->GetProtocol()); 1020 EXPECT_EQ(kProtoUnknown, delegate->GetProtocol());
1018 } 1021 }
1019 1022
1020 TEST_P(BidirectionalStreamTest, CancelOrDeleteStreamDuringOnDataRead) { 1023 TEST_P(BidirectionalStreamTest, CancelOrDeleteStreamDuringOnDataRead) {
1021 scoped_ptr<SpdyFrame> req( 1024 scoped_ptr<SpdySerializedFrame> req(
1022 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); 1025 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST));
1023 1026
1024 scoped_ptr<SpdyFrame> rst( 1027 scoped_ptr<SpdySerializedFrame> rst(
1025 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 1028 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL));
1026 MockWrite writes[] = { 1029 MockWrite writes[] = {
1027 CreateMockWrite(*req, 0), CreateMockWrite(*rst, 3), 1030 CreateMockWrite(*req, 0), CreateMockWrite(*rst, 3),
1028 }; 1031 };
1029 1032
1030 const char* const kExtraResponseHeaders[] = {"header-name", "header-value"}; 1033 const char* const kExtraResponseHeaders[] = {"header-name", "header-value"};
1031 1034
1032 scoped_ptr<SpdyFrame> resp( 1035 scoped_ptr<SpdySerializedFrame> resp(
1033 spdy_util_.ConstructSpdyGetSynReply(kExtraResponseHeaders, 1, 1)); 1036 spdy_util_.ConstructSpdyGetSynReply(kExtraResponseHeaders, 1, 1));
1034 1037
1035 scoped_ptr<SpdyFrame> response_body_frame( 1038 scoped_ptr<SpdySerializedFrame> response_body_frame(
1036 spdy_util_.ConstructSpdyBodyFrame(1, false)); 1039 spdy_util_.ConstructSpdyBodyFrame(1, false));
1037 1040
1038 MockRead reads[] = { 1041 MockRead reads[] = {
1039 CreateMockRead(*resp, 1), CreateMockRead(*response_body_frame, 2), 1042 CreateMockRead(*resp, 1), CreateMockRead(*response_body_frame, 2),
1040 MockRead(ASYNC, 0, 4), 1043 MockRead(ASYNC, 0, 4),
1041 }; 1044 };
1042 1045
1043 HostPortPair host_port_pair("www.example.org", 443); 1046 HostPortPair host_port_pair("www.example.org", 443);
1044 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), 1047 SpdySessionKey key(host_port_pair, ProxyServer::Direct(),
1045 PRIVACY_MODE_DISABLED); 1048 PRIVACY_MODE_DISABLED);
(...skipping 24 matching lines...) Expand all
1070 1073
1071 // If stream is destroyed, do not call into stream. 1074 // If stream is destroyed, do not call into stream.
1072 if (!GetParam()) 1075 if (!GetParam())
1073 return; 1076 return;
1074 EXPECT_EQ(0, delegate->GetTotalSentBytes()); 1077 EXPECT_EQ(0, delegate->GetTotalSentBytes());
1075 EXPECT_EQ(0, delegate->GetTotalReceivedBytes()); 1078 EXPECT_EQ(0, delegate->GetTotalReceivedBytes());
1076 EXPECT_EQ(kProtoUnknown, delegate->GetProtocol()); 1079 EXPECT_EQ(kProtoUnknown, delegate->GetProtocol());
1077 } 1080 }
1078 1081
1079 TEST_P(BidirectionalStreamTest, CancelOrDeleteStreamDuringOnTrailersReceived) { 1082 TEST_P(BidirectionalStreamTest, CancelOrDeleteStreamDuringOnTrailersReceived) {
1080 scoped_ptr<SpdyFrame> req( 1083 scoped_ptr<SpdySerializedFrame> req(
1081 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); 1084 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST));
1082 1085
1083 scoped_ptr<SpdyFrame> rst( 1086 scoped_ptr<SpdySerializedFrame> rst(
1084 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 1087 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL));
1085 MockWrite writes[] = { 1088 MockWrite writes[] = {
1086 CreateMockWrite(*req, 0), CreateMockWrite(*rst, 4), 1089 CreateMockWrite(*req, 0), CreateMockWrite(*rst, 4),
1087 }; 1090 };
1088 1091
1089 const char* const kExtraResponseHeaders[] = {"header-name", "header-value"}; 1092 const char* const kExtraResponseHeaders[] = {"header-name", "header-value"};
1090 1093
1091 scoped_ptr<SpdyFrame> resp( 1094 scoped_ptr<SpdySerializedFrame> resp(
1092 spdy_util_.ConstructSpdyGetSynReply(kExtraResponseHeaders, 1, 1)); 1095 spdy_util_.ConstructSpdyGetSynReply(kExtraResponseHeaders, 1, 1));
1093 1096
1094 scoped_ptr<SpdyFrame> response_body_frame( 1097 scoped_ptr<SpdySerializedFrame> response_body_frame(
1095 spdy_util_.ConstructSpdyBodyFrame(1, false)); 1098 spdy_util_.ConstructSpdyBodyFrame(1, false));
1096 1099
1097 SpdyHeaderBlock late_headers; 1100 SpdyHeaderBlock late_headers;
1098 late_headers["foo"] = "bar"; 1101 late_headers["foo"] = "bar";
1099 scoped_ptr<SpdyFrame> trailers( 1102 scoped_ptr<SpdySerializedFrame> trailers(
1100 spdy_util_.ConstructSpdyResponseHeaders(1, late_headers, true)); 1103 spdy_util_.ConstructSpdyResponseHeaders(1, late_headers, true));
1101 1104
1102 MockRead reads[] = { 1105 MockRead reads[] = {
1103 CreateMockRead(*resp, 1), CreateMockRead(*response_body_frame, 2), 1106 CreateMockRead(*resp, 1), CreateMockRead(*response_body_frame, 2),
1104 CreateMockRead(*trailers, 3), MockRead(ASYNC, 0, 5), 1107 CreateMockRead(*trailers, 3), MockRead(ASYNC, 0, 5),
1105 }; 1108 };
1106 1109
1107 HostPortPair host_port_pair("www.example.org", 443); 1110 HostPortPair host_port_pair("www.example.org", 443);
1108 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), 1111 SpdySessionKey key(host_port_pair, ProxyServer::Direct(),
1109 PRIVACY_MODE_DISABLED); 1112 PRIVACY_MODE_DISABLED);
(...skipping 26 matching lines...) Expand all
1136 1139
1137 // If stream is destroyed, do not call into stream. 1140 // If stream is destroyed, do not call into stream.
1138 if (!GetParam()) 1141 if (!GetParam())
1139 return; 1142 return;
1140 EXPECT_EQ(0, delegate->GetTotalSentBytes()); 1143 EXPECT_EQ(0, delegate->GetTotalSentBytes());
1141 EXPECT_EQ(0, delegate->GetTotalReceivedBytes()); 1144 EXPECT_EQ(0, delegate->GetTotalReceivedBytes());
1142 EXPECT_EQ(kProtoUnknown, delegate->GetProtocol()); 1145 EXPECT_EQ(kProtoUnknown, delegate->GetProtocol());
1143 } 1146 }
1144 1147
1145 TEST_P(BidirectionalStreamTest, CancelOrDeleteStreamDuringOnFailed) { 1148 TEST_P(BidirectionalStreamTest, CancelOrDeleteStreamDuringOnFailed) {
1146 scoped_ptr<SpdyFrame> req( 1149 scoped_ptr<SpdySerializedFrame> req(
1147 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); 1150 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST));
1148 1151
1149 scoped_ptr<SpdyFrame> rst( 1152 scoped_ptr<SpdySerializedFrame> rst(
1150 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR)); 1153 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR));
1151 1154
1152 MockWrite writes[] = { 1155 MockWrite writes[] = {
1153 CreateMockWrite(*req, 0), CreateMockWrite(*rst, 2), 1156 CreateMockWrite(*req, 0), CreateMockWrite(*rst, 2),
1154 }; 1157 };
1155 1158
1156 const char* const kExtraHeaders[] = {"X-UpperCase", "yes"}; 1159 const char* const kExtraHeaders[] = {"X-UpperCase", "yes"};
1157 scoped_ptr<SpdyFrame> resp( 1160 scoped_ptr<SpdySerializedFrame> resp(
1158 spdy_util_.ConstructSpdyGetSynReply(kExtraHeaders, 1, 1)); 1161 spdy_util_.ConstructSpdyGetSynReply(kExtraHeaders, 1, 1));
1159 1162
1160 MockRead reads[] = { 1163 MockRead reads[] = {
1161 CreateMockRead(*resp, 1), MockRead(ASYNC, 0, 3), 1164 CreateMockRead(*resp, 1), MockRead(ASYNC, 0, 3),
1162 }; 1165 };
1163 1166
1164 HostPortPair host_port_pair("www.example.org", 443); 1167 HostPortPair host_port_pair("www.example.org", 443);
1165 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), 1168 SpdySessionKey key(host_port_pair, ProxyServer::Direct(),
1166 PRIVACY_MODE_DISABLED); 1169 PRIVACY_MODE_DISABLED);
1167 InitSession(reads, arraysize(reads), writes, arraysize(writes), key); 1170 InitSession(reads, arraysize(reads), writes, arraysize(writes), key);
(...skipping 22 matching lines...) Expand all
1190 1193
1191 // If stream is destroyed, do not call into stream. 1194 // If stream is destroyed, do not call into stream.
1192 if (!GetParam()) 1195 if (!GetParam())
1193 return; 1196 return;
1194 EXPECT_EQ(0, delegate->GetTotalSentBytes()); 1197 EXPECT_EQ(0, delegate->GetTotalSentBytes());
1195 EXPECT_EQ(0, delegate->GetTotalReceivedBytes()); 1198 EXPECT_EQ(0, delegate->GetTotalReceivedBytes());
1196 EXPECT_EQ(kProtoUnknown, delegate->GetProtocol()); 1199 EXPECT_EQ(kProtoUnknown, delegate->GetProtocol());
1197 } 1200 }
1198 1201
1199 TEST_F(BidirectionalStreamTest, TestHonorAlternativeServiceHeader) { 1202 TEST_F(BidirectionalStreamTest, TestHonorAlternativeServiceHeader) {
1200 scoped_ptr<SpdyFrame> req( 1203 scoped_ptr<SpdySerializedFrame> req(
1201 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); 1204 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST));
1202 // Empty DATA frame with an END_STREAM flag. 1205 // Empty DATA frame with an END_STREAM flag.
1203 scoped_ptr<SpdyFrame> end_stream( 1206 scoped_ptr<SpdySerializedFrame> end_stream(
1204 spdy_util_.ConstructSpdyBodyFrame(1, nullptr, 0, true)); 1207 spdy_util_.ConstructSpdyBodyFrame(1, nullptr, 0, true));
1205 1208
1206 MockWrite writes[] = {CreateMockWrite(*req.get(), 0)}; 1209 MockWrite writes[] = {CreateMockWrite(*req.get(), 0)};
1207 1210
1208 std::string alt_svc_header_value = AlternateProtocolToString(QUIC); 1211 std::string alt_svc_header_value = AlternateProtocolToString(QUIC);
1209 alt_svc_header_value.append("=\"www.example.org:443\""); 1212 alt_svc_header_value.append("=\"www.example.org:443\"");
1210 const char* const kExtraResponseHeaders[] = {"alt-svc", 1213 const char* const kExtraResponseHeaders[] = {"alt-svc",
1211 alt_svc_header_value.c_str()}; 1214 alt_svc_header_value.c_str()};
1212 1215
1213 scoped_ptr<SpdyFrame> resp( 1216 scoped_ptr<SpdySerializedFrame> resp(
1214 spdy_util_.ConstructSpdyGetSynReply(kExtraResponseHeaders, 1, 1)); 1217 spdy_util_.ConstructSpdyGetSynReply(kExtraResponseHeaders, 1, 1));
1215 scoped_ptr<SpdyFrame> body_frame(spdy_util_.ConstructSpdyBodyFrame(1, true)); 1218 scoped_ptr<SpdySerializedFrame> body_frame(
1219 spdy_util_.ConstructSpdyBodyFrame(1, true));
1216 1220
1217 MockRead reads[] = { 1221 MockRead reads[] = {
1218 CreateMockRead(*resp, 1), CreateMockRead(*body_frame, 2), 1222 CreateMockRead(*resp, 1), CreateMockRead(*body_frame, 2),
1219 MockRead(SYNCHRONOUS, 0, 3), 1223 MockRead(SYNCHRONOUS, 0, 3),
1220 }; 1224 };
1221 1225
1222 HostPortPair host_port_pair("www.example.org", 443); 1226 HostPortPair host_port_pair("www.example.org", 443);
1223 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), 1227 SpdySessionKey key(host_port_pair, ProxyServer::Direct(),
1224 PRIVACY_MODE_DISABLED); 1228 PRIVACY_MODE_DISABLED);
1225 session_deps_.parse_alternative_services = true; 1229 session_deps_.parse_alternative_services = true;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1257 http_session_->http_server_properties()->GetAlternativeServices( 1261 http_session_->http_server_properties()->GetAlternativeServices(
1258 host_port_pair); 1262 host_port_pair);
1259 ASSERT_EQ(1u, alternative_service_vector.size()); 1263 ASSERT_EQ(1u, alternative_service_vector.size());
1260 EXPECT_EQ(AlternateProtocolFromNextProto(kProtoQUIC1SPDY3), 1264 EXPECT_EQ(AlternateProtocolFromNextProto(kProtoQUIC1SPDY3),
1261 alternative_service_vector[0].protocol); 1265 alternative_service_vector[0].protocol);
1262 EXPECT_EQ("www.example.org", alternative_service_vector[0].host); 1266 EXPECT_EQ("www.example.org", alternative_service_vector[0].host);
1263 EXPECT_EQ(443, alternative_service_vector[0].port); 1267 EXPECT_EQ(443, alternative_service_vector[0].port);
1264 } 1268 }
1265 1269
1266 } // namespace net 1270 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | net/http/http_network_transaction_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698