OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/quic/chromium/quic_http_stream.h" | 5 #include "net/quic/chromium/quic_http_stream.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 #include <utility> | 10 #include <utility> |
(...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
524 std::unique_ptr<QuicReceivedPacket> ConstructServerAckPacket( | 524 std::unique_ptr<QuicReceivedPacket> ConstructServerAckPacket( |
525 QuicPacketNumber packet_number, | 525 QuicPacketNumber packet_number, |
526 QuicPacketNumber largest_received, | 526 QuicPacketNumber largest_received, |
527 QuicPacketNumber smallest_received, | 527 QuicPacketNumber smallest_received, |
528 QuicPacketNumber least_unacked) { | 528 QuicPacketNumber least_unacked) { |
529 return server_maker_.MakeAckPacket(packet_number, largest_received, | 529 return server_maker_.MakeAckPacket(packet_number, largest_received, |
530 smallest_received, least_unacked, | 530 smallest_received, least_unacked, |
531 !kIncludeCongestionFeedback); | 531 !kIncludeCongestionFeedback); |
532 } | 532 } |
533 | 533 |
534 std::unique_ptr<QuicReceivedPacket> ConstructSettingsPacket( | 534 std::unique_ptr<QuicReceivedPacket> ConstructInitialSettingsPacket( |
535 QuicPacketNumber packet_number, | |
536 SpdySettingsIds id, | |
537 size_t value, | |
538 QuicStreamOffset* offset) { | 535 QuicStreamOffset* offset) { |
539 return client_maker_.MakeSettingsPacket(packet_number, id, value, | 536 return client_maker_.MakeInitialSettingsPacket(1, offset); |
540 kIncludeVersion, offset); | |
541 } | 537 } |
542 | 538 |
543 void ReceivePromise(QuicStreamId id) { | 539 void ReceivePromise(QuicStreamId id) { |
544 auto headers = AsHeaderList(push_promise_); | 540 auto headers = AsHeaderList(push_promise_); |
545 QuicChromiumClientStream* stream = | 541 QuicChromiumClientStream* stream = |
546 QuicHttpStreamPeer::GetQuicChromiumClientStream(stream_.get()); | 542 QuicHttpStreamPeer::GetQuicChromiumClientStream(stream_.get()); |
547 stream->OnPromiseHeaderList(id, headers.uncompressed_header_bytes(), | 543 stream->OnPromiseHeaderList(id, headers.uncompressed_header_bytes(), |
548 headers); | 544 headers); |
549 } | 545 } |
550 | 546 |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
631 net_log_.bound(), callback_.callback())); | 627 net_log_.bound(), callback_.callback())); |
632 QuicChromiumClientStream* client_stream = | 628 QuicChromiumClientStream* client_stream = |
633 QuicHttpStreamPeer::GetQuicChromiumClientStream(stream_.get()); | 629 QuicHttpStreamPeer::GetQuicChromiumClientStream(stream_.get()); |
634 EXPECT_FALSE(client_stream->can_migrate()); | 630 EXPECT_FALSE(client_stream->can_migrate()); |
635 } | 631 } |
636 | 632 |
637 TEST_P(QuicHttpStreamTest, GetRequest) { | 633 TEST_P(QuicHttpStreamTest, GetRequest) { |
638 SetRequest("GET", "/", DEFAULT_PRIORITY); | 634 SetRequest("GET", "/", DEFAULT_PRIORITY); |
639 size_t spdy_request_header_frame_length; | 635 size_t spdy_request_header_frame_length; |
640 QuicStreamOffset header_stream_offset = 0; | 636 QuicStreamOffset header_stream_offset = 0; |
641 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 637 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); |
642 kDefaultMaxUncompressedHeaderSize, | |
643 &header_stream_offset)); | |
644 AddWrite(InnerConstructRequestHeadersPacket( | 638 AddWrite(InnerConstructRequestHeadersPacket( |
645 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY, | 639 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY, |
646 &spdy_request_header_frame_length, &header_stream_offset)); | 640 &spdy_request_header_frame_length, &header_stream_offset)); |
647 | 641 |
648 Initialize(); | 642 Initialize(); |
649 | 643 |
650 request_.method = "GET"; | 644 request_.method = "GET"; |
651 request_.url = GURL("https://www.example.org/"); | 645 request_.url = GURL("https://www.example.org/"); |
652 | 646 |
653 // Make sure getting load timing from the stream early does not crash. | 647 // Make sure getting load timing from the stream early does not crash. |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
695 stream_->GetTotalSentBytes()); | 689 stream_->GetTotalSentBytes()); |
696 EXPECT_EQ(static_cast<int64_t>(spdy_response_header_frame_length), | 690 EXPECT_EQ(static_cast<int64_t>(spdy_response_header_frame_length), |
697 stream_->GetTotalReceivedBytes()); | 691 stream_->GetTotalReceivedBytes()); |
698 } | 692 } |
699 | 693 |
700 TEST_P(QuicHttpStreamTest, LoadTimingTwoRequests) { | 694 TEST_P(QuicHttpStreamTest, LoadTimingTwoRequests) { |
701 SetRequest("GET", "/", DEFAULT_PRIORITY); | 695 SetRequest("GET", "/", DEFAULT_PRIORITY); |
702 size_t spdy_request_header_frame_length; | 696 size_t spdy_request_header_frame_length; |
703 | 697 |
704 QuicStreamOffset offset = 0; | 698 QuicStreamOffset offset = 0; |
705 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 699 AddWrite(ConstructInitialSettingsPacket(&offset)); |
706 kDefaultMaxUncompressedHeaderSize, &offset)); | |
707 AddWrite(InnerConstructRequestHeadersPacket( | 700 AddWrite(InnerConstructRequestHeadersPacket( |
708 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY, | 701 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY, |
709 &spdy_request_header_frame_length, &offset)); | 702 &spdy_request_header_frame_length, &offset)); |
710 | 703 |
711 // SetRequest() again for second request as |request_headers_| was moved. | 704 // SetRequest() again for second request as |request_headers_| was moved. |
712 SetRequest("GET", "/", DEFAULT_PRIORITY); | 705 SetRequest("GET", "/", DEFAULT_PRIORITY); |
713 AddWrite(InnerConstructRequestHeadersPacket( | 706 AddWrite(InnerConstructRequestHeadersPacket( |
714 3, kClientDataStreamId2, kIncludeVersion, kFin, DEFAULT_PRIORITY, | 707 3, kClientDataStreamId2, kIncludeVersion, kFin, DEFAULT_PRIORITY, |
715 &spdy_request_header_frame_length, &offset)); | 708 &spdy_request_header_frame_length, &offset)); |
716 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); // Ack the responses. | 709 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); // Ack the responses. |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
779 EXPECT_TRUE(stream2.GetLoadTimingInfo(&load_timing_info2)); | 772 EXPECT_TRUE(stream2.GetLoadTimingInfo(&load_timing_info2)); |
780 ExpectLoadTimingValid(load_timing_info2, /*session_reused=*/true); | 773 ExpectLoadTimingValid(load_timing_info2, /*session_reused=*/true); |
781 } | 774 } |
782 | 775 |
783 // QuicHttpStream does not currently support trailers. It should ignore | 776 // QuicHttpStream does not currently support trailers. It should ignore |
784 // trailers upon receiving them. | 777 // trailers upon receiving them. |
785 TEST_P(QuicHttpStreamTest, GetRequestWithTrailers) { | 778 TEST_P(QuicHttpStreamTest, GetRequestWithTrailers) { |
786 SetRequest("GET", "/", DEFAULT_PRIORITY); | 779 SetRequest("GET", "/", DEFAULT_PRIORITY); |
787 size_t spdy_request_header_frame_length; | 780 size_t spdy_request_header_frame_length; |
788 QuicStreamOffset header_stream_offset = 0; | 781 QuicStreamOffset header_stream_offset = 0; |
789 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 782 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); |
790 kDefaultMaxUncompressedHeaderSize, | |
791 &header_stream_offset)); | |
792 AddWrite(InnerConstructRequestHeadersPacket( | 783 AddWrite(InnerConstructRequestHeadersPacket( |
793 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY, | 784 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY, |
794 &spdy_request_header_frame_length, &header_stream_offset)); | 785 &spdy_request_header_frame_length, &header_stream_offset)); |
795 AddWrite(ConstructClientAckPacket(3, 3, 1, 1)); // Ack the data packet. | 786 AddWrite(ConstructClientAckPacket(3, 3, 1, 1)); // Ack the data packet. |
796 | 787 |
797 Initialize(); | 788 Initialize(); |
798 | 789 |
799 request_.method = "GET"; | 790 request_.method = "GET"; |
800 request_.url = GURL("https://www.example.org/"); | 791 request_.url = GURL("https://www.example.org/"); |
801 | 792 |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
875 entries, /*min_offset=*/pos, | 866 entries, /*min_offset=*/pos, |
876 NetLogEventType::QUIC_CHROMIUM_CLIENT_STREAM_SEND_REQUEST_HEADERS, | 867 NetLogEventType::QUIC_CHROMIUM_CLIENT_STREAM_SEND_REQUEST_HEADERS, |
877 NetLogEventPhase::NONE); | 868 NetLogEventPhase::NONE); |
878 } | 869 } |
879 | 870 |
880 // Regression test for http://crbug.com/288128 | 871 // Regression test for http://crbug.com/288128 |
881 TEST_P(QuicHttpStreamTest, GetRequestLargeResponse) { | 872 TEST_P(QuicHttpStreamTest, GetRequestLargeResponse) { |
882 SetRequest("GET", "/", DEFAULT_PRIORITY); | 873 SetRequest("GET", "/", DEFAULT_PRIORITY); |
883 size_t spdy_request_headers_frame_length; | 874 size_t spdy_request_headers_frame_length; |
884 QuicStreamOffset header_stream_offset = 0; | 875 QuicStreamOffset header_stream_offset = 0; |
885 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 876 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); |
886 kDefaultMaxUncompressedHeaderSize, | |
887 &header_stream_offset)); | |
888 AddWrite(InnerConstructRequestHeadersPacket( | 877 AddWrite(InnerConstructRequestHeadersPacket( |
889 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY, | 878 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY, |
890 &spdy_request_headers_frame_length, &header_stream_offset)); | 879 &spdy_request_headers_frame_length, &header_stream_offset)); |
891 Initialize(); | 880 Initialize(); |
892 | 881 |
893 request_.method = "GET"; | 882 request_.method = "GET"; |
894 request_.url = GURL("https://www.example.org/"); | 883 request_.url = GURL("https://www.example.org/"); |
895 | 884 |
896 EXPECT_EQ(OK, | 885 EXPECT_EQ(OK, |
897 stream_->InitializeStream(&request_, DEFAULT_PRIORITY, | 886 stream_->InitializeStream(&request_, DEFAULT_PRIORITY, |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1004 AlternativeService alternative_service2; | 993 AlternativeService alternative_service2; |
1005 EXPECT_TRUE(stream_->GetAlternativeService(&alternative_service2)); | 994 EXPECT_TRUE(stream_->GetAlternativeService(&alternative_service2)); |
1006 EXPECT_EQ(AlternativeService(kProtoQUIC, "www.example.org", 443), | 995 EXPECT_EQ(AlternativeService(kProtoQUIC, "www.example.org", 443), |
1007 alternative_service2); | 996 alternative_service2); |
1008 } | 997 } |
1009 | 998 |
1010 TEST_P(QuicHttpStreamTest, LogGranularQuicConnectionError) { | 999 TEST_P(QuicHttpStreamTest, LogGranularQuicConnectionError) { |
1011 SetRequest("GET", "/", DEFAULT_PRIORITY); | 1000 SetRequest("GET", "/", DEFAULT_PRIORITY); |
1012 size_t spdy_request_headers_frame_length; | 1001 size_t spdy_request_headers_frame_length; |
1013 QuicStreamOffset header_stream_offset = 0; | 1002 QuicStreamOffset header_stream_offset = 0; |
1014 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 1003 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); |
1015 kDefaultMaxUncompressedHeaderSize, | |
1016 &header_stream_offset)); | |
1017 AddWrite(InnerConstructRequestHeadersPacket( | 1004 AddWrite(InnerConstructRequestHeadersPacket( |
1018 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY, | 1005 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY, |
1019 &spdy_request_headers_frame_length, &header_stream_offset)); | 1006 &spdy_request_headers_frame_length, &header_stream_offset)); |
1020 AddWrite(ConstructAckAndRstStreamPacket(3)); | 1007 AddWrite(ConstructAckAndRstStreamPacket(3)); |
1021 use_closing_stream_ = true; | 1008 use_closing_stream_ = true; |
1022 Initialize(); | 1009 Initialize(); |
1023 | 1010 |
1024 request_.method = "GET"; | 1011 request_.method = "GET"; |
1025 request_.url = GURL("https://www.example.org/"); | 1012 request_.url = GURL("https://www.example.org/"); |
1026 | 1013 |
(...skipping 17 matching lines...) Expand all Loading... |
1044 NetErrorDetails details; | 1031 NetErrorDetails details; |
1045 EXPECT_EQ(QUIC_NO_ERROR, details.quic_connection_error); | 1032 EXPECT_EQ(QUIC_NO_ERROR, details.quic_connection_error); |
1046 stream_->PopulateNetErrorDetails(&details); | 1033 stream_->PopulateNetErrorDetails(&details); |
1047 EXPECT_EQ(QUIC_PEER_GOING_AWAY, details.quic_connection_error); | 1034 EXPECT_EQ(QUIC_PEER_GOING_AWAY, details.quic_connection_error); |
1048 } | 1035 } |
1049 | 1036 |
1050 TEST_P(QuicHttpStreamTest, DoNotLogGranularQuicErrorIfHandshakeNotConfirmed) { | 1037 TEST_P(QuicHttpStreamTest, DoNotLogGranularQuicErrorIfHandshakeNotConfirmed) { |
1051 SetRequest("GET", "/", DEFAULT_PRIORITY); | 1038 SetRequest("GET", "/", DEFAULT_PRIORITY); |
1052 size_t spdy_request_headers_frame_length; | 1039 size_t spdy_request_headers_frame_length; |
1053 QuicStreamOffset header_stream_offset = 0; | 1040 QuicStreamOffset header_stream_offset = 0; |
1054 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 1041 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); |
1055 kDefaultMaxUncompressedHeaderSize, | |
1056 &header_stream_offset)); | |
1057 AddWrite(InnerConstructRequestHeadersPacket( | 1042 AddWrite(InnerConstructRequestHeadersPacket( |
1058 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY, | 1043 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY, |
1059 &spdy_request_headers_frame_length, &header_stream_offset)); | 1044 &spdy_request_headers_frame_length, &header_stream_offset)); |
1060 AddWrite(ConstructAckAndRstStreamPacket(3)); | 1045 AddWrite(ConstructAckAndRstStreamPacket(3)); |
1061 use_closing_stream_ = true; | 1046 use_closing_stream_ = true; |
1062 Initialize(); | 1047 Initialize(); |
1063 | 1048 |
1064 request_.method = "GET"; | 1049 request_.method = "GET"; |
1065 request_.url = GURL("https://www.example.org/"); | 1050 request_.url = GURL("https://www.example.org/"); |
1066 | 1051 |
(...skipping 22 matching lines...) Expand all Loading... |
1089 EXPECT_EQ(QUIC_NO_ERROR, details.quic_connection_error); | 1074 EXPECT_EQ(QUIC_NO_ERROR, details.quic_connection_error); |
1090 stream_->PopulateNetErrorDetails(&details); | 1075 stream_->PopulateNetErrorDetails(&details); |
1091 EXPECT_EQ(QUIC_NO_ERROR, details.quic_connection_error); | 1076 EXPECT_EQ(QUIC_NO_ERROR, details.quic_connection_error); |
1092 } | 1077 } |
1093 | 1078 |
1094 // Regression test for http://crbug.com/409871 | 1079 // Regression test for http://crbug.com/409871 |
1095 TEST_P(QuicHttpStreamTest, SessionClosedBeforeReadResponseHeaders) { | 1080 TEST_P(QuicHttpStreamTest, SessionClosedBeforeReadResponseHeaders) { |
1096 SetRequest("GET", "/", DEFAULT_PRIORITY); | 1081 SetRequest("GET", "/", DEFAULT_PRIORITY); |
1097 size_t spdy_request_headers_frame_length; | 1082 size_t spdy_request_headers_frame_length; |
1098 QuicStreamOffset header_stream_offset = 0; | 1083 QuicStreamOffset header_stream_offset = 0; |
1099 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 1084 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); |
1100 kDefaultMaxUncompressedHeaderSize, | |
1101 &header_stream_offset)); | |
1102 AddWrite(InnerConstructRequestHeadersPacket( | 1085 AddWrite(InnerConstructRequestHeadersPacket( |
1103 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY, | 1086 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY, |
1104 &spdy_request_headers_frame_length, &header_stream_offset)); | 1087 &spdy_request_headers_frame_length, &header_stream_offset)); |
1105 Initialize(); | 1088 Initialize(); |
1106 | 1089 |
1107 request_.method = "GET"; | 1090 request_.method = "GET"; |
1108 request_.url = GURL("https://www.example.org/"); | 1091 request_.url = GURL("https://www.example.org/"); |
1109 | 1092 |
1110 EXPECT_EQ(OK, | 1093 EXPECT_EQ(OK, |
1111 stream_->InitializeStream(&request_, DEFAULT_PRIORITY, | 1094 stream_->InitializeStream(&request_, DEFAULT_PRIORITY, |
(...skipping 11 matching lines...) Expand all Loading... |
1123 // headers and payload. | 1106 // headers and payload. |
1124 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), | 1107 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), |
1125 stream_->GetTotalSentBytes()); | 1108 stream_->GetTotalSentBytes()); |
1126 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); | 1109 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); |
1127 } | 1110 } |
1128 | 1111 |
1129 TEST_P(QuicHttpStreamTest, SendPostRequest) { | 1112 TEST_P(QuicHttpStreamTest, SendPostRequest) { |
1130 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1113 SetRequest("POST", "/", DEFAULT_PRIORITY); |
1131 size_t spdy_request_headers_frame_length; | 1114 size_t spdy_request_headers_frame_length; |
1132 QuicStreamOffset header_stream_offset = 0; | 1115 QuicStreamOffset header_stream_offset = 0; |
1133 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 1116 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); |
1134 kDefaultMaxUncompressedHeaderSize, | |
1135 &header_stream_offset)); | |
1136 AddWrite(InnerConstructRequestHeadersPacket( | 1117 AddWrite(InnerConstructRequestHeadersPacket( |
1137 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY, | 1118 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY, |
1138 &spdy_request_headers_frame_length, &header_stream_offset)); | 1119 &spdy_request_headers_frame_length, &header_stream_offset)); |
1139 AddWrite(ConstructClientDataPacket(3, kIncludeVersion, kFin, 0, kUploadData)); | 1120 AddWrite(ConstructClientDataPacket(3, kIncludeVersion, kFin, 0, kUploadData)); |
1140 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); | 1121 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); |
1141 | 1122 |
1142 Initialize(); | 1123 Initialize(); |
1143 | 1124 |
1144 std::vector<std::unique_ptr<UploadElementReader>> element_readers; | 1125 std::vector<std::unique_ptr<UploadElementReader>> element_readers; |
1145 element_readers.push_back(base::MakeUnique<UploadBytesElementReader>( | 1126 element_readers.push_back(base::MakeUnique<UploadBytesElementReader>( |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1194 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length + | 1175 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length + |
1195 strlen(kResponseBody)), | 1176 strlen(kResponseBody)), |
1196 stream_->GetTotalReceivedBytes()); | 1177 stream_->GetTotalReceivedBytes()); |
1197 } | 1178 } |
1198 | 1179 |
1199 TEST_P(QuicHttpStreamTest, SendChunkedPostRequest) { | 1180 TEST_P(QuicHttpStreamTest, SendChunkedPostRequest) { |
1200 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1181 SetRequest("POST", "/", DEFAULT_PRIORITY); |
1201 size_t chunk_size = strlen(kUploadData); | 1182 size_t chunk_size = strlen(kUploadData); |
1202 size_t spdy_request_headers_frame_length; | 1183 size_t spdy_request_headers_frame_length; |
1203 QuicStreamOffset header_stream_offset = 0; | 1184 QuicStreamOffset header_stream_offset = 0; |
1204 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 1185 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); |
1205 kDefaultMaxUncompressedHeaderSize, | |
1206 &header_stream_offset)); | |
1207 AddWrite(InnerConstructRequestHeadersPacket( | 1186 AddWrite(InnerConstructRequestHeadersPacket( |
1208 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY, | 1187 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY, |
1209 &spdy_request_headers_frame_length, &header_stream_offset)); | 1188 &spdy_request_headers_frame_length, &header_stream_offset)); |
1210 AddWrite( | 1189 AddWrite( |
1211 ConstructClientDataPacket(3, kIncludeVersion, !kFin, 0, kUploadData)); | 1190 ConstructClientDataPacket(3, kIncludeVersion, !kFin, 0, kUploadData)); |
1212 AddWrite(ConstructClientDataPacket(4, kIncludeVersion, kFin, chunk_size, | 1191 AddWrite(ConstructClientDataPacket(4, kIncludeVersion, kFin, chunk_size, |
1213 kUploadData)); | 1192 kUploadData)); |
1214 AddWrite(ConstructClientAckPacket(5, 3, 1, 1)); | 1193 AddWrite(ConstructClientAckPacket(5, 3, 1, 1)); |
1215 Initialize(); | 1194 Initialize(); |
1216 | 1195 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1270 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length + | 1249 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length + |
1271 strlen(kResponseBody)), | 1250 strlen(kResponseBody)), |
1272 stream_->GetTotalReceivedBytes()); | 1251 stream_->GetTotalReceivedBytes()); |
1273 } | 1252 } |
1274 | 1253 |
1275 TEST_P(QuicHttpStreamTest, SendChunkedPostRequestWithFinalEmptyDataPacket) { | 1254 TEST_P(QuicHttpStreamTest, SendChunkedPostRequestWithFinalEmptyDataPacket) { |
1276 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1255 SetRequest("POST", "/", DEFAULT_PRIORITY); |
1277 size_t chunk_size = strlen(kUploadData); | 1256 size_t chunk_size = strlen(kUploadData); |
1278 size_t spdy_request_headers_frame_length; | 1257 size_t spdy_request_headers_frame_length; |
1279 QuicStreamOffset header_stream_offset = 0; | 1258 QuicStreamOffset header_stream_offset = 0; |
1280 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 1259 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); |
1281 kDefaultMaxUncompressedHeaderSize, | |
1282 &header_stream_offset)); | |
1283 AddWrite(InnerConstructRequestHeadersPacket( | 1260 AddWrite(InnerConstructRequestHeadersPacket( |
1284 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY, | 1261 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY, |
1285 &spdy_request_headers_frame_length, &header_stream_offset)); | 1262 &spdy_request_headers_frame_length, &header_stream_offset)); |
1286 AddWrite( | 1263 AddWrite( |
1287 ConstructClientDataPacket(3, kIncludeVersion, !kFin, 0, kUploadData)); | 1264 ConstructClientDataPacket(3, kIncludeVersion, !kFin, 0, kUploadData)); |
1288 AddWrite(ConstructClientDataPacket(4, kIncludeVersion, kFin, chunk_size, "")); | 1265 AddWrite(ConstructClientDataPacket(4, kIncludeVersion, kFin, chunk_size, "")); |
1289 AddWrite(ConstructClientAckPacket(5, 3, 1, 1)); | 1266 AddWrite(ConstructClientAckPacket(5, 3, 1, 1)); |
1290 Initialize(); | 1267 Initialize(); |
1291 | 1268 |
1292 ChunkedUploadDataStream upload_data_stream(0); | 1269 ChunkedUploadDataStream upload_data_stream(0); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1342 stream_->GetTotalSentBytes()); | 1319 stream_->GetTotalSentBytes()); |
1343 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length + | 1320 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length + |
1344 strlen(kResponseBody)), | 1321 strlen(kResponseBody)), |
1345 stream_->GetTotalReceivedBytes()); | 1322 stream_->GetTotalReceivedBytes()); |
1346 } | 1323 } |
1347 | 1324 |
1348 TEST_P(QuicHttpStreamTest, SendChunkedPostRequestWithOneEmptyDataPacket) { | 1325 TEST_P(QuicHttpStreamTest, SendChunkedPostRequestWithOneEmptyDataPacket) { |
1349 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1326 SetRequest("POST", "/", DEFAULT_PRIORITY); |
1350 size_t spdy_request_headers_frame_length; | 1327 size_t spdy_request_headers_frame_length; |
1351 QuicStreamOffset header_stream_offset = 0; | 1328 QuicStreamOffset header_stream_offset = 0; |
1352 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 1329 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); |
1353 kDefaultMaxUncompressedHeaderSize, | |
1354 &header_stream_offset)); | |
1355 AddWrite(InnerConstructRequestHeadersPacket( | 1330 AddWrite(InnerConstructRequestHeadersPacket( |
1356 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY, | 1331 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY, |
1357 &spdy_request_headers_frame_length, &header_stream_offset)); | 1332 &spdy_request_headers_frame_length, &header_stream_offset)); |
1358 AddWrite(ConstructClientDataPacket(3, kIncludeVersion, kFin, 0, "")); | 1333 AddWrite(ConstructClientDataPacket(3, kIncludeVersion, kFin, 0, "")); |
1359 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); | 1334 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); |
1360 Initialize(); | 1335 Initialize(); |
1361 | 1336 |
1362 ChunkedUploadDataStream upload_data_stream(0); | 1337 ChunkedUploadDataStream upload_data_stream(0); |
1363 | 1338 |
1364 request_.method = "POST"; | 1339 request_.method = "POST"; |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1411 stream_->GetTotalSentBytes()); | 1386 stream_->GetTotalSentBytes()); |
1412 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length + | 1387 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length + |
1413 strlen(kResponseBody)), | 1388 strlen(kResponseBody)), |
1414 stream_->GetTotalReceivedBytes()); | 1389 stream_->GetTotalReceivedBytes()); |
1415 } | 1390 } |
1416 | 1391 |
1417 TEST_P(QuicHttpStreamTest, DestroyedEarly) { | 1392 TEST_P(QuicHttpStreamTest, DestroyedEarly) { |
1418 SetRequest("GET", "/", DEFAULT_PRIORITY); | 1393 SetRequest("GET", "/", DEFAULT_PRIORITY); |
1419 size_t spdy_request_headers_frame_length; | 1394 size_t spdy_request_headers_frame_length; |
1420 QuicStreamOffset header_stream_offset = 0; | 1395 QuicStreamOffset header_stream_offset = 0; |
1421 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 1396 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); |
1422 kDefaultMaxUncompressedHeaderSize, | |
1423 &header_stream_offset)); | |
1424 AddWrite(InnerConstructRequestHeadersPacket( | 1397 AddWrite(InnerConstructRequestHeadersPacket( |
1425 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY, | 1398 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY, |
1426 &spdy_request_headers_frame_length, &header_stream_offset)); | 1399 &spdy_request_headers_frame_length, &header_stream_offset)); |
1427 AddWrite(ConstructAckAndRstStreamPacket(3)); | 1400 AddWrite(ConstructAckAndRstStreamPacket(3)); |
1428 use_closing_stream_ = true; | 1401 use_closing_stream_ = true; |
1429 Initialize(); | 1402 Initialize(); |
1430 | 1403 |
1431 request_.method = "GET"; | 1404 request_.method = "GET"; |
1432 request_.url = GURL("https://www.example.org/"); | 1405 request_.url = GURL("https://www.example.org/"); |
1433 | 1406 |
(...skipping 22 matching lines...) Expand all Loading... |
1456 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), | 1429 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), |
1457 stream_->GetTotalSentBytes()); | 1430 stream_->GetTotalSentBytes()); |
1458 // Zero since the stream is closed before processing the headers. | 1431 // Zero since the stream is closed before processing the headers. |
1459 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); | 1432 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); |
1460 } | 1433 } |
1461 | 1434 |
1462 TEST_P(QuicHttpStreamTest, Priority) { | 1435 TEST_P(QuicHttpStreamTest, Priority) { |
1463 SetRequest("GET", "/", MEDIUM); | 1436 SetRequest("GET", "/", MEDIUM); |
1464 size_t spdy_request_headers_frame_length; | 1437 size_t spdy_request_headers_frame_length; |
1465 QuicStreamOffset header_stream_offset = 0; | 1438 QuicStreamOffset header_stream_offset = 0; |
1466 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 1439 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); |
1467 kDefaultMaxUncompressedHeaderSize, | |
1468 &header_stream_offset)); | |
1469 AddWrite(InnerConstructRequestHeadersPacket( | 1440 AddWrite(InnerConstructRequestHeadersPacket( |
1470 2, kClientDataStreamId1, kIncludeVersion, kFin, MEDIUM, | 1441 2, kClientDataStreamId1, kIncludeVersion, kFin, MEDIUM, |
1471 &spdy_request_headers_frame_length, &header_stream_offset)); | 1442 &spdy_request_headers_frame_length, &header_stream_offset)); |
1472 AddWrite(ConstructAckAndRstStreamPacket(3)); | 1443 AddWrite(ConstructAckAndRstStreamPacket(3)); |
1473 use_closing_stream_ = true; | 1444 use_closing_stream_ = true; |
1474 Initialize(); | 1445 Initialize(); |
1475 | 1446 |
1476 request_.method = "GET"; | 1447 request_.method = "GET"; |
1477 request_.url = GURL("https://www.example.org/"); | 1448 request_.url = GURL("https://www.example.org/"); |
1478 | 1449 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1512 stream_->GetTotalSentBytes()); | 1483 stream_->GetTotalSentBytes()); |
1513 // Zero since the stream is closed before processing the headers. | 1484 // Zero since the stream is closed before processing the headers. |
1514 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); | 1485 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); |
1515 } | 1486 } |
1516 | 1487 |
1517 // Regression test for http://crbug.com/294870 | 1488 // Regression test for http://crbug.com/294870 |
1518 TEST_P(QuicHttpStreamTest, CheckPriorityWithNoDelegate) { | 1489 TEST_P(QuicHttpStreamTest, CheckPriorityWithNoDelegate) { |
1519 SetRequest("GET", "/", MEDIUM); | 1490 SetRequest("GET", "/", MEDIUM); |
1520 use_closing_stream_ = true; | 1491 use_closing_stream_ = true; |
1521 QuicStreamOffset header_stream_offset = 0; | 1492 QuicStreamOffset header_stream_offset = 0; |
1522 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 1493 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); |
1523 kDefaultMaxUncompressedHeaderSize, | |
1524 &header_stream_offset)); | |
1525 AddWrite(ConstructClientRstStreamPacket(2)); | 1494 AddWrite(ConstructClientRstStreamPacket(2)); |
1526 | 1495 |
1527 Initialize(); | 1496 Initialize(); |
1528 | 1497 |
1529 request_.method = "GET"; | 1498 request_.method = "GET"; |
1530 request_.url = GURL("https://www.example.org/"); | 1499 request_.url = GURL("https://www.example.org/"); |
1531 | 1500 |
1532 EXPECT_EQ(OK, stream_->InitializeStream(&request_, MEDIUM, net_log_.bound(), | 1501 EXPECT_EQ(OK, stream_->InitializeStream(&request_, MEDIUM, net_log_.bound(), |
1533 callback_.callback())); | 1502 callback_.callback())); |
1534 | 1503 |
(...skipping 12 matching lines...) Expand all Loading... |
1547 reliable_stream->SetDelegate(delegate); | 1516 reliable_stream->SetDelegate(delegate); |
1548 | 1517 |
1549 EXPECT_EQ(0, stream_->GetTotalSentBytes()); | 1518 EXPECT_EQ(0, stream_->GetTotalSentBytes()); |
1550 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); | 1519 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); |
1551 } | 1520 } |
1552 | 1521 |
1553 TEST_P(QuicHttpStreamTest, SessionClosedDuringDoLoop) { | 1522 TEST_P(QuicHttpStreamTest, SessionClosedDuringDoLoop) { |
1554 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1523 SetRequest("POST", "/", DEFAULT_PRIORITY); |
1555 size_t spdy_request_headers_frame_length; | 1524 size_t spdy_request_headers_frame_length; |
1556 QuicStreamOffset header_stream_offset = 0; | 1525 QuicStreamOffset header_stream_offset = 0; |
1557 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 1526 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); |
1558 kDefaultMaxUncompressedHeaderSize, | |
1559 &header_stream_offset)); | |
1560 AddWrite(InnerConstructRequestHeadersPacket( | 1527 AddWrite(InnerConstructRequestHeadersPacket( |
1561 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY, | 1528 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY, |
1562 &spdy_request_headers_frame_length, &header_stream_offset)); | 1529 &spdy_request_headers_frame_length, &header_stream_offset)); |
1563 AddWrite( | 1530 AddWrite( |
1564 ConstructClientDataPacket(3, kIncludeVersion, !kFin, 0, kUploadData)); | 1531 ConstructClientDataPacket(3, kIncludeVersion, !kFin, 0, kUploadData)); |
1565 // Second data write will result in a synchronous failure which will close | 1532 // Second data write will result in a synchronous failure which will close |
1566 // the session. | 1533 // the session. |
1567 AddWrite(SYNCHRONOUS, ERR_FAILED); | 1534 AddWrite(SYNCHRONOUS, ERR_FAILED); |
1568 Initialize(); | 1535 Initialize(); |
1569 | 1536 |
(...skipping 16 matching lines...) Expand all Loading... |
1586 ASSERT_EQ(ERR_IO_PENDING, | 1553 ASSERT_EQ(ERR_IO_PENDING, |
1587 stream->SendRequest(headers_, &response_, callback_.callback())); | 1554 stream->SendRequest(headers_, &response_, callback_.callback())); |
1588 upload_data_stream.AppendData(kUploadData, chunk_size, true); | 1555 upload_data_stream.AppendData(kUploadData, chunk_size, true); |
1589 int rv = callback_.WaitForResult(); | 1556 int rv = callback_.WaitForResult(); |
1590 EXPECT_EQ(ERR_QUIC_PROTOCOL_ERROR, rv); | 1557 EXPECT_EQ(ERR_QUIC_PROTOCOL_ERROR, rv); |
1591 } | 1558 } |
1592 | 1559 |
1593 TEST_P(QuicHttpStreamTest, SessionClosedBeforeSendHeadersComplete) { | 1560 TEST_P(QuicHttpStreamTest, SessionClosedBeforeSendHeadersComplete) { |
1594 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1561 SetRequest("POST", "/", DEFAULT_PRIORITY); |
1595 QuicStreamOffset header_stream_offset = 0; | 1562 QuicStreamOffset header_stream_offset = 0; |
1596 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 1563 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); |
1597 kDefaultMaxUncompressedHeaderSize, | |
1598 &header_stream_offset)); | |
1599 AddWrite(SYNCHRONOUS, ERR_FAILED); | 1564 AddWrite(SYNCHRONOUS, ERR_FAILED); |
1600 Initialize(); | 1565 Initialize(); |
1601 | 1566 |
1602 ChunkedUploadDataStream upload_data_stream(0); | 1567 ChunkedUploadDataStream upload_data_stream(0); |
1603 | 1568 |
1604 request_.method = "POST"; | 1569 request_.method = "POST"; |
1605 request_.url = GURL("https://www.example.org/"); | 1570 request_.url = GURL("https://www.example.org/"); |
1606 request_.upload_data_stream = &upload_data_stream; | 1571 request_.upload_data_stream = &upload_data_stream; |
1607 ASSERT_EQ(OK, request_.upload_data_stream->Init( | 1572 ASSERT_EQ(OK, request_.upload_data_stream->Init( |
1608 TestCompletionCallback().callback(), NetLogWithSource())); | 1573 TestCompletionCallback().callback(), NetLogWithSource())); |
1609 | 1574 |
1610 ASSERT_EQ(OK, | 1575 ASSERT_EQ(OK, |
1611 stream_->InitializeStream(&request_, DEFAULT_PRIORITY, | 1576 stream_->InitializeStream(&request_, DEFAULT_PRIORITY, |
1612 net_log_.bound(), callback_.callback())); | 1577 net_log_.bound(), callback_.callback())); |
1613 ASSERT_EQ(ERR_QUIC_PROTOCOL_ERROR, | 1578 ASSERT_EQ(ERR_QUIC_PROTOCOL_ERROR, |
1614 stream_->SendRequest(headers_, &response_, callback_.callback())); | 1579 stream_->SendRequest(headers_, &response_, callback_.callback())); |
1615 } | 1580 } |
1616 | 1581 |
1617 TEST_P(QuicHttpStreamTest, SessionClosedBeforeSendBodyComplete) { | 1582 TEST_P(QuicHttpStreamTest, SessionClosedBeforeSendBodyComplete) { |
1618 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1583 SetRequest("POST", "/", DEFAULT_PRIORITY); |
1619 size_t spdy_request_headers_frame_length; | 1584 size_t spdy_request_headers_frame_length; |
1620 QuicStreamOffset header_stream_offset = 0; | 1585 QuicStreamOffset header_stream_offset = 0; |
1621 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 1586 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); |
1622 kDefaultMaxUncompressedHeaderSize, | |
1623 &header_stream_offset)); | |
1624 AddWrite(InnerConstructRequestHeadersPacket( | 1587 AddWrite(InnerConstructRequestHeadersPacket( |
1625 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY, | 1588 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY, |
1626 &spdy_request_headers_frame_length, &header_stream_offset)); | 1589 &spdy_request_headers_frame_length, &header_stream_offset)); |
1627 AddWrite(SYNCHRONOUS, ERR_FAILED); | 1590 AddWrite(SYNCHRONOUS, ERR_FAILED); |
1628 Initialize(); | 1591 Initialize(); |
1629 | 1592 |
1630 ChunkedUploadDataStream upload_data_stream(0); | 1593 ChunkedUploadDataStream upload_data_stream(0); |
1631 size_t chunk_size = strlen(kUploadData); | 1594 size_t chunk_size = strlen(kUploadData); |
1632 upload_data_stream.AppendData(kUploadData, chunk_size, false); | 1595 upload_data_stream.AppendData(kUploadData, chunk_size, false); |
1633 | 1596 |
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2004 } | 1967 } |
2005 | 1968 |
2006 TEST_P(QuicHttpStreamTest, ServerPushVaryCheckFail) { | 1969 TEST_P(QuicHttpStreamTest, ServerPushVaryCheckFail) { |
2007 SetRequest("GET", "/", DEFAULT_PRIORITY); | 1970 SetRequest("GET", "/", DEFAULT_PRIORITY); |
2008 request_headers_[":scheme"] = "https"; | 1971 request_headers_[":scheme"] = "https"; |
2009 request_headers_[":path"] = "/bar"; | 1972 request_headers_[":path"] = "/bar"; |
2010 request_headers_["accept-encoding"] = "sdch"; | 1973 request_headers_["accept-encoding"] = "sdch"; |
2011 | 1974 |
2012 size_t spdy_request_header_frame_length; | 1975 size_t spdy_request_header_frame_length; |
2013 QuicStreamOffset header_stream_offset = 0; | 1976 QuicStreamOffset header_stream_offset = 0; |
2014 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 1977 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); |
2015 kDefaultMaxUncompressedHeaderSize, | |
2016 &header_stream_offset)); | |
2017 AddWrite(ConstructClientRstStreamVaryMismatchPacket(2)); | 1978 AddWrite(ConstructClientRstStreamVaryMismatchPacket(2)); |
2018 AddWrite(InnerConstructRequestHeadersPacket( | 1979 AddWrite(InnerConstructRequestHeadersPacket( |
2019 3, stream_id_ + 2, !kIncludeVersion, kFin, DEFAULT_PRIORITY, | 1980 3, stream_id_ + 2, !kIncludeVersion, kFin, DEFAULT_PRIORITY, |
2020 &spdy_request_header_frame_length, &header_stream_offset)); | 1981 &spdy_request_header_frame_length, &header_stream_offset)); |
2021 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); | 1982 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); |
2022 AddWrite(ConstructClientRstStreamCancelledPacket(5)); | 1983 AddWrite(ConstructClientRstStreamCancelledPacket(5)); |
2023 Initialize(); | 1984 Initialize(); |
2024 | 1985 |
2025 // Initialize the first stream, for receiving the promise on. | 1986 // Initialize the first stream, for receiving the promise on. |
2026 request_.method = "GET"; | 1987 request_.method = "GET"; |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2119 EXPECT_EQ(static_cast<int64_t>(spdy_request_header_frame_length), | 2080 EXPECT_EQ(static_cast<int64_t>(spdy_request_header_frame_length), |
2120 promised_stream_->GetTotalSentBytes()); | 2081 promised_stream_->GetTotalSentBytes()); |
2121 EXPECT_EQ(static_cast<int64_t>(spdy_response_header_frame_length), | 2082 EXPECT_EQ(static_cast<int64_t>(spdy_response_header_frame_length), |
2122 promised_stream_->GetTotalReceivedBytes()); | 2083 promised_stream_->GetTotalReceivedBytes()); |
2123 } | 2084 } |
2124 | 2085 |
2125 TEST_P(QuicHttpStreamTest, DataReadErrorSynchronous) { | 2086 TEST_P(QuicHttpStreamTest, DataReadErrorSynchronous) { |
2126 SetRequest("POST", "/", DEFAULT_PRIORITY); | 2087 SetRequest("POST", "/", DEFAULT_PRIORITY); |
2127 size_t spdy_request_headers_frame_length; | 2088 size_t spdy_request_headers_frame_length; |
2128 QuicStreamOffset header_stream_offset = 0; | 2089 QuicStreamOffset header_stream_offset = 0; |
2129 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 2090 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); |
2130 kDefaultMaxUncompressedHeaderSize, | |
2131 &header_stream_offset)); | |
2132 AddWrite(InnerConstructRequestHeadersPacket( | 2091 AddWrite(InnerConstructRequestHeadersPacket( |
2133 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY, | 2092 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY, |
2134 &spdy_request_headers_frame_length, &header_stream_offset)); | 2093 &spdy_request_headers_frame_length, &header_stream_offset)); |
2135 AddWrite(ConstructClientRstStreamErrorPacket(3, kIncludeVersion)); | 2094 AddWrite(ConstructClientRstStreamErrorPacket(3, kIncludeVersion)); |
2136 | 2095 |
2137 Initialize(); | 2096 Initialize(); |
2138 | 2097 |
2139 ReadErrorUploadDataStream upload_data_stream( | 2098 ReadErrorUploadDataStream upload_data_stream( |
2140 ReadErrorUploadDataStream::FailureMode::SYNC); | 2099 ReadErrorUploadDataStream::FailureMode::SYNC); |
2141 request_.method = "POST"; | 2100 request_.method = "POST"; |
(...skipping 14 matching lines...) Expand all Loading... |
2156 // QuicHttpStream::GetTotalSent/ReceivedBytes includes only headers. | 2115 // QuicHttpStream::GetTotalSent/ReceivedBytes includes only headers. |
2157 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), | 2116 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), |
2158 stream_->GetTotalSentBytes()); | 2117 stream_->GetTotalSentBytes()); |
2159 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); | 2118 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); |
2160 } | 2119 } |
2161 | 2120 |
2162 TEST_P(QuicHttpStreamTest, DataReadErrorAsynchronous) { | 2121 TEST_P(QuicHttpStreamTest, DataReadErrorAsynchronous) { |
2163 SetRequest("POST", "/", DEFAULT_PRIORITY); | 2122 SetRequest("POST", "/", DEFAULT_PRIORITY); |
2164 size_t spdy_request_headers_frame_length; | 2123 size_t spdy_request_headers_frame_length; |
2165 QuicStreamOffset header_stream_offset = 0; | 2124 QuicStreamOffset header_stream_offset = 0; |
2166 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 2125 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); |
2167 kDefaultMaxUncompressedHeaderSize, | |
2168 &header_stream_offset)); | |
2169 AddWrite(InnerConstructRequestHeadersPacket( | 2126 AddWrite(InnerConstructRequestHeadersPacket( |
2170 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY, | 2127 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY, |
2171 &spdy_request_headers_frame_length, &header_stream_offset)); | 2128 &spdy_request_headers_frame_length, &header_stream_offset)); |
2172 AddWrite(ConstructClientRstStreamErrorPacket(3, !kIncludeVersion)); | 2129 AddWrite(ConstructClientRstStreamErrorPacket(3, !kIncludeVersion)); |
2173 | 2130 |
2174 Initialize(); | 2131 Initialize(); |
2175 | 2132 |
2176 ReadErrorUploadDataStream upload_data_stream( | 2133 ReadErrorUploadDataStream upload_data_stream( |
2177 ReadErrorUploadDataStream::FailureMode::ASYNC); | 2134 ReadErrorUploadDataStream::FailureMode::ASYNC); |
2178 request_.method = "POST"; | 2135 request_.method = "POST"; |
(...skipping 17 matching lines...) Expand all Loading... |
2196 EXPECT_TRUE(AtEof()); | 2153 EXPECT_TRUE(AtEof()); |
2197 | 2154 |
2198 // QuicHttpStream::GetTotalSent/ReceivedBytes includes only headers. | 2155 // QuicHttpStream::GetTotalSent/ReceivedBytes includes only headers. |
2199 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), | 2156 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), |
2200 stream_->GetTotalSentBytes()); | 2157 stream_->GetTotalSentBytes()); |
2201 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); | 2158 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); |
2202 } | 2159 } |
2203 | 2160 |
2204 } // namespace test | 2161 } // namespace test |
2205 } // namespace net | 2162 } // namespace net |
OLD | NEW |