Index: net/spdy/spdy_framer_test.cc |
diff --git a/net/spdy/spdy_framer_test.cc b/net/spdy/spdy_framer_test.cc |
index cda2bfcff32c652ce7c25f23460a28f237c723c8..b87748b23f738efce6ed70ab67f48f5e06c59a2e 100644 |
--- a/net/spdy/spdy_framer_test.cc |
+++ b/net/spdy/spdy_framer_test.cc |
@@ -89,6 +89,10 @@ class SpdyFramerTestUtil { |
LOG(FATAL); |
} |
+ void OnStreamPadding(SpdyStreamId stream_id, size_t len) override { |
+ LOG(FATAL); |
+ } |
+ |
bool OnControlFrameHeaderData(SpdyStreamId stream_id, |
const char* header_data, |
size_t len) override { |
@@ -291,14 +295,20 @@ class TestSpdyVisitor : public SpdyFramerVisitorInterface, |
++zero_length_data_frame_count_; |
data_bytes_ += len; |
- std::cerr << "OnStreamFrameData(" << stream_id << ", \""; |
+ LOG(INFO) << "OnStreamFrameData(" << stream_id << ", \""; |
if (len > 0) { |
for (size_t i = 0 ; i < len; ++i) { |
- std::cerr << std::hex << (0xFF & static_cast<unsigned int>(data[i])) |
+ LOG(INFO) << std::hex << (0xFF & static_cast<unsigned int>(data[i])) |
<< std::dec; |
} |
} |
- std::cerr << "\", " << len << ")\n"; |
+ LOG(INFO) << "\", " << len << ")\n"; |
+ } |
+ |
+ void OnStreamPadding(SpdyStreamId stream_id, size_t len) override { |
+ EXPECT_EQ(header_stream_id_, stream_id); |
+ data_bytes_ += len; |
+ LOG(INFO) << "OnStreamPadding(" << stream_id << ", " << len << ")\n"; |
} |
bool OnControlFrameHeaderData(SpdyStreamId stream_id, |
@@ -4129,6 +4139,7 @@ TEST_P(SpdyFramerTest, ProcessDataFrameWithPadding) { |
bytes_consumed += framer.GetDataFrameMinimumSize(); |
// Send the padding length field. |
+ EXPECT_CALL(visitor, OnStreamPadding(1, 1)); |
CHECK_EQ(1u, framer.ProcessInput(frame->data() + bytes_consumed, 1)); |
CHECK_EQ(framer.state(), SpdyFramer::SPDY_FORWARD_STREAM_FRAME); |
CHECK_EQ(framer.error_code(), SpdyFramer::SPDY_NO_ERROR); |
@@ -4149,14 +4160,14 @@ TEST_P(SpdyFramerTest, ProcessDataFrameWithPadding) { |
bytes_consumed += 3; |
// Send the first 100 bytes of the padding payload. |
- EXPECT_CALL(visitor, OnStreamFrameData(1, NULL, 100, false)); |
+ EXPECT_CALL(visitor, OnStreamPadding(1, 100)); |
CHECK_EQ(100u, framer.ProcessInput(frame->data() + bytes_consumed, 100)); |
CHECK_EQ(framer.state(), SpdyFramer::SPDY_CONSUME_PADDING); |
CHECK_EQ(framer.error_code(), SpdyFramer::SPDY_NO_ERROR); |
bytes_consumed += 100; |
// Send rest of the padding payload. |
- EXPECT_CALL(visitor, OnStreamFrameData(1, NULL, 18, false)); |
+ EXPECT_CALL(visitor, OnStreamPadding(1, 18)); |
CHECK_EQ(18u, framer.ProcessInput(frame->data() + bytes_consumed, 18)); |
CHECK_EQ(framer.state(), SpdyFramer::SPDY_RESET); |
CHECK_EQ(framer.error_code(), SpdyFramer::SPDY_NO_ERROR); |
@@ -4934,7 +4945,9 @@ TEST_P(SpdyFramerTest, DataFrameFlagsV4) { |
} else { |
EXPECT_CALL(visitor, OnDataFrameHeader(1, 5, flags & DATA_FLAG_FIN)); |
if (flags & DATA_FLAG_PADDED) { |
- // Expect Error since we don't set padded in payload. |
+ // The first byte of payload is parsed as padding length. |
+ EXPECT_CALL(visitor, OnStreamPadding(_, 1)); |
+ // Expect Error since the frame ends prematurely. |
EXPECT_CALL(visitor, OnError(_)); |
} else { |
EXPECT_CALL(visitor, OnStreamFrameData(_, _, 5, false)); |
@@ -4946,10 +4959,9 @@ TEST_P(SpdyFramerTest, DataFrameFlagsV4) { |
framer.ProcessInput(frame->data(), frame->size()); |
if ((flags & ~valid_data_flags) || (flags & DATA_FLAG_PADDED)) { |
- EXPECT_EQ(SpdyFramer::SPDY_ERROR, framer.state()); |
- EXPECT_EQ(SpdyFramer::SPDY_INVALID_DATA_FRAME_FLAGS, |
- framer.error_code()) |
- << SpdyFramer::ErrorCodeToString(framer.error_code()); |
+ EXPECT_EQ(SpdyFramer::SPDY_ERROR, framer.state()); |
+ EXPECT_EQ(SpdyFramer::SPDY_INVALID_DATA_FRAME_FLAGS, framer.error_code()) |
+ << SpdyFramer::ErrorCodeToString(framer.error_code()); |
} else { |
EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state()); |
EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code()) |