diff --git a/spdy/core/hpack/hpack_decoder_adapter_test.cc b/spdy/core/hpack/hpack_decoder_adapter_test.cc
index 2fe01fc..fb9bfbd 100644
--- a/spdy/core/hpack/hpack_decoder_adapter_test.cc
+++ b/spdy/core/hpack/hpack_decoder_adapter_test.cc
@@ -710,7 +710,7 @@
 // Round-tripping the header set from RFC 7541 C.3.1 should work.
 // http://httpwg.org/specs/rfc7541.html#rfc.section.C.3.1
 TEST_P(HpackDecoderAdapterTest, BasicC31) {
-  HpackEncoder encoder(ObtainHpackHuffmanTable());
+  HpackEncoder encoder;
 
   SpdyHeaderBlock expected_header_set;
   expected_header_set[":method"] = "GET";
diff --git a/spdy/core/hpack/hpack_encoder.cc b/spdy/core/hpack/hpack_encoder.cc
index 71b94a3..64d0005 100644
--- a/spdy/core/hpack/hpack_encoder.cc
+++ b/spdy/core/hpack/hpack_encoder.cc
@@ -77,9 +77,9 @@
 
 }  // namespace
 
-HpackEncoder::HpackEncoder(const HpackHuffmanTable& table)
+HpackEncoder::HpackEncoder()
     : output_stream_(),
-      huffman_table_(table),
+      huffman_table_(ObtainHpackHuffmanTable()),
       min_table_size_setting_received_(std::numeric_limits<size_t>::max()),
       listener_(NoOpListener),
       should_index_(DefaultPolicy),
diff --git a/spdy/core/hpack/hpack_encoder.h b/spdy/core/hpack/hpack_encoder.h
index 534b9e6..2455f3d 100644
--- a/spdy/core/hpack/hpack_encoder.h
+++ b/spdy/core/hpack/hpack_encoder.h
@@ -47,9 +47,7 @@
   using IndexingPolicy =
       std::function<bool(quiche::QuicheStringPiece, quiche::QuicheStringPiece)>;
 
-  // |table| is an initialized HPACK Huffman table, having an
-  // externally-managed lifetime which spans beyond HpackEncoder.
-  explicit HpackEncoder(const HpackHuffmanTable& table);
+  HpackEncoder();
   HpackEncoder(const HpackEncoder&) = delete;
   HpackEncoder& operator=(const HpackEncoder&) = delete;
   ~HpackEncoder();
diff --git a/spdy/core/hpack/hpack_encoder_test.cc b/spdy/core/hpack/hpack_encoder_test.cc
index f6f9f87..8e9a2d6 100644
--- a/spdy/core/hpack/hpack_encoder_test.cc
+++ b/spdy/core/hpack/hpack_encoder_test.cc
@@ -39,9 +39,6 @@
   bool compression_enabled() const { return encoder_->enable_compression_; }
   HpackHeaderTable* table() { return &encoder_->header_table_; }
   HpackHeaderTablePeer table_peer() { return HpackHeaderTablePeer(table()); }
-  const HpackHuffmanTable& huffman_table() const {
-    return encoder_->huffman_table_;
-  }
   void EmitString(quiche::QuicheStringPiece str) { encoder_->EmitString(str); }
   void TakeString(std::string* out) {
     encoder_->output_stream_.TakeString(out);
@@ -133,8 +130,7 @@
   typedef test::HpackEncoderPeer::Representations Representations;
 
   HpackEncoderTestBase()
-      : encoder_(ObtainHpackHuffmanTable()),
-        peer_(&encoder_),
+      : peer_(&encoder_),
         static_(peer_.table()->GetByIndex(1)),
         headers_storage_(1024 /* block size */) {}
 
@@ -190,7 +186,7 @@
     ExpectString(&expected_, value);
   }
   void ExpectString(HpackOutputStream* stream, quiche::QuicheStringPiece str) {
-    const HpackHuffmanTable& huffman_table = peer_.huffman_table();
+    const HpackHuffmanTable& huffman_table = ObtainHpackHuffmanTable();
     size_t encoded_size = peer_.compression_enabled()
                               ? huffman_table.EncodedSize(str)
                               : str.size();
diff --git a/spdy/core/hpack/hpack_round_trip_test.cc b/spdy/core/hpack/hpack_round_trip_test.cc
index c4bf037..4b5dd5b 100644
--- a/spdy/core/hpack/hpack_round_trip_test.cc
+++ b/spdy/core/hpack/hpack_round_trip_test.cc
@@ -24,8 +24,6 @@
 
 class HpackRoundTripTest : public QuicheTestWithParam<InputSizeParam> {
  protected:
-  HpackRoundTripTest() : encoder_(ObtainHpackHuffmanTable()), decoder_() {}
-
   void SetUp() override {
     // Use a small table size to tickle eviction handling.
     encoder_.ApplyHeaderTableSizeSetting(256);
diff --git a/spdy/core/spdy_framer.cc b/spdy/core/spdy_framer.cc
index 7b3d388..58ce2b9 100644
--- a/spdy/core/spdy_framer.cc
+++ b/spdy/core/spdy_framer.cc
@@ -13,7 +13,6 @@
 
 #include "net/third_party/quiche/src/http2/platform/api/http2_macros.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_ptr_util.h"
-#include "net/third_party/quiche/src/spdy/core/hpack/hpack_constants.h"
 #include "net/third_party/quiche/src/spdy/core/spdy_bitmasks.h"
 #include "net/third_party/quiche/src/spdy/core/spdy_frame_builder.h"
 #include "net/third_party/quiche/src/spdy/core/spdy_frame_reader.h"
@@ -1269,7 +1268,7 @@
 
 HpackEncoder* SpdyFramer::GetHpackEncoder() {
   if (hpack_encoder_ == nullptr) {
-    hpack_encoder_ = std::make_unique<HpackEncoder>(ObtainHpackHuffmanTable());
+    hpack_encoder_ = std::make_unique<HpackEncoder>();
     if (!compression_enabled()) {
       hpack_encoder_->DisableCompression();
     }
diff --git a/spdy/core/spdy_framer_test.cc b/spdy/core/spdy_framer_test.cc
index e36a17e..ee05143 100644
--- a/spdy/core/spdy_framer_test.cc
+++ b/spdy/core/spdy_framer_test.cc
@@ -16,7 +16,6 @@
 #include "net/third_party/quiche/src/common/platform/api/quiche_arraysize.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_test.h"
 #include "net/third_party/quiche/src/spdy/core/array_output_buffer.h"
-#include "net/third_party/quiche/src/spdy/core/hpack/hpack_constants.h"
 #include "net/third_party/quiche/src/spdy/core/mock_spdy_framer_visitor.h"
 #include "net/third_party/quiche/src/spdy/core/spdy_bitmasks.h"
 #include "net/third_party/quiche/src/spdy/core/spdy_frame_builder.h"
@@ -1106,7 +1105,7 @@
   SpdyHeaderBlock header_set;
   header_set["name"] = value;
   std::string buffer;
-  HpackEncoder encoder(ObtainHpackHuffmanTable());
+  HpackEncoder encoder;
   encoder.DisableCompression();
   encoder.EncodeHeaderSet(header_set, &buffer);
   // Frame builder with plentiful buffer size.
@@ -2311,7 +2310,7 @@
   header_block["bar"] = "foo";
   header_block["foo"] = "bar";
   auto buffer = std::make_unique<std::string>();
-  HpackEncoder encoder(ObtainHpackHuffmanTable());
+  HpackEncoder encoder;
   encoder.DisableCompression();
   encoder.EncodeHeaderSet(header_block, buffer.get());
 
