| 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 |