Index: net/spdy/spdy_protocol_test.cc |
diff --git a/net/spdy/spdy_protocol_test.cc b/net/spdy/spdy_protocol_test.cc |
index 69ba2d3093fd1d1f985cbae928c7e63322ca2246..5d92dcff1a2e6aec76ed63c46c1293dc60345ee6 100644 |
--- a/net/spdy/spdy_protocol_test.cc |
+++ b/net/spdy/spdy_protocol_test.cc |
@@ -48,7 +48,6 @@ TEST_P(SpdyProtocolTest, ProtocolConstants) { |
EXPECT_EQ(12u, SpdySettingsControlFrame::size()); |
EXPECT_EQ(12u, SpdyPingControlFrame::size()); |
EXPECT_EQ(12u, SpdyHeadersControlFrame::size()); |
- EXPECT_EQ(16u, SpdyWindowUpdateControlFrame::size()); |
EXPECT_EQ(4u, sizeof(FlagsAndLength)); |
EXPECT_EQ(1, SYN_STREAM); |
EXPECT_EQ(2, SYN_REPLY); |
@@ -83,6 +82,59 @@ TEST_P(SpdyProtocolTest, DataFrameStructs) { |
EXPECT_EQ(12345u, data_frame.stream_id()); |
} |
+TEST_P(SpdyProtocolTest, ControlFrameStructs) { |
+ SpdyFramer framer(spdy_version_); |
+ SpdyHeaderBlock headers; |
+ |
+ const uint8 credential_slot = IsSpdy2() ? 0 : 5; |
+ |
+ scoped_ptr<SpdySynStreamControlFrame> syn_frame(framer.CreateSynStream( |
+ 123, 456, 2, credential_slot, CONTROL_FLAG_FIN, false, &headers)); |
+ EXPECT_EQ(framer.protocol_version(), syn_frame->version()); |
+ EXPECT_TRUE(syn_frame->is_control_frame()); |
+ EXPECT_EQ(SYN_STREAM, syn_frame->type()); |
+ EXPECT_EQ(123u, syn_frame->stream_id()); |
+ EXPECT_EQ(456u, syn_frame->associated_stream_id()); |
+ EXPECT_EQ(2u, syn_frame->priority()); |
+ EXPECT_EQ(credential_slot, syn_frame->credential_slot()); |
+ EXPECT_EQ(IsSpdy2() ? 2 : 4, syn_frame->header_block_len()); |
+ EXPECT_EQ(1u, syn_frame->flags()); |
+ syn_frame->set_associated_stream_id(999u); |
+ EXPECT_EQ(123u, syn_frame->stream_id()); |
+ EXPECT_EQ(999u, syn_frame->associated_stream_id()); |
+ |
+ scoped_ptr<SpdyRstStreamControlFrame> rst_frame( |
+ framer.CreateRstStream(123, net::RST_STREAM_PROTOCOL_ERROR)); |
+ EXPECT_EQ(framer.protocol_version(), rst_frame->version()); |
+ EXPECT_TRUE(rst_frame->is_control_frame()); |
+ EXPECT_EQ(RST_STREAM, rst_frame->type()); |
+ EXPECT_EQ(123u, rst_frame->stream_id()); |
+ EXPECT_EQ(net::RST_STREAM_PROTOCOL_ERROR, rst_frame->status()); |
+ rst_frame->set_status(net::RST_STREAM_INVALID_STREAM); |
+ EXPECT_EQ(net::RST_STREAM_INVALID_STREAM, rst_frame->status()); |
+ EXPECT_EQ(0, rst_frame->flags()); |
+ |
+ const uint32 kUniqueId = 1234567u; |
+ const uint32 kUniqueId2 = 31415926u; |
+ scoped_ptr<SpdyPingControlFrame> ping_frame( |
+ framer.CreatePingFrame(kUniqueId)); |
+ EXPECT_EQ(framer.protocol_version(), ping_frame->version()); |
+ EXPECT_TRUE(ping_frame->is_control_frame()); |
+ EXPECT_EQ(PING, ping_frame->type()); |
+ EXPECT_EQ(kUniqueId, ping_frame->unique_id()); |
+ ping_frame->set_unique_id(kUniqueId2); |
+ EXPECT_EQ(kUniqueId2, ping_frame->unique_id()); |
+ |
+ scoped_ptr<SpdyHeadersControlFrame> headers_frame( |
+ framer.CreateHeaders(123, CONTROL_FLAG_NONE, false, &headers)); |
+ EXPECT_EQ(framer.protocol_version(), headers_frame->version()); |
+ EXPECT_TRUE(headers_frame->is_control_frame()); |
+ EXPECT_EQ(HEADERS, headers_frame->type()); |
+ EXPECT_EQ(123u, headers_frame->stream_id()); |
+ EXPECT_EQ(IsSpdy2() ? 2 : 4, headers_frame->header_block_len()); |
+ EXPECT_EQ(0, headers_frame->flags()); |
+} |
+ |
TEST_P(SpdyProtocolTest, TestDataFrame) { |
SpdyDataFrame frame; |