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