diff --git a/quic/core/qpack/qpack_encoder.cc b/quic/core/qpack/qpack_encoder.cc
index ddceef0..b6be648 100644
--- a/quic/core/qpack/qpack_encoder.cc
+++ b/quic/core/qpack/qpack_encoder.cc
@@ -12,6 +12,7 @@
 #include "net/third_party/quiche/src/quic/core/qpack/value_splitting_header_list.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_ptr_util.h"
+#include "net/third_party/quiche/src/quic/platform/api/quic_str_cat.h"
 
 namespace quic {
 
@@ -120,16 +121,35 @@
   maximum_blocked_streams_ = maximum_blocked_streams;
 }
 
-void QpackEncoder::OnInsertCountIncrement(uint64_t /*increment*/) {
-  // TODO(bnc): Implement dynamic table management for encoding.
+void QpackEncoder::OnInsertCountIncrement(uint64_t increment) {
+  if (increment == 0) {
+    decoder_stream_error_delegate_->OnDecoderStreamError(
+        "Invalid increment value 0.");
+    return;
+  }
+
+  blocking_manager_.OnInsertCountIncrement(increment);
+
+  if (blocking_manager_.known_received_count() >
+      header_table_.inserted_entry_count()) {
+    decoder_stream_error_delegate_->OnDecoderStreamError(QuicStrCat(
+        "Increment value ", increment, " raises known received count to ",
+        blocking_manager_.known_received_count(),
+        " exceeding inserted entry count ",
+        header_table_.inserted_entry_count()));
+  }
 }
 
-void QpackEncoder::OnHeaderAcknowledgement(QuicStreamId /*stream_id*/) {
-  // TODO(bnc): Implement dynamic table management for encoding.
+void QpackEncoder::OnHeaderAcknowledgement(QuicStreamId stream_id) {
+  if (!blocking_manager_.OnHeaderAcknowledgement(stream_id)) {
+    decoder_stream_error_delegate_->OnDecoderStreamError(
+        QuicStrCat("Header Acknowledgement received for stream ", stream_id,
+                   " with no outstanding header blocks."));
+  }
 }
 
-void QpackEncoder::OnStreamCancellation(QuicStreamId /*stream_id*/) {
-  // TODO(bnc): Implement dynamic table management for encoding.
+void QpackEncoder::OnStreamCancellation(QuicStreamId stream_id) {
+  blocking_manager_.OnStreamCancellation(stream_id);
 }
 
 void QpackEncoder::OnErrorDetected(QuicStringPiece error_message) {
diff --git a/quic/core/qpack/qpack_encoder.h b/quic/core/qpack/qpack_encoder.h
index 1ced7fa..a1b6427 100644
--- a/quic/core/qpack/qpack_encoder.h
+++ b/quic/core/qpack/qpack_encoder.h
@@ -10,6 +10,7 @@
 #include <string>
 #include <vector>
 
+#include "net/third_party/quiche/src/quic/core/qpack/qpack_blocking_manager.h"
 #include "net/third_party/quiche/src/quic/core/qpack/qpack_decoder_stream_receiver.h"
 #include "net/third_party/quiche/src/quic/core/qpack/qpack_encoder_stream_sender.h"
 #include "net/third_party/quiche/src/quic/core/qpack/qpack_header_table.h"
@@ -111,6 +112,7 @@
   QpackEncoderStreamSender encoder_stream_sender_;
   QpackHeaderTable header_table_;
   uint64_t maximum_blocked_streams_;
+  QpackBlockingManager blocking_manager_;
 };
 
 }  // namespace quic
diff --git a/quic/core/qpack/qpack_encoder_test.cc b/quic/core/qpack/qpack_encoder_test.cc
index bf5116e..56cfe84 100644
--- a/quic/core/qpack/qpack_encoder_test.cc
+++ b/quic/core/qpack/qpack_encoder_test.cc
@@ -152,6 +152,34 @@
             output);
 }
 
+TEST_F(QpackEncoderTest, ZeroInsertCountIncrement) {
+  // Encoder receives insert count increment with forbidden value 0.
+  EXPECT_CALL(decoder_stream_error_delegate_,
+              OnDecoderStreamError(Eq("Invalid increment value 0.")));
+  encoder_.OnInsertCountIncrement(0);
+}
+
+TEST_F(QpackEncoderTest, TooLargeInsertCountIncrement) {
+  // Encoder receives insert count increment with value that increases Known
+  // Received Count to a value (one) which is larger than the number of dynamic
+  // table insertions sent (zero).
+  EXPECT_CALL(
+      decoder_stream_error_delegate_,
+      OnDecoderStreamError(Eq("Increment value 1 raises known received count "
+                              "to 1 exceeding inserted entry count 0")));
+  encoder_.OnInsertCountIncrement(1);
+}
+
+TEST_F(QpackEncoderTest, InvalidHeaderAcknowledgement) {
+  // Encoder receives header acknowledgement for a stream on which no header
+  // block with dynamic table entries was ever sent.
+  EXPECT_CALL(
+      decoder_stream_error_delegate_,
+      OnDecoderStreamError(Eq("Header Acknowledgement received for stream 0 "
+                              "with no outstanding header blocks.")));
+  encoder_.OnHeaderAcknowledgement(/* stream_id = */ 0);
+}
+
 }  // namespace
 }  // namespace test
 }  // namespace quic
