diff --git a/quic/core/qpack/offline/qpack_offline_decoder.cc b/quic/core/qpack/offline/qpack_offline_decoder.cc
index b6ad935..dc2d864 100644
--- a/quic/core/qpack/offline/qpack_offline_decoder.cc
+++ b/quic/core/qpack/offline/qpack_offline_decoder.cc
@@ -134,7 +134,7 @@
 
     // Process data.
     if (stream_id == 0) {
-      qpack_decoder_->DecodeEncoderStreamData(data);
+      qpack_decoder_->encoder_stream_receiver()->Decode(data);
 
       if (encoder_stream_error_detected_) {
         QUIC_LOG(ERROR) << "Error detected on encoder stream.";
diff --git a/quic/core/qpack/qpack_decoder.cc b/quic/core/qpack/qpack_decoder.cc
index 739bc1e..79db4dd 100644
--- a/quic/core/qpack/qpack_decoder.cc
+++ b/quic/core/qpack/qpack_decoder.cc
@@ -30,10 +30,6 @@
   decoder_stream_sender_.SendStreamCancellation(stream_id);
 }
 
-void QpackDecoder::DecodeEncoderStreamData(QuicStringPiece data) {
-  encoder_stream_receiver_.Decode(data);
-}
-
 void QpackDecoder::OnInsertWithNameReference(bool is_static,
                                              uint64_t name_index,
                                              QuicStringPiece value) {
diff --git a/quic/core/qpack/qpack_decoder.h b/quic/core/qpack/qpack_decoder.h
index 6a403fd..c00d777 100644
--- a/quic/core/qpack/qpack_decoder.h
+++ b/quic/core/qpack/qpack_decoder.h
@@ -65,10 +65,6 @@
       QuicStreamId stream_id,
       QpackProgressiveDecoder::HeadersHandlerInterface* handler);
 
-  // Decode data received on the encoder stream.
-  // TODO(b/112770235): Remove this method.
-  void DecodeEncoderStreamData(QuicStringPiece data);
-
   // QpackEncoderStreamReceiver::Delegate implementation
   void OnInsertWithNameReference(bool is_static,
                                  uint64_t name_index,
diff --git a/quic/core/qpack/qpack_decoder_test.cc b/quic/core/qpack/qpack_decoder_test.cc
index 9fe3d8c..5190975 100644
--- a/quic/core/qpack/qpack_decoder_test.cc
+++ b/quic/core/qpack/qpack_decoder_test.cc
@@ -44,7 +44,7 @@
   ~QpackDecoderTest() override = default;
 
   void DecodeEncoderStreamData(QuicStringPiece data) {
-    qpack_decoder_.DecodeEncoderStreamData(data);
+    qpack_decoder_.encoder_stream_receiver()->Decode(data);
   }
 
   // Set up |progressive_decoder_|.
diff --git a/quic/core/qpack/qpack_encoder.cc b/quic/core/qpack/qpack_encoder.cc
index cce36ee..1252845 100644
--- a/quic/core/qpack/qpack_encoder.cc
+++ b/quic/core/qpack/qpack_encoder.cc
@@ -97,10 +97,6 @@
   return encoded_headers;
 }
 
-void QpackEncoder::DecodeDecoderStreamData(QuicStringPiece data) {
-  decoder_stream_receiver_.Decode(data);
-}
-
 void QpackEncoder::SetMaximumDynamicTableCapacity(
     uint64_t maximum_dynamic_table_capacity) {
   header_table_.SetMaximumDynamicTableCapacity(maximum_dynamic_table_capacity);
diff --git a/quic/core/qpack/qpack_encoder.h b/quic/core/qpack/qpack_encoder.h
index ee988ce..20f7f5f 100644
--- a/quic/core/qpack/qpack_encoder.h
+++ b/quic/core/qpack/qpack_encoder.h
@@ -51,10 +51,6 @@
   std::string EncodeHeaderList(QuicStreamId stream_id,
                                const spdy::SpdyHeaderBlock* header_list);
 
-  // Decode data received on the decoder stream.
-  // TODO(b/112770235): Remove this method.
-  void DecodeDecoderStreamData(QuicStringPiece data);
-
   // Set maximum capacity of dynamic table, measured in bytes.
   // Called when SETTINGS_QPACK_MAX_TABLE_CAPACITY is received.
   void SetMaximumDynamicTableCapacity(uint64_t maximum_dynamic_table_capacity);
diff --git a/quic/core/qpack/qpack_encoder_test.cc b/quic/core/qpack/qpack_encoder_test.cc
index 90caf44..8de95e4 100644
--- a/quic/core/qpack/qpack_encoder_test.cc
+++ b/quic/core/qpack/qpack_encoder_test.cc
@@ -131,7 +131,7 @@
 
   QpackEncoder encoder(&decoder_stream_error_delegate_);
   encoder.set_qpack_stream_sender_delegate(&encoder_stream_sender_delegate_);
-  encoder.DecodeDecoderStreamData(
+  encoder.decoder_stream_receiver()->Decode(
       QuicTextUtils::HexDecode("ffffffffffffffffffffff"));
 }
 
