| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/quic/bidirectional_stream_quic_impl.h" | 5 #include "net/quic/bidirectional_stream_quic_impl.h" |
| 6 | 6 |
| 7 #include <utility> |
| 8 |
| 7 #include "base/callback_helpers.h" | 9 #include "base/callback_helpers.h" |
| 8 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| 9 #include "base/run_loop.h" | 11 #include "base/run_loop.h" |
| 10 #include "base/strings/string_number_conversions.h" | 12 #include "base/strings/string_number_conversions.h" |
| 11 #include "net/base/ip_address.h" | 13 #include "net/base/ip_address.h" |
| 12 #include "net/base/net_errors.h" | 14 #include "net/base/net_errors.h" |
| 13 #include "net/http/bidirectional_stream_request_info.h" | 15 #include "net/http/bidirectional_stream_request_info.h" |
| 14 #include "net/http/transport_security_state.h" | 16 #include "net/http/transport_security_state.h" |
| 15 #include "net/log/test_net_log.h" | 17 #include "net/log/test_net_log.h" |
| 16 #include "net/log/test_net_log_util.h" | 18 #include "net/log/test_net_log_util.h" |
| (...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 | 451 |
| 450 std::unique_ptr<QuicReceivedPacket> ConstructRequestHeadersPacket( | 452 std::unique_ptr<QuicReceivedPacket> ConstructRequestHeadersPacket( |
| 451 QuicPacketNumber packet_number, | 453 QuicPacketNumber packet_number, |
| 452 bool fin, | 454 bool fin, |
| 453 RequestPriority request_priority, | 455 RequestPriority request_priority, |
| 454 size_t* spdy_headers_frame_length) { | 456 size_t* spdy_headers_frame_length) { |
| 455 SpdyPriority priority = | 457 SpdyPriority priority = |
| 456 ConvertRequestPriorityToQuicPriority(request_priority); | 458 ConvertRequestPriorityToQuicPriority(request_priority); |
| 457 return client_maker_.MakeRequestHeadersPacket( | 459 return client_maker_.MakeRequestHeadersPacket( |
| 458 packet_number, stream_id_, kIncludeVersion, fin, priority, | 460 packet_number, stream_id_, kIncludeVersion, fin, priority, |
| 459 request_headers_, spdy_headers_frame_length); | 461 std::move(request_headers_), spdy_headers_frame_length); |
| 460 } | 462 } |
| 461 | 463 |
| 462 std::unique_ptr<QuicReceivedPacket> | 464 std::unique_ptr<QuicReceivedPacket> |
| 463 ConstructRequestHeadersAndMultipleDataFramesPacket( | 465 ConstructRequestHeadersAndMultipleDataFramesPacket( |
| 464 QuicPacketNumber packet_number, | 466 QuicPacketNumber packet_number, |
| 465 bool fin, | 467 bool fin, |
| 466 RequestPriority request_priority, | 468 RequestPriority request_priority, |
| 467 size_t* spdy_headers_frame_length, | 469 size_t* spdy_headers_frame_length, |
| 468 const std::vector<std::string>& data) { | 470 const std::vector<std::string>& data) { |
| 469 SpdyPriority priority = | 471 SpdyPriority priority = |
| 470 ConvertRequestPriorityToQuicPriority(request_priority); | 472 ConvertRequestPriorityToQuicPriority(request_priority); |
| 471 std::unique_ptr<QuicReceivedPacket> packet( | 473 std::unique_ptr<QuicReceivedPacket> packet( |
| 472 client_maker_.MakeRequestHeadersAndMultipleDataFramesPacket( | 474 client_maker_.MakeRequestHeadersAndMultipleDataFramesPacket( |
| 473 packet_number, stream_id_, kIncludeVersion, fin, priority, | 475 packet_number, stream_id_, kIncludeVersion, fin, priority, |
| 474 request_headers_, spdy_headers_frame_length, data)); | 476 std::move(request_headers_), spdy_headers_frame_length, data)); |
| 475 DVLOG(2) << "packet(" << packet_number << "): " << std::endl | 477 DVLOG(2) << "packet(" << packet_number << "): " << std::endl |
| 476 << QuicUtils::StringToHexASCIIDump(packet->AsStringPiece()); | 478 << QuicUtils::StringToHexASCIIDump(packet->AsStringPiece()); |
| 477 return packet; | 479 return packet; |
| 478 } | 480 } |
| 479 | 481 |
| 480 std::unique_ptr<QuicReceivedPacket> ConstructResponseHeadersPacket( | 482 std::unique_ptr<QuicReceivedPacket> ConstructResponseHeadersPacket( |
| 481 QuicPacketNumber packet_number, | 483 QuicPacketNumber packet_number, |
| 482 bool fin, | 484 bool fin, |
| 483 const SpdyHeaderBlock& response_headers, | 485 SpdyHeaderBlock response_headers, |
| 484 size_t* spdy_headers_frame_length, | 486 size_t* spdy_headers_frame_length, |
| 485 QuicStreamOffset* offset) { | 487 QuicStreamOffset* offset) { |
| 486 return server_maker_.MakeResponseHeadersPacket( | 488 return server_maker_.MakeResponseHeadersPacket( |
| 487 packet_number, stream_id_, !kIncludeVersion, fin, response_headers, | 489 packet_number, stream_id_, !kIncludeVersion, fin, |
| 488 spdy_headers_frame_length, offset); | 490 std::move(response_headers), spdy_headers_frame_length, offset); |
| 489 } | 491 } |
| 490 | 492 |
| 491 std::unique_ptr<QuicReceivedPacket> ConstructResponseTrailersPacket( | 493 std::unique_ptr<QuicReceivedPacket> ConstructResponseTrailersPacket( |
| 492 QuicPacketNumber packet_number, | 494 QuicPacketNumber packet_number, |
| 493 bool fin, | 495 bool fin, |
| 494 const SpdyHeaderBlock& trailers, | 496 const SpdyHeaderBlock& trailers, |
| 495 size_t* spdy_headers_frame_length, | 497 size_t* spdy_headers_frame_length, |
| 496 QuicStreamOffset* offset) { | 498 QuicStreamOffset* offset) { |
| 497 return server_maker_.MakeResponseHeadersPacket( | 499 return server_maker_.MakeResponseHeadersPacket( |
| 498 packet_number, stream_id_, !kIncludeVersion, fin, trailers, | 500 packet_number, stream_id_, !kIncludeVersion, fin, trailers, |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 626 | 628 |
| 627 // Server acks the request. | 629 // Server acks the request. |
| 628 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 630 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| 629 | 631 |
| 630 // Server sends the response headers. | 632 // Server sends the response headers. |
| 631 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 633 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
| 632 | 634 |
| 633 size_t spdy_response_headers_frame_length; | 635 size_t spdy_response_headers_frame_length; |
| 634 QuicStreamOffset offset = 0; | 636 QuicStreamOffset offset = 0; |
| 635 ProcessPacket(ConstructResponseHeadersPacket( | 637 ProcessPacket(ConstructResponseHeadersPacket( |
| 636 2, !kFin, response_headers, &spdy_response_headers_frame_length, | 638 2, !kFin, std::move(response_headers), |
| 637 &offset)); | 639 &spdy_response_headers_frame_length, &offset)); |
| 638 | 640 |
| 639 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 641 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
| 640 TestCompletionCallback cb; | 642 TestCompletionCallback cb; |
| 641 int rv = delegate->ReadData(cb.callback()); | 643 int rv = delegate->ReadData(cb.callback()); |
| 642 EXPECT_EQ(ERR_IO_PENDING, rv); | 644 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 643 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 645 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
| 644 const char kResponseBody[] = "Hello world!"; | 646 const char kResponseBody[] = "Hello world!"; |
| 645 // Server sends data. | 647 // Server sends data. |
| 646 ProcessPacket( | 648 ProcessPacket( |
| 647 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); | 649 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 744 delegate->WaitUntilNextCallback(); // OnDataSent | 746 delegate->WaitUntilNextCallback(); // OnDataSent |
| 745 | 747 |
| 746 // Server acks the request. | 748 // Server acks the request. |
| 747 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 749 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| 748 | 750 |
| 749 // Server sends the response headers. | 751 // Server sends the response headers. |
| 750 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 752 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
| 751 size_t spdy_response_headers_frame_length; | 753 size_t spdy_response_headers_frame_length; |
| 752 QuicStreamOffset offset = 0; | 754 QuicStreamOffset offset = 0; |
| 753 ProcessPacket(ConstructResponseHeadersPacket( | 755 ProcessPacket(ConstructResponseHeadersPacket( |
| 754 2, !kFin, response_headers, &spdy_response_headers_frame_length, | 756 2, !kFin, std::move(response_headers), |
| 755 &offset)); | 757 &spdy_response_headers_frame_length, &offset)); |
| 756 | 758 |
| 757 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 759 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
| 758 TestCompletionCallback cb; | 760 TestCompletionCallback cb; |
| 759 int rv = delegate->ReadData(cb.callback()); | 761 int rv = delegate->ReadData(cb.callback()); |
| 760 EXPECT_EQ(ERR_IO_PENDING, rv); | 762 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 761 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 763 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
| 762 const char kResponseBody[] = "Hello world!"; | 764 const char kResponseBody[] = "Hello world!"; |
| 763 // Server sends data. | 765 // Server sends data. |
| 764 ProcessPacket( | 766 ProcessPacket( |
| 765 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); | 767 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 843 delegate->WaitUntilNextCallback(); // OnDataSent | 845 delegate->WaitUntilNextCallback(); // OnDataSent |
| 844 | 846 |
| 845 // Server acks the request. | 847 // Server acks the request. |
| 846 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 848 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| 847 | 849 |
| 848 // Server sends the response headers. | 850 // Server sends the response headers. |
| 849 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 851 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
| 850 size_t spdy_response_headers_frame_length; | 852 size_t spdy_response_headers_frame_length; |
| 851 QuicStreamOffset offset = 0; | 853 QuicStreamOffset offset = 0; |
| 852 ProcessPacket(ConstructResponseHeadersPacket( | 854 ProcessPacket(ConstructResponseHeadersPacket( |
| 853 2, !kFin, response_headers, &spdy_response_headers_frame_length, | 855 2, !kFin, std::move(response_headers), |
| 854 &offset)); | 856 &spdy_response_headers_frame_length, &offset)); |
| 855 | 857 |
| 856 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 858 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
| 857 TestCompletionCallback cb; | 859 TestCompletionCallback cb; |
| 858 int rv = delegate->ReadData(cb.callback()); | 860 int rv = delegate->ReadData(cb.callback()); |
| 859 EXPECT_EQ(ERR_IO_PENDING, rv); | 861 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 860 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 862 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
| 861 const char kResponseBody[] = "Hello world!"; | 863 const char kResponseBody[] = "Hello world!"; |
| 862 // Server sends data. | 864 // Server sends data. |
| 863 ProcessPacket( | 865 ProcessPacket( |
| 864 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); | 866 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 943 delegate->WaitUntilNextCallback(); // OnDataSent | 945 delegate->WaitUntilNextCallback(); // OnDataSent |
| 944 | 946 |
| 945 // Server acks the request. | 947 // Server acks the request. |
| 946 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 948 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| 947 | 949 |
| 948 // Server sends the response headers. | 950 // Server sends the response headers. |
| 949 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 951 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
| 950 size_t spdy_response_headers_frame_length; | 952 size_t spdy_response_headers_frame_length; |
| 951 QuicStreamOffset offset = 0; | 953 QuicStreamOffset offset = 0; |
| 952 ProcessPacket(ConstructResponseHeadersPacket( | 954 ProcessPacket(ConstructResponseHeadersPacket( |
| 953 2, !kFin, response_headers, &spdy_response_headers_frame_length, | 955 2, !kFin, std::move(response_headers), |
| 954 &offset)); | 956 &spdy_response_headers_frame_length, &offset)); |
| 955 | 957 |
| 956 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 958 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
| 957 TestCompletionCallback cb; | 959 TestCompletionCallback cb; |
| 958 int rv = delegate->ReadData(cb.callback()); | 960 int rv = delegate->ReadData(cb.callback()); |
| 959 EXPECT_EQ(ERR_IO_PENDING, rv); | 961 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 960 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 962 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
| 961 const char kResponseBody[] = "Hello world!"; | 963 const char kResponseBody[] = "Hello world!"; |
| 962 // Server sends data. | 964 // Server sends data. |
| 963 ProcessPacket( | 965 ProcessPacket( |
| 964 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); | 966 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1032 delegate->WaitUntilNextCallback(); // OnDataSent | 1034 delegate->WaitUntilNextCallback(); // OnDataSent |
| 1033 | 1035 |
| 1034 // Server acks the request. | 1036 // Server acks the request. |
| 1035 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 1037 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| 1036 | 1038 |
| 1037 // Server sends the response headers. | 1039 // Server sends the response headers. |
| 1038 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1040 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
| 1039 size_t spdy_response_headers_frame_length; | 1041 size_t spdy_response_headers_frame_length; |
| 1040 QuicStreamOffset offset = 0; | 1042 QuicStreamOffset offset = 0; |
| 1041 ProcessPacket(ConstructResponseHeadersPacket( | 1043 ProcessPacket(ConstructResponseHeadersPacket( |
| 1042 2, !kFin, response_headers, &spdy_response_headers_frame_length, | 1044 2, !kFin, std::move(response_headers), |
| 1043 &offset)); | 1045 &spdy_response_headers_frame_length, &offset)); |
| 1044 | 1046 |
| 1045 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 1047 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
| 1046 TestCompletionCallback cb; | 1048 TestCompletionCallback cb; |
| 1047 int rv = delegate->ReadData(cb.callback()); | 1049 int rv = delegate->ReadData(cb.callback()); |
| 1048 EXPECT_EQ(ERR_IO_PENDING, rv); | 1050 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 1049 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 1051 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
| 1050 const char kResponseBody[] = "Hello world!"; | 1052 const char kResponseBody[] = "Hello world!"; |
| 1051 // Server sends data. | 1053 // Server sends data. |
| 1052 ProcessPacket( | 1054 ProcessPacket( |
| 1053 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); | 1055 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1109 delegate->WaitUntilNextCallback(); // OnDataSent | 1111 delegate->WaitUntilNextCallback(); // OnDataSent |
| 1110 | 1112 |
| 1111 // Server acks the request. | 1113 // Server acks the request. |
| 1112 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 1114 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| 1113 | 1115 |
| 1114 // Server sends the response headers. | 1116 // Server sends the response headers. |
| 1115 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1117 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
| 1116 size_t spdy_response_headers_frame_length; | 1118 size_t spdy_response_headers_frame_length; |
| 1117 QuicStreamOffset offset = 0; | 1119 QuicStreamOffset offset = 0; |
| 1118 ProcessPacket(ConstructResponseHeadersPacket( | 1120 ProcessPacket(ConstructResponseHeadersPacket( |
| 1119 2, !kFin, response_headers, &spdy_response_headers_frame_length, | 1121 2, !kFin, std::move(response_headers), |
| 1120 &offset)); | 1122 &spdy_response_headers_frame_length, &offset)); |
| 1121 | 1123 |
| 1122 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 1124 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
| 1123 TestCompletionCallback cb; | 1125 TestCompletionCallback cb; |
| 1124 int rv = delegate->ReadData(cb.callback()); | 1126 int rv = delegate->ReadData(cb.callback()); |
| 1125 EXPECT_EQ(ERR_IO_PENDING, rv); | 1127 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 1126 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 1128 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
| 1127 const char kResponseBody[] = "Hello world!"; | 1129 const char kResponseBody[] = "Hello world!"; |
| 1128 // Server sends data. | 1130 // Server sends data. |
| 1129 ProcessPacket( | 1131 ProcessPacket( |
| 1130 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); | 1132 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1180 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); | 1182 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
| 1181 ConfirmHandshake(); | 1183 ConfirmHandshake(); |
| 1182 delegate->WaitUntilNextCallback(); // OnStreamReady | 1184 delegate->WaitUntilNextCallback(); // OnStreamReady |
| 1183 | 1185 |
| 1184 // Server acks the request. | 1186 // Server acks the request. |
| 1185 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 1187 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| 1186 | 1188 |
| 1187 // Server sends the response headers. | 1189 // Server sends the response headers. |
| 1188 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1190 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
| 1189 size_t spdy_response_headers_frame_length; | 1191 size_t spdy_response_headers_frame_length; |
| 1190 ProcessPacket(ConstructResponseHeadersPacket( | 1192 ProcessPacket( |
| 1191 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0)); | 1193 ConstructResponseHeadersPacket(2, !kFin, std::move(response_headers), |
| 1194 &spdy_response_headers_frame_length, 0)); |
| 1192 | 1195 |
| 1193 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 1196 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
| 1194 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 1197 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
| 1195 | 1198 |
| 1196 // Client sends a data packet. | 1199 // Client sends a data packet. |
| 1197 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData)); | 1200 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData)); |
| 1198 | 1201 |
| 1199 delegate->SendData(buf, buf->size(), false); | 1202 delegate->SendData(buf, buf->size(), false); |
| 1200 delegate->WaitUntilNextCallback(); // OnDataSent | 1203 delegate->WaitUntilNextCallback(); // OnDataSent |
| 1201 | 1204 |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1302 | 1305 |
| 1303 // Server acks the request. | 1306 // Server acks the request. |
| 1304 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 1307 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| 1305 | 1308 |
| 1306 // Server sends the response headers. | 1309 // Server sends the response headers. |
| 1307 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1310 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
| 1308 | 1311 |
| 1309 size_t spdy_response_headers_frame_length; | 1312 size_t spdy_response_headers_frame_length; |
| 1310 QuicStreamOffset offset = 0; | 1313 QuicStreamOffset offset = 0; |
| 1311 ProcessPacket(ConstructResponseHeadersPacket( | 1314 ProcessPacket(ConstructResponseHeadersPacket( |
| 1312 2, !kFin, response_headers, &spdy_response_headers_frame_length, | 1315 2, !kFin, std::move(response_headers), |
| 1313 &offset)); | 1316 &spdy_response_headers_frame_length, &offset)); |
| 1314 | 1317 |
| 1315 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 1318 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
| 1316 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 1319 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
| 1317 | 1320 |
| 1318 TestCompletionCallback cb; | 1321 TestCompletionCallback cb; |
| 1319 int rv = delegate->ReadData(cb.callback()); | 1322 int rv = delegate->ReadData(cb.callback()); |
| 1320 EXPECT_EQ(ERR_IO_PENDING, rv); | 1323 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 1321 | 1324 |
| 1322 // Server sends a Rst. | 1325 // Server sends a Rst. |
| 1323 ProcessPacket(ConstructServerRstStreamPacket(3)); | 1326 ProcessPacket(ConstructServerRstStreamPacket(3)); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1358 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); | 1361 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
| 1359 ConfirmHandshake(); | 1362 ConfirmHandshake(); |
| 1360 delegate->WaitUntilNextCallback(); // OnStreamReady | 1363 delegate->WaitUntilNextCallback(); // OnStreamReady |
| 1361 | 1364 |
| 1362 // Server acks the request. | 1365 // Server acks the request. |
| 1363 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 1366 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| 1364 | 1367 |
| 1365 // Server sends the response headers. | 1368 // Server sends the response headers. |
| 1366 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1369 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
| 1367 size_t spdy_response_headers_frame_length; | 1370 size_t spdy_response_headers_frame_length; |
| 1368 ProcessPacket(ConstructResponseHeadersPacket( | 1371 ProcessPacket( |
| 1369 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0)); | 1372 ConstructResponseHeadersPacket(2, !kFin, std::move(response_headers), |
| 1373 &spdy_response_headers_frame_length, 0)); |
| 1370 | 1374 |
| 1371 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 1375 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
| 1372 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 1376 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
| 1373 | 1377 |
| 1374 // Send a DATA frame. | 1378 // Send a DATA frame. |
| 1375 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData)); | 1379 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData)); |
| 1376 | 1380 |
| 1377 delegate->SendData(buf, buf->size(), false); | 1381 delegate->SendData(buf, buf->size(), false); |
| 1378 delegate->WaitUntilNextCallback(); // OnDataSent | 1382 delegate->WaitUntilNextCallback(); // OnDataSent |
| 1379 | 1383 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1417 | 1421 |
| 1418 // Server acks the request. | 1422 // Server acks the request. |
| 1419 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 1423 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| 1420 | 1424 |
| 1421 // Server sends the response headers. | 1425 // Server sends the response headers. |
| 1422 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1426 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
| 1423 | 1427 |
| 1424 size_t spdy_response_headers_frame_length; | 1428 size_t spdy_response_headers_frame_length; |
| 1425 QuicStreamOffset offset = 0; | 1429 QuicStreamOffset offset = 0; |
| 1426 ProcessPacket(ConstructResponseHeadersPacket( | 1430 ProcessPacket(ConstructResponseHeadersPacket( |
| 1427 2, !kFin, response_headers, &spdy_response_headers_frame_length, | 1431 2, !kFin, std::move(response_headers), |
| 1428 &offset)); | 1432 &spdy_response_headers_frame_length, &offset)); |
| 1429 | 1433 |
| 1430 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 1434 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
| 1431 TestCompletionCallback cb; | 1435 TestCompletionCallback cb; |
| 1432 int rv = delegate->ReadData(cb.callback()); | 1436 int rv = delegate->ReadData(cb.callback()); |
| 1433 EXPECT_EQ(ERR_IO_PENDING, rv); | 1437 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 1434 session()->connection()->CloseConnection( | 1438 session()->connection()->CloseConnection( |
| 1435 QUIC_NO_ERROR, "test", ConnectionCloseBehavior::SILENT_CLOSE); | 1439 QUIC_NO_ERROR, "test", ConnectionCloseBehavior::SILENT_CLOSE); |
| 1436 delegate->WaitUntilNextCallback(); // OnFailed | 1440 delegate->WaitUntilNextCallback(); // OnFailed |
| 1437 EXPECT_TRUE(delegate->on_failed_called()); | 1441 EXPECT_TRUE(delegate->on_failed_called()); |
| 1438 | 1442 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1473 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); | 1477 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
| 1474 ConfirmHandshake(); | 1478 ConfirmHandshake(); |
| 1475 delegate->WaitUntilNextCallback(); // OnStreamReady | 1479 delegate->WaitUntilNextCallback(); // OnStreamReady |
| 1476 | 1480 |
| 1477 // Server acks the request. | 1481 // Server acks the request. |
| 1478 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 1482 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| 1479 | 1483 |
| 1480 // Server sends the response headers. | 1484 // Server sends the response headers. |
| 1481 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1485 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
| 1482 size_t spdy_response_headers_frame_length; | 1486 size_t spdy_response_headers_frame_length; |
| 1483 ProcessPacket(ConstructResponseHeadersPacket( | 1487 ProcessPacket( |
| 1484 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0)); | 1488 ConstructResponseHeadersPacket(2, !kFin, std::move(response_headers), |
| 1489 &spdy_response_headers_frame_length, 0)); |
| 1485 | 1490 |
| 1486 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 1491 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
| 1487 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 1492 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
| 1488 | 1493 |
| 1489 // Cancel the stream after ReadData returns ERR_IO_PENDING. | 1494 // Cancel the stream after ReadData returns ERR_IO_PENDING. |
| 1490 TestCompletionCallback cb; | 1495 TestCompletionCallback cb; |
| 1491 EXPECT_EQ(ERR_IO_PENDING, delegate->ReadData(cb.callback())); | 1496 EXPECT_EQ(ERR_IO_PENDING, delegate->ReadData(cb.callback())); |
| 1492 delegate->CancelStream(); | 1497 delegate->CancelStream(); |
| 1493 | 1498 |
| 1494 base::RunLoop().RunUntilIdle(); | 1499 base::RunLoop().RunUntilIdle(); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1526 delegate->WaitUntilNextCallback(); // OnStreamReady | 1531 delegate->WaitUntilNextCallback(); // OnStreamReady |
| 1527 | 1532 |
| 1528 // Server acks the request. | 1533 // Server acks the request. |
| 1529 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 1534 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| 1530 | 1535 |
| 1531 // Server sends the response headers. | 1536 // Server sends the response headers. |
| 1532 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1537 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
| 1533 | 1538 |
| 1534 size_t spdy_response_headers_frame_length; | 1539 size_t spdy_response_headers_frame_length; |
| 1535 ProcessPacket(ConstructResponseHeadersPacket( | 1540 ProcessPacket(ConstructResponseHeadersPacket( |
| 1536 2, !kFin, response_headers, &spdy_response_headers_frame_length, | 1541 2, !kFin, std::move(response_headers), |
| 1537 nullptr)); | 1542 &spdy_response_headers_frame_length, nullptr)); |
| 1538 | 1543 |
| 1539 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 1544 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
| 1540 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 1545 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
| 1541 | 1546 |
| 1542 base::RunLoop().RunUntilIdle(); | 1547 base::RunLoop().RunUntilIdle(); |
| 1543 | 1548 |
| 1544 EXPECT_EQ(0, delegate->on_data_read_count()); | 1549 EXPECT_EQ(0, delegate->on_data_read_count()); |
| 1545 EXPECT_EQ(0, delegate->on_data_sent_count()); | 1550 EXPECT_EQ(0, delegate->on_data_sent_count()); |
| 1546 } | 1551 } |
| 1547 | 1552 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1569 delegate->WaitUntilNextCallback(); // OnStreamReady | 1574 delegate->WaitUntilNextCallback(); // OnStreamReady |
| 1570 | 1575 |
| 1571 // Server acks the request. | 1576 // Server acks the request. |
| 1572 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 1577 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| 1573 | 1578 |
| 1574 // Server sends the response headers. | 1579 // Server sends the response headers. |
| 1575 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1580 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
| 1576 | 1581 |
| 1577 size_t spdy_response_headers_frame_length; | 1582 size_t spdy_response_headers_frame_length; |
| 1578 ProcessPacket(ConstructResponseHeadersPacket( | 1583 ProcessPacket(ConstructResponseHeadersPacket( |
| 1579 2, !kFin, response_headers, &spdy_response_headers_frame_length, | 1584 2, !kFin, std::move(response_headers), |
| 1580 nullptr)); | 1585 &spdy_response_headers_frame_length, nullptr)); |
| 1581 | 1586 |
| 1582 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 1587 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
| 1583 | 1588 |
| 1584 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 1589 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
| 1585 | 1590 |
| 1586 TestCompletionCallback cb; | 1591 TestCompletionCallback cb; |
| 1587 int rv = delegate->ReadData(cb.callback()); | 1592 int rv = delegate->ReadData(cb.callback()); |
| 1588 EXPECT_EQ(ERR_IO_PENDING, rv); | 1593 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 1589 const char kResponseBody[] = "Hello world!"; | 1594 const char kResponseBody[] = "Hello world!"; |
| 1590 // Server sends data. | 1595 // Server sends data. |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1622 | 1627 |
| 1623 // Server acks the request. | 1628 // Server acks the request. |
| 1624 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); | 1629 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); |
| 1625 | 1630 |
| 1626 // Server sends the response headers. | 1631 // Server sends the response headers. |
| 1627 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1632 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
| 1628 | 1633 |
| 1629 QuicStreamOffset offset = 0; | 1634 QuicStreamOffset offset = 0; |
| 1630 size_t spdy_response_headers_frame_length; | 1635 size_t spdy_response_headers_frame_length; |
| 1631 ProcessPacket(ConstructResponseHeadersPacket( | 1636 ProcessPacket(ConstructResponseHeadersPacket( |
| 1632 2, !kFin, response_headers, &spdy_response_headers_frame_length, | 1637 2, !kFin, std::move(response_headers), |
| 1633 &offset)); | 1638 &spdy_response_headers_frame_length, &offset)); |
| 1634 | 1639 |
| 1635 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 1640 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
| 1636 | 1641 |
| 1637 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 1642 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
| 1638 | 1643 |
| 1639 TestCompletionCallback cb; | 1644 TestCompletionCallback cb; |
| 1640 int rv = delegate->ReadData(cb.callback()); | 1645 int rv = delegate->ReadData(cb.callback()); |
| 1641 EXPECT_EQ(ERR_IO_PENDING, rv); | 1646 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 1642 const char kResponseBody[] = "Hello world!"; | 1647 const char kResponseBody[] = "Hello world!"; |
| 1643 // Server sends data. | 1648 // Server sends data. |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1661 | 1666 |
| 1662 base::RunLoop().RunUntilIdle(); | 1667 base::RunLoop().RunUntilIdle(); |
| 1663 | 1668 |
| 1664 EXPECT_EQ(1, delegate->on_data_read_count()); | 1669 EXPECT_EQ(1, delegate->on_data_read_count()); |
| 1665 EXPECT_EQ(0, delegate->on_data_sent_count()); | 1670 EXPECT_EQ(0, delegate->on_data_sent_count()); |
| 1666 } | 1671 } |
| 1667 | 1672 |
| 1668 } // namespace test | 1673 } // namespace test |
| 1669 | 1674 |
| 1670 } // namespace net | 1675 } // namespace net |
| OLD | NEW |