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

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

Issue 2914853002: Change BidirectionalStreamQuicImplTest to verify the correct callback (Closed)
Patch Set: Rebase Created 3 years, 6 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 | no next file » | 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/chromium/bidirectional_stream_quic_impl.h" 5 #include "net/quic/chromium/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 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 namespace test { 53 namespace test {
54 54
55 namespace { 55 namespace {
56 56
57 const char kUploadData[] = "Really nifty data!"; 57 const char kUploadData[] = "Really nifty data!";
58 const char kDefaultServerHostName[] = "www.google.com"; 58 const char kDefaultServerHostName[] = "www.google.com";
59 const uint16_t kDefaultServerPort = 80; 59 const uint16_t kDefaultServerPort = 80;
60 // Size of the buffer to be allocated for each read. 60 // Size of the buffer to be allocated for each read.
61 const size_t kReadBufferSize = 4096; 61 const size_t kReadBufferSize = 4096;
62 62
63 enum DelegateMethod {
64 kOnStreamReady,
65 kOnHeadersReceived,
66 kOnTrailersReceived,
67 kOnDataRead,
68 kOnDataSent,
69 kOnFailed
70 };
71
63 class TestDelegateBase : public BidirectionalStreamImpl::Delegate { 72 class TestDelegateBase : public BidirectionalStreamImpl::Delegate {
64 public: 73 public:
65 TestDelegateBase(IOBuffer* read_buf, int read_buf_len) 74 TestDelegateBase(IOBuffer* read_buf, int read_buf_len)
66 : TestDelegateBase(read_buf, 75 : TestDelegateBase(read_buf,
67 read_buf_len, 76 read_buf_len,
68 base::MakeUnique<base::Timer>(false, false)) {} 77 base::MakeUnique<base::Timer>(false, false)) {}
69 78
70 TestDelegateBase(IOBuffer* read_buf, 79 TestDelegateBase(IOBuffer* read_buf,
71 int read_buf_len, 80 int read_buf_len,
72 std::unique_ptr<base::Timer> timer) 81 std::unique_ptr<base::Timer> timer)
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 180
172 void SendvData(const std::vector<scoped_refptr<IOBuffer>>& data, 181 void SendvData(const std::vector<scoped_refptr<IOBuffer>>& data,
173 const std::vector<int>& lengths, 182 const std::vector<int>& lengths,
174 bool end_of_stream) { 183 bool end_of_stream) {
175 not_expect_callback_ = true; 184 not_expect_callback_ = true;
176 stream_->SendvData(data, lengths, end_of_stream); 185 stream_->SendvData(data, lengths, end_of_stream);
177 not_expect_callback_ = false; 186 not_expect_callback_ = false;
178 } 187 }
179 188
180 // Waits until next Delegate callback. 189 // Waits until next Delegate callback.
181 void WaitUntilNextCallback() { 190 void WaitUntilNextCallback(DelegateMethod method) {
191 ASSERT_FALSE(on_failed_called_);
192 bool is_ready = is_ready_;
193 bool headers_received = !response_headers_.empty();
194 bool trailers_received = trailers_received_;
195 int on_data_read_count = on_data_read_count_;
196 int on_data_sent_count = on_data_sent_count_;
197
182 loop_->Run(); 198 loop_->Run();
183 loop_.reset(new base::RunLoop); 199 loop_.reset(new base::RunLoop);
200
201 EXPECT_EQ(method == kOnFailed, on_failed_called_);
202 EXPECT_EQ(is_ready || (method == kOnStreamReady), is_ready_);
203 EXPECT_EQ(headers_received || (method == kOnHeadersReceived),
204 !response_headers_.empty());
205 EXPECT_EQ(trailers_received || (method == kOnTrailersReceived),
206 trailers_received_);
207 EXPECT_EQ(on_data_read_count + (method == kOnDataRead ? 1 : 0),
208 on_data_read_count_);
209 EXPECT_EQ(on_data_sent_count + (method == kOnDataSent ? 1 : 0),
210 on_data_sent_count_);
184 } 211 }
185 212
186 // Calls ReadData on the |stream_| and updates |data_received_|. 213 // Calls ReadData on the |stream_| and updates |data_received_|.
187 int ReadData(const CompletionCallback& callback) { 214 int ReadData(const CompletionCallback& callback) {
188 not_expect_callback_ = true; 215 not_expect_callback_ = true;
189 int rv = stream_->ReadData(read_buf_.get(), read_buf_len_); 216 int rv = stream_->ReadData(read_buf_.get(), read_buf_len_);
190 not_expect_callback_ = false; 217 not_expect_callback_ = false;
191 if (rv > 0) 218 if (rv > 0)
192 data_received_.append(read_buf_->data(), rv); 219 data_received_.append(read_buf_->data(), rv);
193 if (rv == ERR_IO_PENDING) 220 if (rv == ERR_IO_PENDING)
(...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after
759 request.method = "GET"; 786 request.method = "GET";
760 request.url = GURL("http://www.google.com/"); 787 request.url = GURL("http://www.google.com/");
761 request.end_stream_on_headers = true; 788 request.end_stream_on_headers = true;
762 request.priority = DEFAULT_PRIORITY; 789 request.priority = DEFAULT_PRIORITY;
763 790
764 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 791 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
765 std::unique_ptr<TestDelegateBase> delegate( 792 std::unique_ptr<TestDelegateBase> delegate(
766 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 793 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
767 delegate->set_trailers_expected(true); 794 delegate->set_trailers_expected(true);
768 delegate->Start(&request, net_log().bound(), session()->CreateHandle()); 795 delegate->Start(&request, net_log().bound(), session()->CreateHandle());
769 delegate->WaitUntilNextCallback(); // OnStreamReady 796 delegate->WaitUntilNextCallback(kOnStreamReady);
770 ConfirmHandshake(); 797 ConfirmHandshake();
771 798
772 // Server acks the request. 799 // Server acks the request.
773 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0)); 800 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0));
774 801
775 // Server sends the response headers. 802 // Server sends the response headers.
776 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 803 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
777 804
778 size_t spdy_response_headers_frame_length; 805 size_t spdy_response_headers_frame_length;
779 QuicStreamOffset offset = 0; 806 QuicStreamOffset offset = 0;
780 ProcessPacket(ConstructResponseHeadersPacket( 807 ProcessPacket(ConstructResponseHeadersPacket(
781 2, !kFin, std::move(response_headers), 808 2, !kFin, std::move(response_headers),
782 &spdy_response_headers_frame_length, &offset)); 809 &spdy_response_headers_frame_length, &offset));
783 810
784 delegate->WaitUntilNextCallback(); // OnHeadersReceived 811 delegate->WaitUntilNextCallback(kOnHeadersReceived);
785 LoadTimingInfo load_timing_info; 812 LoadTimingInfo load_timing_info;
786 EXPECT_TRUE(delegate->GetLoadTimingInfo(&load_timing_info)); 813 EXPECT_TRUE(delegate->GetLoadTimingInfo(&load_timing_info));
787 ExpectLoadTimingValid(load_timing_info, /*session_reused=*/false); 814 ExpectLoadTimingValid(load_timing_info, /*session_reused=*/false);
788 TestCompletionCallback cb; 815 TestCompletionCallback cb;
789 int rv = delegate->ReadData(cb.callback()); 816 int rv = delegate->ReadData(cb.callback());
790 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 817 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
791 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); 818 EXPECT_EQ("200", delegate->response_headers().find(":status")->second);
792 const char kResponseBody[] = "Hello world!"; 819 const char kResponseBody[] = "Hello world!";
793 // Server sends data. 820 // Server sends data.
794 ProcessPacket( 821 ProcessPacket(
795 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); 822 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody));
796 EXPECT_EQ(12, cb.WaitForResult()); 823 EXPECT_EQ(12, cb.WaitForResult());
797 824
798 EXPECT_EQ(std::string(kResponseBody), delegate->data_received()); 825 EXPECT_EQ(std::string(kResponseBody), delegate->data_received());
799 TestCompletionCallback cb2; 826 TestCompletionCallback cb2;
800 EXPECT_THAT(delegate->ReadData(cb2.callback()), IsError(ERR_IO_PENDING)); 827 EXPECT_THAT(delegate->ReadData(cb2.callback()), IsError(ERR_IO_PENDING));
801 828
802 SpdyHeaderBlock trailers; 829 SpdyHeaderBlock trailers;
803 size_t spdy_trailers_frame_length; 830 size_t spdy_trailers_frame_length;
804 trailers["foo"] = "bar"; 831 trailers["foo"] = "bar";
805 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); 832 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody));
806 // Server sends trailers. 833 // Server sends trailers.
807 ProcessPacket(ConstructResponseTrailersPacket( 834 ProcessPacket(ConstructResponseTrailersPacket(
808 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset)); 835 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset));
809 836
810 delegate->WaitUntilNextCallback(); // OnTrailersReceived 837 delegate->WaitUntilNextCallback(kOnTrailersReceived);
811 EXPECT_THAT(cb2.WaitForResult(), IsOk()); 838 EXPECT_THAT(cb2.WaitForResult(), IsOk());
812 trailers.erase(kFinalOffsetHeaderKey); 839 trailers.erase(kFinalOffsetHeaderKey);
813 EXPECT_EQ(trailers, delegate->trailers()); 840 EXPECT_EQ(trailers, delegate->trailers());
814 841
815 EXPECT_THAT(delegate->ReadData(cb2.callback()), IsOk()); 842 EXPECT_THAT(delegate->ReadData(cb2.callback()), IsOk());
816 base::RunLoop().RunUntilIdle(); 843 base::RunLoop().RunUntilIdle();
817 844
818 EXPECT_EQ(2, delegate->on_data_read_count()); 845 EXPECT_EQ(2, delegate->on_data_read_count());
819 EXPECT_EQ(0, delegate->on_data_sent_count()); 846 EXPECT_EQ(0, delegate->on_data_sent_count());
820 EXPECT_EQ(kProtoQUIC, delegate->GetProtocol()); 847 EXPECT_EQ(kProtoQUIC, delegate->GetProtocol());
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
867 std::unique_ptr<TestDelegateBase> delegate( 894 std::unique_ptr<TestDelegateBase> delegate(
868 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 895 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
869 delegate->Start(&request, net_log().bound(), session()->CreateHandle()); 896 delegate->Start(&request, net_log().bound(), session()->CreateHandle());
870 897
871 // Start second request. 898 // Start second request.
872 scoped_refptr<IOBuffer> read_buffer2(new IOBuffer(kReadBufferSize)); 899 scoped_refptr<IOBuffer> read_buffer2(new IOBuffer(kReadBufferSize));
873 std::unique_ptr<TestDelegateBase> delegate2( 900 std::unique_ptr<TestDelegateBase> delegate2(
874 new TestDelegateBase(read_buffer2.get(), kReadBufferSize)); 901 new TestDelegateBase(read_buffer2.get(), kReadBufferSize));
875 delegate2->Start(&request, net_log().bound(), session()->CreateHandle()); 902 delegate2->Start(&request, net_log().bound(), session()->CreateHandle());
876 903
877 delegate->WaitUntilNextCallback(); // OnStreamReady 904 delegate->WaitUntilNextCallback(kOnStreamReady);
878 delegate2->WaitUntilNextCallback(); // OnStreamReady 905 delegate2->WaitUntilNextCallback(kOnStreamReady);
879 906
880 ConfirmHandshake(); 907 ConfirmHandshake();
881 // Server acks the request. 908 // Server acks the request.
882 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0)); 909 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0));
883 910
884 // Server sends the response headers. 911 // Server sends the response headers.
885 offset = 0; 912 offset = 0;
886 ProcessPacket(ConstructResponseHeadersPacketInner( 913 ProcessPacket(ConstructResponseHeadersPacketInner(
887 2, GetNthClientInitiatedStreamId(0), kFin, 914 2, GetNthClientInitiatedStreamId(0), kFin,
888 ConstructResponseHeaders("200"), nullptr, &offset)); 915 ConstructResponseHeaders("200"), nullptr, &offset));
889 916
890 ProcessPacket(ConstructResponseHeadersPacketInner( 917 ProcessPacket(ConstructResponseHeadersPacketInner(
891 3, GetNthClientInitiatedStreamId(1), kFin, 918 3, GetNthClientInitiatedStreamId(1), kFin,
892 ConstructResponseHeaders("200"), nullptr, &offset)); 919 ConstructResponseHeaders("200"), nullptr, &offset));
893 920
894 delegate->WaitUntilNextCallback(); // OnHeadersReceived 921 delegate->WaitUntilNextCallback(kOnHeadersReceived);
895 delegate2->WaitUntilNextCallback(); // OnHeadersReceived 922 delegate2->WaitUntilNextCallback(kOnHeadersReceived);
896 923
897 LoadTimingInfo load_timing_info; 924 LoadTimingInfo load_timing_info;
898 EXPECT_TRUE(delegate->GetLoadTimingInfo(&load_timing_info)); 925 EXPECT_TRUE(delegate->GetLoadTimingInfo(&load_timing_info));
899 LoadTimingInfo load_timing_info2; 926 LoadTimingInfo load_timing_info2;
900 EXPECT_TRUE(delegate2->GetLoadTimingInfo(&load_timing_info2)); 927 EXPECT_TRUE(delegate2->GetLoadTimingInfo(&load_timing_info2));
901 ExpectLoadTimingValid(load_timing_info, /*session_reused=*/false); 928 ExpectLoadTimingValid(load_timing_info, /*session_reused=*/false);
902 ExpectLoadTimingValid(load_timing_info2, /*session_reused=*/true); 929 ExpectLoadTimingValid(load_timing_info2, /*session_reused=*/true);
903 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); 930 EXPECT_EQ("200", delegate->response_headers().find(":status")->second);
904 EXPECT_EQ("200", delegate2->response_headers().find(":status")->second); 931 EXPECT_EQ("200", delegate2->response_headers().find(":status")->second);
905 // No response body. ReadData() should return OK synchronously. 932 // No response body. ReadData() should return OK synchronously.
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
940 request.end_stream_on_headers = false; 967 request.end_stream_on_headers = false;
941 request.priority = DEFAULT_PRIORITY; 968 request.priority = DEFAULT_PRIORITY;
942 969
943 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 970 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
944 std::unique_ptr<TestDelegateBase> delegate( 971 std::unique_ptr<TestDelegateBase> delegate(
945 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 972 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
946 delegate->DoNotSendRequestHeadersAutomatically(); 973 delegate->DoNotSendRequestHeadersAutomatically();
947 delegate->Start(&request, net_log().bound(), session()->CreateHandle()); 974 delegate->Start(&request, net_log().bound(), session()->CreateHandle());
948 EXPECT_FALSE(delegate->is_ready()); 975 EXPECT_FALSE(delegate->is_ready());
949 ConfirmHandshake(); 976 ConfirmHandshake();
950 delegate->WaitUntilNextCallback(); // OnStreamReady 977 delegate->WaitUntilNextCallback(kOnStreamReady);
951 EXPECT_TRUE(delegate->is_ready()); 978 EXPECT_TRUE(delegate->is_ready());
952 979
953 // Sends request headers separately, which causes them to be sent in a 980 // Sends request headers separately, which causes them to be sent in a
954 // separate packet. 981 // separate packet.
955 delegate->SendRequestHeaders(); 982 delegate->SendRequestHeaders();
956 // Send a Data packet. 983 // Send a Data packet.
957 scoped_refptr<StringIOBuffer> buf1(new StringIOBuffer(kBody1)); 984 scoped_refptr<StringIOBuffer> buf1(new StringIOBuffer(kBody1));
958 scoped_refptr<StringIOBuffer> buf2(new StringIOBuffer(kBody2)); 985 scoped_refptr<StringIOBuffer> buf2(new StringIOBuffer(kBody2));
959 986
960 std::vector<int> lengths = {buf1->size(), buf2->size()}; 987 std::vector<int> lengths = {buf1->size(), buf2->size()};
961 delegate->SendvData({buf1, buf2}, lengths, !kFin); 988 delegate->SendvData({buf1, buf2}, lengths, !kFin);
962 delegate->WaitUntilNextCallback(); // OnDataSent 989 delegate->WaitUntilNextCallback(kOnDataSent);
963 990
964 // Server acks the request. 991 // Server acks the request.
965 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0)); 992 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0));
966 993
967 // Server sends the response headers. 994 // Server sends the response headers.
968 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 995 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
969 size_t spdy_response_headers_frame_length; 996 size_t spdy_response_headers_frame_length;
970 QuicStreamOffset offset = 0; 997 QuicStreamOffset offset = 0;
971 ProcessPacket(ConstructResponseHeadersPacket( 998 ProcessPacket(ConstructResponseHeadersPacket(
972 2, !kFin, std::move(response_headers), 999 2, !kFin, std::move(response_headers),
973 &spdy_response_headers_frame_length, &offset)); 1000 &spdy_response_headers_frame_length, &offset));
974 1001
975 delegate->WaitUntilNextCallback(); // OnHeadersReceived 1002 delegate->WaitUntilNextCallback(kOnHeadersReceived);
976 TestCompletionCallback cb; 1003 TestCompletionCallback cb;
977 int rv = delegate->ReadData(cb.callback()); 1004 int rv = delegate->ReadData(cb.callback());
978 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 1005 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
979 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); 1006 EXPECT_EQ("200", delegate->response_headers().find(":status")->second);
980 const char kResponseBody[] = "Hello world!"; 1007 const char kResponseBody[] = "Hello world!";
981 // Server sends data. 1008 // Server sends data.
982 ProcessPacket( 1009 ProcessPacket(
983 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); 1010 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody));
984 1011
985 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult()); 1012 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult());
986 1013
987 // Send a second Data packet. 1014 // Send a second Data packet.
988 scoped_refptr<StringIOBuffer> buf3(new StringIOBuffer(kBody3)); 1015 scoped_refptr<StringIOBuffer> buf3(new StringIOBuffer(kBody3));
989 scoped_refptr<StringIOBuffer> buf4(new StringIOBuffer(kBody4)); 1016 scoped_refptr<StringIOBuffer> buf4(new StringIOBuffer(kBody4));
990 scoped_refptr<StringIOBuffer> buf5(new StringIOBuffer(kBody5)); 1017 scoped_refptr<StringIOBuffer> buf5(new StringIOBuffer(kBody5));
991 1018
992 delegate->SendvData({buf3, buf4, buf5}, 1019 delegate->SendvData({buf3, buf4, buf5},
993 {buf3->size(), buf4->size(), buf5->size()}, kFin); 1020 {buf3->size(), buf4->size(), buf5->size()}, kFin);
994 delegate->WaitUntilNextCallback(); // OnDataSent 1021 delegate->WaitUntilNextCallback(kOnDataSent);
995 1022
996 size_t spdy_trailers_frame_length; 1023 size_t spdy_trailers_frame_length;
997 SpdyHeaderBlock trailers; 1024 SpdyHeaderBlock trailers;
998 trailers["foo"] = "bar"; 1025 trailers["foo"] = "bar";
999 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); 1026 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody));
1000 // Server sends trailers. 1027 // Server sends trailers.
1001 ProcessPacket(ConstructResponseTrailersPacket( 1028 ProcessPacket(ConstructResponseTrailersPacket(
1002 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset)); 1029 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset));
1003 1030
1004 delegate->WaitUntilNextCallback(); // OnTrailersReceived 1031 delegate->WaitUntilNextCallback(kOnTrailersReceived);
1005 trailers.erase(kFinalOffsetHeaderKey); 1032 trailers.erase(kFinalOffsetHeaderKey);
1006 EXPECT_EQ(trailers, delegate->trailers()); 1033 EXPECT_EQ(trailers, delegate->trailers());
1007 EXPECT_THAT(delegate->ReadData(cb.callback()), IsOk()); 1034 EXPECT_THAT(delegate->ReadData(cb.callback()), IsOk());
1008 1035
1009 EXPECT_EQ(1, delegate->on_data_read_count()); 1036 EXPECT_EQ(1, delegate->on_data_read_count());
1010 EXPECT_EQ(2, delegate->on_data_sent_count()); 1037 EXPECT_EQ(2, delegate->on_data_sent_count());
1011 EXPECT_EQ(kProtoQUIC, delegate->GetProtocol()); 1038 EXPECT_EQ(kProtoQUIC, delegate->GetProtocol());
1012 EXPECT_EQ( 1039 EXPECT_EQ(
1013 static_cast<int64_t>(spdy_request_headers_frame_length + strlen(kBody1) + 1040 static_cast<int64_t>(spdy_request_headers_frame_length + strlen(kBody1) +
1014 strlen(kBody2) + strlen(kBody3) + strlen(kBody4) + 1041 strlen(kBody2) + strlen(kBody3) + strlen(kBody4) +
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1046 request.url = GURL("http://www.google.com/"); 1073 request.url = GURL("http://www.google.com/");
1047 request.end_stream_on_headers = false; 1074 request.end_stream_on_headers = false;
1048 request.priority = DEFAULT_PRIORITY; 1075 request.priority = DEFAULT_PRIORITY;
1049 1076
1050 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1077 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1051 std::unique_ptr<TestDelegateBase> delegate( 1078 std::unique_ptr<TestDelegateBase> delegate(
1052 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1079 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1053 delegate->DoNotSendRequestHeadersAutomatically(); 1080 delegate->DoNotSendRequestHeadersAutomatically();
1054 delegate->Start(&request, net_log().bound(), session()->CreateHandle()); 1081 delegate->Start(&request, net_log().bound(), session()->CreateHandle());
1055 ConfirmHandshake(); 1082 ConfirmHandshake();
1056 delegate->WaitUntilNextCallback(); // OnStreamReady 1083 delegate->WaitUntilNextCallback(kOnStreamReady);
1057 1084
1058 // Send a Data packet. 1085 // Send a Data packet.
1059 scoped_refptr<StringIOBuffer> buf1(new StringIOBuffer(kBody1)); 1086 scoped_refptr<StringIOBuffer> buf1(new StringIOBuffer(kBody1));
1060 1087
1061 delegate->SendData(buf1, buf1->size(), false); 1088 delegate->SendData(buf1, buf1->size(), false);
1062 delegate->WaitUntilNextCallback(); // OnDataSent 1089 delegate->WaitUntilNextCallback(kOnDataSent);
1063 1090
1064 // Server acks the request. 1091 // Server acks the request.
1065 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0)); 1092 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0));
1066 1093
1067 // Server sends the response headers. 1094 // Server sends the response headers.
1068 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1095 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1069 size_t spdy_response_headers_frame_length; 1096 size_t spdy_response_headers_frame_length;
1070 QuicStreamOffset offset = 0; 1097 QuicStreamOffset offset = 0;
1071 ProcessPacket(ConstructResponseHeadersPacket( 1098 ProcessPacket(ConstructResponseHeadersPacket(
1072 2, !kFin, std::move(response_headers), 1099 2, !kFin, std::move(response_headers),
1073 &spdy_response_headers_frame_length, &offset)); 1100 &spdy_response_headers_frame_length, &offset));
1074 1101
1075 delegate->WaitUntilNextCallback(); // OnHeadersReceived 1102 delegate->WaitUntilNextCallback(kOnHeadersReceived);
1076 TestCompletionCallback cb; 1103 TestCompletionCallback cb;
1077 int rv = delegate->ReadData(cb.callback()); 1104 int rv = delegate->ReadData(cb.callback());
1078 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 1105 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
1079 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); 1106 EXPECT_EQ("200", delegate->response_headers().find(":status")->second);
1080 const char kResponseBody[] = "Hello world!"; 1107 const char kResponseBody[] = "Hello world!";
1081 // Server sends data. 1108 // Server sends data.
1082 ProcessPacket( 1109 ProcessPacket(
1083 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); 1110 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody));
1084 1111
1085 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult()); 1112 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult());
1086 1113
1087 // Send a second Data packet. 1114 // Send a second Data packet.
1088 scoped_refptr<StringIOBuffer> buf2(new StringIOBuffer(kBody2)); 1115 scoped_refptr<StringIOBuffer> buf2(new StringIOBuffer(kBody2));
1089 1116
1090 delegate->SendData(buf2, buf2->size(), true); 1117 delegate->SendData(buf2, buf2->size(), true);
1091 delegate->WaitUntilNextCallback(); // OnDataSent 1118 delegate->WaitUntilNextCallback(kOnDataSent);
1092 1119
1093 size_t spdy_trailers_frame_length; 1120 size_t spdy_trailers_frame_length;
1094 SpdyHeaderBlock trailers; 1121 SpdyHeaderBlock trailers;
1095 trailers["foo"] = "bar"; 1122 trailers["foo"] = "bar";
1096 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); 1123 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody));
1097 // Server sends trailers. 1124 // Server sends trailers.
1098 ProcessPacket(ConstructResponseTrailersPacket( 1125 ProcessPacket(ConstructResponseTrailersPacket(
1099 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset)); 1126 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset));
1100 1127
1101 delegate->WaitUntilNextCallback(); // OnTrailersReceived 1128 delegate->WaitUntilNextCallback(kOnTrailersReceived);
1102 trailers.erase(kFinalOffsetHeaderKey); 1129 trailers.erase(kFinalOffsetHeaderKey);
1103 EXPECT_EQ(trailers, delegate->trailers()); 1130 EXPECT_EQ(trailers, delegate->trailers());
1104 EXPECT_THAT(delegate->ReadData(cb.callback()), IsOk()); 1131 EXPECT_THAT(delegate->ReadData(cb.callback()), IsOk());
1105 1132
1106 EXPECT_EQ(1, delegate->on_data_read_count()); 1133 EXPECT_EQ(1, delegate->on_data_read_count());
1107 EXPECT_EQ(2, delegate->on_data_sent_count()); 1134 EXPECT_EQ(2, delegate->on_data_sent_count());
1108 EXPECT_EQ(kProtoQUIC, delegate->GetProtocol()); 1135 EXPECT_EQ(kProtoQUIC, delegate->GetProtocol());
1109 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length + 1136 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length +
1110 strlen(kBody1) + strlen(kBody2)), 1137 strlen(kBody1) + strlen(kBody2)),
1111 delegate->GetTotalSentBytes()); 1138 delegate->GetTotalSentBytes());
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1145 request.url = GURL("http://www.google.com/"); 1172 request.url = GURL("http://www.google.com/");
1146 request.end_stream_on_headers = false; 1173 request.end_stream_on_headers = false;
1147 request.priority = DEFAULT_PRIORITY; 1174 request.priority = DEFAULT_PRIORITY;
1148 1175
1149 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1176 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1150 std::unique_ptr<TestDelegateBase> delegate( 1177 std::unique_ptr<TestDelegateBase> delegate(
1151 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1178 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1152 delegate->DoNotSendRequestHeadersAutomatically(); 1179 delegate->DoNotSendRequestHeadersAutomatically();
1153 delegate->Start(&request, net_log().bound(), session()->CreateHandle()); 1180 delegate->Start(&request, net_log().bound(), session()->CreateHandle());
1154 ConfirmHandshake(); 1181 ConfirmHandshake();
1155 delegate->WaitUntilNextCallback(); // OnStreamReady 1182 delegate->WaitUntilNextCallback(kOnStreamReady);
1156 1183
1157 // Send a Data packet. 1184 // Send a Data packet.
1158 scoped_refptr<StringIOBuffer> buf1(new StringIOBuffer(kBody1)); 1185 scoped_refptr<StringIOBuffer> buf1(new StringIOBuffer(kBody1));
1159 scoped_refptr<StringIOBuffer> buf2(new StringIOBuffer(kBody2)); 1186 scoped_refptr<StringIOBuffer> buf2(new StringIOBuffer(kBody2));
1160 1187
1161 std::vector<int> lengths = {buf1->size(), buf2->size()}; 1188 std::vector<int> lengths = {buf1->size(), buf2->size()};
1162 delegate->SendvData({buf1, buf2}, lengths, !kFin); 1189 delegate->SendvData({buf1, buf2}, lengths, !kFin);
1163 delegate->WaitUntilNextCallback(); // OnDataSent 1190 delegate->WaitUntilNextCallback(kOnDataSent);
1164 1191
1165 // Server acks the request. 1192 // Server acks the request.
1166 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0)); 1193 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0));
1167 1194
1168 // Server sends the response headers. 1195 // Server sends the response headers.
1169 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1196 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1170 size_t spdy_response_headers_frame_length; 1197 size_t spdy_response_headers_frame_length;
1171 QuicStreamOffset offset = 0; 1198 QuicStreamOffset offset = 0;
1172 ProcessPacket(ConstructResponseHeadersPacket( 1199 ProcessPacket(ConstructResponseHeadersPacket(
1173 2, !kFin, std::move(response_headers), 1200 2, !kFin, std::move(response_headers),
1174 &spdy_response_headers_frame_length, &offset)); 1201 &spdy_response_headers_frame_length, &offset));
1175 1202
1176 delegate->WaitUntilNextCallback(); // OnHeadersReceived 1203 delegate->WaitUntilNextCallback(kOnHeadersReceived);
1177 TestCompletionCallback cb; 1204 TestCompletionCallback cb;
1178 int rv = delegate->ReadData(cb.callback()); 1205 int rv = delegate->ReadData(cb.callback());
1179 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 1206 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
1180 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); 1207 EXPECT_EQ("200", delegate->response_headers().find(":status")->second);
1181 const char kResponseBody[] = "Hello world!"; 1208 const char kResponseBody[] = "Hello world!";
1182 // Server sends data. 1209 // Server sends data.
1183 ProcessPacket( 1210 ProcessPacket(
1184 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); 1211 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody));
1185 1212
1186 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult()); 1213 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult());
1187 1214
1188 // Send a second Data packet. 1215 // Send a second Data packet.
1189 scoped_refptr<StringIOBuffer> buf3(new StringIOBuffer(kBody3)); 1216 scoped_refptr<StringIOBuffer> buf3(new StringIOBuffer(kBody3));
1190 scoped_refptr<StringIOBuffer> buf4(new StringIOBuffer(kBody4)); 1217 scoped_refptr<StringIOBuffer> buf4(new StringIOBuffer(kBody4));
1191 scoped_refptr<StringIOBuffer> buf5(new StringIOBuffer(kBody5)); 1218 scoped_refptr<StringIOBuffer> buf5(new StringIOBuffer(kBody5));
1192 1219
1193 delegate->SendvData({buf3, buf4, buf5}, 1220 delegate->SendvData({buf3, buf4, buf5},
1194 {buf3->size(), buf4->size(), buf5->size()}, kFin); 1221 {buf3->size(), buf4->size(), buf5->size()}, kFin);
1195 delegate->WaitUntilNextCallback(); // OnDataSent 1222 delegate->WaitUntilNextCallback(kOnDataSent);
1196 1223
1197 size_t spdy_trailers_frame_length; 1224 size_t spdy_trailers_frame_length;
1198 SpdyHeaderBlock trailers; 1225 SpdyHeaderBlock trailers;
1199 trailers["foo"] = "bar"; 1226 trailers["foo"] = "bar";
1200 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); 1227 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody));
1201 // Server sends trailers. 1228 // Server sends trailers.
1202 ProcessPacket(ConstructResponseTrailersPacket( 1229 ProcessPacket(ConstructResponseTrailersPacket(
1203 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset)); 1230 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset));
1204 1231
1205 delegate->WaitUntilNextCallback(); // OnTrailersReceived 1232 delegate->WaitUntilNextCallback(kOnTrailersReceived);
1206 trailers.erase(kFinalOffsetHeaderKey); 1233 trailers.erase(kFinalOffsetHeaderKey);
1207 EXPECT_EQ(trailers, delegate->trailers()); 1234 EXPECT_EQ(trailers, delegate->trailers());
1208 EXPECT_THAT(delegate->ReadData(cb.callback()), IsOk()); 1235 EXPECT_THAT(delegate->ReadData(cb.callback()), IsOk());
1209 1236
1210 EXPECT_EQ(1, delegate->on_data_read_count()); 1237 EXPECT_EQ(1, delegate->on_data_read_count());
1211 EXPECT_EQ(2, delegate->on_data_sent_count()); 1238 EXPECT_EQ(2, delegate->on_data_sent_count());
1212 EXPECT_EQ(kProtoQUIC, delegate->GetProtocol()); 1239 EXPECT_EQ(kProtoQUIC, delegate->GetProtocol());
1213 EXPECT_EQ( 1240 EXPECT_EQ(
1214 static_cast<int64_t>(spdy_request_headers_frame_length + strlen(kBody1) + 1241 static_cast<int64_t>(spdy_request_headers_frame_length + strlen(kBody1) +
1215 strlen(kBody2) + strlen(kBody3) + strlen(kBody4) + 1242 strlen(kBody2) + strlen(kBody3) + strlen(kBody4) +
(...skipping 23 matching lines...) Expand all
1239 request.method = "POST"; 1266 request.method = "POST";
1240 request.url = GURL("http://www.google.com/"); 1267 request.url = GURL("http://www.google.com/");
1241 request.end_stream_on_headers = false; 1268 request.end_stream_on_headers = false;
1242 request.priority = DEFAULT_PRIORITY; 1269 request.priority = DEFAULT_PRIORITY;
1243 1270
1244 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1271 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1245 std::unique_ptr<TestDelegateBase> delegate( 1272 std::unique_ptr<TestDelegateBase> delegate(
1246 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1273 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1247 delegate->Start(&request, net_log().bound(), session()->CreateHandle()); 1274 delegate->Start(&request, net_log().bound(), session()->CreateHandle());
1248 ConfirmHandshake(); 1275 ConfirmHandshake();
1249 delegate->WaitUntilNextCallback(); // OnStreamReady 1276 delegate->WaitUntilNextCallback(kOnStreamReady);
1250 1277
1251 // Send a DATA frame. 1278 // Send a DATA frame.
1252 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData)); 1279 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData));
1253 1280
1254 delegate->SendData(buf, buf->size(), true); 1281 delegate->SendData(buf, buf->size(), true);
1255 delegate->WaitUntilNextCallback(); // OnDataSent 1282 delegate->WaitUntilNextCallback(kOnDataSent);
1256 1283
1257 // Server acks the request. 1284 // Server acks the request.
1258 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0)); 1285 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0));
1259 1286
1260 // Server sends the response headers. 1287 // Server sends the response headers.
1261 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1288 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1262 size_t spdy_response_headers_frame_length; 1289 size_t spdy_response_headers_frame_length;
1263 QuicStreamOffset offset = 0; 1290 QuicStreamOffset offset = 0;
1264 ProcessPacket(ConstructResponseHeadersPacket( 1291 ProcessPacket(ConstructResponseHeadersPacket(
1265 2, !kFin, std::move(response_headers), 1292 2, !kFin, std::move(response_headers),
1266 &spdy_response_headers_frame_length, &offset)); 1293 &spdy_response_headers_frame_length, &offset));
1267 1294
1268 delegate->WaitUntilNextCallback(); // OnHeadersReceived 1295 delegate->WaitUntilNextCallback(kOnHeadersReceived);
1269 TestCompletionCallback cb; 1296 TestCompletionCallback cb;
1270 int rv = delegate->ReadData(cb.callback()); 1297 int rv = delegate->ReadData(cb.callback());
1271 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 1298 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
1272 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); 1299 EXPECT_EQ("200", delegate->response_headers().find(":status")->second);
1273 const char kResponseBody[] = "Hello world!"; 1300 const char kResponseBody[] = "Hello world!";
1274 // Server sends data. 1301 // Server sends data.
1275 ProcessPacket( 1302 ProcessPacket(
1276 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); 1303 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody));
1277 1304
1278 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult()); 1305 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult());
1279 1306
1280 size_t spdy_trailers_frame_length; 1307 size_t spdy_trailers_frame_length;
1281 SpdyHeaderBlock trailers; 1308 SpdyHeaderBlock trailers;
1282 trailers["foo"] = "bar"; 1309 trailers["foo"] = "bar";
1283 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); 1310 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody));
1284 // Server sends trailers. 1311 // Server sends trailers.
1285 ProcessPacket(ConstructResponseTrailersPacket( 1312 ProcessPacket(ConstructResponseTrailersPacket(
1286 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset)); 1313 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset));
1287 1314
1288 delegate->WaitUntilNextCallback(); // OnTrailersReceived 1315 delegate->WaitUntilNextCallback(kOnTrailersReceived);
1289 trailers.erase(kFinalOffsetHeaderKey); 1316 trailers.erase(kFinalOffsetHeaderKey);
1290 EXPECT_EQ(trailers, delegate->trailers()); 1317 EXPECT_EQ(trailers, delegate->trailers());
1291 EXPECT_THAT(delegate->ReadData(cb.callback()), IsOk()); 1318 EXPECT_THAT(delegate->ReadData(cb.callback()), IsOk());
1292 1319
1293 EXPECT_EQ(1, delegate->on_data_read_count()); 1320 EXPECT_EQ(1, delegate->on_data_read_count());
1294 EXPECT_EQ(1, delegate->on_data_sent_count()); 1321 EXPECT_EQ(1, delegate->on_data_sent_count());
1295 EXPECT_EQ(kProtoQUIC, delegate->GetProtocol()); 1322 EXPECT_EQ(kProtoQUIC, delegate->GetProtocol());
1296 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length + 1323 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length +
1297 strlen(kUploadData)), 1324 strlen(kUploadData)),
1298 delegate->GetTotalSentBytes()); 1325 delegate->GetTotalSentBytes());
(...skipping 17 matching lines...) Expand all
1316 BidirectionalStreamRequestInfo request; 1343 BidirectionalStreamRequestInfo request;
1317 request.method = "PUT"; 1344 request.method = "PUT";
1318 request.url = GURL("http://www.google.com/"); 1345 request.url = GURL("http://www.google.com/");
1319 request.end_stream_on_headers = false; 1346 request.end_stream_on_headers = false;
1320 request.priority = DEFAULT_PRIORITY; 1347 request.priority = DEFAULT_PRIORITY;
1321 1348
1322 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1349 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1323 std::unique_ptr<TestDelegateBase> delegate( 1350 std::unique_ptr<TestDelegateBase> delegate(
1324 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1351 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1325 delegate->Start(&request, net_log().bound(), session()->CreateHandle()); 1352 delegate->Start(&request, net_log().bound(), session()->CreateHandle());
1326 delegate->WaitUntilNextCallback(); // OnStreamReady 1353 delegate->WaitUntilNextCallback(kOnStreamReady);
1327 1354
1328 // Send a DATA frame. 1355 // Send a DATA frame.
1329 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData)); 1356 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData));
1330 1357
1331 delegate->SendData(buf, buf->size(), true); 1358 delegate->SendData(buf, buf->size(), true);
1332 delegate->WaitUntilNextCallback(); // OnDataSent 1359 delegate->WaitUntilNextCallback(kOnDataSent);
1333 1360
1334 // Server acks the request. 1361 // Server acks the request.
1335 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0)); 1362 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0));
1336 1363
1337 // Server sends the response headers. 1364 // Server sends the response headers.
1338 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1365 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1339 size_t spdy_response_headers_frame_length; 1366 size_t spdy_response_headers_frame_length;
1340 QuicStreamOffset offset = 0; 1367 QuicStreamOffset offset = 0;
1341 ProcessPacket(ConstructResponseHeadersPacket( 1368 ProcessPacket(ConstructResponseHeadersPacket(
1342 2, !kFin, std::move(response_headers), 1369 2, !kFin, std::move(response_headers),
1343 &spdy_response_headers_frame_length, &offset)); 1370 &spdy_response_headers_frame_length, &offset));
1344 1371
1345 delegate->WaitUntilNextCallback(); // OnHeadersReceived 1372 delegate->WaitUntilNextCallback(kOnHeadersReceived);
1346 TestCompletionCallback cb; 1373 TestCompletionCallback cb;
1347 int rv = delegate->ReadData(cb.callback()); 1374 int rv = delegate->ReadData(cb.callback());
1348 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 1375 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
1349 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); 1376 EXPECT_EQ("200", delegate->response_headers().find(":status")->second);
1350 const char kResponseBody[] = "Hello world!"; 1377 const char kResponseBody[] = "Hello world!";
1351 // Server sends data. 1378 // Server sends data.
1352 ProcessPacket( 1379 ProcessPacket(
1353 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); 1380 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody));
1354 1381
1355 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult()); 1382 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult());
1356 1383
1357 size_t spdy_trailers_frame_length; 1384 size_t spdy_trailers_frame_length;
1358 SpdyHeaderBlock trailers; 1385 SpdyHeaderBlock trailers;
1359 trailers["foo"] = "bar"; 1386 trailers["foo"] = "bar";
1360 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); 1387 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody));
1361 // Server sends trailers. 1388 // Server sends trailers.
1362 ProcessPacket(ConstructResponseTrailersPacket( 1389 ProcessPacket(ConstructResponseTrailersPacket(
1363 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset)); 1390 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset));
1364 1391
1365 delegate->WaitUntilNextCallback(); // OnTrailersReceived 1392 delegate->WaitUntilNextCallback(kOnTrailersReceived);
1366 trailers.erase(kFinalOffsetHeaderKey); 1393 trailers.erase(kFinalOffsetHeaderKey);
1367 EXPECT_EQ(trailers, delegate->trailers()); 1394 EXPECT_EQ(trailers, delegate->trailers());
1368 EXPECT_THAT(delegate->ReadData(cb.callback()), IsOk()); 1395 EXPECT_THAT(delegate->ReadData(cb.callback()), IsOk());
1369 1396
1370 EXPECT_EQ(1, delegate->on_data_read_count()); 1397 EXPECT_EQ(1, delegate->on_data_read_count());
1371 EXPECT_EQ(1, delegate->on_data_sent_count()); 1398 EXPECT_EQ(1, delegate->on_data_sent_count());
1372 EXPECT_EQ(kProtoQUIC, delegate->GetProtocol()); 1399 EXPECT_EQ(kProtoQUIC, delegate->GetProtocol());
1373 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length + 1400 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length +
1374 strlen(kUploadData)), 1401 strlen(kUploadData)),
1375 delegate->GetTotalSentBytes()); 1402 delegate->GetTotalSentBytes());
(...skipping 22 matching lines...) Expand all
1398 request.method = "POST"; 1425 request.method = "POST";
1399 request.url = GURL("http://www.google.com/"); 1426 request.url = GURL("http://www.google.com/");
1400 request.end_stream_on_headers = false; 1427 request.end_stream_on_headers = false;
1401 request.priority = DEFAULT_PRIORITY; 1428 request.priority = DEFAULT_PRIORITY;
1402 1429
1403 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1430 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1404 std::unique_ptr<TestDelegateBase> delegate( 1431 std::unique_ptr<TestDelegateBase> delegate(
1405 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1432 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1406 delegate->Start(&request, net_log().bound(), session()->CreateHandle()); 1433 delegate->Start(&request, net_log().bound(), session()->CreateHandle());
1407 ConfirmHandshake(); 1434 ConfirmHandshake();
1408 delegate->WaitUntilNextCallback(); // OnStreamReady 1435 delegate->WaitUntilNextCallback(kOnStreamReady);
1409 1436
1410 // Server acks the request. 1437 // Server acks the request.
1411 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0)); 1438 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0));
1412 1439
1413 // Server sends the response headers. 1440 // Server sends the response headers.
1414 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1441 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1415 size_t spdy_response_headers_frame_length; 1442 size_t spdy_response_headers_frame_length;
1416 ProcessPacket( 1443 ProcessPacket(
1417 ConstructResponseHeadersPacket(2, !kFin, std::move(response_headers), 1444 ConstructResponseHeadersPacket(2, !kFin, std::move(response_headers),
1418 &spdy_response_headers_frame_length, 0)); 1445 &spdy_response_headers_frame_length, 0));
1419 1446
1420 delegate->WaitUntilNextCallback(); // OnHeadersReceived 1447 delegate->WaitUntilNextCallback(kOnHeadersReceived);
1421 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); 1448 EXPECT_EQ("200", delegate->response_headers().find(":status")->second);
1422 1449
1423 // Client sends a data packet. 1450 // Client sends a data packet.
1424 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData)); 1451 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData));
1425 1452
1426 delegate->SendData(buf, buf->size(), false); 1453 delegate->SendData(buf, buf->size(), false);
1427 delegate->WaitUntilNextCallback(); // OnDataSent 1454 delegate->WaitUntilNextCallback(kOnDataSent);
1428 1455
1429 TestCompletionCallback cb; 1456 TestCompletionCallback cb;
1430 int rv = delegate->ReadData(cb.callback()); 1457 int rv = delegate->ReadData(cb.callback());
1431 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 1458 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
1432 const char kResponseBody[] = "Hello world!"; 1459 const char kResponseBody[] = "Hello world!";
1433 1460
1434 // Server sends a data packet. 1461 // Server sends a data packet.
1435 ProcessPacket(ConstructAckAndDataPacket(3, !kIncludeVersion, 2, 1, 1, !kFin, 1462 ProcessPacket(ConstructAckAndDataPacket(3, !kIncludeVersion, 2, 1, 1, !kFin,
1436 0, kResponseBody, &server_maker_)); 1463 0, kResponseBody, &server_maker_));
1437 1464
1438 EXPECT_EQ(static_cast<int64_t>(strlen(kResponseBody)), cb.WaitForResult()); 1465 EXPECT_EQ(static_cast<int64_t>(strlen(kResponseBody)), cb.WaitForResult());
1439 EXPECT_EQ(std::string(kResponseBody), delegate->data_received()); 1466 EXPECT_EQ(std::string(kResponseBody), delegate->data_received());
1440 1467
1441 // Client sends a data packet. 1468 // Client sends a data packet.
1442 delegate->SendData(buf, buf->size(), true); 1469 delegate->SendData(buf, buf->size(), true);
1443 delegate->WaitUntilNextCallback(); // OnDataSent 1470 delegate->WaitUntilNextCallback(kOnDataSent);
1444 1471
1445 TestCompletionCallback cb2; 1472 TestCompletionCallback cb2;
1446 rv = delegate->ReadData(cb2.callback()); 1473 rv = delegate->ReadData(cb2.callback());
1447 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 1474 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
1448 ProcessPacket(ConstructAckAndDataPacket(4, !kIncludeVersion, 3, 1, 1, kFin, 1475 ProcessPacket(ConstructAckAndDataPacket(4, !kIncludeVersion, 3, 1, 1, kFin,
1449 strlen(kResponseBody), kResponseBody, 1476 strlen(kResponseBody), kResponseBody,
1450 &server_maker_)); 1477 &server_maker_));
1451 1478
1452 EXPECT_EQ(static_cast<int64_t>(strlen(kResponseBody)), cb2.WaitForResult()); 1479 EXPECT_EQ(static_cast<int64_t>(strlen(kResponseBody)), cb2.WaitForResult());
1453 1480
(...skipping 26 matching lines...) Expand all
1480 BidirectionalStreamRequestInfo request; 1507 BidirectionalStreamRequestInfo request;
1481 request.method = "GET"; 1508 request.method = "GET";
1482 request.url = GURL("http://www.google.com/"); 1509 request.url = GURL("http://www.google.com/");
1483 request.end_stream_on_headers = true; 1510 request.end_stream_on_headers = true;
1484 request.priority = DEFAULT_PRIORITY; 1511 request.priority = DEFAULT_PRIORITY;
1485 1512
1486 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1513 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1487 std::unique_ptr<TestDelegateBase> delegate( 1514 std::unique_ptr<TestDelegateBase> delegate(
1488 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1515 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1489 delegate->Start(&request, net_log().bound(), session()->CreateHandle()); 1516 delegate->Start(&request, net_log().bound(), session()->CreateHandle());
1490 delegate->WaitUntilNextCallback(); // OnStreamReady 1517 delegate->WaitUntilNextCallback(kOnStreamReady);
1491 ConfirmHandshake(); 1518 ConfirmHandshake();
1492 1519
1493 // Server sends a Rst. 1520 // Server sends a Rst.
1494 ProcessPacket(ConstructServerRstStreamPacket(1)); 1521 ProcessPacket(ConstructServerRstStreamPacket(1));
1495 1522
1496 delegate->WaitUntilNextCallback(); // OnFailed 1523 EXPECT_TRUE(delegate->on_failed_called());
1524
1497 TestCompletionCallback cb; 1525 TestCompletionCallback cb;
1498 EXPECT_THAT(delegate->ReadData(cb.callback()), 1526 EXPECT_THAT(delegate->ReadData(cb.callback()),
1499 IsError(ERR_QUIC_PROTOCOL_ERROR)); 1527 IsError(ERR_QUIC_PROTOCOL_ERROR));
1500 1528
1501 base::RunLoop().RunUntilIdle(); 1529 base::RunLoop().RunUntilIdle();
1502 1530
1503 EXPECT_THAT(delegate->error(), IsError(ERR_QUIC_PROTOCOL_ERROR)); 1531 EXPECT_THAT(delegate->error(), IsError(ERR_QUIC_PROTOCOL_ERROR));
1504 EXPECT_EQ(0, delegate->on_data_read_count()); 1532 EXPECT_EQ(0, delegate->on_data_read_count());
1505 EXPECT_EQ(0, delegate->on_data_sent_count()); 1533 EXPECT_EQ(0, delegate->on_data_sent_count());
1506 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), 1534 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length),
(...skipping 17 matching lines...) Expand all
1524 BidirectionalStreamRequestInfo request; 1552 BidirectionalStreamRequestInfo request;
1525 request.method = "GET"; 1553 request.method = "GET";
1526 request.url = GURL("http://www.google.com/"); 1554 request.url = GURL("http://www.google.com/");
1527 request.end_stream_on_headers = true; 1555 request.end_stream_on_headers = true;
1528 request.priority = DEFAULT_PRIORITY; 1556 request.priority = DEFAULT_PRIORITY;
1529 1557
1530 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1558 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1531 std::unique_ptr<TestDelegateBase> delegate( 1559 std::unique_ptr<TestDelegateBase> delegate(
1532 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1560 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1533 delegate->Start(&request, net_log().bound(), session()->CreateHandle()); 1561 delegate->Start(&request, net_log().bound(), session()->CreateHandle());
1534 delegate->WaitUntilNextCallback(); // OnStreamReady 1562 delegate->WaitUntilNextCallback(kOnStreamReady);
1535 ConfirmHandshake(); 1563 ConfirmHandshake();
1536 1564
1537 // Server acks the request. 1565 // Server acks the request.
1538 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0)); 1566 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0));
1539 1567
1540 // Server sends the response headers. 1568 // Server sends the response headers.
1541 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1569 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1542 1570
1543 size_t spdy_response_headers_frame_length; 1571 size_t spdy_response_headers_frame_length;
1544 QuicStreamOffset offset = 0; 1572 QuicStreamOffset offset = 0;
1545 ProcessPacket(ConstructResponseHeadersPacket( 1573 ProcessPacket(ConstructResponseHeadersPacket(
1546 2, !kFin, std::move(response_headers), 1574 2, !kFin, std::move(response_headers),
1547 &spdy_response_headers_frame_length, &offset)); 1575 &spdy_response_headers_frame_length, &offset));
1548 1576
1549 delegate->WaitUntilNextCallback(); // OnHeadersReceived 1577 delegate->WaitUntilNextCallback(kOnHeadersReceived);
1550 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); 1578 EXPECT_EQ("200", delegate->response_headers().find(":status")->second);
1551 1579
1552 TestCompletionCallback cb; 1580 TestCompletionCallback cb;
1553 int rv = delegate->ReadData(cb.callback()); 1581 int rv = delegate->ReadData(cb.callback());
1554 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 1582 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
1555 1583
1556 // Server sends a Rst. 1584 // Server sends a Rst.
1557 ProcessPacket(ConstructServerRstStreamPacket(3)); 1585 ProcessPacket(ConstructServerRstStreamPacket(3));
1558 1586
1559 delegate->WaitUntilNextCallback(); // OnFailed 1587 EXPECT_TRUE(delegate->on_failed_called());
1560 1588
1561 EXPECT_THAT(delegate->ReadData(cb.callback()), 1589 EXPECT_THAT(delegate->ReadData(cb.callback()),
1562 IsError(ERR_QUIC_PROTOCOL_ERROR)); 1590 IsError(ERR_QUIC_PROTOCOL_ERROR));
1563 EXPECT_THAT(delegate->error(), IsError(ERR_QUIC_PROTOCOL_ERROR)); 1591 EXPECT_THAT(delegate->error(), IsError(ERR_QUIC_PROTOCOL_ERROR));
1564 EXPECT_EQ(0, delegate->on_data_read_count()); 1592 EXPECT_EQ(0, delegate->on_data_read_count());
1565 EXPECT_EQ(0, delegate->on_data_sent_count()); 1593 EXPECT_EQ(0, delegate->on_data_sent_count());
1566 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), 1594 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length),
1567 delegate->GetTotalSentBytes()); 1595 delegate->GetTotalSentBytes());
1568 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length), 1596 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length),
1569 delegate->GetTotalReceivedBytes()); 1597 delegate->GetTotalReceivedBytes());
(...skipping 13 matching lines...) Expand all
1583 request.method = "POST"; 1611 request.method = "POST";
1584 request.url = GURL("http://www.google.com/"); 1612 request.url = GURL("http://www.google.com/");
1585 request.end_stream_on_headers = false; 1613 request.end_stream_on_headers = false;
1586 request.priority = DEFAULT_PRIORITY; 1614 request.priority = DEFAULT_PRIORITY;
1587 1615
1588 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1616 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1589 std::unique_ptr<TestDelegateBase> delegate( 1617 std::unique_ptr<TestDelegateBase> delegate(
1590 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1618 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1591 delegate->Start(&request, net_log().bound(), session()->CreateHandle()); 1619 delegate->Start(&request, net_log().bound(), session()->CreateHandle());
1592 ConfirmHandshake(); 1620 ConfirmHandshake();
1593 delegate->WaitUntilNextCallback(); // OnStreamReady 1621 delegate->WaitUntilNextCallback(kOnStreamReady);
1594 1622
1595 // Server acks the request. 1623 // Server acks the request.
1596 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0)); 1624 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0));
1597 1625
1598 // Server sends the response headers. 1626 // Server sends the response headers.
1599 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1627 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1600 1628
1601 size_t spdy_response_headers_frame_length; 1629 size_t spdy_response_headers_frame_length;
1602 QuicStreamOffset offset = 0; 1630 QuicStreamOffset offset = 0;
1603 ProcessPacket(ConstructResponseHeadersPacket( 1631 ProcessPacket(ConstructResponseHeadersPacket(
1604 2, !kFin, std::move(response_headers), 1632 2, !kFin, std::move(response_headers),
1605 &spdy_response_headers_frame_length, &offset)); 1633 &spdy_response_headers_frame_length, &offset));
1606 1634
1607 delegate->WaitUntilNextCallback(); // OnHeadersReceived 1635 delegate->WaitUntilNextCallback(kOnHeadersReceived);
1608 TestCompletionCallback cb; 1636 TestCompletionCallback cb;
1609 int rv = delegate->ReadData(cb.callback()); 1637 int rv = delegate->ReadData(cb.callback());
1610 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 1638 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
1611 session()->connection()->CloseConnection( 1639 session()->connection()->CloseConnection(
1612 QUIC_NO_ERROR, "test", ConnectionCloseBehavior::SILENT_CLOSE); 1640 QUIC_NO_ERROR, "test", ConnectionCloseBehavior::SILENT_CLOSE);
1613 delegate->WaitUntilNextCallback(); // OnFailed
1614 EXPECT_TRUE(delegate->on_failed_called()); 1641 EXPECT_TRUE(delegate->on_failed_called());
1615 1642
1616 // Try to send data after OnFailed(), should not get called back. 1643 // Try to send data after OnFailed(), should not get called back.
1617 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData)); 1644 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData));
1618 delegate->SendData(buf, buf->size(), false); 1645 delegate->SendData(buf, buf->size(), false);
1619 base::RunLoop().RunUntilIdle(); 1646 base::RunLoop().RunUntilIdle();
1620 1647
1621 EXPECT_THAT(delegate->ReadData(cb.callback()), IsError(ERR_UNEXPECTED)); 1648 EXPECT_THAT(delegate->ReadData(cb.callback()), IsError(ERR_UNEXPECTED));
1622 EXPECT_THAT(delegate->error(), IsError(ERR_UNEXPECTED)); 1649 EXPECT_THAT(delegate->error(), IsError(ERR_UNEXPECTED));
1623 EXPECT_EQ(0, delegate->on_data_read_count()); 1650 EXPECT_EQ(0, delegate->on_data_read_count());
(...skipping 16 matching lines...) Expand all
1640 request.priority = DEFAULT_PRIORITY; 1667 request.priority = DEFAULT_PRIORITY;
1641 1668
1642 ConfirmHandshake(); 1669 ConfirmHandshake();
1643 session()->connection()->CloseConnection( 1670 session()->connection()->CloseConnection(
1644 QUIC_NO_ERROR, "test", ConnectionCloseBehavior::SILENT_CLOSE); 1671 QUIC_NO_ERROR, "test", ConnectionCloseBehavior::SILENT_CLOSE);
1645 1672
1646 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1673 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1647 std::unique_ptr<TestDelegateBase> delegate( 1674 std::unique_ptr<TestDelegateBase> delegate(
1648 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1675 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1649 delegate->Start(&request, net_log().bound(), session()->CreateHandle()); 1676 delegate->Start(&request, net_log().bound(), session()->CreateHandle());
1650 delegate->WaitUntilNextCallback(); // OnFailed 1677 delegate->WaitUntilNextCallback(kOnFailed);
1651 EXPECT_TRUE(delegate->on_failed_called()); 1678 EXPECT_TRUE(delegate->on_failed_called());
1652 EXPECT_THAT(delegate->error(), IsError(ERR_CONNECTION_CLOSED)); 1679 EXPECT_THAT(delegate->error(), IsError(ERR_CONNECTION_CLOSED));
1653 } 1680 }
1654 1681
1655 TEST_P(BidirectionalStreamQuicImplTest, SessionClosedBeforeStartNotConfirmed) { 1682 TEST_P(BidirectionalStreamQuicImplTest, SessionClosedBeforeStartNotConfirmed) {
1656 SetRequest("POST", "/", DEFAULT_PRIORITY); 1683 SetRequest("POST", "/", DEFAULT_PRIORITY);
1657 Initialize(); 1684 Initialize();
1658 1685
1659 session()->connection()->CloseConnection( 1686 session()->connection()->CloseConnection(
1660 QUIC_NO_ERROR, "test", ConnectionCloseBehavior::SILENT_CLOSE); 1687 QUIC_NO_ERROR, "test", ConnectionCloseBehavior::SILENT_CLOSE);
1661 1688
1662 BidirectionalStreamRequestInfo request; 1689 BidirectionalStreamRequestInfo request;
1663 request.method = "POST"; 1690 request.method = "POST";
1664 request.url = GURL("http://www.google.com/"); 1691 request.url = GURL("http://www.google.com/");
1665 request.end_stream_on_headers = false; 1692 request.end_stream_on_headers = false;
1666 request.priority = DEFAULT_PRIORITY; 1693 request.priority = DEFAULT_PRIORITY;
1667 1694
1668 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1695 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1669 std::unique_ptr<TestDelegateBase> delegate( 1696 std::unique_ptr<TestDelegateBase> delegate(
1670 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1697 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1671 delegate->Start(&request, net_log().bound(), session()->CreateHandle()); 1698 delegate->Start(&request, net_log().bound(), session()->CreateHandle());
1672 delegate->WaitUntilNextCallback(); // OnFailed 1699 delegate->WaitUntilNextCallback(kOnFailed);
1673 EXPECT_TRUE(delegate->on_failed_called()); 1700 EXPECT_TRUE(delegate->on_failed_called());
1674 EXPECT_THAT(delegate->error(), IsError(ERR_QUIC_HANDSHAKE_FAILED)); 1701 EXPECT_THAT(delegate->error(), IsError(ERR_QUIC_HANDSHAKE_FAILED));
1675 } 1702 }
1676 1703
1677 TEST_P(BidirectionalStreamQuicImplTest, SessionCloseDuringOnStreamReady) { 1704 TEST_P(BidirectionalStreamQuicImplTest, SessionCloseDuringOnStreamReady) {
1678 SetRequest("POST", "/", DEFAULT_PRIORITY); 1705 SetRequest("POST", "/", DEFAULT_PRIORITY);
1679 QuicStreamOffset header_stream_offset = 0; 1706 QuicStreamOffset header_stream_offset = 0;
1680 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset)); 1707 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset));
1681 AddWriteError(SYNCHRONOUS, ERR_CONNECTION_REFUSED); 1708 AddWriteError(SYNCHRONOUS, ERR_CONNECTION_REFUSED);
1682 1709
1683 Initialize(); 1710 Initialize();
1684 1711
1685 BidirectionalStreamRequestInfo request; 1712 BidirectionalStreamRequestInfo request;
1686 request.method = "POST"; 1713 request.method = "POST";
1687 request.url = GURL("http://www.google.com/"); 1714 request.url = GURL("http://www.google.com/");
1688 request.end_stream_on_headers = false; 1715 request.end_stream_on_headers = false;
1689 request.priority = DEFAULT_PRIORITY; 1716 request.priority = DEFAULT_PRIORITY;
1690 1717
1691 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1718 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1692 std::unique_ptr<DeleteStreamDelegate> delegate(new DeleteStreamDelegate( 1719 std::unique_ptr<DeleteStreamDelegate> delegate(new DeleteStreamDelegate(
1693 read_buffer.get(), kReadBufferSize, DeleteStreamDelegate::ON_FAILED)); 1720 read_buffer.get(), kReadBufferSize, DeleteStreamDelegate::ON_FAILED));
1694 delegate->Start(&request, net_log().bound(), session()->CreateHandle()); 1721 delegate->Start(&request, net_log().bound(), session()->CreateHandle());
1695 ConfirmHandshake(); 1722 ConfirmHandshake();
1696 delegate->WaitUntilNextCallback(); // OnStreamReady 1723 delegate->WaitUntilNextCallback(kOnFailed);
1697 1724
1698 EXPECT_EQ(0, delegate->on_data_read_count()); 1725 EXPECT_EQ(0, delegate->on_data_read_count());
1699 EXPECT_EQ(0, delegate->on_data_sent_count()); 1726 EXPECT_EQ(0, delegate->on_data_sent_count());
1700 } 1727 }
1701 1728
1702 TEST_P(BidirectionalStreamQuicImplTest, DeleteStreamDuringOnStreamReady) { 1729 TEST_P(BidirectionalStreamQuicImplTest, DeleteStreamDuringOnStreamReady) {
1703 SetRequest("POST", "/", DEFAULT_PRIORITY); 1730 SetRequest("POST", "/", DEFAULT_PRIORITY);
1704 size_t spdy_request_headers_frame_length; 1731 size_t spdy_request_headers_frame_length;
1705 QuicStreamOffset header_stream_offset = 0; 1732 QuicStreamOffset header_stream_offset = 0;
1706 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset)); 1733 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset));
1707 AddWrite(ConstructRequestHeadersPacketInner( 1734 AddWrite(ConstructRequestHeadersPacketInner(
1708 2, GetNthClientInitiatedStreamId(0), !kFin, DEFAULT_PRIORITY, 1735 2, GetNthClientInitiatedStreamId(0), !kFin, DEFAULT_PRIORITY,
1709 &spdy_request_headers_frame_length, &header_stream_offset)); 1736 &spdy_request_headers_frame_length, &header_stream_offset));
1710 AddWrite(ConstructClientEarlyRstStreamPacket(3)); 1737 AddWrite(ConstructClientEarlyRstStreamPacket(3));
1711 1738
1712 Initialize(); 1739 Initialize();
1713 1740
1714 BidirectionalStreamRequestInfo request; 1741 BidirectionalStreamRequestInfo request;
1715 request.method = "POST"; 1742 request.method = "POST";
1716 request.url = GURL("http://www.google.com/"); 1743 request.url = GURL("http://www.google.com/");
1717 request.end_stream_on_headers = false; 1744 request.end_stream_on_headers = false;
1718 request.priority = DEFAULT_PRIORITY; 1745 request.priority = DEFAULT_PRIORITY;
1719 1746
1720 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1747 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1721 std::unique_ptr<DeleteStreamDelegate> delegate( 1748 std::unique_ptr<DeleteStreamDelegate> delegate(
1722 new DeleteStreamDelegate(read_buffer.get(), kReadBufferSize, 1749 new DeleteStreamDelegate(read_buffer.get(), kReadBufferSize,
1723 DeleteStreamDelegate::ON_STREAM_READY)); 1750 DeleteStreamDelegate::ON_STREAM_READY));
1724 delegate->Start(&request, net_log().bound(), session()->CreateHandle()); 1751 delegate->Start(&request, net_log().bound(), session()->CreateHandle());
1725 ConfirmHandshake(); 1752 ConfirmHandshake();
1726 delegate->WaitUntilNextCallback(); // OnStreamReady 1753 delegate->WaitUntilNextCallback(kOnStreamReady);
1727 1754
1728 EXPECT_EQ(0, delegate->on_data_read_count()); 1755 EXPECT_EQ(0, delegate->on_data_read_count());
1729 EXPECT_EQ(0, delegate->on_data_sent_count()); 1756 EXPECT_EQ(0, delegate->on_data_sent_count());
1730 } 1757 }
1731 1758
1732 TEST_P(BidirectionalStreamQuicImplTest, DeleteStreamAfterReadData) { 1759 TEST_P(BidirectionalStreamQuicImplTest, DeleteStreamAfterReadData) {
1733 SetRequest("POST", "/", DEFAULT_PRIORITY); 1760 SetRequest("POST", "/", DEFAULT_PRIORITY);
1734 size_t spdy_request_headers_frame_length; 1761 size_t spdy_request_headers_frame_length;
1735 QuicStreamOffset header_stream_offset = 0; 1762 QuicStreamOffset header_stream_offset = 0;
1736 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset)); 1763 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset));
1737 AddWrite(ConstructRequestHeadersPacketInner( 1764 AddWrite(ConstructRequestHeadersPacketInner(
1738 2, GetNthClientInitiatedStreamId(0), !kFin, DEFAULT_PRIORITY, 1765 2, GetNthClientInitiatedStreamId(0), !kFin, DEFAULT_PRIORITY,
1739 &spdy_request_headers_frame_length, &header_stream_offset)); 1766 &spdy_request_headers_frame_length, &header_stream_offset));
1740 AddWrite(ConstructClientAckAndRstStreamPacket(3, 2, 1, 1)); 1767 AddWrite(ConstructClientAckAndRstStreamPacket(3, 2, 1, 1));
1741 1768
1742 Initialize(); 1769 Initialize();
1743 1770
1744 BidirectionalStreamRequestInfo request; 1771 BidirectionalStreamRequestInfo request;
1745 request.method = "POST"; 1772 request.method = "POST";
1746 request.url = GURL("http://www.google.com/"); 1773 request.url = GURL("http://www.google.com/");
1747 request.end_stream_on_headers = false; 1774 request.end_stream_on_headers = false;
1748 request.priority = DEFAULT_PRIORITY; 1775 request.priority = DEFAULT_PRIORITY;
1749 1776
1750 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1777 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1751 std::unique_ptr<TestDelegateBase> delegate( 1778 std::unique_ptr<TestDelegateBase> delegate(
1752 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1779 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1753 delegate->Start(&request, net_log().bound(), session()->CreateHandle()); 1780 delegate->Start(&request, net_log().bound(), session()->CreateHandle());
1754 ConfirmHandshake(); 1781 ConfirmHandshake();
1755 delegate->WaitUntilNextCallback(); // OnStreamReady 1782 delegate->WaitUntilNextCallback(kOnStreamReady);
1756 1783
1757 // Server acks the request. 1784 // Server acks the request.
1758 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0)); 1785 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0));
1759 1786
1760 // Server sends the response headers. 1787 // Server sends the response headers.
1761 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1788 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1762 size_t spdy_response_headers_frame_length; 1789 size_t spdy_response_headers_frame_length;
1763 ProcessPacket( 1790 ProcessPacket(
1764 ConstructResponseHeadersPacket(2, !kFin, std::move(response_headers), 1791 ConstructResponseHeadersPacket(2, !kFin, std::move(response_headers),
1765 &spdy_response_headers_frame_length, 0)); 1792 &spdy_response_headers_frame_length, 0));
1766 1793
1767 delegate->WaitUntilNextCallback(); // OnHeadersReceived 1794 delegate->WaitUntilNextCallback(kOnHeadersReceived);
1768 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); 1795 EXPECT_EQ("200", delegate->response_headers().find(":status")->second);
1769 1796
1770 // Cancel the stream after ReadData returns ERR_IO_PENDING. 1797 // Cancel the stream after ReadData returns ERR_IO_PENDING.
1771 TestCompletionCallback cb; 1798 TestCompletionCallback cb;
1772 EXPECT_THAT(delegate->ReadData(cb.callback()), IsError(ERR_IO_PENDING)); 1799 EXPECT_THAT(delegate->ReadData(cb.callback()), IsError(ERR_IO_PENDING));
1773 delegate->DeleteStream(); 1800 delegate->DeleteStream();
1774 1801
1775 base::RunLoop().RunUntilIdle(); 1802 base::RunLoop().RunUntilIdle();
1776 1803
1777 EXPECT_EQ(0, delegate->on_data_read_count()); 1804 EXPECT_EQ(0, delegate->on_data_read_count());
(...skipping 22 matching lines...) Expand all
1800 request.url = GURL("http://www.google.com/"); 1827 request.url = GURL("http://www.google.com/");
1801 request.end_stream_on_headers = false; 1828 request.end_stream_on_headers = false;
1802 request.priority = DEFAULT_PRIORITY; 1829 request.priority = DEFAULT_PRIORITY;
1803 1830
1804 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1831 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1805 std::unique_ptr<DeleteStreamDelegate> delegate( 1832 std::unique_ptr<DeleteStreamDelegate> delegate(
1806 new DeleteStreamDelegate(read_buffer.get(), kReadBufferSize, 1833 new DeleteStreamDelegate(read_buffer.get(), kReadBufferSize,
1807 DeleteStreamDelegate::ON_HEADERS_RECEIVED)); 1834 DeleteStreamDelegate::ON_HEADERS_RECEIVED));
1808 delegate->Start(&request, net_log().bound(), session()->CreateHandle()); 1835 delegate->Start(&request, net_log().bound(), session()->CreateHandle());
1809 ConfirmHandshake(); 1836 ConfirmHandshake();
1810 delegate->WaitUntilNextCallback(); // OnStreamReady 1837 delegate->WaitUntilNextCallback(kOnStreamReady);
1811 1838
1812 // Server acks the request. 1839 // Server acks the request.
1813 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0)); 1840 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0));
1814 1841
1815 // Server sends the response headers. 1842 // Server sends the response headers.
1816 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1843 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1817 1844
1818 size_t spdy_response_headers_frame_length; 1845 size_t spdy_response_headers_frame_length;
1819 ProcessPacket(ConstructResponseHeadersPacket( 1846 ProcessPacket(ConstructResponseHeadersPacket(
1820 2, !kFin, std::move(response_headers), 1847 2, !kFin, std::move(response_headers),
1821 &spdy_response_headers_frame_length, nullptr)); 1848 &spdy_response_headers_frame_length, nullptr));
1822 1849
1823 delegate->WaitUntilNextCallback(); // OnHeadersReceived 1850 delegate->WaitUntilNextCallback(kOnHeadersReceived);
1824 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); 1851 EXPECT_EQ("200", delegate->response_headers().find(":status")->second);
1825 1852
1826 base::RunLoop().RunUntilIdle(); 1853 base::RunLoop().RunUntilIdle();
1827 1854
1828 EXPECT_EQ(0, delegate->on_data_read_count()); 1855 EXPECT_EQ(0, delegate->on_data_read_count());
1829 EXPECT_EQ(0, delegate->on_data_sent_count()); 1856 EXPECT_EQ(0, delegate->on_data_sent_count());
1830 } 1857 }
1831 1858
1832 TEST_P(BidirectionalStreamQuicImplTest, DeleteStreamDuringOnDataRead) { 1859 TEST_P(BidirectionalStreamQuicImplTest, DeleteStreamDuringOnDataRead) {
1833 SetRequest("POST", "/", DEFAULT_PRIORITY); 1860 SetRequest("POST", "/", DEFAULT_PRIORITY);
(...skipping 12 matching lines...) Expand all
1846 request.method = "POST"; 1873 request.method = "POST";
1847 request.url = GURL("http://www.google.com/"); 1874 request.url = GURL("http://www.google.com/");
1848 request.end_stream_on_headers = false; 1875 request.end_stream_on_headers = false;
1849 request.priority = DEFAULT_PRIORITY; 1876 request.priority = DEFAULT_PRIORITY;
1850 1877
1851 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1878 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1852 std::unique_ptr<DeleteStreamDelegate> delegate(new DeleteStreamDelegate( 1879 std::unique_ptr<DeleteStreamDelegate> delegate(new DeleteStreamDelegate(
1853 read_buffer.get(), kReadBufferSize, DeleteStreamDelegate::ON_DATA_READ)); 1880 read_buffer.get(), kReadBufferSize, DeleteStreamDelegate::ON_DATA_READ));
1854 delegate->Start(&request, net_log().bound(), session()->CreateHandle()); 1881 delegate->Start(&request, net_log().bound(), session()->CreateHandle());
1855 ConfirmHandshake(); 1882 ConfirmHandshake();
1856 delegate->WaitUntilNextCallback(); // OnStreamReady 1883 delegate->WaitUntilNextCallback(kOnStreamReady);
1857 1884
1858 // Server acks the request. 1885 // Server acks the request.
1859 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0)); 1886 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0));
1860 1887
1861 // Server sends the response headers. 1888 // Server sends the response headers.
1862 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1889 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1863 1890
1864 size_t spdy_response_headers_frame_length; 1891 size_t spdy_response_headers_frame_length;
1865 ProcessPacket(ConstructResponseHeadersPacket( 1892 ProcessPacket(ConstructResponseHeadersPacket(
1866 2, !kFin, std::move(response_headers), 1893 2, !kFin, std::move(response_headers),
1867 &spdy_response_headers_frame_length, nullptr)); 1894 &spdy_response_headers_frame_length, nullptr));
1868 1895
1869 delegate->WaitUntilNextCallback(); // OnHeadersReceived 1896 delegate->WaitUntilNextCallback(kOnHeadersReceived);
1870 1897
1871 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); 1898 EXPECT_EQ("200", delegate->response_headers().find(":status")->second);
1872 1899
1873 TestCompletionCallback cb; 1900 TestCompletionCallback cb;
1874 int rv = delegate->ReadData(cb.callback()); 1901 int rv = delegate->ReadData(cb.callback());
1875 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 1902 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
1876 const char kResponseBody[] = "Hello world!"; 1903 const char kResponseBody[] = "Hello world!";
1877 // Server sends data. 1904 // Server sends data.
1878 ProcessPacket( 1905 ProcessPacket(
1879 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); 1906 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody));
(...skipping 25 matching lines...) Expand all
1905 request.url = GURL("http://www.google.com/"); 1932 request.url = GURL("http://www.google.com/");
1906 request.end_stream_on_headers = false; 1933 request.end_stream_on_headers = false;
1907 request.priority = DEFAULT_PRIORITY; 1934 request.priority = DEFAULT_PRIORITY;
1908 1935
1909 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1936 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1910 std::unique_ptr<TestDelegateBase> delegate( 1937 std::unique_ptr<TestDelegateBase> delegate(
1911 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1938 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1912 1939
1913 delegate->Start(&request, net_log().bound(), session()->CreateHandle()); 1940 delegate->Start(&request, net_log().bound(), session()->CreateHandle());
1914 ConfirmHandshake(); 1941 ConfirmHandshake();
1915 delegate->WaitUntilNextCallback(); // OnStreamReady 1942 delegate->WaitUntilNextCallback(kOnStreamReady);
1916 1943
1917 // Send a Data packet with fin set. 1944 // Send a Data packet with fin set.
1918 scoped_refptr<StringIOBuffer> buf1(new StringIOBuffer(kBody)); 1945 scoped_refptr<StringIOBuffer> buf1(new StringIOBuffer(kBody));
1919 delegate->SendData(buf1, buf1->size(), /*fin*/ true); 1946 delegate->SendData(buf1, buf1->size(), /*fin*/ true);
1920 delegate->WaitUntilNextCallback(); // OnDataSent 1947 delegate->WaitUntilNextCallback(kOnDataSent);
1921 1948
1922 // Server acks the request. 1949 // Server acks the request.
1923 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0)); 1950 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0));
1924 1951
1925 // Server sends the response headers. 1952 // Server sends the response headers.
1926 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1953 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1927 1954
1928 size_t spdy_response_headers_frame_length; 1955 size_t spdy_response_headers_frame_length;
1929 ProcessPacket(ConstructResponseHeadersPacket( 1956 ProcessPacket(ConstructResponseHeadersPacket(
1930 2, !kFin, std::move(response_headers), 1957 2, !kFin, std::move(response_headers),
1931 &spdy_response_headers_frame_length, nullptr)); 1958 &spdy_response_headers_frame_length, nullptr));
1932 1959
1933 delegate->WaitUntilNextCallback(); // OnHeadersReceived 1960 delegate->WaitUntilNextCallback(kOnHeadersReceived);
1934 1961
1935 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); 1962 EXPECT_EQ("200", delegate->response_headers().find(":status")->second);
1936 1963
1937 // Read the body, which will complete asynchronously. 1964 // Read the body, which will complete asynchronously.
1938 TestCompletionCallback cb; 1965 TestCompletionCallback cb;
1939 int rv = delegate->ReadData(cb.callback()); 1966 int rv = delegate->ReadData(cb.callback());
1940 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 1967 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
1941 const char kResponseBody[] = "Hello world!"; 1968 const char kResponseBody[] = "Hello world!";
1942 1969
1943 // Server sends data with the fin set, which should result in the stream 1970 // Server sends data with the fin set, which should result in the stream
(...skipping 22 matching lines...) Expand all
1966 request.method = "GET"; 1993 request.method = "GET";
1967 request.url = GURL("http://www.google.com/"); 1994 request.url = GURL("http://www.google.com/");
1968 request.end_stream_on_headers = true; 1995 request.end_stream_on_headers = true;
1969 request.priority = DEFAULT_PRIORITY; 1996 request.priority = DEFAULT_PRIORITY;
1970 1997
1971 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1998 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1972 std::unique_ptr<DeleteStreamDelegate> delegate( 1999 std::unique_ptr<DeleteStreamDelegate> delegate(
1973 new DeleteStreamDelegate(read_buffer.get(), kReadBufferSize, 2000 new DeleteStreamDelegate(read_buffer.get(), kReadBufferSize,
1974 DeleteStreamDelegate::ON_TRAILERS_RECEIVED)); 2001 DeleteStreamDelegate::ON_TRAILERS_RECEIVED));
1975 delegate->Start(&request, net_log().bound(), session()->CreateHandle()); 2002 delegate->Start(&request, net_log().bound(), session()->CreateHandle());
1976 delegate->WaitUntilNextCallback(); // OnStreamReady 2003 delegate->WaitUntilNextCallback(kOnStreamReady);
1977 2004
1978 // Server acks the request. 2005 // Server acks the request.
1979 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0)); 2006 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0));
1980 2007
1981 // Server sends the response headers. 2008 // Server sends the response headers.
1982 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 2009 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1983 2010
1984 QuicStreamOffset offset = 0; 2011 QuicStreamOffset offset = 0;
1985 size_t spdy_response_headers_frame_length; 2012 size_t spdy_response_headers_frame_length;
1986 ProcessPacket(ConstructResponseHeadersPacket( 2013 ProcessPacket(ConstructResponseHeadersPacket(
1987 2, !kFin, std::move(response_headers), 2014 2, !kFin, std::move(response_headers),
1988 &spdy_response_headers_frame_length, &offset)); 2015 &spdy_response_headers_frame_length, &offset));
1989 2016
1990 delegate->WaitUntilNextCallback(); // OnHeadersReceived 2017 delegate->WaitUntilNextCallback(kOnHeadersReceived);
1991 2018
1992 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); 2019 EXPECT_EQ("200", delegate->response_headers().find(":status")->second);
1993 2020
1994 TestCompletionCallback cb; 2021 TestCompletionCallback cb;
1995 int rv = delegate->ReadData(cb.callback()); 2022 int rv = delegate->ReadData(cb.callback());
1996 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 2023 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
1997 const char kResponseBody[] = "Hello world!"; 2024 const char kResponseBody[] = "Hello world!";
1998 // Server sends data. 2025 // Server sends data.
1999 ProcessPacket( 2026 ProcessPacket(
2000 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); 2027 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody));
2001 2028
2002 EXPECT_EQ(static_cast<int64_t>(strlen(kResponseBody)), cb.WaitForResult()); 2029 EXPECT_EQ(static_cast<int64_t>(strlen(kResponseBody)), cb.WaitForResult());
2003 EXPECT_EQ(std::string(kResponseBody), delegate->data_received()); 2030 EXPECT_EQ(std::string(kResponseBody), delegate->data_received());
2004 2031
2005 size_t spdy_trailers_frame_length; 2032 size_t spdy_trailers_frame_length;
2006 SpdyHeaderBlock trailers; 2033 SpdyHeaderBlock trailers;
2007 trailers["foo"] = "bar"; 2034 trailers["foo"] = "bar";
2008 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); 2035 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody));
2009 // Server sends trailers. 2036 // Server sends trailers.
2010 ProcessPacket(ConstructResponseTrailersPacket( 2037 ProcessPacket(ConstructResponseTrailersPacket(
2011 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset)); 2038 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset));
2012 2039
2013 delegate->WaitUntilNextCallback(); // OnTrailersReceived 2040 delegate->WaitUntilNextCallback(kOnTrailersReceived);
2014 trailers.erase(kFinalOffsetHeaderKey); 2041 trailers.erase(kFinalOffsetHeaderKey);
2015 EXPECT_EQ(trailers, delegate->trailers()); 2042 EXPECT_EQ(trailers, delegate->trailers());
2016 2043
2017 base::RunLoop().RunUntilIdle(); 2044 base::RunLoop().RunUntilIdle();
2018 2045
2019 EXPECT_EQ(1, delegate->on_data_read_count()); 2046 EXPECT_EQ(1, delegate->on_data_read_count());
2020 EXPECT_EQ(0, delegate->on_data_sent_count()); 2047 EXPECT_EQ(0, delegate->on_data_sent_count());
2021 } 2048 }
2022 2049
2023 } // namespace test 2050 } // namespace test
2024 2051
2025 } // namespace net 2052 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698