| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_test_util_spdy3.h" | 5 #include "net/spdy/spdy_test_util_spdy3.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| (...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 451 extra_header_count, | 451 extra_header_count, |
| 452 /*compressed*/ false, | 452 /*compressed*/ false, |
| 453 stream_id, | 453 stream_id, |
| 454 LOWEST, | 454 LOWEST, |
| 455 SYN_STREAM, | 455 SYN_STREAM, |
| 456 CONTROL_FLAG_NONE, | 456 CONTROL_FLAG_NONE, |
| 457 kConnectHeaders, | 457 kConnectHeaders, |
| 458 arraysize(kConnectHeaders)); | 458 arraysize(kConnectHeaders)); |
| 459 } | 459 } |
| 460 | 460 |
| 461 // Constructs a standard SPDY SYN_STREAM frame for a WebSocket over SPDY |
| 462 // opening handshake. |
| 463 SpdyFrame* ConstructSpdyWebSocket(int stream_id, |
| 464 const char* path, |
| 465 const char* host, |
| 466 const char* origin) { |
| 467 const char* const kWebSocketHeaders[] = { |
| 468 ":path", |
| 469 path, |
| 470 ":host", |
| 471 host, |
| 472 ":version", |
| 473 "WebSocket/13", |
| 474 ":scheme", |
| 475 "ws", |
| 476 ":origin", |
| 477 origin |
| 478 }; |
| 479 return ConstructSpdyControlFrame(/*extra_headers*/ NULL, |
| 480 /*extra_header_count*/ 0, |
| 481 /*compressed*/ false, |
| 482 stream_id, |
| 483 LOWEST, |
| 484 SYN_STREAM, |
| 485 CONTROL_FLAG_NONE, |
| 486 kWebSocketHeaders, |
| 487 arraysize(kWebSocketHeaders)); |
| 488 } |
| 489 |
| 461 // Constructs a standard SPDY push SYN packet. | 490 // Constructs a standard SPDY push SYN packet. |
| 462 // |extra_headers| are the extra header-value pairs, which typically | 491 // |extra_headers| are the extra header-value pairs, which typically |
| 463 // will vary the most between calls. | 492 // will vary the most between calls. |
| 464 // Returns a SpdyFrame. | 493 // Returns a SpdyFrame. |
| 465 SpdyFrame* ConstructSpdyPush(const char* const extra_headers[], | 494 SpdyFrame* ConstructSpdyPush(const char* const extra_headers[], |
| 466 int extra_header_count, | 495 int extra_header_count, |
| 467 int stream_id, | 496 int stream_id, |
| 468 int associated_stream_id) { | 497 int associated_stream_id) { |
| 469 const char* const kStandardPushHeaders[] = { | 498 const char* const kStandardPushHeaders[] = { |
| 470 "hello", "bye", | 499 "hello", "bye", |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 628 extra_header_count, | 657 extra_header_count, |
| 629 false, | 658 false, |
| 630 stream_id, | 659 stream_id, |
| 631 LOWEST, | 660 LOWEST, |
| 632 SYN_REPLY, | 661 SYN_REPLY, |
| 633 CONTROL_FLAG_NONE, | 662 CONTROL_FLAG_NONE, |
| 634 kStandardGetHeaders, | 663 kStandardGetHeaders, |
| 635 arraysize(kStandardGetHeaders)); | 664 arraysize(kStandardGetHeaders)); |
| 636 } | 665 } |
| 637 | 666 |
| 667 // Constructs a standard SPDY SYN_REPLY packet to match the WebSocket over SPDY |
| 668 // opening handshake. |
| 669 // Returns a SpdyFrame. |
| 670 SpdyFrame* ConstructSpdyWebSocketSynReply(int stream_id) { |
| 671 static const char* const kStandardWebSocketHeaders[] = { |
| 672 ":status", |
| 673 "101" |
| 674 }; |
| 675 return ConstructSpdyControlFrame(NULL, |
| 676 0, |
| 677 false, |
| 678 stream_id, |
| 679 LOWEST, |
| 680 SYN_REPLY, |
| 681 CONTROL_FLAG_NONE, |
| 682 kStandardWebSocketHeaders, |
| 683 arraysize(kStandardWebSocketHeaders)); |
| 684 } |
| 685 |
| 638 // Constructs a standard SPDY POST SYN packet. | 686 // Constructs a standard SPDY POST SYN packet. |
| 639 // |content_length| is the size of post data. | 687 // |content_length| is the size of post data. |
| 640 // |extra_headers| are the extra header-value pairs, which typically | 688 // |extra_headers| are the extra header-value pairs, which typically |
| 641 // will vary the most between calls. | 689 // will vary the most between calls. |
| 642 // Returns a SpdyFrame. | 690 // Returns a SpdyFrame. |
| 643 SpdyFrame* ConstructSpdyPost(int64 content_length, | 691 SpdyFrame* ConstructSpdyPost(int64 content_length, |
| 644 const char* const extra_headers[], | 692 const char* const extra_headers[], |
| 645 int extra_header_count) { | 693 int extra_header_count) { |
| 646 std::string length_str = base::Int64ToString(content_length); | 694 std::string length_str = base::Int64ToString(content_length); |
| 647 const char* post_headers[] = { | 695 const char* post_headers[] = { |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 734 } | 782 } |
| 735 | 783 |
| 736 // Constructs a single SPDY data frame with the given content. | 784 // Constructs a single SPDY data frame with the given content. |
| 737 SpdyFrame* ConstructSpdyBodyFrame(int stream_id, const char* data, | 785 SpdyFrame* ConstructSpdyBodyFrame(int stream_id, const char* data, |
| 738 uint32 len, bool fin) { | 786 uint32 len, bool fin) { |
| 739 BufferedSpdyFramer framer(3); | 787 BufferedSpdyFramer framer(3); |
| 740 return framer.CreateDataFrame( | 788 return framer.CreateDataFrame( |
| 741 stream_id, data, len, fin ? DATA_FLAG_FIN : DATA_FLAG_NONE); | 789 stream_id, data, len, fin ? DATA_FLAG_FIN : DATA_FLAG_NONE); |
| 742 } | 790 } |
| 743 | 791 |
| 792 // Constructs a SPDY HEADERS frame for a WebSocket frame over SPDY. |
| 793 SpdyFrame* ConstructSpdyWebSocketHeadersFrame(int stream_id, |
| 794 const char* length, |
| 795 bool fin) { |
| 796 static const char* const kHeaders[] = { |
| 797 ":opcode", |
| 798 "1", // text frame |
| 799 ":length", |
| 800 length, |
| 801 ":fin", |
| 802 fin ? "1" : "0" |
| 803 }; |
| 804 return ConstructSpdyControlFrame(/*extra_headers*/ NULL, |
| 805 /*extra_header_count*/ 0, |
| 806 /*compression*/ false, |
| 807 stream_id, |
| 808 LOWEST, |
| 809 HEADERS, |
| 810 CONTROL_FLAG_NONE, |
| 811 kHeaders, |
| 812 arraysize(kHeaders)); |
| 813 } |
| 814 |
| 744 // Wraps |frame| in the payload of a data frame in stream |stream_id|. | 815 // Wraps |frame| in the payload of a data frame in stream |stream_id|. |
| 745 SpdyFrame* ConstructWrappedSpdyFrame( | 816 SpdyFrame* ConstructWrappedSpdyFrame( |
| 746 const scoped_ptr<SpdyFrame>& frame, | 817 const scoped_ptr<SpdyFrame>& frame, |
| 747 int stream_id) { | 818 int stream_id) { |
| 748 return ConstructSpdyBodyFrame(stream_id, frame->data(), | 819 return ConstructSpdyBodyFrame(stream_id, frame->data(), |
| 749 frame->length() + SpdyFrame::kHeaderSize, | 820 frame->length() + SpdyFrame::kHeaderSize, |
| 750 false); | 821 false); |
| 751 } | 822 } |
| 752 | 823 |
| 753 // Construct an expected SPDY reply string. | 824 // Construct an expected SPDY reply string. |
| (...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1010 | 1081 |
| 1011 SpdyTestStateHelper::~SpdyTestStateHelper() { | 1082 SpdyTestStateHelper::~SpdyTestStateHelper() { |
| 1012 SpdySession::ResetStaticSettingsToInit(); | 1083 SpdySession::ResetStaticSettingsToInit(); |
| 1013 // TODO(rch): save/restore this value | 1084 // TODO(rch): save/restore this value |
| 1014 BufferedSpdyFramer::set_enable_compression_default(true); | 1085 BufferedSpdyFramer::set_enable_compression_default(true); |
| 1015 } | 1086 } |
| 1016 | 1087 |
| 1017 } // namespace test_spdy3 | 1088 } // namespace test_spdy3 |
| 1018 | 1089 |
| 1019 } // namespace net | 1090 } // namespace net |
| OLD | NEW |