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

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

Issue 2102253003: Make SpdyHeaderBlock non-copyable. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: iOS fix. Created 4 years, 5 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/http/http_stream_factory_impl_unittest.cc ('k') | net/quic/quic_chromium_client_stream.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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/quic/bidirectional_stream_quic_impl.h" 5 #include "net/quic/bidirectional_stream_quic_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/callback_helpers.h" 9 #include "base/callback_helpers.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 EXPECT_EQ(send_request_headers_automatically_, request_headers_sent); 83 EXPECT_EQ(send_request_headers_automatically_, request_headers_sent);
84 CHECK(!not_expect_callback_); 84 CHECK(!not_expect_callback_);
85 is_ready_ = true; 85 is_ready_ = true;
86 loop_->Quit(); 86 loop_->Quit();
87 } 87 }
88 88
89 void OnHeadersReceived(const SpdyHeaderBlock& response_headers) override { 89 void OnHeadersReceived(const SpdyHeaderBlock& response_headers) override {
90 CHECK(!on_failed_called_); 90 CHECK(!on_failed_called_);
91 CHECK(!not_expect_callback_); 91 CHECK(!not_expect_callback_);
92 92
93 response_headers_ = response_headers; 93 response_headers_ = response_headers.Clone();
94 loop_->Quit(); 94 loop_->Quit();
95 } 95 }
96 96
97 void OnDataRead(int bytes_read) override { 97 void OnDataRead(int bytes_read) override {
98 CHECK(!on_failed_called_); 98 CHECK(!on_failed_called_);
99 CHECK(!not_expect_callback_); 99 CHECK(!not_expect_callback_);
100 CHECK(!callback_.is_null()); 100 CHECK(!callback_.is_null());
101 101
102 ++on_data_read_count_; 102 ++on_data_read_count_;
103 CHECK_GE(bytes_read, OK); 103 CHECK_GE(bytes_read, OK);
104 data_received_.append(read_buf_->data(), bytes_read); 104 data_received_.append(read_buf_->data(), bytes_read);
105 base::ResetAndReturn(&callback_).Run(bytes_read); 105 base::ResetAndReturn(&callback_).Run(bytes_read);
106 } 106 }
107 107
108 void OnDataSent() override { 108 void OnDataSent() override {
109 CHECK(!on_failed_called_); 109 CHECK(!on_failed_called_);
110 CHECK(!not_expect_callback_); 110 CHECK(!not_expect_callback_);
111 111
112 ++on_data_sent_count_; 112 ++on_data_sent_count_;
113 loop_->Quit(); 113 loop_->Quit();
114 } 114 }
115 115
116 void OnTrailersReceived(const SpdyHeaderBlock& trailers) override { 116 void OnTrailersReceived(const SpdyHeaderBlock& trailers) override {
117 CHECK(!on_failed_called_); 117 CHECK(!on_failed_called_);
118 CHECK(!not_expect_callback_); 118 CHECK(!not_expect_callback_);
119 119
120 trailers_ = trailers; 120 trailers_ = trailers.Clone();
121 loop_->Quit(); 121 loop_->Quit();
122 } 122 }
123 123
124 void OnFailed(int error) override { 124 void OnFailed(int error) override {
125 CHECK(!on_failed_called_); 125 CHECK(!on_failed_called_);
126 CHECK(!not_expect_callback_); 126 CHECK(!not_expect_callback_);
127 CHECK_EQ(OK, error_); 127 CHECK_EQ(OK, error_);
128 CHECK_NE(OK, error); 128 CHECK_NE(OK, error);
129 129
130 on_failed_called_ = true; 130 on_failed_called_ = true;
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 size_t* spdy_headers_frame_length, 486 size_t* spdy_headers_frame_length,
487 QuicStreamOffset* offset) { 487 QuicStreamOffset* offset) {
488 return server_maker_.MakeResponseHeadersPacket( 488 return server_maker_.MakeResponseHeadersPacket(
489 packet_number, stream_id_, !kIncludeVersion, fin, 489 packet_number, stream_id_, !kIncludeVersion, fin,
490 std::move(response_headers), spdy_headers_frame_length, offset); 490 std::move(response_headers), spdy_headers_frame_length, offset);
491 } 491 }
492 492
493 std::unique_ptr<QuicReceivedPacket> ConstructResponseTrailersPacket( 493 std::unique_ptr<QuicReceivedPacket> ConstructResponseTrailersPacket(
494 QuicPacketNumber packet_number, 494 QuicPacketNumber packet_number,
495 bool fin, 495 bool fin,
496 const SpdyHeaderBlock& trailers, 496 SpdyHeaderBlock trailers,
497 size_t* spdy_headers_frame_length, 497 size_t* spdy_headers_frame_length,
498 QuicStreamOffset* offset) { 498 QuicStreamOffset* offset) {
499 return server_maker_.MakeResponseHeadersPacket( 499 return server_maker_.MakeResponseHeadersPacket(
500 packet_number, stream_id_, !kIncludeVersion, fin, trailers, 500 packet_number, stream_id_, !kIncludeVersion, fin, std::move(trailers),
501 spdy_headers_frame_length, offset); 501 spdy_headers_frame_length, offset);
502 } 502 }
503 503
504 std::unique_ptr<QuicReceivedPacket> ConstructClientRstStreamPacket( 504 std::unique_ptr<QuicReceivedPacket> ConstructClientRstStreamPacket(
505 QuicPacketNumber packet_number) { 505 QuicPacketNumber packet_number) {
506 return ConstructRstStreamCancelledPacket(packet_number, 0, &client_maker_); 506 return ConstructRstStreamCancelledPacket(packet_number, 0, &client_maker_);
507 } 507 }
508 508
509 std::unique_ptr<QuicReceivedPacket> ConstructServerRstStreamPacket( 509 std::unique_ptr<QuicReceivedPacket> ConstructServerRstStreamPacket(
510 QuicPacketNumber packet_number) { 510 QuicPacketNumber packet_number) {
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
652 EXPECT_EQ(std::string(kResponseBody), delegate->data_received()); 652 EXPECT_EQ(std::string(kResponseBody), delegate->data_received());
653 TestCompletionCallback cb2; 653 TestCompletionCallback cb2;
654 EXPECT_EQ(ERR_IO_PENDING, delegate->ReadData(cb2.callback())); 654 EXPECT_EQ(ERR_IO_PENDING, delegate->ReadData(cb2.callback()));
655 655
656 SpdyHeaderBlock trailers; 656 SpdyHeaderBlock trailers;
657 size_t spdy_trailers_frame_length; 657 size_t spdy_trailers_frame_length;
658 trailers["foo"] = "bar"; 658 trailers["foo"] = "bar";
659 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); 659 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody));
660 // Server sends trailers. 660 // Server sends trailers.
661 ProcessPacket(ConstructResponseTrailersPacket( 661 ProcessPacket(ConstructResponseTrailersPacket(
662 4, kFin, trailers, &spdy_trailers_frame_length, &offset)); 662 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset));
663 663
664 delegate->WaitUntilNextCallback(); // OnTrailersReceived 664 delegate->WaitUntilNextCallback(); // OnTrailersReceived
665 EXPECT_EQ(OK, cb2.WaitForResult()); 665 EXPECT_EQ(OK, cb2.WaitForResult());
666 trailers.erase(kFinalOffsetHeaderKey); 666 trailers.erase(kFinalOffsetHeaderKey);
667 EXPECT_EQ(trailers, delegate->trailers()); 667 EXPECT_EQ(trailers, delegate->trailers());
668 668
669 EXPECT_EQ(OK, delegate->ReadData(cb2.callback())); 669 EXPECT_EQ(OK, delegate->ReadData(cb2.callback()));
670 base::RunLoop().RunUntilIdle(); 670 base::RunLoop().RunUntilIdle();
671 671
672 EXPECT_EQ(2, delegate->on_data_read_count()); 672 EXPECT_EQ(2, delegate->on_data_read_count());
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
776 delegate->SendvData({buf3, buf4, buf5}, 776 delegate->SendvData({buf3, buf4, buf5},
777 {buf3->size(), buf4->size(), buf5->size()}, kFin); 777 {buf3->size(), buf4->size(), buf5->size()}, kFin);
778 delegate->WaitUntilNextCallback(); // OnDataSent 778 delegate->WaitUntilNextCallback(); // OnDataSent
779 779
780 size_t spdy_trailers_frame_length; 780 size_t spdy_trailers_frame_length;
781 SpdyHeaderBlock trailers; 781 SpdyHeaderBlock trailers;
782 trailers["foo"] = "bar"; 782 trailers["foo"] = "bar";
783 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); 783 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody));
784 // Server sends trailers. 784 // Server sends trailers.
785 ProcessPacket(ConstructResponseTrailersPacket( 785 ProcessPacket(ConstructResponseTrailersPacket(
786 4, kFin, trailers, &spdy_trailers_frame_length, &offset)); 786 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset));
787 787
788 delegate->WaitUntilNextCallback(); // OnTrailersReceived 788 delegate->WaitUntilNextCallback(); // OnTrailersReceived
789 trailers.erase(kFinalOffsetHeaderKey); 789 trailers.erase(kFinalOffsetHeaderKey);
790 EXPECT_EQ(trailers, delegate->trailers()); 790 EXPECT_EQ(trailers, delegate->trailers());
791 EXPECT_EQ(OK, delegate->ReadData(cb.callback())); 791 EXPECT_EQ(OK, delegate->ReadData(cb.callback()));
792 792
793 EXPECT_EQ(1, delegate->on_data_read_count()); 793 EXPECT_EQ(1, delegate->on_data_read_count());
794 EXPECT_EQ(2, delegate->on_data_sent_count()); 794 EXPECT_EQ(2, delegate->on_data_sent_count());
795 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); 795 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol());
796 EXPECT_EQ( 796 EXPECT_EQ(
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 872
873 delegate->SendData(buf2, buf2->size(), true); 873 delegate->SendData(buf2, buf2->size(), true);
874 delegate->WaitUntilNextCallback(); // OnDataSent 874 delegate->WaitUntilNextCallback(); // OnDataSent
875 875
876 size_t spdy_trailers_frame_length; 876 size_t spdy_trailers_frame_length;
877 SpdyHeaderBlock trailers; 877 SpdyHeaderBlock trailers;
878 trailers["foo"] = "bar"; 878 trailers["foo"] = "bar";
879 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); 879 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody));
880 // Server sends trailers. 880 // Server sends trailers.
881 ProcessPacket(ConstructResponseTrailersPacket( 881 ProcessPacket(ConstructResponseTrailersPacket(
882 4, kFin, trailers, &spdy_trailers_frame_length, &offset)); 882 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset));
883 883
884 delegate->WaitUntilNextCallback(); // OnTrailersReceived 884 delegate->WaitUntilNextCallback(); // OnTrailersReceived
885 trailers.erase(kFinalOffsetHeaderKey); 885 trailers.erase(kFinalOffsetHeaderKey);
886 EXPECT_EQ(trailers, delegate->trailers()); 886 EXPECT_EQ(trailers, delegate->trailers());
887 EXPECT_EQ(OK, delegate->ReadData(cb.callback())); 887 EXPECT_EQ(OK, delegate->ReadData(cb.callback()));
888 888
889 EXPECT_EQ(1, delegate->on_data_read_count()); 889 EXPECT_EQ(1, delegate->on_data_read_count());
890 EXPECT_EQ(2, delegate->on_data_sent_count()); 890 EXPECT_EQ(2, delegate->on_data_sent_count());
891 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); 891 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol());
892 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length + 892 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length +
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
975 delegate->SendvData({buf3, buf4, buf5}, 975 delegate->SendvData({buf3, buf4, buf5},
976 {buf3->size(), buf4->size(), buf5->size()}, kFin); 976 {buf3->size(), buf4->size(), buf5->size()}, kFin);
977 delegate->WaitUntilNextCallback(); // OnDataSent 977 delegate->WaitUntilNextCallback(); // OnDataSent
978 978
979 size_t spdy_trailers_frame_length; 979 size_t spdy_trailers_frame_length;
980 SpdyHeaderBlock trailers; 980 SpdyHeaderBlock trailers;
981 trailers["foo"] = "bar"; 981 trailers["foo"] = "bar";
982 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); 982 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody));
983 // Server sends trailers. 983 // Server sends trailers.
984 ProcessPacket(ConstructResponseTrailersPacket( 984 ProcessPacket(ConstructResponseTrailersPacket(
985 4, kFin, trailers, &spdy_trailers_frame_length, &offset)); 985 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset));
986 986
987 delegate->WaitUntilNextCallback(); // OnTrailersReceived 987 delegate->WaitUntilNextCallback(); // OnTrailersReceived
988 trailers.erase(kFinalOffsetHeaderKey); 988 trailers.erase(kFinalOffsetHeaderKey);
989 EXPECT_EQ(trailers, delegate->trailers()); 989 EXPECT_EQ(trailers, delegate->trailers());
990 EXPECT_EQ(OK, delegate->ReadData(cb.callback())); 990 EXPECT_EQ(OK, delegate->ReadData(cb.callback()));
991 991
992 EXPECT_EQ(1, delegate->on_data_read_count()); 992 EXPECT_EQ(1, delegate->on_data_read_count());
993 EXPECT_EQ(2, delegate->on_data_sent_count()); 993 EXPECT_EQ(2, delegate->on_data_sent_count());
994 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); 994 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol());
995 EXPECT_EQ( 995 EXPECT_EQ(
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1055 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); 1055 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody));
1056 1056
1057 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult()); 1057 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult());
1058 1058
1059 size_t spdy_trailers_frame_length; 1059 size_t spdy_trailers_frame_length;
1060 SpdyHeaderBlock trailers; 1060 SpdyHeaderBlock trailers;
1061 trailers["foo"] = "bar"; 1061 trailers["foo"] = "bar";
1062 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); 1062 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody));
1063 // Server sends trailers. 1063 // Server sends trailers.
1064 ProcessPacket(ConstructResponseTrailersPacket( 1064 ProcessPacket(ConstructResponseTrailersPacket(
1065 4, kFin, trailers, &spdy_trailers_frame_length, &offset)); 1065 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset));
1066 1066
1067 delegate->WaitUntilNextCallback(); // OnTrailersReceived 1067 delegate->WaitUntilNextCallback(); // OnTrailersReceived
1068 trailers.erase(kFinalOffsetHeaderKey); 1068 trailers.erase(kFinalOffsetHeaderKey);
1069 EXPECT_EQ(trailers, delegate->trailers()); 1069 EXPECT_EQ(trailers, delegate->trailers());
1070 EXPECT_EQ(OK, delegate->ReadData(cb.callback())); 1070 EXPECT_EQ(OK, delegate->ReadData(cb.callback()));
1071 1071
1072 EXPECT_EQ(1, delegate->on_data_read_count()); 1072 EXPECT_EQ(1, delegate->on_data_read_count());
1073 EXPECT_EQ(1, delegate->on_data_sent_count()); 1073 EXPECT_EQ(1, delegate->on_data_sent_count());
1074 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); 1074 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol());
1075 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length + 1075 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length +
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1132 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); 1132 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody));
1133 1133
1134 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult()); 1134 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult());
1135 1135
1136 size_t spdy_trailers_frame_length; 1136 size_t spdy_trailers_frame_length;
1137 SpdyHeaderBlock trailers; 1137 SpdyHeaderBlock trailers;
1138 trailers["foo"] = "bar"; 1138 trailers["foo"] = "bar";
1139 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); 1139 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody));
1140 // Server sends trailers. 1140 // Server sends trailers.
1141 ProcessPacket(ConstructResponseTrailersPacket( 1141 ProcessPacket(ConstructResponseTrailersPacket(
1142 4, kFin, trailers, &spdy_trailers_frame_length, &offset)); 1142 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset));
1143 1143
1144 delegate->WaitUntilNextCallback(); // OnTrailersReceived 1144 delegate->WaitUntilNextCallback(); // OnTrailersReceived
1145 trailers.erase(kFinalOffsetHeaderKey); 1145 trailers.erase(kFinalOffsetHeaderKey);
1146 EXPECT_EQ(trailers, delegate->trailers()); 1146 EXPECT_EQ(trailers, delegate->trailers());
1147 EXPECT_EQ(OK, delegate->ReadData(cb.callback())); 1147 EXPECT_EQ(OK, delegate->ReadData(cb.callback()));
1148 1148
1149 EXPECT_EQ(1, delegate->on_data_read_count()); 1149 EXPECT_EQ(1, delegate->on_data_read_count());
1150 EXPECT_EQ(1, delegate->on_data_sent_count()); 1150 EXPECT_EQ(1, delegate->on_data_sent_count());
1151 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); 1151 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol());
1152 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length + 1152 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length +
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after
1651 1651
1652 EXPECT_EQ(static_cast<int64_t>(strlen(kResponseBody)), cb.WaitForResult()); 1652 EXPECT_EQ(static_cast<int64_t>(strlen(kResponseBody)), cb.WaitForResult());
1653 EXPECT_EQ(std::string(kResponseBody), delegate->data_received()); 1653 EXPECT_EQ(std::string(kResponseBody), delegate->data_received());
1654 1654
1655 size_t spdy_trailers_frame_length; 1655 size_t spdy_trailers_frame_length;
1656 SpdyHeaderBlock trailers; 1656 SpdyHeaderBlock trailers;
1657 trailers["foo"] = "bar"; 1657 trailers["foo"] = "bar";
1658 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); 1658 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody));
1659 // Server sends trailers. 1659 // Server sends trailers.
1660 ProcessPacket(ConstructResponseTrailersPacket( 1660 ProcessPacket(ConstructResponseTrailersPacket(
1661 4, kFin, trailers, &spdy_trailers_frame_length, &offset)); 1661 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset));
1662 1662
1663 delegate->WaitUntilNextCallback(); // OnTrailersReceived 1663 delegate->WaitUntilNextCallback(); // OnTrailersReceived
1664 trailers.erase(kFinalOffsetHeaderKey); 1664 trailers.erase(kFinalOffsetHeaderKey);
1665 EXPECT_EQ(trailers, delegate->trailers()); 1665 EXPECT_EQ(trailers, delegate->trailers());
1666 1666
1667 base::RunLoop().RunUntilIdle(); 1667 base::RunLoop().RunUntilIdle();
1668 1668
1669 EXPECT_EQ(1, delegate->on_data_read_count()); 1669 EXPECT_EQ(1, delegate->on_data_read_count());
1670 EXPECT_EQ(0, delegate->on_data_sent_count()); 1670 EXPECT_EQ(0, delegate->on_data_sent_count());
1671 } 1671 }
1672 1672
1673 } // namespace test 1673 } // namespace test
1674 1674
1675 } // namespace net 1675 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_stream_factory_impl_unittest.cc ('k') | net/quic/quic_chromium_client_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698