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());