Add mock methods to MockSpdyFramerVisitor.
This CL adds several SpdyFramerVisitorInterface methods as mock methods to
MockSpdyFramerVisitor. This addition enables more testing of
SpdyFramerVisitorInterface events.
PiperOrigin-RevId: 407349158
diff --git a/spdy/core/metadata_extension_test.cc b/spdy/core/metadata_extension_test.cc
index 7538c31..9c0ea73 100644
--- a/spdy/core/metadata_extension_test.cc
+++ b/spdy/core/metadata_extension_test.cc
@@ -20,6 +20,7 @@
using ::spdy::SpdyFramer;
using ::spdy::SpdyHeaderBlock;
using ::spdy::test::MockSpdyFramerVisitor;
+using ::testing::_;
using ::testing::ElementsAre;
using ::testing::IsEmpty;
@@ -97,6 +98,8 @@
::testing::StrictMock<MockSpdyFramerVisitor> visitor;
deframer.set_visitor(&visitor);
+ EXPECT_CALL(visitor,
+ OnCommonHeader(3, _, MetadataVisitor::kMetadataFrameType, _));
// The Return(true) should not be necessary. http://b/36023792
EXPECT_CALL(visitor, OnUnknownFrame(3, MetadataVisitor::kMetadataFrameType))
.WillOnce(::testing::Return(true));
diff --git a/spdy/core/mock_spdy_framer_visitor.h b/spdy/core/mock_spdy_framer_visitor.h
index 1f92504..744072f 100644
--- a/spdy/core/mock_spdy_framer_visitor.h
+++ b/spdy/core/mock_spdy_framer_visitor.h
@@ -19,7 +19,8 @@
namespace test {
-class MockSpdyFramerVisitor : public SpdyFramerVisitorInterface {
+class QUICHE_NO_EXPORT MockSpdyFramerVisitor
+ : public SpdyFramerVisitorInterface {
public:
MockSpdyFramerVisitor();
~MockSpdyFramerVisitor() override;
@@ -29,6 +30,10 @@
(http2::Http2DecoderAdapter::SpdyFramerError error,
std::string detailed_error),
(override));
+ MOCK_METHOD(void, OnCommonHeader,
+ (SpdyStreamId stream_id, size_t length, uint8_t type,
+ uint8_t flags),
+ (override));
MOCK_METHOD(void,
OnDataFrameHeader,
(SpdyStreamId stream_id, size_t length, bool fin),
@@ -59,10 +64,13 @@
MOCK_METHOD(void, OnSetting, (SpdySettingsId id, uint32_t value), (override));
MOCK_METHOD(void, OnPing, (SpdyPingId unique_id, bool is_ack), (override));
MOCK_METHOD(void, OnSettingsEnd, (), (override));
+ MOCK_METHOD(void, OnSettingsAck, (), (override));
MOCK_METHOD(void,
OnGoAway,
(SpdyStreamId last_accepted_stream_id, SpdyErrorCode error_code),
(override));
+ MOCK_METHOD(bool, OnGoAwayFrameData, (const char* goaway_data, size_t len),
+ (override));
MOCK_METHOD(void,
OnHeaders,
(SpdyStreamId stream_id,
diff --git a/spdy/core/spdy_framer_test.cc b/spdy/core/spdy_framer_test.cc
index 49004da..b138300 100644
--- a/spdy/core/spdy_framer_test.cc
+++ b/spdy/core/spdy_framer_test.cc
@@ -703,7 +703,7 @@
// DATA frame with maximum allowed payload length.
unsigned char kH2FrameData[] = {
0x00, 0x40, 0x00, // Length: 2^14
- 0x00, // Type: HEADERS
+ 0x00, // Type: DATA
0x00, // Flags: None
0x00, 0x00, 0x00, 0x01, // Stream: 1
0x00, 0x00, 0x00, 0x00, // Junk payload
@@ -712,6 +712,7 @@
SpdySerializedFrame frame(reinterpret_cast<char*>(kH2FrameData),
sizeof(kH2FrameData), false);
+ EXPECT_CALL(visitor, OnCommonHeader(1, 16384, 0x0, 0x0));
EXPECT_CALL(visitor, OnDataFrameHeader(1, 1 << 14, false));
EXPECT_CALL(visitor, OnStreamFrameData(1, _, 4));
deframer_.ProcessInput(frame.data(), frame.size());
@@ -727,7 +728,7 @@
// DATA frame with too large payload length.
unsigned char kH2FrameData[] = {
0x00, 0x40, 0x01, // Length: 2^14 + 1
- 0x00, // Type: HEADERS
+ 0x00, // Type: DATA
0x00, // Flags: None
0x00, 0x00, 0x00, 0x01, // Stream: 1
0x00, 0x00, 0x00, 0x00, // Junk payload
@@ -736,6 +737,7 @@
SpdySerializedFrame frame(reinterpret_cast<char*>(kH2FrameData),
sizeof(kH2FrameData), false);
+ EXPECT_CALL(visitor, OnCommonHeader(1, 16385, 0x0, 0x0));
EXPECT_CALL(visitor, OnError(Http2DecoderAdapter::SPDY_OVERSIZED_PAYLOAD, _));
deframer_.ProcessInput(frame.data(), frame.size());
EXPECT_TRUE(deframer_.HasError());
@@ -769,6 +771,7 @@
{
testing::InSequence seq;
+ EXPECT_CALL(visitor, OnCommonHeader(1, 5, 0x0, 0x9));
EXPECT_CALL(visitor, OnDataFrameHeader(1, 5, 1));
EXPECT_CALL(visitor, OnStreamPadding(1, 1));
EXPECT_CALL(visitor, OnError(Http2DecoderAdapter::SPDY_INVALID_PADDING, _));
@@ -802,6 +805,7 @@
{
testing::InSequence seq;
+ EXPECT_CALL(visitor, OnCommonHeader(1, 5, 0x0, 0x8));
EXPECT_CALL(visitor, OnDataFrameHeader(1, 5, false));
EXPECT_CALL(visitor, OnStreamPadLength(1, 4));
EXPECT_CALL(visitor, OnError(_, _)).Times(0);
@@ -840,6 +844,7 @@
SpdySerializedFrame frame(reinterpret_cast<char*>(kH2FrameData),
sizeof(kH2FrameData), false);
+ EXPECT_CALL(visitor, OnCommonHeader(1, 5, 0x1, 0x8));
EXPECT_CALL(visitor, OnHeaders(1, false, 0, 0, false, false, false));
EXPECT_CALL(visitor, OnHeaderFrameStart(1)).Times(1);
EXPECT_CALL(visitor, OnError(Http2DecoderAdapter::SPDY_INVALID_PADDING, _));
@@ -870,6 +875,7 @@
SpdySerializedFrame frame(kH2FrameData, sizeof(kH2FrameData), false);
+ EXPECT_CALL(visitor, OnCommonHeader(1, 5, 0x1, 0x8));
EXPECT_CALL(visitor, OnHeaders(1, false, 0, 0, false, false, false));
EXPECT_CALL(visitor, OnHeaderFrameStart(1)).Times(1);
@@ -892,6 +898,7 @@
SpdySerializedFrame frame(framer_.SerializeData(data_ir));
// We shouldn't have to read the whole frame before we signal an error.
+ EXPECT_CALL(visitor, OnCommonHeader(0, _, 0x0, _));
EXPECT_CALL(visitor, OnError(Http2DecoderAdapter::SPDY_INVALID_STREAM_ID, _));
EXPECT_GT(frame.size(), deframer_.ProcessInput(frame.data(), frame.size()));
EXPECT_TRUE(deframer_.HasError());
@@ -914,6 +921,7 @@
SpdyFramerPeer::SerializeHeaders(&framer_, headers, &output_));
// We shouldn't have to read the whole frame before we signal an error.
+ EXPECT_CALL(visitor, OnCommonHeader(0, _, 0x1, _));
EXPECT_CALL(visitor, OnError(Http2DecoderAdapter::SPDY_INVALID_STREAM_ID, _));
EXPECT_GT(frame.size(), deframer_.ProcessInput(frame.data(), frame.size()));
EXPECT_TRUE(deframer_.HasError());
@@ -941,6 +949,7 @@
}
// We shouldn't have to read the whole frame before we signal an error.
+ EXPECT_CALL(visitor, OnCommonHeader(0, _, 0x2, _));
EXPECT_CALL(visitor, OnError(Http2DecoderAdapter::SPDY_INVALID_STREAM_ID, _));
EXPECT_GT(frame.size(), deframer_.ProcessInput(frame.data(), frame.size()));
EXPECT_TRUE(deframer_.HasError());
@@ -965,6 +974,7 @@
}
// We shouldn't have to read the whole frame before we signal an error.
+ EXPECT_CALL(visitor, OnCommonHeader(0, _, 0x3, _));
EXPECT_CALL(visitor, OnError(Http2DecoderAdapter::SPDY_INVALID_STREAM_ID, _));
EXPECT_GT(frame.size(), deframer_.ProcessInput(frame.data(), frame.size()));
EXPECT_TRUE(deframer_.HasError());
@@ -994,6 +1004,7 @@
SpdySerializedFrame frame(kH2FrameData, sizeof(kH2FrameData), false);
// We shouldn't have to read the whole frame before we signal an error.
+ EXPECT_CALL(visitor, OnCommonHeader(1, 6, 0x4, 0x0));
EXPECT_CALL(visitor, OnError(Http2DecoderAdapter::SPDY_INVALID_STREAM_ID, _));
EXPECT_GT(frame.size(), deframer_.ProcessInput(frame.data(), frame.size()));
EXPECT_TRUE(deframer_.HasError());
@@ -1024,6 +1035,7 @@
SpdySerializedFrame frame(kH2FrameData, sizeof(kH2FrameData), false);
// We shouldn't have to read the whole frame before we signal an error.
+ EXPECT_CALL(visitor, OnCommonHeader(1, 10, 0x7, 0x0));
EXPECT_CALL(visitor, OnError(Http2DecoderAdapter::SPDY_INVALID_STREAM_ID, _));
EXPECT_GT(frame.size(), deframer_.ProcessInput(frame.data(), frame.size()));
EXPECT_TRUE(deframer_.HasError());
@@ -1051,6 +1063,7 @@
}
// We shouldn't have to read the whole frame before we signal an error.
+ EXPECT_CALL(visitor, OnCommonHeader(0, _, 0x9, _));
EXPECT_CALL(visitor, OnError(Http2DecoderAdapter::SPDY_INVALID_STREAM_ID, _));
EXPECT_GT(frame.size(), deframer_.ProcessInput(frame.data(), frame.size()));
EXPECT_TRUE(deframer_.HasError());
@@ -1074,6 +1087,7 @@
&framer_, push_promise, use_output_ ? &output_ : nullptr));
// We shouldn't have to read the whole frame before we signal an error.
+ EXPECT_CALL(visitor, OnCommonHeader(0, _, 0x5, _));
EXPECT_CALL(visitor, OnError(Http2DecoderAdapter::SPDY_INVALID_STREAM_ID, _));
EXPECT_GT(frame.size(), deframer_.ProcessInput(frame.data(), frame.size()));
EXPECT_TRUE(deframer_.HasError());
@@ -1096,6 +1110,7 @@
SpdySerializedFrame frame(SpdyFramerPeer::SerializePushPromise(
&framer_, push_promise, use_output_ ? &output_ : nullptr));
+ EXPECT_CALL(visitor, OnCommonHeader(3, _, 0x5, _));
EXPECT_CALL(visitor,
OnError(Http2DecoderAdapter::SPDY_INVALID_CONTROL_FRAME, _));
deframer_.ProcessInput(frame.data(), frame.size());
@@ -1248,7 +1263,7 @@
0xde, 0xad, 0xbe, 0xef, //
0xde, 0xad, 0xbe, 0xef, //
- 0x00, 0x00, 0x06, // Length: 5
+ 0x00, 0x00, 0x06, // Length: 6
0x01, // Type: HEADERS
0x24, // Flags: END_HEADERS|PRIORITY
0x00, 0x00, 0x00, 0x03, // Stream: 3
@@ -1293,14 +1308,18 @@
deframer_.set_visitor(&visitor);
testing::InSequence s;
+ EXPECT_CALL(visitor, OnCommonHeader(1, 1, 0x1, 0x4));
EXPECT_CALL(visitor, OnHeaders(1, false, 0, 0, false, false, true));
EXPECT_CALL(visitor, OnHeaderFrameStart(1));
EXPECT_CALL(visitor, OnHeaderFrameEnd(1));
+ EXPECT_CALL(visitor, OnCommonHeader(1, 12, 0x0, 0x0));
EXPECT_CALL(visitor, OnDataFrameHeader(1, 12, false));
EXPECT_CALL(visitor, OnStreamFrameData(1, _, 12));
+ EXPECT_CALL(visitor, OnCommonHeader(3, 6, 0x1, 0x24));
EXPECT_CALL(visitor, OnHeaders(3, true, 131, 0, false, false, true));
EXPECT_CALL(visitor, OnHeaderFrameStart(3));
EXPECT_CALL(visitor, OnHeaderFrameEnd(3));
+ EXPECT_CALL(visitor, OnCommonHeader(3, 8, 0x0, 0x0));
EXPECT_CALL(visitor, OnDataFrameHeader(3, 8, false))
.WillOnce(
testing::InvokeWithoutArgs([this]() { deframer_.StopProcessing(); }));
@@ -2447,6 +2466,7 @@
SpdySerializedFrame frame(kH2FrameData, sizeof(kH2FrameData), false);
// We shouldn't have to read the whole frame before we signal an error.
+ EXPECT_CALL(visitor, OnCommonHeader(42, 18, 0x9, 0x4));
EXPECT_CALL(visitor, OnError(Http2DecoderAdapter::SPDY_UNEXPECTED_FRAME, _));
EXPECT_GT(frame.size(), deframer_.ProcessInput(frame.data(), frame.size()));
EXPECT_TRUE(deframer_.HasError());
@@ -3272,6 +3292,8 @@
// Send the frame header.
EXPECT_CALL(visitor,
+ OnCommonHeader(1, kPaddingLen + strlen(data_payload), 0x0, 0x8));
+ EXPECT_CALL(visitor,
OnDataFrameHeader(1, kPaddingLen + strlen(data_payload), false));
QUICHE_CHECK_EQ(kDataFrameMinimumSize,
deframer_.ProcessInput(frame.data(), kDataFrameMinimumSize));
@@ -3965,6 +3987,7 @@
SpdySerializedFrame frame(framer_.SerializeData(data_ir));
SetFrameFlags(&frame, flags);
+ EXPECT_CALL(visitor, OnCommonHeader(1, 5, 0x0, flags));
if (flags & ~valid_data_flags) {
EXPECT_CALL(visitor, OnError(_, _));
} else {
@@ -4025,6 +4048,7 @@
}
SetFrameFlags(&frame, flags);
+ EXPECT_CALL(visitor, OnCommonHeader(13, 4, 0x3, flags));
EXPECT_CALL(visitor, OnRstStream(13, ERROR_CODE_CANCEL));
deframer_.ProcessInput(frame.data(), frame.size());
@@ -4055,6 +4079,7 @@
}
SetFrameFlags(&frame, flags);
+ EXPECT_CALL(visitor, OnCommonHeader(0, 6, 0x4, flags));
if (flags & SETTINGS_FLAG_ACK) {
EXPECT_CALL(visitor, OnError(_, _));
} else {
@@ -4102,7 +4127,10 @@
}
SetFrameFlags(&frame, flags);
+ EXPECT_CALL(visitor, OnCommonHeader(0, _, 0x7, flags));
EXPECT_CALL(visitor, OnGoAway(97, ERROR_CODE_NO_ERROR));
+ EXPECT_CALL(visitor, OnGoAwayFrameData)
+ .WillRepeatedly(testing::Return(true));
deframer_.ProcessInput(frame.data(), frame.size());
EXPECT_EQ(Http2DecoderAdapter::SPDY_READY_FOR_FRAME, deframer_.state());
@@ -4151,6 +4179,7 @@
parent_stream_id = 5;
exclusive = true;
}
+ EXPECT_CALL(visitor, OnCommonHeader(stream_id, _, 0x1, set_flags));
EXPECT_CALL(visitor, OnHeaders(stream_id, has_priority, weight,
parent_stream_id, exclusive, fin, end));
EXPECT_CALL(visitor, OnHeaderFrameStart(57)).Times(1);
@@ -4185,6 +4214,7 @@
SpdySerializedFrame frame(framer_.SerializePing(SpdyPingIR(42)));
SetFrameFlags(&frame, flags);
+ EXPECT_CALL(visitor, OnCommonHeader(0, 8, 0x6, flags));
EXPECT_CALL(visitor, OnPing(42, flags & PING_FLAG_ACK));
deframer_.ProcessInput(frame.data(), frame.size());
@@ -4210,6 +4240,7 @@
SpdyWindowUpdateIR(/* stream_id = */ 4, /* delta = */ 1024)));
SetFrameFlags(&frame, flags);
+ EXPECT_CALL(visitor, OnCommonHeader(4, 4, 0x8, flags));
EXPECT_CALL(visitor, OnWindowUpdate(4, 1024));
deframer_.ProcessInput(frame.data(), frame.size());
@@ -4252,6 +4283,8 @@
bool end = flags & PUSH_PROMISE_FLAG_END_PUSH_PROMISE;
EXPECT_CALL(debug_visitor, OnReceiveCompressedFrame(
client_id, SpdyFrameType::PUSH_PROMISE, _));
+ EXPECT_CALL(visitor, OnCommonHeader(client_id, _, 0x5,
+ flags & ~HEADERS_FLAG_PADDED));
EXPECT_CALL(visitor, OnPushPromise(client_id, promised_id, end));
EXPECT_CALL(visitor, OnHeaderFrameStart(client_id)).Times(1);
if (end) {
@@ -4287,6 +4320,7 @@
OnSendCompressedFrame(42, SpdyFrameType::HEADERS, _, _));
EXPECT_CALL(debug_visitor,
OnReceiveCompressedFrame(42, SpdyFrameType::HEADERS, _));
+ EXPECT_CALL(visitor, OnCommonHeader(42, _, 0x1, 0));
EXPECT_CALL(visitor, OnHeaders(42, false, 0, 0, false, false, false));
EXPECT_CALL(visitor, OnHeaderFrameStart(42)).Times(1);
@@ -4315,6 +4349,7 @@
EXPECT_CALL(debug_visitor,
OnReceiveCompressedFrame(42, SpdyFrameType::CONTINUATION, _));
+ EXPECT_CALL(visitor, OnCommonHeader(42, _, 0x9, flags));
EXPECT_CALL(visitor, OnContinuation(42, flags & HEADERS_FLAG_END_HEADERS));
bool end = flags & HEADERS_FLAG_END_HEADERS;
if (end) {
@@ -4352,6 +4387,7 @@
testing::StrictMock<test::MockSpdyFramerVisitor> visitor;
deframer_.set_visitor(&visitor);
+ EXPECT_CALL(visitor, OnCommonHeader(1, 4, 0x3, 0x0));
EXPECT_CALL(visitor, OnRstStream(1, ERROR_CODE_NO_ERROR));
deframer_.ProcessInput(reinterpret_cast<const char*>(kH2RstStreamInvalid),
ABSL_ARRAYSIZE(kH2RstStreamInvalid));
@@ -4361,6 +4397,7 @@
deframer_.spdy_framer_error());
deframer_.Reset();
+ EXPECT_CALL(visitor, OnCommonHeader(1, 4, 0x3, 0x0));
EXPECT_CALL(visitor, OnRstStream(1, ERROR_CODE_INTERNAL_ERROR));
deframer_.ProcessInput(
reinterpret_cast<const char*>(kH2RstStreamNumStatusCodes),
@@ -4385,7 +4422,9 @@
testing::StrictMock<test::MockSpdyFramerVisitor> visitor;
deframer_.set_visitor(&visitor);
+ EXPECT_CALL(visitor, OnCommonHeader(0, 10, 0x7, 0x0));
EXPECT_CALL(visitor, OnGoAway(1, ERROR_CODE_INTERNAL_ERROR));
+ EXPECT_CALL(visitor, OnGoAwayFrameData).WillRepeatedly(testing::Return(true));
deframer_.ProcessInput(reinterpret_cast<const char*>(kH2FrameData),
ABSL_ARRAYSIZE(kH2FrameData));
EXPECT_EQ(Http2DecoderAdapter::SPDY_READY_FOR_FRAME, deframer_.state());
@@ -4409,7 +4448,9 @@
deframer_.set_visitor(&visitor);
+ EXPECT_CALL(visitor, OnCommonHeader(0, 8, 0x7, 0x0));
EXPECT_CALL(visitor, OnGoAway(0x7fffffff, ERROR_CODE_NO_ERROR));
+ EXPECT_CALL(visitor, OnGoAwayFrameData).WillRepeatedly(testing::Return(true));
deframer_.ProcessInput(reinterpret_cast<const char*>(kH2FrameData),
ABSL_ARRAYSIZE(kH2FrameData));
EXPECT_EQ(Http2DecoderAdapter::SPDY_READY_FOR_FRAME, deframer_.state());
@@ -4432,6 +4473,7 @@
SpdyAltSvcWireFormat::AlternativeServiceVector altsvc_vector;
altsvc_vector.push_back(altsvc1);
altsvc_vector.push_back(altsvc2);
+ EXPECT_CALL(visitor, OnCommonHeader(kStreamId, _, 0x0A, 0x0));
EXPECT_CALL(visitor,
OnAltSvc(kStreamId, absl::string_view("o_r|g!n"), altsvc_vector));
@@ -4467,6 +4509,7 @@
SpdyAltSvcWireFormat::AlternativeServiceVector altsvc_vector;
altsvc_vector.push_back(altsvc1);
altsvc_vector.push_back(altsvc2);
+ EXPECT_CALL(visitor, OnCommonHeader(kStreamId, _, 0x0A, 0x0));
EXPECT_CALL(visitor,
OnAltSvc(kStreamId, absl::string_view(""), altsvc_vector));
@@ -4489,6 +4532,7 @@
deframer_.set_visitor(&visitor);
+ EXPECT_CALL(visitor, OnCommonHeader(kStreamId, _, 0x0A, 0x0));
EXPECT_CALL(visitor,
OnError(Http2DecoderAdapter::SPDY_INVALID_CONTROL_FRAME, _));
@@ -4637,6 +4681,7 @@
testing::StrictMock<test::MockSpdyFramerVisitor> visitor;
deframer_.set_visitor(&visitor);
+ EXPECT_CALL(visitor, OnCommonHeader(0, 7, 0x10, 0x0));
EXPECT_CALL(visitor, OnPriorityUpdate(3, "foo"));
deframer_.ProcessInput(kFrameData, sizeof(kFrameData));
EXPECT_FALSE(deframer_.HasError());
@@ -4654,6 +4699,7 @@
testing::StrictMock<test::MockSpdyFramerVisitor> visitor;
deframer_.set_visitor(&visitor);
+ EXPECT_CALL(visitor, OnCommonHeader(0, 4, 0x10, 0x0));
EXPECT_CALL(visitor, OnPriorityUpdate(3, ""));
deframer_.ProcessInput(kFrameData, sizeof(kFrameData));
EXPECT_FALSE(deframer_.HasError());
@@ -4670,6 +4716,7 @@
testing::StrictMock<test::MockSpdyFramerVisitor> visitor;
deframer_.set_visitor(&visitor);
+ EXPECT_CALL(visitor, OnCommonHeader(0, 0, 0x10, 0x0));
EXPECT_CALL(visitor,
OnError(Http2DecoderAdapter::SPDY_INVALID_CONTROL_FRAME_SIZE, _));
deframer_.ProcessInput(kFrameData, sizeof(kFrameData));
@@ -4689,6 +4736,7 @@
testing::StrictMock<test::MockSpdyFramerVisitor> visitor;
deframer_.set_visitor(&visitor);
+ EXPECT_CALL(visitor, OnCommonHeader(0, 2, 0x10, 0x0));
EXPECT_CALL(visitor,
OnError(Http2DecoderAdapter::SPDY_INVALID_CONTROL_FRAME_SIZE, _));
deframer_.ProcessInput(kFrameData, sizeof(kFrameData));
@@ -4707,6 +4755,7 @@
testing::StrictMock<test::MockSpdyFramerVisitor> visitor;
deframer_.set_visitor(&visitor);
+ EXPECT_CALL(visitor, OnCommonHeader(1, 4, 0x10, 0x0));
EXPECT_CALL(visitor, OnError(Http2DecoderAdapter::SPDY_INVALID_STREAM_ID, _));
deframer_.ProcessInput(kFrameData, sizeof(kFrameData));
EXPECT_TRUE(deframer_.HasError());
@@ -4724,6 +4773,7 @@
testing::StrictMock<test::MockSpdyFramerVisitor> visitor;
deframer_.set_visitor(&visitor);
+ EXPECT_CALL(visitor, OnCommonHeader(0, 4, 0x10, 0x0));
EXPECT_CALL(visitor, OnError(Http2DecoderAdapter::SPDY_INVALID_STREAM_ID, _));
deframer_.ProcessInput(kFrameData, sizeof(kFrameData));
EXPECT_TRUE(deframer_.HasError());
@@ -4743,6 +4793,7 @@
}
testing::StrictMock<test::MockSpdyFramerVisitor> visitor;
deframer_.set_visitor(&visitor);
+ EXPECT_CALL(visitor, OnCommonHeader(3, 5, 0x2, 0x0));
EXPECT_CALL(visitor, OnPriority(3, 1, 256, false));
deframer_.ProcessInput(frame.data(), frame.size());