Migrates all users of spdy::Http2HeaderBlock to quiche::HttpHeaderBlock.

The former is merely an alias for the latter, so this is not a functional change.

Tested:
    TAP for global presubmit queue
    http://test/OCL:651173231:BASE:652852841:1721143369682:3ddd168b

Protected by refactoring, no functional change, not protected.

PiperOrigin-RevId: 652877129
diff --git a/quiche/http2/core/http2_header_block_hpack_listener.h b/quiche/http2/core/http2_header_block_hpack_listener.h
index 14bc579..07cdba4 100644
--- a/quiche/http2/core/http2_header_block_hpack_listener.h
+++ b/quiche/http2/core/http2_header_block_hpack_listener.h
@@ -6,14 +6,14 @@
 
 #include "absl/strings/string_view.h"
 #include "quiche/http2/hpack/decoder/hpack_decoder_listener.h"
+#include "quiche/common/http/http_header_block.h"
 #include "quiche/common/platform/api/quiche_export.h"
 #include "quiche/common/platform/api/quiche_logging.h"
-#include "quiche/spdy/core/http2_header_block.h"
 
 namespace spdy {
 
 // This class simply gathers the key-value pairs emitted by an HpackDecoder in
-// a Http2HeaderBlock.
+// a quiche::HttpHeaderBlock.
 class QUICHE_EXPORT Http2HeaderBlockHpackListener
     : public http2::HpackDecoderListener {
  public:
@@ -35,15 +35,15 @@
     hpack_error_ = true;
   }
 
-  Http2HeaderBlock release_header_block() {
-    Http2HeaderBlock block = std::move(header_block_);
+  quiche::HttpHeaderBlock release_header_block() {
+    quiche::HttpHeaderBlock block = std::move(header_block_);
     header_block_ = {};
     return block;
   }
   bool hpack_error() const { return hpack_error_; }
 
  private:
-  Http2HeaderBlock header_block_;
+  quiche::HttpHeaderBlock header_block_;
   bool hpack_error_ = false;
 };
 
diff --git a/quiche/http2/core/http2_trace_logging.cc b/quiche/http2/core/http2_trace_logging.cc
index 7ae1fa1..4a08864 100644
--- a/quiche/http2/core/http2_trace_logging.cc
+++ b/quiche/http2/core/http2_trace_logging.cc
@@ -9,10 +9,10 @@
 #include "absl/strings/str_cat.h"
 #include "absl/strings/string_view.h"
 #include "quiche/http2/core/spdy_protocol.h"
+#include "quiche/common/http/http_header_block.h"
 #include "quiche/common/platform/api/quiche_bug_tracker.h"
 #include "quiche/common/platform/api/quiche_logging.h"
 #include "quiche/common/quiche_callbacks.h"
-#include "quiche/spdy/core/http2_header_block.h"
 
 // Convenience macros for printing function arguments in log lines in the
 // format arg_name=value.
@@ -64,7 +64,7 @@
 
 namespace http2 {
 
-using spdy::Http2HeaderBlock;
+using quiche::HttpHeaderBlock;
 using spdy::SettingsMap;
 using spdy::SpdyAltSvcIR;
 using spdy::SpdyContinuationIR;
@@ -82,10 +82,10 @@
 
 namespace {
 
-// Defines how elements of Http2HeaderBlocks are logged.
+// Defines how elements of HttpHeaderBlocks are logged.
 struct LogHeaderBlockEntry {
   void Log(std::ostream& out,
-           const Http2HeaderBlock::value_type& entry) const {  // NOLINT
+           const HttpHeaderBlock::value_type& entry) const {  // NOLINT
     out << "\"" << entry.first << "\": \"" << entry.second << "\"";
   }
 };
diff --git a/quiche/http2/core/recording_headers_handler.h b/quiche/http2/core/recording_headers_handler.h
index fe3655d..46f0544 100644
--- a/quiche/http2/core/recording_headers_handler.h
+++ b/quiche/http2/core/recording_headers_handler.h
@@ -9,8 +9,8 @@
 
 #include "absl/strings/string_view.h"
 #include "quiche/http2/core/spdy_headers_handler_interface.h"
+#include "quiche/common/http/http_header_block.h"
 #include "quiche/common/platform/api/quiche_export.h"
-#include "quiche/spdy/core/http2_header_block.h"
 
 namespace spdy {
 
@@ -31,7 +31,7 @@
   void OnHeaderBlockEnd(size_t uncompressed_header_bytes,
                         size_t compressed_header_bytes) override;
 
-  const Http2HeaderBlock& decoded_block() const { return block_; }
+  const quiche::HttpHeaderBlock& decoded_block() const { return block_; }
   size_t uncompressed_header_bytes() const {
     return uncompressed_header_bytes_;
   }
@@ -39,7 +39,7 @@
 
  private:
   SpdyHeadersHandlerInterface* wrapped_ = nullptr;
-  Http2HeaderBlock block_;
+  quiche::HttpHeaderBlock block_;
   size_t uncompressed_header_bytes_ = 0;
   size_t compressed_header_bytes_ = 0;
 };
diff --git a/quiche/http2/hpack/hpack_encoder.cc b/quiche/http2/hpack/hpack_encoder.cc
index 625ee70..4d19277 100644
--- a/quiche/http2/hpack/hpack_encoder.cc
+++ b/quiche/http2/hpack/hpack_encoder.cc
@@ -18,9 +18,9 @@
 #include "quiche/http2/hpack/hpack_header_table.h"
 #include "quiche/http2/hpack/hpack_output_stream.h"
 #include "quiche/http2/hpack/huffman/hpack_huffman_encoder.h"
+#include "quiche/common/http/http_header_block.h"
 #include "quiche/common/platform/api/quiche_bug_tracker.h"
 #include "quiche/common/platform/api/quiche_logging.h"
-#include "quiche/spdy/core/http2_header_block.h"
 
 namespace spdy {
 
@@ -93,7 +93,7 @@
 HpackEncoder::~HpackEncoder() = default;
 
 std::string HpackEncoder::EncodeHeaderBlock(
-    const Http2HeaderBlock& header_set) {
+    const quiche::HttpHeaderBlock& header_set) {
   // Separate header set into pseudo-headers and regular headers.
   Representations pseudo_headers;
   Representations regular_headers;
@@ -274,10 +274,10 @@
   }
 }
 
-// Iteratively encodes a Http2HeaderBlock.
+// Iteratively encodes a quiche::HttpHeaderBlock.
 class HpackEncoder::Encoderator : public ProgressiveEncoder {
  public:
-  Encoderator(const Http2HeaderBlock& header_set, HpackEncoder* encoder);
+  Encoderator(const quiche::HttpHeaderBlock& header_set, HpackEncoder* encoder);
   Encoderator(const Representations& representations, HpackEncoder* encoder);
 
   // Encoderator is neither copyable nor movable.
@@ -298,8 +298,8 @@
   bool has_next_;
 };
 
-HpackEncoder::Encoderator::Encoderator(const Http2HeaderBlock& header_set,
-                                       HpackEncoder* encoder)
+HpackEncoder::Encoderator::Encoderator(
+    const quiche::HttpHeaderBlock& header_set, HpackEncoder* encoder)
     : encoder_(encoder), has_next_(true) {
   // Separate header set into pseudo-headers and regular headers.
   bool found_cookie = false;
@@ -379,7 +379,7 @@
 }
 
 std::unique_ptr<HpackEncoder::ProgressiveEncoder> HpackEncoder::EncodeHeaderSet(
-    const Http2HeaderBlock& header_set) {
+    const quiche::HttpHeaderBlock& header_set) {
   return std::make_unique<Encoderator>(header_set, this);
 }
 
diff --git a/quiche/http2/hpack/hpack_encoder.h b/quiche/http2/hpack/hpack_encoder.h
index 3130ca5..efbd262 100644
--- a/quiche/http2/hpack/hpack_encoder.h
+++ b/quiche/http2/hpack/hpack_encoder.h
@@ -15,9 +15,9 @@
 #include "absl/strings/string_view.h"
 #include "quiche/http2/hpack/hpack_header_table.h"
 #include "quiche/http2/hpack/hpack_output_stream.h"
+#include "quiche/common/http/http_header_block.h"
 #include "quiche/common/platform/api/quiche_export.h"
 #include "quiche/common/quiche_callbacks.h"
-#include "quiche/spdy/core/http2_header_block.h"
 
 // An HpackEncoder encodes header sets as outlined in
 // http://tools.ietf.org/html/rfc7541.
@@ -49,7 +49,7 @@
   ~HpackEncoder();
 
   // Encodes and returns the given header set as a string.
-  std::string EncodeHeaderBlock(const Http2HeaderBlock& header_set);
+  std::string EncodeHeaderBlock(const quiche::HttpHeaderBlock& header_set);
 
   class QUICHE_EXPORT ProgressiveEncoder {
    public:
@@ -63,9 +63,9 @@
   };
 
   // Returns a ProgressiveEncoder which must be outlived by both the given
-  // Http2HeaderBlock and this object.
+  // quiche::HttpHeaderBlock and this object.
   std::unique_ptr<ProgressiveEncoder> EncodeHeaderSet(
-      const Http2HeaderBlock& header_set);
+      const quiche::HttpHeaderBlock& header_set);
   // Returns a ProgressiveEncoder which must be outlived by this HpackEncoder.
   // The encoder will not attempt to split any \0-delimited values in
   // |representations|. If such splitting is desired, it must be performed by
diff --git a/quiche/http2/hpack/hpack_encoder_test.cc b/quiche/http2/hpack/hpack_encoder_test.cc
index 48373e9..5a80991 100644
--- a/quiche/http2/hpack/hpack_encoder_test.cc
+++ b/quiche/http2/hpack/hpack_encoder_test.cc
@@ -19,10 +19,10 @@
 #include "quiche/http2/hpack/hpack_static_table.h"
 #include "quiche/http2/hpack/huffman/hpack_huffman_encoder.h"
 #include "quiche/http2/test_tools/http2_random.h"
+#include "quiche/common/http/http_header_block.h"
 #include "quiche/common/platform/api/quiche_logging.h"
 #include "quiche/common/platform/api/quiche_test.h"
 #include "quiche/common/quiche_simple_arena.h"
-#include "quiche/spdy/core/http2_header_block.h"
 
 namespace spdy {
 
@@ -82,13 +82,13 @@
 
   // TODO(dahollings): Remove or clean up these methods when deprecating
   // non-incremental encoding path.
-  static std::string EncodeHeaderBlock(HpackEncoder* encoder,
-                                       const Http2HeaderBlock& header_set) {
+  static std::string EncodeHeaderBlock(
+      HpackEncoder* encoder, const quiche::HttpHeaderBlock& header_set) {
     return encoder->EncodeHeaderBlock(header_set);
   }
 
   static bool EncodeIncremental(HpackEncoder* encoder,
-                                const Http2HeaderBlock& header_set,
+                                const quiche::HttpHeaderBlock& header_set,
                                 std::string* output) {
     std::unique_ptr<HpackEncoder::ProgressiveEncoder> encoderator =
         encoder->EncodeHeaderSet(header_set);
@@ -220,14 +220,15 @@
     expected_.AppendPrefix(kHeaderTableSizeUpdateOpcode);
     expected_.AppendUint32(size);
   }
-  Representations MakeRepresentations(const Http2HeaderBlock& header_set) {
+  Representations MakeRepresentations(
+      const quiche::HttpHeaderBlock& header_set) {
     Representations r;
     for (const auto& header : header_set) {
       r.push_back(header);
     }
     return r;
   }
-  void CompareWithExpectedEncoding(const Http2HeaderBlock& header_set) {
+  void CompareWithExpectedEncoding(const quiche::HttpHeaderBlock& header_set) {
     std::string actual_out;
     std::string expected_out = expected_.TakeString();
     switch (strategy_) {
@@ -392,7 +393,7 @@
 
   ExpectIndex(DynamicIndexToWireIndex(key_2_index_));
 
-  Http2HeaderBlock headers;
+  quiche::HttpHeaderBlock headers;
   headers[key_2_->name()] = key_2_->value();
   CompareWithExpectedEncoding(headers);
   EXPECT_THAT(headers_observed_,
@@ -402,7 +403,7 @@
 TEST_P(HpackEncoderTest, SingleStaticIndex) {
   ExpectIndex(kStaticEntryIndex);
 
-  Http2HeaderBlock headers;
+  quiche::HttpHeaderBlock headers;
   headers[static_->name()] = static_->value();
   CompareWithExpectedEncoding(headers);
 }
@@ -411,7 +412,7 @@
   peer_.table()->SetMaxSize(1);  // Also evicts all fixtures.
   ExpectIndex(kStaticEntryIndex);
 
-  Http2HeaderBlock headers;
+  quiche::HttpHeaderBlock headers;
   headers[static_->name()] = static_->value();
   CompareWithExpectedEncoding(headers);
 
@@ -421,7 +422,7 @@
 TEST_P(HpackEncoderTest, SingleLiteralWithIndexName) {
   ExpectIndexedLiteral(DynamicIndexToWireIndex(key_2_index_), "value3");
 
-  Http2HeaderBlock headers;
+  quiche::HttpHeaderBlock headers;
   headers[key_2_->name()] = "value3";
   CompareWithExpectedEncoding(headers);
 
@@ -434,7 +435,7 @@
 TEST_P(HpackEncoderTest, SingleLiteralWithLiteralName) {
   ExpectIndexedLiteral("key3", "value3");
 
-  Http2HeaderBlock headers;
+  quiche::HttpHeaderBlock headers;
   headers["key3"] = "value3";
   CompareWithExpectedEncoding(headers);
 
@@ -450,7 +451,7 @@
 
   // A header overflowing the header table is still emitted.
   // The header table is empty.
-  Http2HeaderBlock headers;
+  quiche::HttpHeaderBlock headers;
   headers["key3"] = "value3";
   CompareWithExpectedEncoding(headers);
 
@@ -463,7 +464,7 @@
   ExpectIndex(DynamicIndexToWireIndex(key_1_index_));
   ExpectIndexedLiteral("key3", "value3");
 
-  Http2HeaderBlock headers;
+  quiche::HttpHeaderBlock headers;
   headers[key_1_->name()] = key_1_->value();
   headers["key3"] = "value3";
   CompareWithExpectedEncoding(headers);
@@ -474,7 +475,7 @@
   ExpectIndex(DynamicIndexToWireIndex(cookie_c_index_));
   ExpectIndexedLiteral(peer_.table()->GetByName("cookie"), "e=ff");
 
-  Http2HeaderBlock headers;
+  quiche::HttpHeaderBlock headers;
   headers["cookie"] = "a=bb; c=dd; e=ff";
   CompareWithExpectedEncoding(headers);
 }
@@ -483,14 +484,14 @@
   encoder_.DisableCookieCrumbling();
   ExpectIndexedLiteral(peer_.table()->GetByName("cookie"), "a=bb; c=dd; e=ff");
 
-  Http2HeaderBlock headers;
+  quiche::HttpHeaderBlock headers;
   headers["cookie"] = "a=bb; c=dd; e=ff";
   CompareWithExpectedEncoding(headers);
 }
 
 TEST_P(HpackEncoderTest, MultiValuedHeadersNotCrumbled) {
   ExpectIndexedLiteral("foo", "bar, baz");
-  Http2HeaderBlock headers;
+  quiche::HttpHeaderBlock headers;
   headers["foo"] = "bar, baz";
   CompareWithExpectedEncoding(headers);
 }
@@ -532,7 +533,7 @@
   }
   ExpectNonIndexedLiteral("multivalue", "value1, value2");
 
-  Http2HeaderBlock headers;
+  quiche::HttpHeaderBlock headers;
   headers[":path"] = "/index.html";
   headers["cookie"] = "foo=bar; baz=bing";
   headers["hello"] = "goodbye";
@@ -567,7 +568,7 @@
 
   // Pass 1.
   {
-    Http2HeaderBlock headers;
+    quiche::HttpHeaderBlock headers;
     headers["key1"] = "value1";
     headers["cookie"] = "a=bb";
 
@@ -582,7 +583,7 @@
   // 62: cookie: c=dd
   // Pass 2.
   {
-    Http2HeaderBlock headers;
+    quiche::HttpHeaderBlock headers;
     headers["key2"] = "value2";
     headers["cookie"] = "c=dd; e=ff";
 
@@ -603,7 +604,7 @@
   // 62: cookie: e=ff
   // Pass 3.
   {
-    Http2HeaderBlock headers;
+    quiche::HttpHeaderBlock headers;
     headers["key2"] = "value2";
     headers["cookie"] = "a=bb; b=cc; c=dd";
 
@@ -637,7 +638,7 @@
 }
 
 TEST_P(HpackEncoderTest, PseudoHeadersFirst) {
-  Http2HeaderBlock headers;
+  quiche::HttpHeaderBlock headers;
   // A pseudo-header that should not be indexed.
   headers[":path"] = "/spam/eggs.html";
   // A pseudo-header to be indexed.
@@ -725,7 +726,7 @@
     // caller must crumble null-delimited values.
     return;
   }
-  Http2HeaderBlock headers;
+  quiche::HttpHeaderBlock headers;
   // A header field to be crumbled: "spam: foo\0bar".
   headers["spam"] = std::string("foo\0bar", 7);
 
@@ -743,7 +744,7 @@
   ExpectHeaderTableSizeUpdate(1024);
   ExpectIndexedLiteral("key3", "value3");
 
-  Http2HeaderBlock headers;
+  quiche::HttpHeaderBlock headers;
   headers["key3"] = "value3";
   CompareWithExpectedEncoding(headers);
 
@@ -762,7 +763,7 @@
   ExpectHeaderTableSizeUpdate(starting_size - 1);
   ExpectIndexedLiteral("key3", "value3");
 
-  Http2HeaderBlock headers;
+  quiche::HttpHeaderBlock headers;
   headers["key3"] = "value3";
   CompareWithExpectedEncoding(headers);
 
@@ -776,7 +777,7 @@
   // No encoded size update.
   ExpectIndexedLiteral("key3", "value3");
 
-  Http2HeaderBlock headers;
+  quiche::HttpHeaderBlock headers;
   headers["key3"] = "value3";
   CompareWithExpectedEncoding(headers);
 
@@ -793,7 +794,7 @@
   ExpectHeaderTableSizeUpdate(starting_size + 2);
   ExpectIndexedLiteral("key3", "value3");
 
-  Http2HeaderBlock headers;
+  quiche::HttpHeaderBlock headers;
   headers["key3"] = "value3";
   CompareWithExpectedEncoding(headers);
 
diff --git a/quiche/http2/test_tools/spdy_test_utils.h b/quiche/http2/test_tools/spdy_test_utils.h
index e59924f..ff49121 100644
--- a/quiche/http2/test_tools/spdy_test_utils.h
+++ b/quiche/http2/test_tools/spdy_test_utils.h
@@ -11,7 +11,7 @@
 
 #include "absl/strings/string_view.h"
 #include "quiche/http2/core/spdy_protocol.h"
-#include "quiche/spdy/core/http2_header_block.h"
+#include "quiche/common/http/http_header_block.h"
 
 // TODO(b/318698478): update the namespace and file name
 namespace spdy {
diff --git a/quiche/quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc b/quiche/quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc
index a2ca2d0..d3a616a 100644
--- a/quiche/quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc
+++ b/quiche/quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc
@@ -25,8 +25,8 @@
 #include "quiche/quic/core/quic_error_codes.h"
 #include "quiche/quic/test_tools/qpack/qpack_decoder_test_utils.h"
 #include "quiche/quic/test_tools/qpack/qpack_encoder_peer.h"
+#include "quiche/common/http/http_header_block.h"
 #include "quiche/common/quiche_circular_deque.h"
-#include "quiche/spdy/core/http2_header_block.h"
 
 namespace quic {
 namespace test {
@@ -75,7 +75,7 @@
   }
 
   std::string EncodeHeaderList(QuicStreamId stream_id,
-                               const spdy::Http2HeaderBlock& header_list) {
+                               const quiche::HttpHeaderBlock& header_list) {
     return encoder_.EncodeHeaderList(stream_id, header_list, nullptr);
   }
 
@@ -471,8 +471,8 @@
 };
 
 // Generate header list using fuzzer data.
-spdy::Http2HeaderBlock GenerateHeaderList(FuzzedDataProvider* provider) {
-  spdy::Http2HeaderBlock header_list;
+quiche::HttpHeaderBlock GenerateHeaderList(FuzzedDataProvider* provider) {
+  quiche::HttpHeaderBlock header_list;
   uint8_t header_count = provider->ConsumeIntegral<uint8_t>();
   for (uint8_t header_index = 0; header_index < header_count; ++header_index) {
     if (provider->remaining_bytes() == 0) {
@@ -572,7 +572,7 @@
 }
 
 // Splits |*header_list| header values along '\0' or ';' separators.
-QuicHeaderList SplitHeaderList(const spdy::Http2HeaderBlock& header_list) {
+QuicHeaderList SplitHeaderList(const quiche::HttpHeaderBlock& header_list) {
   QuicHeaderList split_header_list;
   split_header_list.OnHeaderBlockStart();
 
@@ -637,7 +637,7 @@
     const QuicStreamId stream_id = provider.ConsumeIntegral<uint8_t>();
 
     // Generate header list.
-    spdy::Http2HeaderBlock header_list = GenerateHeaderList(&provider);
+    quiche::HttpHeaderBlock header_list = GenerateHeaderList(&provider);
 
     // Encode header list.
     std::string encoded_header_block =
diff --git a/quiche/quic/test_tools/qpack/qpack_decoder_test_utils.cc b/quiche/quic/test_tools/qpack/qpack_decoder_test_utils.cc
index ad8d4eb..ac6dea9 100644
--- a/quiche/quic/test_tools/qpack/qpack_decoder_test_utils.cc
+++ b/quiche/quic/test_tools/qpack/qpack_decoder_test_utils.cc
@@ -42,7 +42,7 @@
   error_message_.assign(error_message.data(), error_message.size());
 }
 
-spdy::Http2HeaderBlock TestHeadersHandler::ReleaseHeaderList() {
+quiche::HttpHeaderBlock TestHeadersHandler::ReleaseHeaderList() {
   QUICHE_DCHECK(decoding_completed_);
   QUICHE_DCHECK(!decoding_error_detected_);
 
diff --git a/quiche/quic/test_tools/qpack/qpack_decoder_test_utils.h b/quiche/quic/test_tools/qpack/qpack_decoder_test_utils.h
index f746550..a0101f5 100644
--- a/quiche/quic/test_tools/qpack/qpack_decoder_test_utils.h
+++ b/quiche/quic/test_tools/qpack/qpack_decoder_test_utils.h
@@ -13,7 +13,7 @@
 #include "quiche/quic/core/quic_error_codes.h"
 #include "quiche/quic/platform/api/quic_test.h"
 #include "quiche/quic/test_tools/qpack/qpack_test_utils.h"
-#include "quiche/spdy/core/http2_header_block.h"
+#include "quiche/common/http/http_header_block.h"
 
 namespace quic {
 namespace test {
@@ -46,14 +46,14 @@
 
   // Release decoded header list.  Must only be called if decoding is complete
   // and no errors have been detected.
-  spdy::Http2HeaderBlock ReleaseHeaderList();
+  quiche::HttpHeaderBlock ReleaseHeaderList();
 
   bool decoding_completed() const;
   bool decoding_error_detected() const;
   const std::string& error_message() const;
 
  private:
-  spdy::Http2HeaderBlock header_list_;
+  quiche::HttpHeaderBlock header_list_;
   bool decoding_completed_;
   bool decoding_error_detected_;
   std::string error_message_;
diff --git a/quiche/quic/test_tools/qpack/qpack_offline_decoder.cc b/quiche/quic/test_tools/qpack/qpack_offline_decoder.cc
index 73d5007..a86548e 100644
--- a/quiche/quic/test_tools/qpack/qpack_offline_decoder.cc
+++ b/quiche/quic/test_tools/qpack/qpack_offline_decoder.cc
@@ -237,11 +237,11 @@
   absl::string_view expected_headers_data(*expected_headers_data_storage);
 
   while (!decoded_header_lists_.empty()) {
-    spdy::Http2HeaderBlock decoded_header_list =
+    quiche::HttpHeaderBlock decoded_header_list =
         std::move(decoded_header_lists_.front());
     decoded_header_lists_.pop_front();
 
-    spdy::Http2HeaderBlock expected_header_list;
+    quiche::HttpHeaderBlock expected_header_list;
     if (!ReadNextExpectedHeaderList(&expected_headers_data,
                                     &expected_header_list)) {
       QUIC_LOG(ERROR)
@@ -268,7 +268,7 @@
 
 bool QpackOfflineDecoder::ReadNextExpectedHeaderList(
     absl::string_view* expected_headers_data,
-    spdy::Http2HeaderBlock* expected_header_list) {
+    quiche::HttpHeaderBlock* expected_header_list) {
   while (true) {
     absl::string_view::size_type endline = expected_headers_data->find('\n');
 
@@ -299,8 +299,8 @@
 }
 
 bool QpackOfflineDecoder::CompareHeaderBlocks(
-    spdy::Http2HeaderBlock decoded_header_list,
-    spdy::Http2HeaderBlock expected_header_list) {
+    quiche::HttpHeaderBlock decoded_header_list,
+    quiche::HttpHeaderBlock expected_header_list) {
   if (decoded_header_list == expected_header_list) {
     return true;
   }
@@ -311,7 +311,7 @@
   // Remove such headers one by one if they match.
   const char* kContentLength = "content-length";
   const char* kPseudoHeaderPrefix = ":";
-  for (spdy::Http2HeaderBlock::iterator decoded_it =
+  for (quiche::HttpHeaderBlock::iterator decoded_it =
            decoded_header_list.begin();
        decoded_it != decoded_header_list.end();) {
     const absl::string_view key = decoded_it->first;
@@ -319,7 +319,7 @@
       ++decoded_it;
       continue;
     }
-    spdy::Http2HeaderBlock::iterator expected_it =
+    quiche::HttpHeaderBlock::iterator expected_it =
         expected_header_list.find(key);
     if (expected_it == expected_header_list.end() ||
         decoded_it->second != expected_it->second) {
diff --git a/quiche/quic/test_tools/qpack/qpack_offline_decoder.h b/quiche/quic/test_tools/qpack/qpack_offline_decoder.h
index 07fa276..4e78a31 100644
--- a/quiche/quic/test_tools/qpack/qpack_offline_decoder.h
+++ b/quiche/quic/test_tools/qpack/qpack_offline_decoder.h
@@ -12,7 +12,7 @@
 #include "quiche/quic/core/quic_error_codes.h"
 #include "quiche/quic/test_tools/qpack/qpack_decoder_test_utils.h"
 #include "quiche/quic/test_tools/qpack/qpack_test_utils.h"
-#include "quiche/spdy/core/http2_header_block.h"
+#include "quiche/common/http/http_header_block.h"
 
 namespace quic {
 
@@ -63,14 +63,15 @@
   // Parse next header list from |*expected_headers_data| into
   // |*expected_header_list|, removing consumed data from the beginning of
   // |*expected_headers_data|.  Returns true on success, false if parsing fails.
-  bool ReadNextExpectedHeaderList(absl::string_view* expected_headers_data,
-                                  spdy::Http2HeaderBlock* expected_header_list);
+  bool ReadNextExpectedHeaderList(
+      absl::string_view* expected_headers_data,
+      quiche::HttpHeaderBlock* expected_header_list);
 
   // Compare two header lists.  Allow for different orders of certain headers as
   // described at
   // https://github.com/qpackers/qifs/blob/master/encoded/qpack-03/h2o/README.md.
-  bool CompareHeaderBlocks(spdy::Http2HeaderBlock decoded_header_list,
-                           spdy::Http2HeaderBlock expected_header_list);
+  bool CompareHeaderBlocks(quiche::HttpHeaderBlock decoded_header_list,
+                           quiche::HttpHeaderBlock expected_header_list);
 
   bool encoder_stream_error_detected_;
   test::NoopQpackStreamSenderDelegate decoder_stream_sender_delegate_;
@@ -80,7 +81,7 @@
   std::list<Decoder> decoders_;
 
   // Decoded header lists.
-  std::list<spdy::Http2HeaderBlock> decoded_header_lists_;
+  std::list<quiche::HttpHeaderBlock> decoded_header_lists_;
 };
 
 }  // namespace quic
diff --git a/quiche/spdy/core/hpack/hpack_decoder_adapter.cc b/quiche/spdy/core/hpack/hpack_decoder_adapter.cc
index 4dcdc60..ce3dcbb 100644
--- a/quiche/spdy/core/hpack/hpack_decoder_adapter.cc
+++ b/quiche/spdy/core/hpack/hpack_decoder_adapter.cc
@@ -11,8 +11,8 @@
 #include "quiche/http2/core/spdy_headers_handler_interface.h"
 #include "quiche/http2/decoder/decode_buffer.h"
 #include "quiche/http2/hpack/decoder/hpack_decoding_error.h"
+#include "quiche/common/http/http_header_block.h"
 #include "quiche/common/platform/api/quiche_logging.h"
-#include "quiche/spdy/core/http2_header_block.h"
 
 namespace spdy {
 namespace {
diff --git a/quiche/spdy/core/hpack/hpack_decoder_adapter.h b/quiche/spdy/core/hpack/hpack_decoder_adapter.h
index ba2ef97..a675df9 100644
--- a/quiche/spdy/core/hpack/hpack_decoder_adapter.h
+++ b/quiche/spdy/core/hpack/hpack_decoder_adapter.h
@@ -18,8 +18,8 @@
 #include "quiche/http2/hpack/decoder/hpack_decoder.h"
 #include "quiche/http2/hpack/decoder/hpack_decoder_listener.h"
 #include "quiche/http2/hpack/decoder/hpack_decoding_error.h"
+#include "quiche/common/http/http_header_block.h"
 #include "quiche/common/platform/api/quiche_export.h"
-#include "quiche/spdy/core/http2_header_block.h"
 
 namespace spdy {
 namespace test {
diff --git a/quiche/spdy/core/hpack/hpack_decoder_adapter_test.cc b/quiche/spdy/core/hpack/hpack_decoder_adapter_test.cc
index 16f0eeb..8ac28ef 100644
--- a/quiche/spdy/core/hpack/hpack_decoder_adapter_test.cc
+++ b/quiche/spdy/core/hpack/hpack_decoder_adapter_test.cc
@@ -27,10 +27,10 @@
 #include "quiche/http2/hpack/http2_hpack_constants.h"
 #include "quiche/http2/test_tools/hpack_block_builder.h"
 #include "quiche/http2/test_tools/http2_random.h"
+#include "quiche/common/http/http_header_block.h"
 #include "quiche/common/platform/api/quiche_logging.h"
 #include "quiche/common/platform/api/quiche_test.h"
 #include "quiche/common/quiche_text_utils.h"
-#include "quiche/spdy/core/http2_header_block.h"
 
 using ::http2::HpackEntryType;
 using ::http2::HpackStringPair;
@@ -179,11 +179,11 @@
     return DecodeHeaderBlock(hbb.buffer());
   }
 
-  const Http2HeaderBlock& decoded_block() const {
+  const quiche::HttpHeaderBlock& decoded_block() const {
     return handler_.decoded_block();
   }
 
-  static size_t SizeOfHeaders(const Http2HeaderBlock& headers) {
+  static size_t SizeOfHeaders(const quiche::HttpHeaderBlock& headers) {
     size_t size = 0;
     for (const auto& kv : headers) {
       if (kv.first == kCookieKey) {
@@ -199,7 +199,8 @@
     return size;
   }
 
-  const Http2HeaderBlock& DecodeBlockExpectingSuccess(absl::string_view str) {
+  const quiche::HttpHeaderBlock& DecodeBlockExpectingSuccess(
+      absl::string_view str) {
     EXPECT_TRUE(DecodeHeaderBlock(str));
     return decoded_block();
   }
@@ -212,9 +213,9 @@
     EXPECT_EQ(size, entry->size());
   }
 
-  Http2HeaderBlock MakeHeaderBlock(
+  quiche::HttpHeaderBlock MakeHeaderBlock(
       const std::vector<std::pair<std::string, std::string>>& headers) {
-    Http2HeaderBlock result;
+    quiche::HttpHeaderBlock result;
     for (const auto& kv : headers) {
       result.AppendValueOrAddHeader(kv.first, kv.second);
     }
@@ -225,7 +226,7 @@
   HpackDecoderAdapter decoder_;
   test::HpackDecoderAdapterPeer decoder_peer_;
   RecordingHeadersHandler handler_;
-  const Http2HeaderBlock dummy_block_;
+  const quiche::HttpHeaderBlock dummy_block_;
   bool randomly_split_input_buffer_;
   bool decode_has_failed_ = false;
   size_t bytes_passed_in_;
@@ -262,7 +263,7 @@
   EXPECT_TRUE(HandleControlFrameHeadersData(s.substr(s.size() / 2)));
 
   EXPECT_FALSE(HandleControlFrameHeadersData(s));
-  Http2HeaderBlock expected_block = MakeHeaderBlock({{"a", a_value}});
+  quiche::HttpHeaderBlock expected_block = MakeHeaderBlock({{"a", a_value}});
   EXPECT_EQ(expected_block, decoded_block());
 }
 
@@ -338,7 +339,7 @@
   std::vector<std::pair<std::string, std::string>> expected_headers = {
       {":method", "GET"}, {":path", "/index.html"}, {":method", "GET"}};
 
-  Http2HeaderBlock expected_block1 = MakeHeaderBlock(expected_headers);
+  quiche::HttpHeaderBlock expected_block1 = MakeHeaderBlock(expected_headers);
   EXPECT_EQ(expected_block1, decoded_block());
 
   // Full and partial headers, won't add partial to the headers.
@@ -348,7 +349,7 @@
   expected_headers.push_back({"goo", "gar"});
   expected_headers.push_back({"goo", "gar"});
 
-  Http2HeaderBlock expected_block2 = MakeHeaderBlock(expected_headers);
+  quiche::HttpHeaderBlock expected_block2 = MakeHeaderBlock(expected_headers);
   EXPECT_EQ(expected_block2, decoded_block());
 
   // Add the needed data.
@@ -358,7 +359,7 @@
 
   expected_headers.push_back({"spam", "gggs"});
 
-  Http2HeaderBlock expected_block3 = MakeHeaderBlock(expected_headers);
+  quiche::HttpHeaderBlock expected_block3 = MakeHeaderBlock(expected_headers);
   EXPECT_EQ(expected_block3, decoded_block());
 }
 
@@ -410,44 +411,47 @@
 // Decoding indexed static table field should work.
 TEST_P(HpackDecoderAdapterTest, IndexedHeaderStatic) {
   // Reference static table entries #2 and #5.
-  const Http2HeaderBlock& header_set1 = DecodeBlockExpectingSuccess("\x82\x85");
-  Http2HeaderBlock expected_header_set1;
+  const quiche::HttpHeaderBlock& header_set1 =
+      DecodeBlockExpectingSuccess("\x82\x85");
+  quiche::HttpHeaderBlock expected_header_set1;
   expected_header_set1[":method"] = "GET";
   expected_header_set1[":path"] = "/index.html";
   EXPECT_EQ(expected_header_set1, header_set1);
 
   // Reference static table entry #2.
-  const Http2HeaderBlock& header_set2 = DecodeBlockExpectingSuccess("\x82");
-  Http2HeaderBlock expected_header_set2;
+  const quiche::HttpHeaderBlock& header_set2 =
+      DecodeBlockExpectingSuccess("\x82");
+  quiche::HttpHeaderBlock expected_header_set2;
   expected_header_set2[":method"] = "GET";
   EXPECT_EQ(expected_header_set2, header_set2);
 }
 
 TEST_P(HpackDecoderAdapterTest, IndexedHeaderDynamic) {
   // First header block: add an entry to header table.
-  const Http2HeaderBlock& header_set1 = DecodeBlockExpectingSuccess(
+  const quiche::HttpHeaderBlock& header_set1 = DecodeBlockExpectingSuccess(
       "\x40\x03"
       "foo"
       "\x03"
       "bar");
-  Http2HeaderBlock expected_header_set1;
+  quiche::HttpHeaderBlock expected_header_set1;
   expected_header_set1["foo"] = "bar";
   EXPECT_EQ(expected_header_set1, header_set1);
 
   // Second header block: add another entry to header table.
-  const Http2HeaderBlock& header_set2 = DecodeBlockExpectingSuccess(
+  const quiche::HttpHeaderBlock& header_set2 = DecodeBlockExpectingSuccess(
       "\xbe\x40\x04"
       "spam"
       "\x04"
       "eggs");
-  Http2HeaderBlock expected_header_set2;
+  quiche::HttpHeaderBlock expected_header_set2;
   expected_header_set2["foo"] = "bar";
   expected_header_set2["spam"] = "eggs";
   EXPECT_EQ(expected_header_set2, header_set2);
 
   // Third header block: refer to most recently added entry.
-  const Http2HeaderBlock& header_set3 = DecodeBlockExpectingSuccess("\xbe");
-  Http2HeaderBlock expected_header_set3;
+  const quiche::HttpHeaderBlock& header_set3 =
+      DecodeBlockExpectingSuccess("\xbe");
+  quiche::HttpHeaderBlock expected_header_set3;
   expected_header_set3["spam"] = "eggs";
   EXPECT_EQ(expected_header_set3, header_set3);
 }
@@ -581,10 +585,10 @@
   // First header with indexed name, second header with string literal
   // name.
   const char input[] = "\x04\x0c/sample/path\x00\x06:path2\x0e/sample/path/2";
-  const Http2HeaderBlock& header_set = DecodeBlockExpectingSuccess(
+  const quiche::HttpHeaderBlock& header_set = DecodeBlockExpectingSuccess(
       absl::string_view(input, ABSL_ARRAYSIZE(input) - 1));
 
-  Http2HeaderBlock expected_header_set;
+  quiche::HttpHeaderBlock expected_header_set;
   expected_header_set[":path"] = "/sample/path";
   expected_header_set[":path2"] = "/sample/path/2";
   EXPECT_EQ(expected_header_set, header_set);
@@ -594,10 +598,10 @@
 // indexing and string literal names should work.
 TEST_P(HpackDecoderAdapterTest, LiteralHeaderIncrementalIndexing) {
   const char input[] = "\x44\x0c/sample/path\x40\x06:path2\x0e/sample/path/2";
-  const Http2HeaderBlock& header_set = DecodeBlockExpectingSuccess(
+  const quiche::HttpHeaderBlock& header_set = DecodeBlockExpectingSuccess(
       absl::string_view(input, ABSL_ARRAYSIZE(input) - 1));
 
-  Http2HeaderBlock expected_header_set;
+  quiche::HttpHeaderBlock expected_header_set;
   expected_header_set[":path"] = "/sample/path";
   expected_header_set[":path2"] = "/sample/path/2";
   EXPECT_EQ(expected_header_set, header_set);
@@ -680,7 +684,7 @@
 TEST_P(HpackDecoderAdapterTest, BasicC31) {
   HpackEncoder encoder;
 
-  Http2HeaderBlock expected_header_set;
+  quiche::HttpHeaderBlock expected_header_set;
   expected_header_set[":method"] = "GET";
   expected_header_set[":scheme"] = "http";
   expected_header_set[":path"] = "/";
@@ -720,7 +724,8 @@
   std::string first;
   ASSERT_TRUE(
       absl::HexStringToBytes("828684418cf1e3c2e5f23a6ba0ab90f4ff", &first));
-  const Http2HeaderBlock& first_header_set = DecodeBlockExpectingSuccess(first);
+  const quiche::HttpHeaderBlock& first_header_set =
+      DecodeBlockExpectingSuccess(first);
 
   EXPECT_THAT(first_header_set,
               ElementsAre(
@@ -758,7 +763,7 @@
 
   std::string second;
   ASSERT_TRUE(absl::HexStringToBytes("828684be5886a8eb10649cbf", &second));
-  const Http2HeaderBlock& second_header_set =
+  const quiche::HttpHeaderBlock& second_header_set =
       DecodeBlockExpectingSuccess(second);
 
   EXPECT_THAT(second_header_set,
@@ -802,7 +807,8 @@
   std::string third;
   ASSERT_TRUE(absl::HexStringToBytes(
       "828785bf408825a849e95ba97d7f8925a849e95bb8e8b4bf", &third));
-  const Http2HeaderBlock& third_header_set = DecodeBlockExpectingSuccess(third);
+  const quiche::HttpHeaderBlock& third_header_set =
+      DecodeBlockExpectingSuccess(third);
 
   EXPECT_THAT(
       third_header_set,
@@ -875,7 +881,8 @@
       "488264025885aec3771a4b6196d07abe941054d444a8200595040b8166e082a62d1bff6e"
       "919d29ad171863c78f0b97c8e9ae82ae43d3",
       &first));
-  const Http2HeaderBlock& first_header_set = DecodeBlockExpectingSuccess(first);
+  const quiche::HttpHeaderBlock& first_header_set =
+      DecodeBlockExpectingSuccess(first);
 
   EXPECT_THAT(first_header_set,
               ElementsAre(
@@ -915,7 +922,7 @@
   //                                         |   https://www.example.com
   std::string second;
   ASSERT_TRUE(absl::HexStringToBytes("4883640effc1c0bf", &second));
-  const Http2HeaderBlock& second_header_set =
+  const quiche::HttpHeaderBlock& second_header_set =
       DecodeBlockExpectingSuccess(second);
 
   EXPECT_THAT(second_header_set,
@@ -992,7 +999,8 @@
       "821dd7f2e6c7b335dfdfcd5b3960d5af27087f3672c1ab270fb5291f9587316065c003ed"
       "4ee5b1063d5007",
       &third));
-  const Http2HeaderBlock& third_header_set = DecodeBlockExpectingSuccess(third);
+  const quiche::HttpHeaderBlock& third_header_set =
+      DecodeBlockExpectingSuccess(third);
 
   EXPECT_THAT(third_header_set,
               ElementsAre(
@@ -1056,12 +1064,12 @@
   hbb.AppendIndexedHeader(62);
 
   // Can't have DecodeHeaderBlock do the default check for size of the decoded
-  // data because Http2HeaderBlock will join multiple headers with the same
-  // name into a single entry, thus we won't see repeated occurrences of the
-  // name, instead seeing separators between values.
+  // data because quiche::HttpHeaderBlock will join multiple headers with the
+  // same name into a single entry, thus we won't see repeated occurrences of
+  // the name, instead seeing separators between values.
   EXPECT_TRUE(DecodeHeaderBlock(hbb.buffer(), kNoCheckDecodedSize));
 
-  Http2HeaderBlock expected_header_set;
+  quiche::HttpHeaderBlock expected_header_set;
   expected_header_set.AppendValueOrAddHeader(name, value1);
   expected_header_set.AppendValueOrAddHeader(name, value1);
   expected_header_set.AppendValueOrAddHeader(name, value2);
@@ -1069,7 +1077,7 @@
   expected_header_set.AppendValueOrAddHeader(name, value3);
   expected_header_set.AppendValueOrAddHeader(name, value3);
 
-  // Http2HeaderBlock stores these 6 strings as '\0' separated values.
+  // quiche::HttpHeaderBlock stores these 6 strings as '\0' separated values.
   // Make sure that is what happened.
   std::string joined_values = expected_header_set[name].as_string();
   EXPECT_EQ(joined_values.size(),
@@ -1084,7 +1092,7 @@
 
 // Regression test for https://crbug.com/747395.
 TEST_P(HpackDecoderAdapterTest, Cookies) {
-  Http2HeaderBlock expected_header_set;
+  quiche::HttpHeaderBlock expected_header_set;
   expected_header_set["cookie"] = "foo; bar";
 
   std::string encoded_block;
diff --git a/quiche/spdy/core/hpack/hpack_round_trip_test.cc b/quiche/spdy/core/hpack/hpack_round_trip_test.cc
index e21c030..245f953 100644
--- a/quiche/spdy/core/hpack/hpack_round_trip_test.cc
+++ b/quiche/spdy/core/hpack/hpack_round_trip_test.cc
@@ -11,9 +11,9 @@
 #include "quiche/http2/core/recording_headers_handler.h"
 #include "quiche/http2/hpack/hpack_encoder.h"
 #include "quiche/http2/test_tools/http2_random.h"
+#include "quiche/common/http/http_header_block.h"
 #include "quiche/common/platform/api/quiche_test.h"
 #include "quiche/spdy/core/hpack/hpack_decoder_adapter.h"
-#include "quiche/spdy/core/http2_header_block.h"
 
 namespace spdy {
 namespace test {
@@ -32,7 +32,7 @@
     decoder_.ApplyHeaderTableSizeSetting(256);
   }
 
-  bool RoundTrip(const Http2HeaderBlock& header_set) {
+  bool RoundTrip(const quiche::HttpHeaderBlock& header_set) {
     std::string encoded = encoder_.EncodeHeaderBlock(header_set);
 
     bool success = true;
@@ -84,7 +84,7 @@
 
 TEST_P(HpackRoundTripTest, ResponseFixtures) {
   {
-    Http2HeaderBlock headers;
+    quiche::HttpHeaderBlock headers;
     headers[":status"] = "302";
     headers["cache-control"] = "private";
     headers["date"] = "Mon, 21 Oct 2013 20:13:21 GMT";
@@ -92,7 +92,7 @@
     EXPECT_TRUE(RoundTrip(headers));
   }
   {
-    Http2HeaderBlock headers;
+    quiche::HttpHeaderBlock headers;
     headers[":status"] = "200";
     headers["cache-control"] = "private";
     headers["date"] = "Mon, 21 Oct 2013 20:13:21 GMT";
@@ -100,7 +100,7 @@
     EXPECT_TRUE(RoundTrip(headers));
   }
   {
-    Http2HeaderBlock headers;
+    quiche::HttpHeaderBlock headers;
     headers[":status"] = "200";
     headers["cache-control"] = "private";
     headers["content-encoding"] = "gzip";
@@ -116,7 +116,7 @@
 
 TEST_P(HpackRoundTripTest, RequestFixtures) {
   {
-    Http2HeaderBlock headers;
+    quiche::HttpHeaderBlock headers;
     headers[":authority"] = "www.example.com";
     headers[":method"] = "GET";
     headers[":path"] = "/";
@@ -125,7 +125,7 @@
     EXPECT_TRUE(RoundTrip(headers));
   }
   {
-    Http2HeaderBlock headers;
+    quiche::HttpHeaderBlock headers;
     headers[":authority"] = "www.example.com";
     headers[":method"] = "GET";
     headers[":path"] = "/";
@@ -135,7 +135,7 @@
     EXPECT_TRUE(RoundTrip(headers));
   }
   {
-    Http2HeaderBlock headers;
+    quiche::HttpHeaderBlock headers;
     headers[":authority"] = "www.example.com";
     headers[":method"] = "GET";
     headers[":path"] = "/index.html";
@@ -169,7 +169,7 @@
   values.push_back("baz=bing; fizzle=fazzle; garbage");
 
   for (size_t i = 0; i != 2000; ++i) {
-    Http2HeaderBlock headers;
+    quiche::HttpHeaderBlock headers;
 
     // Choose a random number of headers to add, and of these a random subset
     // will be HTTP/2 pseudo headers.