diff --git a/quic/core/http/http_decoder.cc b/quic/core/http/http_decoder.cc
index 0a2ea0d..ec0062a 100644
--- a/quic/core/http/http_decoder.cc
+++ b/quic/core/http/http_decoder.cc
@@ -248,7 +248,7 @@
       break;
     }
     case 0x1: {  // HEADERS
-      visitor_->OnHeadersFrameEnd(current_frame_length_);
+      visitor_->OnHeadersFrameEnd();
       break;
     }
     case 0x2: {  // PRIORITY
diff --git a/quic/core/http/http_decoder.h b/quic/core/http/http_decoder.h
index 225941d..ae46d99 100644
--- a/quic/core/http/http_decoder.h
+++ b/quic/core/http/http_decoder.h
@@ -84,7 +84,7 @@
     virtual void OnHeadersFramePayload(QuicStringPiece payload) = 0;
     // Called when a HEADERS frame has been completely processed.
     // |frame_len| is the length of the HEADERS frame payload.
-    virtual void OnHeadersFrameEnd(QuicByteCount frame_len) = 0;
+    virtual void OnHeadersFrameEnd() = 0;
 
     // Called when a PUSH_PROMISE frame has been recevied for |push_id|.
     virtual void OnPushPromiseFrameStart(PushId push_id) = 0;
diff --git a/quic/core/http/http_decoder_test.cc b/quic/core/http/http_decoder_test.cc
index ee5a507..7f0dcd4 100644
--- a/quic/core/http/http_decoder_test.cc
+++ b/quic/core/http/http_decoder_test.cc
@@ -34,7 +34,7 @@
 
   MOCK_METHOD1(OnHeadersFrameStart, void(Http3FrameLengths frame_lengths));
   MOCK_METHOD1(OnHeadersFramePayload, void(QuicStringPiece payload));
-  MOCK_METHOD1(OnHeadersFrameEnd, void(QuicByteCount frame_len));
+  MOCK_METHOD0(OnHeadersFrameEnd, void());
 
   MOCK_METHOD1(OnPushPromiseFrameStart, void(PushId push_id));
   MOCK_METHOD1(OnPushPromiseFramePayload, void(QuicStringPiece payload));
@@ -388,7 +388,7 @@
   InSequence s;
   EXPECT_CALL(visitor_, OnHeadersFrameStart(Http3FrameLengths(2, 7)));
   EXPECT_CALL(visitor_, OnHeadersFramePayload(QuicStringPiece("Headers")));
-  EXPECT_CALL(visitor_, OnHeadersFrameEnd(7));
+  EXPECT_CALL(visitor_, OnHeadersFrameEnd());
   EXPECT_EQ(QUIC_ARRAYSIZE(input),
             decoder_.ProcessInput(input, QUIC_ARRAYSIZE(input)));
   EXPECT_EQ(QUIC_NO_ERROR, decoder_.error());
@@ -403,7 +403,7 @@
   EXPECT_CALL(visitor_, OnHeadersFramePayload(QuicStringPiece("e")));
   EXPECT_CALL(visitor_, OnHeadersFramePayload(QuicStringPiece("r")));
   EXPECT_CALL(visitor_, OnHeadersFramePayload(QuicStringPiece("s")));
-  EXPECT_CALL(visitor_, OnHeadersFrameEnd(7));
+  EXPECT_CALL(visitor_, OnHeadersFrameEnd());
   for (char c : input) {
     EXPECT_EQ(1u, decoder_.ProcessInput(&c, 1));
   }
@@ -441,7 +441,7 @@
   // Process the full frame.
   InSequence s;
   EXPECT_CALL(visitor_, OnHeadersFrameStart(Http3FrameLengths(2, 0)));
-  EXPECT_CALL(visitor_, OnHeadersFrameEnd(0));
+  EXPECT_CALL(visitor_, OnHeadersFrameEnd());
   EXPECT_EQ(QUIC_ARRAYSIZE(input),
             decoder_.ProcessInput(input, QUIC_ARRAYSIZE(input)));
   EXPECT_EQ(QUIC_NO_ERROR, decoder_.error());
@@ -449,7 +449,7 @@
 
   // Process the frame incremently.
   EXPECT_CALL(visitor_, OnHeadersFrameStart(Http3FrameLengths(2, 0)));
-  EXPECT_CALL(visitor_, OnHeadersFrameEnd(0));
+  EXPECT_CALL(visitor_, OnHeadersFrameEnd());
   for (char c : input) {
     EXPECT_EQ(1u, decoder_.ProcessInput(&c, 1));
   }
diff --git a/quic/core/http/quic_receive_control_stream.cc b/quic/core/http/quic_receive_control_stream.cc
index 972dfc8..4c625c0 100644
--- a/quic/core/http/quic_receive_control_stream.cc
+++ b/quic/core/http/quic_receive_control_stream.cc
@@ -76,9 +76,7 @@
     CloseConnectionOnWrongFrame("Headers");
   }
 
-  void OnHeadersFrameEnd(QuicByteCount frame_len) override {
-    CloseConnectionOnWrongFrame("Headers");
-  }
+  void OnHeadersFrameEnd() override { CloseConnectionOnWrongFrame("Headers"); }
 
   void OnPushPromiseFrameStart(PushId push_id) override {
     CloseConnectionOnWrongFrame("Push Promise");
diff --git a/quic/core/http/quic_spdy_stream.cc b/quic/core/http/quic_spdy_stream.cc
index 221a4dd..fd77668 100644
--- a/quic/core/http/quic_spdy_stream.cc
+++ b/quic/core/http/quic_spdy_stream.cc
@@ -97,13 +97,13 @@
     stream_->OnHeadersFramePayload(payload);
   }
 
-  void OnHeadersFrameEnd(QuicByteCount frame_len) override {
+  void OnHeadersFrameEnd() override {
     if (!VersionUsesQpack(
             stream_->session()->connection()->transport_version())) {
       CloseConnectionOnWrongFrame("Headers");
       return;
     }
-    stream_->OnHeadersFrameEnd(frame_len);
+    stream_->OnHeadersFrameEnd();
   }
 
   void OnPushPromiseFrameStart(PushId push_id) override {
@@ -651,7 +651,7 @@
   DCHECK(VersionUsesQpack(spdy_session_->connection()->transport_version()));
 }
 
-void QuicSpdyStream::OnHeadersFrameEnd(QuicByteCount frame_len) {
+void QuicSpdyStream::OnHeadersFrameEnd() {
   DCHECK(VersionUsesQpack(spdy_session_->connection()->transport_version()));
 }
 
diff --git a/quic/core/http/quic_spdy_stream.h b/quic/core/http/quic_spdy_stream.h
index 6d2f9b1..c1bb95a 100644
--- a/quic/core/http/quic_spdy_stream.h
+++ b/quic/core/http/quic_spdy_stream.h
@@ -207,7 +207,7 @@
   void OnDataFrameEnd();
   void OnHeadersFrameStart(Http3FrameLengths frame_length);
   void OnHeadersFramePayload(QuicStringPiece payload);
-  void OnHeadersFrameEnd(QuicByteCount frame_len);
+  void OnHeadersFrameEnd();
 
   // Called when the received headers are too large. By default this will
   // reset the stream.
