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 <algorithm> | 9 #include <algorithm> |
10 #include <cstddef> | 10 #include <cstddef> |
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); | 287 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
288 AddWrite(req); | 288 AddWrite(req); |
289 | 289 |
290 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); | 290 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); |
291 AddRead(reply); | 291 AddRead(reply); |
292 | 292 |
293 SpdySerializedFrame push( | 293 SpdySerializedFrame push( |
294 spdy_util_.ConstructSpdyPush(nullptr, 0, 2, 1, kPushUrl)); | 294 spdy_util_.ConstructSpdyPush(nullptr, 0, 2, 1, kPushUrl)); |
295 AddRead(push); | 295 AddRead(push); |
296 | 296 |
| 297 SpdySerializedFrame priority( |
| 298 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); |
| 299 AddWrite(priority); |
| 300 |
297 AddReadPause(); | 301 AddReadPause(); |
298 | 302 |
299 base::StringPiece pushed_msg("foo"); | 303 base::StringPiece pushed_msg("foo"); |
300 SpdySerializedFrame pushed_body(spdy_util_.ConstructSpdyDataFrame( | 304 SpdySerializedFrame pushed_body(spdy_util_.ConstructSpdyDataFrame( |
301 2, pushed_msg.data(), pushed_msg.size(), true)); | 305 2, pushed_msg.data(), pushed_msg.size(), true)); |
302 AddRead(pushed_body); | 306 AddRead(pushed_body); |
303 | 307 |
304 base::StringPiece msg("bar"); | 308 base::StringPiece msg("bar"); |
305 SpdySerializedFrame body( | 309 SpdySerializedFrame body( |
306 spdy_util_.ConstructSpdyDataFrame(1, msg.data(), msg.size(), true)); | 310 spdy_util_.ConstructSpdyDataFrame(1, msg.data(), msg.size(), true)); |
(...skipping 26 matching lines...) Expand all Loading... |
333 | 337 |
334 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); | 338 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
335 EXPECT_THAT( | 339 EXPECT_THAT( |
336 stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND), | 340 stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND), |
337 IsError(ERR_IO_PENDING)); | 341 IsError(ERR_IO_PENDING)); |
338 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); | 342 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); |
339 | 343 |
340 data.RunUntilPaused(); | 344 data.RunUntilPaused(); |
341 | 345 |
342 base::WeakPtr<SpdyStream> push_stream; | 346 base::WeakPtr<SpdyStream> push_stream; |
343 EXPECT_THAT( | 347 EXPECT_THAT(session->GetPushStream(GURL(kPushUrl), IDLE, &push_stream, |
344 session->GetPushStream(GURL(kPushUrl), &push_stream, NetLogWithSource()), | 348 NetLogWithSource()), |
345 IsOk()); | 349 IsOk()); |
346 ASSERT_TRUE(push_stream); | 350 ASSERT_TRUE(push_stream); |
347 EXPECT_EQ(kPushUrl, push_stream->GetUrlFromHeaders().spec()); | 351 EXPECT_EQ(kPushUrl, push_stream->GetUrlFromHeaders().spec()); |
348 | 352 |
349 LoadTimingInfo load_timing_info; | 353 LoadTimingInfo load_timing_info; |
350 EXPECT_TRUE(push_stream->GetLoadTimingInfo(&load_timing_info)); | 354 EXPECT_TRUE(push_stream->GetLoadTimingInfo(&load_timing_info)); |
351 EXPECT_EQ(g_time_now, load_timing_info.push_start); | 355 EXPECT_EQ(g_time_now, load_timing_info.push_start); |
352 EXPECT_TRUE(load_timing_info.push_end.is_null()); | 356 EXPECT_TRUE(load_timing_info.push_end.is_null()); |
353 | 357 |
354 StreamDelegateDoNothing push_delegate(push_stream); | 358 StreamDelegateDoNothing push_delegate(push_stream); |
355 push_stream->SetDelegate(&push_delegate); | 359 push_stream->SetDelegate(&push_delegate); |
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
606 AddWrite(req); | 610 AddWrite(req); |
607 | 611 |
608 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); | 612 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); |
609 AddRead(reply); | 613 AddRead(reply); |
610 | 614 |
611 const char* const kExtraHeaders[] = {"X-UpperCase", "yes"}; | 615 const char* const kExtraHeaders[] = {"X-UpperCase", "yes"}; |
612 SpdySerializedFrame push(spdy_util_.ConstructSpdyPush( | 616 SpdySerializedFrame push(spdy_util_.ConstructSpdyPush( |
613 kExtraHeaders, arraysize(kExtraHeaders) / 2, 2, 1, kPushUrl)); | 617 kExtraHeaders, arraysize(kExtraHeaders) / 2, 2, 1, kPushUrl)); |
614 AddRead(push); | 618 AddRead(push); |
615 | 619 |
| 620 SpdySerializedFrame priority( |
| 621 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); |
| 622 AddWrite(priority); |
| 623 |
616 SpdySerializedFrame rst( | 624 SpdySerializedFrame rst( |
617 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR)); | 625 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR)); |
618 AddWrite(rst); | 626 AddWrite(rst); |
619 | 627 |
620 AddReadPause(); | 628 AddReadPause(); |
621 | 629 |
622 AddReadEOF(); | 630 AddReadEOF(); |
623 | 631 |
624 SequencedSocketData data(GetReads(), GetNumReads(), GetWrites(), | 632 SequencedSocketData data(GetReads(), GetNumReads(), GetWrites(), |
625 GetNumWrites()); | 633 GetNumWrites()); |
(...skipping 16 matching lines...) Expand all Loading... |
642 | 650 |
643 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); | 651 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
644 EXPECT_THAT( | 652 EXPECT_THAT( |
645 stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND), | 653 stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND), |
646 IsError(ERR_IO_PENDING)); | 654 IsError(ERR_IO_PENDING)); |
647 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); | 655 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); |
648 | 656 |
649 data.RunUntilPaused(); | 657 data.RunUntilPaused(); |
650 | 658 |
651 base::WeakPtr<SpdyStream> push_stream; | 659 base::WeakPtr<SpdyStream> push_stream; |
652 EXPECT_THAT( | 660 EXPECT_THAT(session->GetPushStream(GURL(kPushUrl), IDLE, &push_stream, |
653 session->GetPushStream(GURL(kPushUrl), &push_stream, NetLogWithSource()), | 661 NetLogWithSource()), |
654 IsOk()); | 662 IsOk()); |
655 EXPECT_FALSE(push_stream); | 663 EXPECT_FALSE(push_stream); |
656 | 664 |
657 data.Resume(); | 665 data.Resume(); |
658 | 666 |
659 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); | 667 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); |
660 | 668 |
661 EXPECT_TRUE(data.AllWriteDataConsumed()); | 669 EXPECT_TRUE(data.AllWriteDataConsumed()); |
662 EXPECT_TRUE(data.AllReadDataConsumed()); | 670 EXPECT_TRUE(data.AllReadDataConsumed()); |
663 } | 671 } |
664 | 672 |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
721 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); | 729 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
722 AddWrite(req); | 730 AddWrite(req); |
723 | 731 |
724 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); | 732 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); |
725 AddRead(reply); | 733 AddRead(reply); |
726 | 734 |
727 SpdySerializedFrame push_promise(spdy_util_.ConstructInitialSpdyPushFrame( | 735 SpdySerializedFrame push_promise(spdy_util_.ConstructInitialSpdyPushFrame( |
728 spdy_util_.ConstructGetHeaderBlock(kPushUrl), 2, 1)); | 736 spdy_util_.ConstructGetHeaderBlock(kPushUrl), 2, 1)); |
729 AddRead(push_promise); | 737 AddRead(push_promise); |
730 | 738 |
| 739 SpdySerializedFrame priority( |
| 740 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); |
| 741 AddWrite(priority); |
| 742 |
731 // Response headers without ":status" header field: protocol error. | 743 // Response headers without ":status" header field: protocol error. |
732 SpdyHeaderBlock header_block_without_status; | 744 SpdyHeaderBlock header_block_without_status; |
733 header_block_without_status[spdy_util_.GetMethodKey()] = "GET"; | 745 header_block_without_status[spdy_util_.GetMethodKey()] = "GET"; |
734 header_block_without_status[spdy_util_.GetHostKey()] = "www.example.org"; | 746 header_block_without_status[spdy_util_.GetHostKey()] = "www.example.org"; |
735 header_block_without_status[spdy_util_.GetSchemeKey()] = "https"; | 747 header_block_without_status[spdy_util_.GetSchemeKey()] = "https"; |
736 header_block_without_status[spdy_util_.GetPathKey()] = "/"; | 748 header_block_without_status[spdy_util_.GetPathKey()] = "/"; |
737 SpdySerializedFrame pushed_reply( | 749 SpdySerializedFrame pushed_reply( |
738 spdy_util_.ConstructSpdyReply(2, std::move(header_block_without_status))); | 750 spdy_util_.ConstructSpdyReply(2, std::move(header_block_without_status))); |
739 AddRead(pushed_reply); | 751 AddRead(pushed_reply); |
740 | 752 |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
833 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); | 845 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
834 AddWrite(req); | 846 AddWrite(req); |
835 | 847 |
836 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); | 848 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); |
837 AddRead(reply); | 849 AddRead(reply); |
838 | 850 |
839 SpdySerializedFrame push_promise(spdy_util_.ConstructInitialSpdyPushFrame( | 851 SpdySerializedFrame push_promise(spdy_util_.ConstructInitialSpdyPushFrame( |
840 spdy_util_.ConstructGetHeaderBlock(kPushUrl), 2, 1)); | 852 spdy_util_.ConstructGetHeaderBlock(kPushUrl), 2, 1)); |
841 AddRead(push_promise); | 853 AddRead(push_promise); |
842 | 854 |
| 855 SpdySerializedFrame priority( |
| 856 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); |
| 857 AddWrite(priority); |
| 858 |
843 SpdySerializedFrame pushed_body( | 859 SpdySerializedFrame pushed_body( |
844 spdy_util_.ConstructSpdyDataFrame(2, kPostBody, kPostBodyLength, true)); | 860 spdy_util_.ConstructSpdyDataFrame(2, kPostBody, kPostBodyLength, true)); |
845 AddRead(pushed_body); | 861 AddRead(pushed_body); |
846 | 862 |
847 SpdySerializedFrame rst( | 863 SpdySerializedFrame rst( |
848 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR)); | 864 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR)); |
849 AddWrite(rst); | 865 AddWrite(rst); |
850 | 866 |
851 SpdySerializedFrame body( | 867 SpdySerializedFrame body( |
852 spdy_util_.ConstructSpdyDataFrame(1, kPostBody, kPostBodyLength, true)); | 868 spdy_util_.ConstructSpdyDataFrame(1, kPostBody, kPostBodyLength, true)); |
(...skipping 630 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1483 EXPECT_EQ(response_len, stream->raw_received_bytes()); | 1499 EXPECT_EQ(response_len, stream->raw_received_bytes()); |
1484 | 1500 |
1485 // FIN | 1501 // FIN |
1486 data.Resume(); | 1502 data.Resume(); |
1487 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); | 1503 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); |
1488 } | 1504 } |
1489 | 1505 |
1490 } // namespace test | 1506 } // namespace test |
1491 | 1507 |
1492 } // namespace net | 1508 } // namespace net |
OLD | NEW |