| Index: net/spdy/spdy_framer_test.cc
|
| diff --git a/net/spdy/spdy_framer_test.cc b/net/spdy/spdy_framer_test.cc
|
| index 390bc6e1379d03d2774670d9b89aa01508e95dad..933eabc38c53cc6fa0dd12abe13e9da79f230154 100644
|
| --- a/net/spdy/spdy_framer_test.cc
|
| +++ b/net/spdy/spdy_framer_test.cc
|
| @@ -191,6 +191,13 @@ class SpdyFramerTestUtil {
|
| LOG(FATAL);
|
| }
|
|
|
| + virtual void OnPriority(SpdyStreamId stream_id,
|
| + SpdyStreamId parent_stream_id,
|
| + uint8 weight,
|
| + bool exclusive) OVERRIDE {
|
| + // Do nothing.
|
| + }
|
| +
|
| char* ReleaseBuffer() {
|
| CHECK(finished_);
|
| return buffer_.release();
|
| @@ -227,41 +234,41 @@ class TestSpdyVisitor : public SpdyFramerVisitorInterface,
|
| static const size_t kDefaultHeaderBufferSize = 16 * 1024 * 1024;
|
|
|
| explicit TestSpdyVisitor(SpdyMajorVersion version)
|
| - : framer_(version),
|
| - use_compression_(false),
|
| - error_count_(0),
|
| - syn_frame_count_(0),
|
| - syn_reply_frame_count_(0),
|
| - headers_frame_count_(0),
|
| - push_promise_frame_count_(0),
|
| - goaway_count_(0),
|
| - setting_count_(0),
|
| - settings_ack_sent_(0),
|
| - settings_ack_received_(0),
|
| - continuation_count_(0),
|
| - altsvc_count_(0),
|
| - test_altsvc_ir_(0),
|
| - last_window_update_stream_(0),
|
| - last_window_update_delta_(0),
|
| - last_push_promise_stream_(0),
|
| - last_push_promise_promised_stream_(0),
|
| - data_bytes_(0),
|
| - fin_frame_count_(0),
|
| - fin_opaque_data_(),
|
| - fin_flag_count_(0),
|
| - zero_length_data_frame_count_(0),
|
| - control_frame_header_data_count_(0),
|
| - zero_length_control_frame_header_data_count_(0),
|
| - data_frame_count_(0),
|
| - last_payload_len_(0),
|
| - last_frame_len_(0),
|
| - header_buffer_(new char[kDefaultHeaderBufferSize]),
|
| - header_buffer_length_(0),
|
| - header_buffer_size_(kDefaultHeaderBufferSize),
|
| - header_stream_id_(-1),
|
| - header_control_type_(DATA),
|
| - header_buffer_valid_(false) {
|
| - }
|
| + : framer_(version),
|
| + use_compression_(false),
|
| + error_count_(0),
|
| + syn_frame_count_(0),
|
| + syn_reply_frame_count_(0),
|
| + headers_frame_count_(0),
|
| + push_promise_frame_count_(0),
|
| + goaway_count_(0),
|
| + setting_count_(0),
|
| + settings_ack_sent_(0),
|
| + settings_ack_received_(0),
|
| + continuation_count_(0),
|
| + altsvc_count_(0),
|
| + priority_count_(0),
|
| + test_altsvc_ir_(0),
|
| + last_window_update_stream_(0),
|
| + last_window_update_delta_(0),
|
| + last_push_promise_stream_(0),
|
| + last_push_promise_promised_stream_(0),
|
| + data_bytes_(0),
|
| + fin_frame_count_(0),
|
| + fin_opaque_data_(),
|
| + fin_flag_count_(0),
|
| + zero_length_data_frame_count_(0),
|
| + control_frame_header_data_count_(0),
|
| + zero_length_control_frame_header_data_count_(0),
|
| + data_frame_count_(0),
|
| + last_payload_len_(0),
|
| + last_frame_len_(0),
|
| + header_buffer_(new char[kDefaultHeaderBufferSize]),
|
| + header_buffer_length_(0),
|
| + header_buffer_size_(kDefaultHeaderBufferSize),
|
| + header_stream_id_(-1),
|
| + header_control_type_(DATA),
|
| + header_buffer_valid_(false) {}
|
|
|
| virtual void OnError(SpdyFramer* f) OVERRIDE {
|
| LOG(INFO) << "SpdyFramer Error: "
|
| @@ -439,6 +446,13 @@ class TestSpdyVisitor : public SpdyFramerVisitorInterface,
|
| last_frame_len_ = frame_len;
|
| }
|
|
|
| + virtual void OnPriority(SpdyStreamId stream_id,
|
| + SpdyStreamId parent_stream_id,
|
| + uint8 weight,
|
| + bool exclusive) OVERRIDE {
|
| + ++priority_count_;
|
| + }
|
| +
|
| virtual void OnReceiveCompressedFrame(SpdyStreamId stream_id,
|
| SpdyFrameType type,
|
| size_t frame_len) OVERRIDE {
|
| @@ -507,6 +521,7 @@ class TestSpdyVisitor : public SpdyFramerVisitorInterface,
|
| int settings_ack_received_;
|
| int continuation_count_;
|
| int altsvc_count_;
|
| + int priority_count_;
|
| SpdyAltSvcIR test_altsvc_ir_;
|
| SpdyStreamId last_window_update_stream_;
|
| uint32 last_window_update_delta_;
|
| @@ -3023,6 +3038,27 @@ TEST_P(SpdyFramerTest, CreateAltSvc) {
|
| CompareFrame(kDescription, *frame, kFrameData, arraysize(kFrameData));
|
| }
|
|
|
| +TEST_P(SpdyFramerTest, CreatePriority) {
|
| + if (spdy_version_ <= SPDY3) {
|
| + return;
|
| + }
|
| +
|
| + SpdyFramer framer(spdy_version_);
|
| +
|
| + const char kDescription[] = "PRIORITY frame";
|
| + const char kType = static_cast<unsigned char>(
|
| + SpdyConstants::SerializeFrameType(spdy_version_, PRIORITY));
|
| + const unsigned char kFrameData[] = {
|
| + 0x00, 0x05, kType, 0x00,
|
| + 0x00, 0x00, 0x00, 0x02, // Stream ID = 2
|
| + 0x80, 0x00, 0x00, 0x01, // Exclusive dependency, parent stream ID = 1
|
| + 0x10, // Weight = 16
|
| + };
|
| + SpdyPriorityIR priority_ir(2, 1, 16, true);
|
| + scoped_ptr<SpdySerializedFrame> frame(framer.SerializeFrame(priority_ir));
|
| + CompareFrame(kDescription, *frame, kFrameData, arraysize(kFrameData));
|
| +}
|
| +
|
| TEST_P(SpdyFramerTest, ReadCompressedSynStreamHeaderBlock) {
|
| SpdyFramer framer(spdy_version_);
|
| SpdySynStreamIR syn_stream(1);
|
| @@ -5382,20 +5418,19 @@ TEST_P(SpdyFramerTest, ReadPriority) {
|
| if (spdy_version_ <= SPDY3) {
|
| return;
|
| }
|
| + SpdyFramer framer(spdy_version_);
|
| + SpdyPriorityIR priority(3, 1, 99, false);
|
| + scoped_ptr<SpdySerializedFrame> frame(framer.SerializePriority(priority));
|
| + testing::StrictMock<test::MockSpdyFramerVisitor> visitor;
|
| + framer.set_visitor(&visitor);
|
| + EXPECT_CALL(visitor, OnPriority(3, 1, 99, false));
|
| + framer.ProcessInput(frame->data(), frame->size());
|
|
|
| - const unsigned char kFrameData[] = {
|
| - 0x00, 0x05, 0x02, 0x00, // PRIORITY frame
|
| - 0x00, 0x00, 0x00, 0x03, // stream ID 3
|
| - 0x00, 0x00, 0x00, 0x01, // dependent on stream id 1
|
| - 0x00 // weight 0
|
| - };
|
| -
|
| - TestSpdyVisitor visitor(spdy_version_);
|
| - visitor.SimulateInFramer(kFrameData, sizeof(kFrameData));
|
| -
|
| - EXPECT_EQ(SpdyFramer::SPDY_RESET, visitor.framer_.state());
|
| - EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, visitor.framer_.error_code())
|
| - << SpdyFramer::ErrorCodeToString(visitor.framer_.error_code());
|
| + EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state());
|
| + EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code())
|
| + << SpdyFramer::ErrorCodeToString(framer.error_code());
|
| + // TODO(mlavan): once we actually maintain a priority tree,
|
| + // check that state is adjusted correctly.
|
| }
|
|
|
| // Tests handling of PRIORITY frame with incorrect size.
|
|
|