| 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/tools/flip_server/spdy_interface.h" | 5 #include "net/tools/flip_server/spdy_interface.h" |
| 6 | 6 |
| 7 #include <list> | 7 #include <list> |
| 8 | 8 |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/strings/string_piece.h" | 10 #include "base/strings/string_piece.h" |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 MOCK_METHOD1(OnError, void(SpdyFramer::SpdyError)); | 45 MOCK_METHOD1(OnError, void(SpdyFramer::SpdyError)); |
| 46 MOCK_METHOD2(OnStreamError, void(SpdyStreamId, const std::string&)); | 46 MOCK_METHOD2(OnStreamError, void(SpdyStreamId, const std::string&)); |
| 47 MOCK_METHOD6(OnSynStream, | 47 MOCK_METHOD6(OnSynStream, |
| 48 void(SpdyStreamId, | 48 void(SpdyStreamId, |
| 49 SpdyStreamId, | 49 SpdyStreamId, |
| 50 SpdyPriority, | 50 SpdyPriority, |
| 51 bool, | 51 bool, |
| 52 bool, | 52 bool, |
| 53 const SpdyHeaderBlock&)); | 53 const SpdyHeaderBlock&)); |
| 54 MOCK_METHOD3(OnSynReply, void(SpdyStreamId, bool, const SpdyHeaderBlock&)); | 54 MOCK_METHOD3(OnSynReply, void(SpdyStreamId, bool, const SpdyHeaderBlock&)); |
| 55 MOCK_METHOD3(OnHeaders, void(SpdyStreamId, bool, const SpdyHeaderBlock&)); | 55 MOCK_METHOD5(OnHeaders, |
| 56 void(SpdyStreamId, |
| 57 bool, |
| 58 SpdyPriority, |
| 59 bool, |
| 60 const SpdyHeaderBlock&)); |
| 56 MOCK_METHOD3(OnDataFrameHeader, void(SpdyStreamId, size_t, bool)); | 61 MOCK_METHOD3(OnDataFrameHeader, void(SpdyStreamId, size_t, bool)); |
| 57 MOCK_METHOD4(OnStreamFrameData, void(SpdyStreamId, | 62 MOCK_METHOD4(OnStreamFrameData, void(SpdyStreamId, |
| 58 const char*, | 63 const char*, |
| 59 size_t, | 64 size_t, |
| 60 bool)); | 65 bool)); |
| 61 MOCK_METHOD1(OnSettings, void(bool clear_persisted)); | 66 MOCK_METHOD1(OnSettings, void(bool clear_persisted)); |
| 62 MOCK_METHOD3(OnSetting, void(SpdySettingsIds, uint8, uint32)); | 67 MOCK_METHOD3(OnSetting, void(SpdySettingsIds, uint8, uint32)); |
| 63 MOCK_METHOD2(OnPing, void(SpdyPingId unique_id, bool is_ack)); | 68 MOCK_METHOD2(OnPing, void(SpdyPingId unique_id, bool is_ack)); |
| 64 MOCK_METHOD2(OnRstStream, void(SpdyStreamId, SpdyRstStreamStatus)); | 69 MOCK_METHOD2(OnRstStream, void(SpdyStreamId, SpdyRstStreamStatus)); |
| 65 MOCK_METHOD2(OnGoAway, void(SpdyStreamId, SpdyGoAwayStatus)); | 70 MOCK_METHOD2(OnGoAway, void(SpdyStreamId, SpdyGoAwayStatus)); |
| (...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 464 interface_->SendErrorNotFound(stream_id); | 469 interface_->SendErrorNotFound(stream_id); |
| 465 | 470 |
| 466 ASSERT_EQ(2u, connection_->output_list()->size()); | 471 ASSERT_EQ(2u, connection_->output_list()->size()); |
| 467 | 472 |
| 468 { | 473 { |
| 469 InSequence s; | 474 InSequence s; |
| 470 if (GetParam() < SPDY4) { | 475 if (GetParam() < SPDY4) { |
| 471 EXPECT_CALL(*spdy_framer_visitor_, OnSynReply(stream_id, false, _)) | 476 EXPECT_CALL(*spdy_framer_visitor_, OnSynReply(stream_id, false, _)) |
| 472 .WillOnce(SaveArg<2>(&actual_header_block)); | 477 .WillOnce(SaveArg<2>(&actual_header_block)); |
| 473 } else { | 478 } else { |
| 474 EXPECT_CALL(*spdy_framer_visitor_, OnHeaders(stream_id, false, _)) | 479 EXPECT_CALL(*spdy_framer_visitor_, |
| 475 .WillOnce(SaveArg<2>(&actual_header_block)); | 480 OnHeaders(stream_id, false, 0, false, _)) |
| 481 .WillOnce(SaveArg<4>(&actual_header_block)); |
| 476 } | 482 } |
| 477 EXPECT_CALL(checkpoint, Call(0)); | 483 EXPECT_CALL(checkpoint, Call(0)); |
| 478 EXPECT_CALL(*spdy_framer_visitor_, | 484 EXPECT_CALL(*spdy_framer_visitor_, |
| 479 OnDataFrameHeader(stream_id, _, true)); | 485 OnDataFrameHeader(stream_id, _, true)); |
| 480 EXPECT_CALL(*spdy_framer_visitor_, | 486 EXPECT_CALL(*spdy_framer_visitor_, |
| 481 OnStreamFrameData(stream_id, _, _, false)).Times(1) | 487 OnStreamFrameData(stream_id, _, _, false)).Times(1) |
| 482 .WillOnce(DoAll(SaveArg<1>(&actual_data), | 488 .WillOnce(DoAll(SaveArg<1>(&actual_data), |
| 483 SaveArg<2>(&actual_size))); | 489 SaveArg<2>(&actual_size))); |
| 484 EXPECT_CALL(*spdy_framer_visitor_, | 490 EXPECT_CALL(*spdy_framer_visitor_, |
| 485 OnStreamFrameData(stream_id, NULL, 0, true)).Times(1); | 491 OnStreamFrameData(stream_id, NULL, 0, true)).Times(1); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 515 ASSERT_EQ(2u, connection_->output_list()->size()); | 521 ASSERT_EQ(2u, connection_->output_list()->size()); |
| 516 | 522 |
| 517 { | 523 { |
| 518 InSequence s; | 524 InSequence s; |
| 519 if (GetParam() < SPDY4) { | 525 if (GetParam() < SPDY4) { |
| 520 EXPECT_CALL(*spdy_framer_visitor_, | 526 EXPECT_CALL(*spdy_framer_visitor_, |
| 521 OnSynReply(stream_id, false, _)) | 527 OnSynReply(stream_id, false, _)) |
| 522 .WillOnce(SaveArg<2>(&actual_header_block)); | 528 .WillOnce(SaveArg<2>(&actual_header_block)); |
| 523 } else { | 529 } else { |
| 524 EXPECT_CALL(*spdy_framer_visitor_, | 530 EXPECT_CALL(*spdy_framer_visitor_, |
| 525 OnHeaders(stream_id, false, _)) | 531 OnHeaders(stream_id, false, 0, false, _)) |
| 526 .WillOnce(SaveArg<2>(&actual_header_block)); | 532 .WillOnce(SaveArg<4>(&actual_header_block)); |
| 527 } | 533 } |
| 528 EXPECT_CALL(checkpoint, Call(0)); | 534 EXPECT_CALL(checkpoint, Call(0)); |
| 529 EXPECT_CALL(*spdy_framer_visitor_, | 535 EXPECT_CALL(*spdy_framer_visitor_, |
| 530 OnDataFrameHeader(stream_id, _, true)); | 536 OnDataFrameHeader(stream_id, _, true)); |
| 531 EXPECT_CALL(*spdy_framer_visitor_, | 537 EXPECT_CALL(*spdy_framer_visitor_, |
| 532 OnStreamFrameData(stream_id, _, _, false)).Times(1) | 538 OnStreamFrameData(stream_id, _, _, false)).Times(1) |
| 533 .WillOnce(DoAll(SaveArg<1>(&actual_data), | 539 .WillOnce(DoAll(SaveArg<1>(&actual_data), |
| 534 SaveArg<2>(&actual_size))); | 540 SaveArg<2>(&actual_size))); |
| 535 EXPECT_CALL(*spdy_framer_visitor_, | 541 EXPECT_CALL(*spdy_framer_visitor_, |
| 536 OnStreamFrameData(stream_id, NULL, 0, true)).Times(1); | 542 OnStreamFrameData(stream_id, NULL, 0, true)).Times(1); |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 634 ASSERT_EQ(1u, connection_->output_list()->size()); | 640 ASSERT_EQ(1u, connection_->output_list()->size()); |
| 635 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin(); | 641 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin(); |
| 636 DataFrame* df = *i++; | 642 DataFrame* df = *i++; |
| 637 | 643 |
| 638 { | 644 { |
| 639 InSequence s; | 645 InSequence s; |
| 640 if (GetParam() < SPDY4) { | 646 if (GetParam() < SPDY4) { |
| 641 EXPECT_CALL(*spdy_framer_visitor_, OnSynReply(stream_id, false, _)) | 647 EXPECT_CALL(*spdy_framer_visitor_, OnSynReply(stream_id, false, _)) |
| 642 .WillOnce(SaveArg<2>(&actual_header_block)); | 648 .WillOnce(SaveArg<2>(&actual_header_block)); |
| 643 } else { | 649 } else { |
| 644 EXPECT_CALL(*spdy_framer_visitor_, OnHeaders(stream_id, false, _)) | 650 EXPECT_CALL(*spdy_framer_visitor_, |
| 645 .WillOnce(SaveArg<2>(&actual_header_block)); | 651 OnHeaders(stream_id, false, 0, false, _)) |
| 652 .WillOnce(SaveArg<4>(&actual_header_block)); |
| 646 } | 653 } |
| 647 } | 654 } |
| 648 | 655 |
| 649 spdy_framer_->ProcessInput(df->data, df->size); | 656 spdy_framer_->ProcessInput(df->data, df->size); |
| 650 ASSERT_EQ(1, spdy_framer_->frames_received()); | 657 ASSERT_EQ(1, spdy_framer_->frames_received()); |
| 651 ASSERT_EQ(3u, actual_header_block.size()); | 658 ASSERT_EQ(3u, actual_header_block.size()); |
| 652 ASSERT_EQ("200 OK", actual_header_block["status"]); | 659 ASSERT_EQ("200 OK", actual_header_block["status"]); |
| 653 ASSERT_EQ("HTTP/1.1", actual_header_block["version"]); | 660 ASSERT_EQ("HTTP/1.1", actual_header_block["version"]); |
| 654 ASSERT_EQ("value1", actual_header_block["key1"]); | 661 ASSERT_EQ("value1", actual_header_block["key1"]); |
| 655 } | 662 } |
| (...skipping 14 matching lines...) Expand all Loading... |
| 670 ASSERT_EQ(1u, connection_->output_list()->size()); | 677 ASSERT_EQ(1u, connection_->output_list()->size()); |
| 671 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin(); | 678 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin(); |
| 672 DataFrame* df = *i++; | 679 DataFrame* df = *i++; |
| 673 | 680 |
| 674 { | 681 { |
| 675 InSequence s; | 682 InSequence s; |
| 676 if (GetParam() < SPDY4) { | 683 if (GetParam() < SPDY4) { |
| 677 EXPECT_CALL(*spdy_framer_visitor_, OnSynReply(stream_id, false, _)) | 684 EXPECT_CALL(*spdy_framer_visitor_, OnSynReply(stream_id, false, _)) |
| 678 .WillOnce(SaveArg<2>(&actual_header_block)); | 685 .WillOnce(SaveArg<2>(&actual_header_block)); |
| 679 } else { | 686 } else { |
| 680 EXPECT_CALL(*spdy_framer_visitor_, OnHeaders(stream_id, false, _)) | 687 EXPECT_CALL(*spdy_framer_visitor_, |
| 681 .WillOnce(SaveArg<2>(&actual_header_block)); | 688 OnHeaders(stream_id, false, 0, false, _)) |
| 689 .WillOnce(SaveArg<4>(&actual_header_block)); |
| 682 } | 690 } |
| 683 } | 691 } |
| 684 | 692 |
| 685 spdy_framer_->ProcessInput(df->data, df->size); | 693 spdy_framer_->ProcessInput(df->data, df->size); |
| 686 ASSERT_EQ(1, spdy_framer_->frames_received()); | 694 ASSERT_EQ(1, spdy_framer_->frames_received()); |
| 687 ASSERT_EQ(3u, actual_header_block.size()); | 695 ASSERT_EQ(3u, actual_header_block.size()); |
| 688 ASSERT_EQ("200 OK", actual_header_block[":status"]); | 696 ASSERT_EQ("200 OK", actual_header_block[":status"]); |
| 689 ASSERT_EQ("HTTP/1.1", actual_header_block[":version"]); | 697 ASSERT_EQ("HTTP/1.1", actual_header_block[":version"]); |
| 690 ASSERT_EQ("value1", actual_header_block["key1"]); | 698 ASSERT_EQ("value1", actual_header_block["key1"]); |
| 691 } | 699 } |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 847 interface_->NewStream(stream_id, 0, "nonexistingfile"); | 855 interface_->NewStream(stream_id, 0, "nonexistingfile"); |
| 848 | 856 |
| 849 ASSERT_EQ(2u, connection_->output_list()->size()); | 857 ASSERT_EQ(2u, connection_->output_list()->size()); |
| 850 | 858 |
| 851 { | 859 { |
| 852 InSequence s; | 860 InSequence s; |
| 853 if (GetParam() < SPDY4) { | 861 if (GetParam() < SPDY4) { |
| 854 EXPECT_CALL(*spdy_framer_visitor_, OnSynReply(stream_id, false, _)) | 862 EXPECT_CALL(*spdy_framer_visitor_, OnSynReply(stream_id, false, _)) |
| 855 .WillOnce(SaveArg<2>(&actual_header_block)); | 863 .WillOnce(SaveArg<2>(&actual_header_block)); |
| 856 } else { | 864 } else { |
| 857 EXPECT_CALL(*spdy_framer_visitor_, OnHeaders(stream_id, false, _)) | 865 EXPECT_CALL(*spdy_framer_visitor_, |
| 858 .WillOnce(SaveArg<2>(&actual_header_block)); | 866 OnHeaders(stream_id, false, 0, false, _)) |
| 867 .WillOnce(SaveArg<4>(&actual_header_block)); |
| 859 } | 868 } |
| 860 EXPECT_CALL(checkpoint, Call(0)); | 869 EXPECT_CALL(checkpoint, Call(0)); |
| 861 EXPECT_CALL(*spdy_framer_visitor_, | 870 EXPECT_CALL(*spdy_framer_visitor_, |
| 862 OnDataFrameHeader(stream_id, _, true)); | 871 OnDataFrameHeader(stream_id, _, true)); |
| 863 EXPECT_CALL(*spdy_framer_visitor_, | 872 EXPECT_CALL(*spdy_framer_visitor_, |
| 864 OnStreamFrameData(stream_id, _, _, false)).Times(1) | 873 OnStreamFrameData(stream_id, _, _, false)).Times(1) |
| 865 .WillOnce(DoAll(SaveArg<1>(&actual_data), | 874 .WillOnce(DoAll(SaveArg<1>(&actual_data), |
| 866 SaveArg<2>(&actual_size))); | 875 SaveArg<2>(&actual_size))); |
| 867 EXPECT_CALL(*spdy_framer_visitor_, | 876 EXPECT_CALL(*spdy_framer_visitor_, |
| 868 OnStreamFrameData(stream_id, NULL, 0, true)).Times(1); | 877 OnStreamFrameData(stream_id, NULL, 0, true)).Times(1); |
| 869 } | 878 } |
| 870 | 879 |
| 871 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin(); | 880 std::list<DataFrame*>::const_iterator i = connection_->output_list()->begin(); |
| 872 DataFrame* df = *i++; | 881 DataFrame* df = *i++; |
| 873 spdy_framer_->ProcessInput(df->data, df->size); | 882 spdy_framer_->ProcessInput(df->data, df->size); |
| 874 checkpoint.Call(0); | 883 checkpoint.Call(0); |
| 875 df = *i++; | 884 df = *i++; |
| 876 spdy_framer_->ProcessInput(df->data, df->size); | 885 spdy_framer_->ProcessInput(df->data, df->size); |
| 877 | 886 |
| 878 ASSERT_EQ(2, spdy_framer_->frames_received()); | 887 ASSERT_EQ(2, spdy_framer_->frames_received()); |
| 879 ASSERT_EQ(2u, actual_header_block.size()); | 888 ASSERT_EQ(2u, actual_header_block.size()); |
| 880 ASSERT_EQ("404 Not Found", actual_header_block["status"]); | 889 ASSERT_EQ("404 Not Found", actual_header_block["status"]); |
| 881 ASSERT_EQ("HTTP/1.1", actual_header_block["version"]); | 890 ASSERT_EQ("HTTP/1.1", actual_header_block["version"]); |
| 882 ASSERT_EQ("wtf?", StringPiece(actual_data, actual_size)); | 891 ASSERT_EQ("wtf?", StringPiece(actual_data, actual_size)); |
| 883 } | 892 } |
| 884 | 893 |
| 885 } // namespace | 894 } // namespace |
| 886 | 895 |
| 887 } // namespace net | 896 } // namespace net |
| OLD | NEW |