OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/spdy/spdy_stream.h" | 5 #include "net/spdy/spdy_stream.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <cstddef> | 9 #include <cstddef> |
10 #include <limits> | 10 #include <limits> |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); | 286 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
287 AddWrite(req); | 287 AddWrite(req); |
288 | 288 |
289 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); | 289 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); |
290 AddRead(reply); | 290 AddRead(reply); |
291 | 291 |
292 SpdySerializedFrame push( | 292 SpdySerializedFrame push( |
293 spdy_util_.ConstructSpdyPush(nullptr, 0, 2, 1, kPushUrl)); | 293 spdy_util_.ConstructSpdyPush(nullptr, 0, 2, 1, kPushUrl)); |
294 AddRead(push); | 294 AddRead(push); |
295 | 295 |
| 296 SpdySerializedFrame priority( |
| 297 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); |
| 298 AddWrite(priority); |
| 299 |
296 AddReadPause(); | 300 AddReadPause(); |
297 | 301 |
298 base::StringPiece pushed_msg("foo"); | 302 base::StringPiece pushed_msg("foo"); |
299 SpdySerializedFrame pushed_body(spdy_util_.ConstructSpdyDataFrame( | 303 SpdySerializedFrame pushed_body(spdy_util_.ConstructSpdyDataFrame( |
300 2, pushed_msg.data(), pushed_msg.size(), true)); | 304 2, pushed_msg.data(), pushed_msg.size(), true)); |
301 AddRead(pushed_body); | 305 AddRead(pushed_body); |
302 | 306 |
303 base::StringPiece msg("bar"); | 307 base::StringPiece msg("bar"); |
304 SpdySerializedFrame body( | 308 SpdySerializedFrame body( |
305 spdy_util_.ConstructSpdyDataFrame(1, msg.data(), msg.size(), true)); | 309 spdy_util_.ConstructSpdyDataFrame(1, msg.data(), msg.size(), true)); |
(...skipping 26 matching lines...) Expand all Loading... |
332 | 336 |
333 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); | 337 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
334 EXPECT_THAT( | 338 EXPECT_THAT( |
335 stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND), | 339 stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND), |
336 IsError(ERR_IO_PENDING)); | 340 IsError(ERR_IO_PENDING)); |
337 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); | 341 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); |
338 | 342 |
339 data.RunUntilPaused(); | 343 data.RunUntilPaused(); |
340 | 344 |
341 base::WeakPtr<SpdyStream> push_stream; | 345 base::WeakPtr<SpdyStream> push_stream; |
342 EXPECT_THAT( | 346 EXPECT_THAT(session->GetPushStream(GURL(kPushUrl), IDLE, &push_stream, |
343 session->GetPushStream(GURL(kPushUrl), &push_stream, NetLogWithSource()), | 347 NetLogWithSource()), |
344 IsOk()); | 348 IsOk()); |
345 ASSERT_TRUE(push_stream); | 349 ASSERT_TRUE(push_stream); |
346 EXPECT_EQ(kPushUrl, push_stream->GetUrlFromHeaders().spec()); | 350 EXPECT_EQ(kPushUrl, push_stream->GetUrlFromHeaders().spec()); |
347 | 351 |
348 LoadTimingInfo load_timing_info; | 352 LoadTimingInfo load_timing_info; |
349 EXPECT_TRUE(push_stream->GetLoadTimingInfo(&load_timing_info)); | 353 EXPECT_TRUE(push_stream->GetLoadTimingInfo(&load_timing_info)); |
350 EXPECT_EQ(g_time_now, load_timing_info.push_start); | 354 EXPECT_EQ(g_time_now, load_timing_info.push_start); |
351 EXPECT_TRUE(load_timing_info.push_end.is_null()); | 355 EXPECT_TRUE(load_timing_info.push_end.is_null()); |
352 | 356 |
353 StreamDelegateDoNothing push_delegate(push_stream); | 357 StreamDelegateDoNothing push_delegate(push_stream); |
354 push_stream->SetDelegate(&push_delegate); | 358 push_stream->SetDelegate(&push_delegate); |
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
602 AddWrite(req); | 606 AddWrite(req); |
603 | 607 |
604 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); | 608 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); |
605 AddRead(reply); | 609 AddRead(reply); |
606 | 610 |
607 const char* const kExtraHeaders[] = {"X-UpperCase", "yes"}; | 611 const char* const kExtraHeaders[] = {"X-UpperCase", "yes"}; |
608 SpdySerializedFrame push(spdy_util_.ConstructSpdyPush( | 612 SpdySerializedFrame push(spdy_util_.ConstructSpdyPush( |
609 kExtraHeaders, arraysize(kExtraHeaders) / 2, 2, 1, kPushUrl)); | 613 kExtraHeaders, arraysize(kExtraHeaders) / 2, 2, 1, kPushUrl)); |
610 AddRead(push); | 614 AddRead(push); |
611 | 615 |
| 616 SpdySerializedFrame priority( |
| 617 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); |
| 618 AddWrite(priority); |
| 619 |
612 SpdySerializedFrame rst( | 620 SpdySerializedFrame rst( |
613 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR)); | 621 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR)); |
614 AddWrite(rst); | 622 AddWrite(rst); |
615 | 623 |
616 AddReadPause(); | 624 AddReadPause(); |
617 | 625 |
618 AddReadEOF(); | 626 AddReadEOF(); |
619 | 627 |
620 SequencedSocketData data(GetReads(), GetNumReads(), GetWrites(), | 628 SequencedSocketData data(GetReads(), GetNumReads(), GetWrites(), |
621 GetNumWrites()); | 629 GetNumWrites()); |
(...skipping 16 matching lines...) Expand all Loading... |
638 | 646 |
639 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); | 647 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
640 EXPECT_THAT( | 648 EXPECT_THAT( |
641 stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND), | 649 stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND), |
642 IsError(ERR_IO_PENDING)); | 650 IsError(ERR_IO_PENDING)); |
643 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); | 651 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); |
644 | 652 |
645 data.RunUntilPaused(); | 653 data.RunUntilPaused(); |
646 | 654 |
647 base::WeakPtr<SpdyStream> push_stream; | 655 base::WeakPtr<SpdyStream> push_stream; |
648 EXPECT_THAT( | 656 EXPECT_THAT(session->GetPushStream(GURL(kPushUrl), IDLE, &push_stream, |
649 session->GetPushStream(GURL(kPushUrl), &push_stream, NetLogWithSource()), | 657 NetLogWithSource()), |
650 IsOk()); | 658 IsOk()); |
651 EXPECT_FALSE(push_stream); | 659 EXPECT_FALSE(push_stream); |
652 | 660 |
653 data.Resume(); | 661 data.Resume(); |
654 | 662 |
655 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); | 663 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); |
656 | 664 |
657 EXPECT_TRUE(data.AllWriteDataConsumed()); | 665 EXPECT_TRUE(data.AllWriteDataConsumed()); |
658 EXPECT_TRUE(data.AllReadDataConsumed()); | 666 EXPECT_TRUE(data.AllReadDataConsumed()); |
659 } | 667 } |
660 | 668 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
714 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); | 722 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
715 AddWrite(req); | 723 AddWrite(req); |
716 | 724 |
717 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); | 725 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); |
718 AddRead(reply); | 726 AddRead(reply); |
719 | 727 |
720 SpdySerializedFrame push_promise(spdy_util_.ConstructInitialSpdyPushFrame( | 728 SpdySerializedFrame push_promise(spdy_util_.ConstructInitialSpdyPushFrame( |
721 spdy_util_.ConstructGetHeaderBlock(kPushUrl), 2, 1)); | 729 spdy_util_.ConstructGetHeaderBlock(kPushUrl), 2, 1)); |
722 AddRead(push_promise); | 730 AddRead(push_promise); |
723 | 731 |
| 732 SpdySerializedFrame priority( |
| 733 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); |
| 734 AddWrite(priority); |
| 735 |
724 // Response headers without ":status" header field: protocol error. | 736 // Response headers without ":status" header field: protocol error. |
725 SpdyHeaderBlock header_block_without_status; | 737 SpdyHeaderBlock header_block_without_status; |
726 header_block_without_status[spdy_util_.GetMethodKey()] = "GET"; | 738 header_block_without_status[spdy_util_.GetMethodKey()] = "GET"; |
727 header_block_without_status[spdy_util_.GetHostKey()] = "www.example.org"; | 739 header_block_without_status[spdy_util_.GetHostKey()] = "www.example.org"; |
728 header_block_without_status[spdy_util_.GetSchemeKey()] = "https"; | 740 header_block_without_status[spdy_util_.GetSchemeKey()] = "https"; |
729 header_block_without_status[spdy_util_.GetPathKey()] = "/"; | 741 header_block_without_status[spdy_util_.GetPathKey()] = "/"; |
730 SpdySerializedFrame pushed_reply( | 742 SpdySerializedFrame pushed_reply( |
731 spdy_util_.ConstructSpdyReply(2, std::move(header_block_without_status))); | 743 spdy_util_.ConstructSpdyReply(2, std::move(header_block_without_status))); |
732 AddRead(pushed_reply); | 744 AddRead(pushed_reply); |
733 | 745 |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
823 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); | 835 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
824 AddWrite(req); | 836 AddWrite(req); |
825 | 837 |
826 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); | 838 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); |
827 AddRead(reply); | 839 AddRead(reply); |
828 | 840 |
829 SpdySerializedFrame push_promise(spdy_util_.ConstructInitialSpdyPushFrame( | 841 SpdySerializedFrame push_promise(spdy_util_.ConstructInitialSpdyPushFrame( |
830 spdy_util_.ConstructGetHeaderBlock(kPushUrl), 2, 1)); | 842 spdy_util_.ConstructGetHeaderBlock(kPushUrl), 2, 1)); |
831 AddRead(push_promise); | 843 AddRead(push_promise); |
832 | 844 |
| 845 SpdySerializedFrame priority( |
| 846 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); |
| 847 AddWrite(priority); |
| 848 |
833 SpdySerializedFrame pushed_body( | 849 SpdySerializedFrame pushed_body( |
834 spdy_util_.ConstructSpdyDataFrame(2, kPostBody, kPostBodyLength, true)); | 850 spdy_util_.ConstructSpdyDataFrame(2, kPostBody, kPostBodyLength, true)); |
835 AddRead(pushed_body); | 851 AddRead(pushed_body); |
836 | 852 |
837 SpdySerializedFrame rst( | 853 SpdySerializedFrame rst( |
838 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR)); | 854 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR)); |
839 AddWrite(rst); | 855 AddWrite(rst); |
840 | 856 |
841 SpdySerializedFrame body( | 857 SpdySerializedFrame body( |
842 spdy_util_.ConstructSpdyDataFrame(1, kPostBody, kPostBodyLength, true)); | 858 spdy_util_.ConstructSpdyDataFrame(1, kPostBody, kPostBodyLength, true)); |
(...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1455 EXPECT_EQ(response_len, stream->raw_received_bytes()); | 1471 EXPECT_EQ(response_len, stream->raw_received_bytes()); |
1456 | 1472 |
1457 // FIN | 1473 // FIN |
1458 data.Resume(); | 1474 data.Resume(); |
1459 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); | 1475 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); |
1460 } | 1476 } |
1461 | 1477 |
1462 } // namespace test | 1478 } // namespace test |
1463 | 1479 |
1464 } // namespace net | 1480 } // namespace net |
OLD | NEW |