| Index: net/spdy/spdy_framer_test.cc
|
| diff --git a/net/spdy/spdy_framer_test.cc b/net/spdy/spdy_framer_test.cc
|
| index 84ea0d73119a067c97f8575631631a642a843730..d55e072caa76e2312d7fba3a1141c578560e12a5 100644
|
| --- a/net/spdy/spdy_framer_test.cc
|
| +++ b/net/spdy/spdy_framer_test.cc
|
| @@ -502,6 +502,12 @@ class TestSpdyVisitor : public SpdyFramerVisitorInterface,
|
| header_buffer_.reset(new char[header_buffer_size]);
|
| }
|
|
|
| + // Largest control frame that the SPDY implementation sends, including the
|
| + // size of the header.
|
| + static size_t sent_control_frame_max_size() {
|
| + return SpdyFramer::kMaxControlFrameSize;
|
| + }
|
| +
|
| static size_t header_data_chunk_max_size() {
|
| return SpdyFramer::kHeaderDataChunkMaxSize;
|
| }
|
| @@ -3147,12 +3153,12 @@ TEST_P(SpdyFramerTest, CreatePushPromiseThenContinuationUncompressed) {
|
| "PUSH_PROMISE and CONTINUATION frames with one byte of padding";
|
|
|
| const unsigned char kPartialPushPromiseFrameData[] = {
|
| - 0x00, 0x03, 0xf6, 0x05, // PUSH_PROMISE
|
| + 0x00, 0x03, 0xf7, 0x05, // PUSH_PROMISE
|
| 0x08, 0x00, 0x00, 0x00, // PADDED
|
| 0x2a, 0x00, 0x00, 0x00, // Stream 42
|
| 0x00, 0x39, 0x00, 0x03, // Promised stream 57
|
| 0x78, 0x78, 0x78, 0x7f, // xxx.
|
| - 0x80, 0x07, 0x78, 0x78, // ..xx
|
| + 0x81, 0x07, 0x78, 0x78, // ..xx
|
| 0x78, 0x78, 0x78, 0x78, // xxxx
|
| 0x78, 0x78, 0x78, 0x78, // xxxx
|
| 0x78, 0x78, 0x78, 0x78, // xxxx
|
| @@ -3189,7 +3195,7 @@ TEST_P(SpdyFramerTest, CreatePushPromiseThenContinuationUncompressed) {
|
|
|
| SpdyPushPromiseIR push_promise(42, 57);
|
| push_promise.set_padding_len(1);
|
| - string big_value(framer.GetHeaderFragmentMaxSize(), 'x');
|
| + string big_value(TestSpdyVisitor::sent_control_frame_max_size(), 'x');
|
| push_promise.SetHeader("xxx", big_value);
|
| scoped_ptr<SpdySerializedFrame> frame(
|
| framer.SerializePushPromise(push_promise));
|
| @@ -3211,8 +3217,9 @@ TEST_P(SpdyFramerTest, CreatePushPromiseThenContinuationUncompressed) {
|
|
|
| // Length of everything listed above except big_value.
|
| int len_non_data_payload = 31;
|
| - EXPECT_EQ(framer.GetHeaderFragmentMaxSize() + len_non_data_payload,
|
| - frame->size());
|
| + EXPECT_EQ(
|
| + TestSpdyVisitor::sent_control_frame_max_size() + len_non_data_payload,
|
| + frame->size());
|
|
|
| // Partially compare the PUSH_PROMISE frame against the template.
|
| const unsigned char* frame_data =
|
| @@ -3224,7 +3231,7 @@ TEST_P(SpdyFramerTest, CreatePushPromiseThenContinuationUncompressed) {
|
| arraysize(kPartialPushPromiseFrameData));
|
|
|
| // Compare the CONTINUATION frame against the template.
|
| - frame_data += framer.GetHeaderFragmentMaxSize();
|
| + frame_data += TestSpdyVisitor::sent_control_frame_max_size();
|
| CompareCharArraysWithHexError(kDescription,
|
| frame_data,
|
| arraysize(kContinuationFrameData),
|
| @@ -3395,14 +3402,15 @@ TEST_P(SpdyFramerTest, ControlFrameAtMaxSizeLimit) {
|
| syn_stream.SetHeader("aa", "");
|
| scoped_ptr<SpdyFrame> control_frame(framer.SerializeSynStream(syn_stream));
|
| const size_t kBigValueSize =
|
| - framer.GetControlFrameBufferMaxSize() - control_frame->size();
|
| + TestSpdyVisitor::sent_control_frame_max_size() - control_frame->size();
|
|
|
| // Create a frame at exactly that size.
|
| string big_value(kBigValueSize, 'x');
|
| syn_stream.SetHeader("aa", big_value);
|
| control_frame.reset(framer.SerializeSynStream(syn_stream));
|
| EXPECT_TRUE(control_frame.get() != NULL);
|
| - EXPECT_EQ(framer.GetControlFrameBufferMaxSize(), control_frame->size());
|
| + EXPECT_EQ(TestSpdyVisitor::sent_control_frame_max_size(),
|
| + control_frame->size());
|
|
|
| TestSpdyVisitor visitor(spdy_version_);
|
| visitor.SimulateInFramer(
|
| @@ -3416,7 +3424,10 @@ TEST_P(SpdyFramerTest, ControlFrameAtMaxSizeLimit) {
|
| EXPECT_LT(kBigValueSize, visitor.header_buffer_length_);
|
| }
|
|
|
| -TEST_P(SpdyFramerTest, ControlFrameTooLarge) {
|
| +// This test is disabled because Chromium is willing to accept control frames up
|
| +// to the maximum size allowed by the specification, and SpdyFrameBuilder is not
|
| +// capable of building larger frames.
|
| +TEST_P(SpdyFramerTest, DISABLED_ControlFrameTooLarge) {
|
| if (spdy_version_ > SPDY3) {
|
| // TODO(jgraettinger): This test setup doesn't work with HPACK.
|
| return;
|
| @@ -3430,7 +3441,8 @@ TEST_P(SpdyFramerTest, ControlFrameTooLarge) {
|
| syn_stream.set_priority(1);
|
| scoped_ptr<SpdyFrame> control_frame(framer.SerializeSynStream(syn_stream));
|
| const size_t kBigValueSize =
|
| - framer.GetControlFrameBufferMaxSize() - control_frame->size() + 1;
|
| + SpdyConstants::GetFrameMaximumSize(spdy_version_) -
|
| + control_frame->size() + 1;
|
|
|
| // Create a frame at exatly that size.
|
| string big_value(kBigValueSize, 'x');
|
| @@ -3441,7 +3453,7 @@ TEST_P(SpdyFramerTest, ControlFrameTooLarge) {
|
| control_frame.reset(framer.SerializeSynStream(syn_stream));
|
|
|
| EXPECT_TRUE(control_frame.get() != NULL);
|
| - EXPECT_EQ(framer.GetControlFrameBufferMaxSize() + 1,
|
| + EXPECT_EQ(SpdyConstants::GetFrameMaximumSize(spdy_version_) + 1,
|
| control_frame->size());
|
|
|
| TestSpdyVisitor visitor(spdy_version_);
|
| @@ -3468,12 +3480,13 @@ TEST_P(SpdyFramerTest, TooLargeHeadersFrameUsesContinuation) {
|
|
|
| // Exact payload length will change with HPACK, but this should be long
|
| // enough to cause an overflow.
|
| - const size_t kBigValueSize = framer.GetControlFrameBufferMaxSize();
|
| + const size_t kBigValueSize = kControlFrameSizeLimit;
|
| string big_value(kBigValueSize, 'x');
|
| headers.SetHeader("aa", big_value);
|
| scoped_ptr<SpdyFrame> control_frame(framer.SerializeHeaders(headers));
|
| EXPECT_TRUE(control_frame.get() != NULL);
|
| - EXPECT_GT(control_frame->size(), framer.GetControlFrameBufferMaxSize());
|
| + EXPECT_GT(control_frame->size(),
|
| + TestSpdyVisitor::sent_control_frame_max_size());
|
|
|
| TestSpdyVisitor visitor(spdy_version_);
|
| visitor.SimulateInFramer(
|
| @@ -3497,13 +3510,14 @@ TEST_P(SpdyFramerTest, TooLargePushPromiseFrameUsesContinuation) {
|
|
|
| // Exact payload length will change with HPACK, but this should be long
|
| // enough to cause an overflow.
|
| - const size_t kBigValueSize = framer.GetControlFrameBufferMaxSize();
|
| + const size_t kBigValueSize = kControlFrameSizeLimit;
|
| string big_value(kBigValueSize, 'x');
|
| push_promise.SetHeader("aa", big_value);
|
| scoped_ptr<SpdyFrame> control_frame(
|
| framer.SerializePushPromise(push_promise));
|
| EXPECT_TRUE(control_frame.get() != NULL);
|
| - EXPECT_GT(control_frame->size(), framer.GetControlFrameBufferMaxSize());
|
| + EXPECT_GT(control_frame->size(),
|
| + TestSpdyVisitor::sent_control_frame_max_size());
|
|
|
| TestSpdyVisitor visitor(spdy_version_);
|
| visitor.SimulateInFramer(
|
|
|