Moves several targets from //third_party/spdy/core to //third_party/http2/core.

These targets are used in google3, but either not used or only sparingly used by Chromium.

Protected by refactoring, no functional change, not protected.

PiperOrigin-RevId: 651073162
diff --git a/build/source_list.bzl b/build/source_list.bzl
index 9e7e6df..bb7da0b 100644
--- a/build/source_list.bzl
+++ b/build/source_list.bzl
@@ -75,8 +75,16 @@
     "http2/adapter/oghttp2_session.h",
     "http2/adapter/oghttp2_util.h",
     "http2/adapter/window_manager.h",
+    "http2/core/array_output_buffer.h",
+    "http2/core/header_byte_listener_interface.h",
+    "http2/core/http2_header_block_hpack_listener.h",
     "http2/core/http2_trace_logging.h",
+    "http2/core/no_op_headers_handler.h",
     "http2/core/priority_write_scheduler.h",
+    "http2/core/recording_headers_handler.h",
+    "http2/core/spdy_headers_handler_interface.h",
+    "http2/core/spdy_no_op_visitor.h",
+    "http2/core/zero_copy_output_buffer.h",
     "http2/decoder/decode_buffer.h",
     "http2/decoder/decode_http2_structures.h",
     "http2/decoder/decode_status.h",
@@ -379,23 +387,16 @@
     "quic/platform/api/quic_stack_trace.h",
     "quic/platform/api/quic_testvalue.h",
     "quic/platform/api/quic_thread.h",
-    "spdy/core/array_output_buffer.h",
-    "spdy/core/header_byte_listener_interface.h",
     "spdy/core/hpack/hpack_decoder_adapter.h",
     "spdy/core/hpack/hpack_encoder.h",
     "spdy/core/http2_frame_decoder_adapter.h",
     "spdy/core/http2_header_block.h",
-    "spdy/core/http2_header_block_hpack_listener.h",
-    "spdy/core/no_op_headers_handler.h",
-    "spdy/core/recording_headers_handler.h",
     "spdy/core/spdy_alt_svc_wire_format.h",
     "spdy/core/spdy_bitmasks.h",
     "spdy/core/spdy_frame_builder.h",
     "spdy/core/spdy_framer.h",
     "spdy/core/spdy_headers_handler_interface.h",
-    "spdy/core/spdy_no_op_visitor.h",
     "spdy/core/spdy_protocol.h",
-    "spdy/core/zero_copy_output_buffer.h",
     "web_transport/complete_buffer_visitor.h",
     "web_transport/encapsulated/encapsulated_web_transport.h",
     "web_transport/web_transport.h",
@@ -432,7 +433,10 @@
     "http2/adapter/oghttp2_session.cc",
     "http2/adapter/oghttp2_util.cc",
     "http2/adapter/window_manager.cc",
+    "http2/core/array_output_buffer.cc",
     "http2/core/http2_trace_logging.cc",
+    "http2/core/recording_headers_handler.cc",
+    "http2/core/spdy_no_op_visitor.cc",
     "http2/decoder/decode_buffer.cc",
     "http2/decoder/decode_http2_structures.cc",
     "http2/decoder/decode_status.cc",
@@ -683,14 +687,11 @@
     "quic/core/web_transport_stats.cc",
     "quic/core/web_transport_write_blocked_list.cc",
     "quic/platform/api/quic_socket_address.cc",
-    "spdy/core/array_output_buffer.cc",
     "spdy/core/hpack/hpack_decoder_adapter.cc",
     "spdy/core/http2_frame_decoder_adapter.cc",
-    "spdy/core/recording_headers_handler.cc",
     "spdy/core/spdy_alt_svc_wire_format.cc",
     "spdy/core/spdy_frame_builder.cc",
     "spdy/core/spdy_framer.cc",
-    "spdy/core/spdy_no_op_visitor.cc",
     "spdy/core/spdy_protocol.cc",
     "web_transport/complete_buffer_visitor.cc",
     "web_transport/encapsulated/encapsulated_web_transport.cc",
@@ -1110,6 +1111,7 @@
     "http2/adapter/recording_http2_visitor_test.cc",
     "http2/adapter/test_utils_test.cc",
     "http2/adapter/window_manager_test.cc",
+    "http2/core/array_output_buffer_test.cc",
     "http2/core/priority_write_scheduler_test.cc",
     "http2/decoder/decode_buffer_test.cc",
     "http2/decoder/decode_http2_structures_test.cc",
@@ -1322,7 +1324,6 @@
     "quic/tools/quic_memory_cache_backend_test.cc",
     "quic/tools/quic_tcp_like_trace_converter_test.cc",
     "quic/tools/simple_ticket_crypter_test.cc",
-    "spdy/core/array_output_buffer_test.cc",
     "spdy/core/hpack/hpack_decoder_adapter_test.cc",
     "spdy/core/hpack/hpack_round_trip_test.cc",
     "spdy/core/spdy_alt_svc_wire_format_test.cc",
diff --git a/build/source_list.gni b/build/source_list.gni
index d0adb30..23aaaaa 100644
--- a/build/source_list.gni
+++ b/build/source_list.gni
@@ -75,8 +75,16 @@
     "src/quiche/http2/adapter/oghttp2_session.h",
     "src/quiche/http2/adapter/oghttp2_util.h",
     "src/quiche/http2/adapter/window_manager.h",
+    "src/quiche/http2/core/array_output_buffer.h",
+    "src/quiche/http2/core/header_byte_listener_interface.h",
+    "src/quiche/http2/core/http2_header_block_hpack_listener.h",
     "src/quiche/http2/core/http2_trace_logging.h",
+    "src/quiche/http2/core/no_op_headers_handler.h",
     "src/quiche/http2/core/priority_write_scheduler.h",
+    "src/quiche/http2/core/recording_headers_handler.h",
+    "src/quiche/http2/core/spdy_headers_handler_interface.h",
+    "src/quiche/http2/core/spdy_no_op_visitor.h",
+    "src/quiche/http2/core/zero_copy_output_buffer.h",
     "src/quiche/http2/decoder/decode_buffer.h",
     "src/quiche/http2/decoder/decode_http2_structures.h",
     "src/quiche/http2/decoder/decode_status.h",
@@ -379,23 +387,16 @@
     "src/quiche/quic/platform/api/quic_stack_trace.h",
     "src/quiche/quic/platform/api/quic_testvalue.h",
     "src/quiche/quic/platform/api/quic_thread.h",
-    "src/quiche/spdy/core/array_output_buffer.h",
-    "src/quiche/spdy/core/header_byte_listener_interface.h",
     "src/quiche/spdy/core/hpack/hpack_decoder_adapter.h",
     "src/quiche/spdy/core/hpack/hpack_encoder.h",
     "src/quiche/spdy/core/http2_frame_decoder_adapter.h",
     "src/quiche/spdy/core/http2_header_block.h",
-    "src/quiche/spdy/core/http2_header_block_hpack_listener.h",
-    "src/quiche/spdy/core/no_op_headers_handler.h",
-    "src/quiche/spdy/core/recording_headers_handler.h",
     "src/quiche/spdy/core/spdy_alt_svc_wire_format.h",
     "src/quiche/spdy/core/spdy_bitmasks.h",
     "src/quiche/spdy/core/spdy_frame_builder.h",
     "src/quiche/spdy/core/spdy_framer.h",
     "src/quiche/spdy/core/spdy_headers_handler_interface.h",
-    "src/quiche/spdy/core/spdy_no_op_visitor.h",
     "src/quiche/spdy/core/spdy_protocol.h",
-    "src/quiche/spdy/core/zero_copy_output_buffer.h",
     "src/quiche/web_transport/complete_buffer_visitor.h",
     "src/quiche/web_transport/encapsulated/encapsulated_web_transport.h",
     "src/quiche/web_transport/web_transport.h",
@@ -432,7 +433,10 @@
     "src/quiche/http2/adapter/oghttp2_session.cc",
     "src/quiche/http2/adapter/oghttp2_util.cc",
     "src/quiche/http2/adapter/window_manager.cc",
+    "src/quiche/http2/core/array_output_buffer.cc",
     "src/quiche/http2/core/http2_trace_logging.cc",
+    "src/quiche/http2/core/recording_headers_handler.cc",
+    "src/quiche/http2/core/spdy_no_op_visitor.cc",
     "src/quiche/http2/decoder/decode_buffer.cc",
     "src/quiche/http2/decoder/decode_http2_structures.cc",
     "src/quiche/http2/decoder/decode_status.cc",
@@ -683,14 +687,11 @@
     "src/quiche/quic/core/web_transport_stats.cc",
     "src/quiche/quic/core/web_transport_write_blocked_list.cc",
     "src/quiche/quic/platform/api/quic_socket_address.cc",
-    "src/quiche/spdy/core/array_output_buffer.cc",
     "src/quiche/spdy/core/hpack/hpack_decoder_adapter.cc",
     "src/quiche/spdy/core/http2_frame_decoder_adapter.cc",
-    "src/quiche/spdy/core/recording_headers_handler.cc",
     "src/quiche/spdy/core/spdy_alt_svc_wire_format.cc",
     "src/quiche/spdy/core/spdy_frame_builder.cc",
     "src/quiche/spdy/core/spdy_framer.cc",
-    "src/quiche/spdy/core/spdy_no_op_visitor.cc",
     "src/quiche/spdy/core/spdy_protocol.cc",
     "src/quiche/web_transport/complete_buffer_visitor.cc",
     "src/quiche/web_transport/encapsulated/encapsulated_web_transport.cc",
@@ -1111,6 +1112,7 @@
     "src/quiche/http2/adapter/recording_http2_visitor_test.cc",
     "src/quiche/http2/adapter/test_utils_test.cc",
     "src/quiche/http2/adapter/window_manager_test.cc",
+    "src/quiche/http2/core/array_output_buffer_test.cc",
     "src/quiche/http2/core/priority_write_scheduler_test.cc",
     "src/quiche/http2/decoder/decode_buffer_test.cc",
     "src/quiche/http2/decoder/decode_http2_structures_test.cc",
@@ -1323,7 +1325,6 @@
     "src/quiche/quic/tools/quic_memory_cache_backend_test.cc",
     "src/quiche/quic/tools/quic_tcp_like_trace_converter_test.cc",
     "src/quiche/quic/tools/simple_ticket_crypter_test.cc",
-    "src/quiche/spdy/core/array_output_buffer_test.cc",
     "src/quiche/spdy/core/hpack/hpack_decoder_adapter_test.cc",
     "src/quiche/spdy/core/hpack/hpack_round_trip_test.cc",
     "src/quiche/spdy/core/spdy_alt_svc_wire_format_test.cc",
diff --git a/build/source_list.json b/build/source_list.json
index 1b3d123..33422d0 100644
--- a/build/source_list.json
+++ b/build/source_list.json
@@ -74,8 +74,16 @@
     "quiche/http2/adapter/oghttp2_session.h",
     "quiche/http2/adapter/oghttp2_util.h",
     "quiche/http2/adapter/window_manager.h",
+    "quiche/http2/core/array_output_buffer.h",
+    "quiche/http2/core/header_byte_listener_interface.h",
+    "quiche/http2/core/http2_header_block_hpack_listener.h",
     "quiche/http2/core/http2_trace_logging.h",
+    "quiche/http2/core/no_op_headers_handler.h",
     "quiche/http2/core/priority_write_scheduler.h",
+    "quiche/http2/core/recording_headers_handler.h",
+    "quiche/http2/core/spdy_headers_handler_interface.h",
+    "quiche/http2/core/spdy_no_op_visitor.h",
+    "quiche/http2/core/zero_copy_output_buffer.h",
     "quiche/http2/decoder/decode_buffer.h",
     "quiche/http2/decoder/decode_http2_structures.h",
     "quiche/http2/decoder/decode_status.h",
@@ -378,23 +386,16 @@
     "quiche/quic/platform/api/quic_stack_trace.h",
     "quiche/quic/platform/api/quic_testvalue.h",
     "quiche/quic/platform/api/quic_thread.h",
-    "quiche/spdy/core/array_output_buffer.h",
-    "quiche/spdy/core/header_byte_listener_interface.h",
     "quiche/spdy/core/hpack/hpack_decoder_adapter.h",
     "quiche/spdy/core/hpack/hpack_encoder.h",
     "quiche/spdy/core/http2_frame_decoder_adapter.h",
     "quiche/spdy/core/http2_header_block.h",
-    "quiche/spdy/core/http2_header_block_hpack_listener.h",
-    "quiche/spdy/core/no_op_headers_handler.h",
-    "quiche/spdy/core/recording_headers_handler.h",
     "quiche/spdy/core/spdy_alt_svc_wire_format.h",
     "quiche/spdy/core/spdy_bitmasks.h",
     "quiche/spdy/core/spdy_frame_builder.h",
     "quiche/spdy/core/spdy_framer.h",
     "quiche/spdy/core/spdy_headers_handler_interface.h",
-    "quiche/spdy/core/spdy_no_op_visitor.h",
     "quiche/spdy/core/spdy_protocol.h",
-    "quiche/spdy/core/zero_copy_output_buffer.h",
     "quiche/web_transport/complete_buffer_visitor.h",
     "quiche/web_transport/encapsulated/encapsulated_web_transport.h",
     "quiche/web_transport/web_transport.h",
@@ -431,7 +432,10 @@
     "quiche/http2/adapter/oghttp2_session.cc",
     "quiche/http2/adapter/oghttp2_util.cc",
     "quiche/http2/adapter/window_manager.cc",
+    "quiche/http2/core/array_output_buffer.cc",
     "quiche/http2/core/http2_trace_logging.cc",
+    "quiche/http2/core/recording_headers_handler.cc",
+    "quiche/http2/core/spdy_no_op_visitor.cc",
     "quiche/http2/decoder/decode_buffer.cc",
     "quiche/http2/decoder/decode_http2_structures.cc",
     "quiche/http2/decoder/decode_status.cc",
@@ -682,14 +686,11 @@
     "quiche/quic/core/web_transport_stats.cc",
     "quiche/quic/core/web_transport_write_blocked_list.cc",
     "quiche/quic/platform/api/quic_socket_address.cc",
-    "quiche/spdy/core/array_output_buffer.cc",
     "quiche/spdy/core/hpack/hpack_decoder_adapter.cc",
     "quiche/spdy/core/http2_frame_decoder_adapter.cc",
-    "quiche/spdy/core/recording_headers_handler.cc",
     "quiche/spdy/core/spdy_alt_svc_wire_format.cc",
     "quiche/spdy/core/spdy_frame_builder.cc",
     "quiche/spdy/core/spdy_framer.cc",
-    "quiche/spdy/core/spdy_no_op_visitor.cc",
     "quiche/spdy/core/spdy_protocol.cc",
     "quiche/web_transport/complete_buffer_visitor.cc",
     "quiche/web_transport/encapsulated/encapsulated_web_transport.cc",
@@ -1110,6 +1111,7 @@
     "quiche/http2/adapter/recording_http2_visitor_test.cc",
     "quiche/http2/adapter/test_utils_test.cc",
     "quiche/http2/adapter/window_manager_test.cc",
+    "quiche/http2/core/array_output_buffer_test.cc",
     "quiche/http2/core/priority_write_scheduler_test.cc",
     "quiche/http2/decoder/decode_buffer_test.cc",
     "quiche/http2/decoder/decode_http2_structures_test.cc",
@@ -1322,7 +1324,6 @@
     "quiche/quic/tools/quic_memory_cache_backend_test.cc",
     "quiche/quic/tools/quic_tcp_like_trace_converter_test.cc",
     "quiche/quic/tools/simple_ticket_crypter_test.cc",
-    "quiche/spdy/core/array_output_buffer_test.cc",
     "quiche/spdy/core/hpack/hpack_decoder_adapter_test.cc",
     "quiche/spdy/core/hpack/hpack_round_trip_test.cc",
     "quiche/spdy/core/spdy_alt_svc_wire_format_test.cc",
diff --git a/quiche/http2/adapter/oghttp2_session.h b/quiche/http2/adapter/oghttp2_session.h
index 7891081..5b1357e 100644
--- a/quiche/http2/adapter/oghttp2_session.h
+++ b/quiche/http2/adapter/oghttp2_session.h
@@ -21,6 +21,7 @@
 #include "quiche/http2/adapter/http2_visitor_interface.h"
 #include "quiche/http2/adapter/window_manager.h"
 #include "quiche/http2/core/http2_trace_logging.h"
+#include "quiche/http2/core/no_op_headers_handler.h"
 #include "quiche/http2/core/priority_write_scheduler.h"
 #include "quiche/common/platform/api/quiche_bug_tracker.h"
 #include "quiche/common/platform/api/quiche_export.h"
@@ -30,7 +31,6 @@
 #include "quiche/common/quiche_linked_hash_map.h"
 #include "quiche/spdy/core/http2_frame_decoder_adapter.h"
 #include "quiche/spdy/core/http2_header_block.h"
-#include "quiche/spdy/core/no_op_headers_handler.h"
 #include "quiche/spdy/core/spdy_framer.h"
 #include "quiche/spdy/core/spdy_protocol.h"
 
diff --git a/quiche/spdy/core/array_output_buffer.cc b/quiche/http2/core/array_output_buffer.cc
similarity index 90%
rename from quiche/spdy/core/array_output_buffer.cc
rename to quiche/http2/core/array_output_buffer.cc
index 76d30a5..137b947 100644
--- a/quiche/spdy/core/array_output_buffer.cc
+++ b/quiche/http2/core/array_output_buffer.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "quiche/spdy/core/array_output_buffer.h"
+#include "quiche/http2/core/array_output_buffer.h"
 
 #include <cstdint>
 
diff --git a/quiche/spdy/core/array_output_buffer.h b/quiche/http2/core/array_output_buffer.h
similarity index 85%
rename from quiche/spdy/core/array_output_buffer.h
rename to quiche/http2/core/array_output_buffer.h
index f9a80bf..6fc9727 100644
--- a/quiche/spdy/core/array_output_buffer.h
+++ b/quiche/http2/core/array_output_buffer.h
@@ -2,14 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef QUICHE_SPDY_CORE_ARRAY_OUTPUT_BUFFER_H_
-#define QUICHE_SPDY_CORE_ARRAY_OUTPUT_BUFFER_H_
+#ifndef QUICHE_HTTP2_CORE_ARRAY_OUTPUT_BUFFER_H_
+#define QUICHE_HTTP2_CORE_ARRAY_OUTPUT_BUFFER_H_
 
 #include <cstddef>
 #include <cstdint>
 
+#include "quiche/http2/core/zero_copy_output_buffer.h"
 #include "quiche/common/platform/api/quiche_export.h"
-#include "quiche/spdy/core/zero_copy_output_buffer.h"
 
 namespace spdy {
 
@@ -45,4 +45,4 @@
 
 }  // namespace spdy
 
-#endif  // QUICHE_SPDY_CORE_ARRAY_OUTPUT_BUFFER_H_
+#endif  // QUICHE_HTTP2_CORE_ARRAY_OUTPUT_BUFFER_H_
diff --git a/quiche/spdy/core/array_output_buffer_test.cc b/quiche/http2/core/array_output_buffer_test.cc
similarity index 96%
rename from quiche/spdy/core/array_output_buffer_test.cc
rename to quiche/http2/core/array_output_buffer_test.cc
index b23a781..e61b096 100644
--- a/quiche/spdy/core/array_output_buffer_test.cc
+++ b/quiche/http2/core/array_output_buffer_test.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "quiche/spdy/core/array_output_buffer.h"
+#include "quiche/http2/core/array_output_buffer.h"
 
 #include <cstdint>
 #include <cstring>
diff --git a/quiche/spdy/core/header_byte_listener_interface.h b/quiche/http2/core/header_byte_listener_interface.h
similarity index 72%
rename from quiche/spdy/core/header_byte_listener_interface.h
rename to quiche/http2/core/header_byte_listener_interface.h
index 308110f..a91c8f4 100644
--- a/quiche/spdy/core/header_byte_listener_interface.h
+++ b/quiche/http2/core/header_byte_listener_interface.h
@@ -1,5 +1,5 @@
-#ifndef QUICHE_SPDY_CORE_HEADER_BYTE_LISTENER_INTERFACE_H_
-#define QUICHE_SPDY_CORE_HEADER_BYTE_LISTENER_INTERFACE_H_
+#ifndef QUICHE_HTTP2_CORE_HEADER_BYTE_LISTENER_INTERFACE_H_
+#define QUICHE_HTTP2_CORE_HEADER_BYTE_LISTENER_INTERFACE_H_
 
 #include <stddef.h>
 
@@ -19,4 +19,4 @@
 
 }  // namespace spdy
 
-#endif  // QUICHE_SPDY_CORE_HEADER_BYTE_LISTENER_INTERFACE_H_
+#endif  // QUICHE_HTTP2_CORE_HEADER_BYTE_LISTENER_INTERFACE_H_
diff --git a/quiche/spdy/core/http2_header_block_hpack_listener.h b/quiche/http2/core/http2_header_block_hpack_listener.h
similarity index 86%
rename from quiche/spdy/core/http2_header_block_hpack_listener.h
rename to quiche/http2/core/http2_header_block_hpack_listener.h
index b5cc0ee..14bc579 100644
--- a/quiche/spdy/core/http2_header_block_hpack_listener.h
+++ b/quiche/http2/core/http2_header_block_hpack_listener.h
@@ -1,5 +1,5 @@
-#ifndef QUICHE_SPDY_CORE_HTTP2_HEADER_BLOCK_HPACK_LISTENER_H_
-#define QUICHE_SPDY_CORE_HTTP2_HEADER_BLOCK_HPACK_LISTENER_H_
+#ifndef QUICHE_HTTP2_CORE_HTTP2_HEADER_BLOCK_HPACK_LISTENER_H_
+#define QUICHE_HTTP2_CORE_HTTP2_HEADER_BLOCK_HPACK_LISTENER_H_
 
 #include <string>
 #include <utility>
@@ -49,4 +49,4 @@
 
 }  // namespace spdy
 
-#endif  // QUICHE_SPDY_CORE_HTTP2_HEADER_BLOCK_HPACK_LISTENER_H_
+#endif  // QUICHE_HTTP2_CORE_HTTP2_HEADER_BLOCK_HPACK_LISTENER_H_
diff --git a/quiche/http2/core/http2_trace_logging.h b/quiche/http2/core/http2_trace_logging.h
index 7106a72..84f7898 100644
--- a/quiche/http2/core/http2_trace_logging.h
+++ b/quiche/http2/core/http2_trace_logging.h
@@ -8,12 +8,12 @@
 #include <cstdint>
 
 #include "absl/strings/string_view.h"
+#include "quiche/http2/core/recording_headers_handler.h"
+#include "quiche/http2/core/spdy_headers_handler_interface.h"
 #include "quiche/common/platform/api/quiche_export.h"
 #include "quiche/common/platform/api/quiche_logging.h"
 #include "quiche/common/quiche_callbacks.h"
 #include "quiche/spdy/core/http2_frame_decoder_adapter.h"
-#include "quiche/spdy/core/recording_headers_handler.h"
-#include "quiche/spdy/core/spdy_headers_handler_interface.h"
 #include "quiche/spdy/core/spdy_protocol.h"
 
 // Logging macro to use for all HTTP/2 trace logging. Iff trace logging is
diff --git a/quiche/spdy/core/no_op_headers_handler.h b/quiche/http2/core/no_op_headers_handler.h
similarity index 79%
rename from quiche/spdy/core/no_op_headers_handler.h
rename to quiche/http2/core/no_op_headers_handler.h
index a4796e9..84244ca 100644
--- a/quiche/spdy/core/no_op_headers_handler.h
+++ b/quiche/http2/core/no_op_headers_handler.h
@@ -1,12 +1,12 @@
-#ifndef QUICHE_SPDY_CORE_NO_OP_HEADERS_HANDLER_H_
-#define QUICHE_SPDY_CORE_NO_OP_HEADERS_HANDLER_H_
+#ifndef QUICHE_HTTP2_CORE_NO_OP_HEADERS_HANDLER_H_
+#define QUICHE_HTTP2_CORE_NO_OP_HEADERS_HANDLER_H_
 
 #include <cstddef>
 
 #include "absl/strings/string_view.h"
+#include "quiche/http2/core/header_byte_listener_interface.h"
+#include "quiche/http2/core/spdy_headers_handler_interface.h"
 #include "quiche/common/platform/api/quiche_export.h"
-#include "quiche/spdy/core/header_byte_listener_interface.h"
-#include "quiche/spdy/core/spdy_headers_handler_interface.h"
 
 namespace spdy {
 
@@ -38,4 +38,4 @@
 
 }  // namespace spdy
 
-#endif  // QUICHE_SPDY_CORE_NO_OP_HEADERS_HANDLER_H_
+#endif  // QUICHE_HTTP2_CORE_NO_OP_HEADERS_HANDLER_H_
diff --git a/quiche/spdy/core/recording_headers_handler.cc b/quiche/http2/core/recording_headers_handler.cc
similarity index 90%
rename from quiche/spdy/core/recording_headers_handler.cc
rename to quiche/http2/core/recording_headers_handler.cc
index a1b0643..5285c7b 100644
--- a/quiche/spdy/core/recording_headers_handler.cc
+++ b/quiche/http2/core/recording_headers_handler.cc
@@ -2,12 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "quiche/spdy/core/recording_headers_handler.h"
+#include "quiche/http2/core/recording_headers_handler.h"
 
 #include <cstddef>
 
 #include "absl/strings/string_view.h"
-#include "quiche/spdy/core/spdy_headers_handler_interface.h"
+#include "quiche/http2/core/spdy_headers_handler_interface.h"
 
 namespace spdy {
 
diff --git a/quiche/spdy/core/recording_headers_handler.h b/quiche/http2/core/recording_headers_handler.h
similarity index 86%
rename from quiche/spdy/core/recording_headers_handler.h
rename to quiche/http2/core/recording_headers_handler.h
index c33a4ce..fe3655d 100644
--- a/quiche/spdy/core/recording_headers_handler.h
+++ b/quiche/http2/core/recording_headers_handler.h
@@ -2,15 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef QUICHE_SPDY_CORE_RECORDING_HEADERS_HANDLER_H_
-#define QUICHE_SPDY_CORE_RECORDING_HEADERS_HANDLER_H_
+#ifndef QUICHE_HTTP2_CORE_RECORDING_HEADERS_HANDLER_H_
+#define QUICHE_HTTP2_CORE_RECORDING_HEADERS_HANDLER_H_
 
 #include <cstddef>
 
 #include "absl/strings/string_view.h"
+#include "quiche/http2/core/spdy_headers_handler_interface.h"
 #include "quiche/common/platform/api/quiche_export.h"
 #include "quiche/spdy/core/http2_header_block.h"
-#include "quiche/spdy/core/spdy_headers_handler_interface.h"
 
 namespace spdy {
 
@@ -46,4 +46,4 @@
 
 }  // namespace spdy
 
-#endif  // QUICHE_SPDY_CORE_RECORDING_HEADERS_HANDLER_H_
+#endif  // QUICHE_HTTP2_CORE_RECORDING_HEADERS_HANDLER_H_
diff --git a/quiche/http2/core/spdy_headers_handler_interface.h b/quiche/http2/core/spdy_headers_handler_interface.h
new file mode 100644
index 0000000..4b234fd
--- /dev/null
+++ b/quiche/http2/core/spdy_headers_handler_interface.h
@@ -0,0 +1,39 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef QUICHE_HTTP2_CORE_SPDY_HEADERS_HANDLER_INTERFACE_H_
+#define QUICHE_HTTP2_CORE_SPDY_HEADERS_HANDLER_INTERFACE_H_
+
+#include <stddef.h>
+
+#include "absl/strings/string_view.h"
+#include "quiche/common/platform/api/quiche_export.h"
+
+namespace spdy {
+
+// This interface defines how an object that accepts header data should behave.
+// It is used by both SpdyHeadersBlockParser and HpackDecoder.
+class QUICHE_EXPORT SpdyHeadersHandlerInterface {
+ public:
+  virtual ~SpdyHeadersHandlerInterface() {}
+
+  // A callback method which notifies when the parser starts handling a new
+  // header block. Will only be called once per block, even if it extends into
+  // CONTINUATION frames.
+  virtual void OnHeaderBlockStart() = 0;
+
+  // A callback method which notifies on a header key value pair. Multiple
+  // values for a given key will be emitted as multiple calls to OnHeader.
+  virtual void OnHeader(absl::string_view key, absl::string_view value) = 0;
+
+  // A callback method which notifies when the parser finishes handling a
+  // header block (i.e. the containing frame has the END_HEADERS flag set).
+  // Also indicates the total number of bytes in this block.
+  virtual void OnHeaderBlockEnd(size_t uncompressed_header_bytes,
+                                size_t compressed_header_bytes) = 0;
+};
+
+}  // namespace spdy
+
+#endif  // QUICHE_HTTP2_CORE_SPDY_HEADERS_HANDLER_INTERFACE_H_
diff --git a/quiche/spdy/core/spdy_no_op_visitor.cc b/quiche/http2/core/spdy_no_op_visitor.cc
similarity index 87%
rename from quiche/spdy/core/spdy_no_op_visitor.cc
rename to quiche/http2/core/spdy_no_op_visitor.cc
index 1623551..8361524 100644
--- a/quiche/spdy/core/spdy_no_op_visitor.cc
+++ b/quiche/http2/core/spdy_no_op_visitor.cc
@@ -2,12 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "quiche/spdy/core/spdy_no_op_visitor.h"
+#include "quiche/http2/core/spdy_no_op_visitor.h"
 
 #include <cstdint>
 #include <type_traits>
 
-#include "quiche/spdy/core/spdy_headers_handler_interface.h"
+#include "quiche/http2/core/spdy_headers_handler_interface.h"
 #include "quiche/spdy/core/spdy_protocol.h"
 
 namespace spdy {
diff --git a/quiche/spdy/core/spdy_no_op_visitor.h b/quiche/http2/core/spdy_no_op_visitor.h
similarity index 95%
rename from quiche/spdy/core/spdy_no_op_visitor.h
rename to quiche/http2/core/spdy_no_op_visitor.h
index 7125f3b..fc822bf 100644
--- a/quiche/spdy/core/spdy_no_op_visitor.h
+++ b/quiche/http2/core/spdy_no_op_visitor.h
@@ -6,18 +6,18 @@
 // to make it easier to write tests that need to provide instances. Other
 // interfaces can be added as needed.
 
-#ifndef QUICHE_SPDY_CORE_SPDY_NO_OP_VISITOR_H_
-#define QUICHE_SPDY_CORE_SPDY_NO_OP_VISITOR_H_
+#ifndef QUICHE_HTTP2_CORE_SPDY_NO_OP_VISITOR_H_
+#define QUICHE_HTTP2_CORE_SPDY_NO_OP_VISITOR_H_
 
 #include <cstddef>
 #include <cstdint>
 #include <string>
 
 #include "absl/strings/string_view.h"
+#include "quiche/http2/core/spdy_headers_handler_interface.h"
 #include "quiche/common/platform/api/quiche_export.h"
 #include "quiche/spdy/core/http2_frame_decoder_adapter.h"
 #include "quiche/spdy/core/spdy_alt_svc_wire_format.h"
-#include "quiche/spdy/core/spdy_headers_handler_interface.h"
 #include "quiche/spdy/core/spdy_protocol.h"
 
 namespace spdy {
@@ -92,4 +92,4 @@
 
 }  // namespace spdy
 
-#endif  // QUICHE_SPDY_CORE_SPDY_NO_OP_VISITOR_H_
+#endif  // QUICHE_HTTP2_CORE_SPDY_NO_OP_VISITOR_H_
diff --git a/quiche/spdy/core/zero_copy_output_buffer.h b/quiche/http2/core/zero_copy_output_buffer.h
similarity index 83%
rename from quiche/spdy/core/zero_copy_output_buffer.h
rename to quiche/http2/core/zero_copy_output_buffer.h
index 2ab92ed..87ccdab 100644
--- a/quiche/spdy/core/zero_copy_output_buffer.h
+++ b/quiche/http2/core/zero_copy_output_buffer.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef QUICHE_SPDY_CORE_ZERO_COPY_OUTPUT_BUFFER_H_
-#define QUICHE_SPDY_CORE_ZERO_COPY_OUTPUT_BUFFER_H_
+#ifndef QUICHE_HTTP2_CORE_ZERO_COPY_OUTPUT_BUFFER_H_
+#define QUICHE_HTTP2_CORE_ZERO_COPY_OUTPUT_BUFFER_H_
 
 #include <cstdint>
 
@@ -29,4 +29,4 @@
 
 }  // namespace spdy
 
-#endif  // QUICHE_SPDY_CORE_ZERO_COPY_OUTPUT_BUFFER_H_
+#endif  // QUICHE_HTTP2_CORE_ZERO_COPY_OUTPUT_BUFFER_H_
diff --git a/quiche/http2/test_tools/http2_trace_printer.h b/quiche/http2/test_tools/http2_trace_printer.h
index b965ad8..6f27db1 100644
--- a/quiche/http2/test_tools/http2_trace_printer.h
+++ b/quiche/http2/test_tools/http2_trace_printer.h
@@ -5,9 +5,9 @@
 
 #include "absl/strings/string_view.h"
 #include "quiche/http2/core/http2_trace_logging.h"
+#include "quiche/http2/core/spdy_no_op_visitor.h"
 #include "quiche/common/platform/api/quiche_export.h"
 #include "quiche/spdy/core/http2_frame_decoder_adapter.h"
-#include "quiche/spdy/core/spdy_no_op_visitor.h"
 
 namespace http2 {
 namespace test {
diff --git a/quiche/http2/test_tools/mock_spdy_framer_visitor.h b/quiche/http2/test_tools/mock_spdy_framer_visitor.h
index e873d6f..efec274 100644
--- a/quiche/http2/test_tools/mock_spdy_framer_visitor.h
+++ b/quiche/http2/test_tools/mock_spdy_framer_visitor.h
@@ -11,12 +11,12 @@
 #include <string>
 
 #include "absl/strings/string_view.h"
+#include "quiche/http2/core/recording_headers_handler.h"
+#include "quiche/http2/core/spdy_headers_handler_interface.h"
 #include "quiche/common/platform/api/quiche_export.h"
 #include "quiche/common/platform/api/quiche_test.h"
 #include "quiche/spdy/core/http2_frame_decoder_adapter.h"
-#include "quiche/spdy/core/recording_headers_handler.h"
 #include "quiche/spdy/core/spdy_alt_svc_wire_format.h"
-#include "quiche/spdy/core/spdy_headers_handler_interface.h"
 #include "quiche/spdy/core/spdy_protocol.h"
 
 // TODO(b/318698478): fix namespace and class name
diff --git a/quiche/quic/core/http/quic_header_list.h b/quiche/quic/core/http/quic_header_list.h
index 335cf4b..51c2a82 100644
--- a/quiche/quic/core/http/quic_header_list.h
+++ b/quiche/quic/core/http/quic_header_list.h
@@ -11,10 +11,10 @@
 #include <utility>
 
 #include "absl/strings/string_view.h"
+#include "quiche/http2/core/spdy_headers_handler_interface.h"
 #include "quiche/quic/platform/api/quic_bug_tracker.h"
 #include "quiche/quic/platform/api/quic_export.h"
 #include "quiche/common/quiche_circular_deque.h"
-#include "quiche/spdy/core/spdy_headers_handler_interface.h"
 
 namespace quic {
 
diff --git a/quiche/quic/core/http/quic_headers_stream_test.cc b/quiche/quic/core/http/quic_headers_stream_test.cc
index 2c7e226..48966a1 100644
--- a/quiche/quic/core/http/quic_headers_stream_test.cc
+++ b/quiche/quic/core/http/quic_headers_stream_test.cc
@@ -14,6 +14,7 @@
 
 #include "absl/strings/str_cat.h"
 #include "absl/strings/string_view.h"
+#include "quiche/http2/core/recording_headers_handler.h"
 #include "quiche/http2/test_tools/spdy_test_utils.h"
 #include "quiche/quic/core/crypto/null_encrypter.h"
 #include "quiche/quic/core/http/spdy_utils.h"
@@ -31,7 +32,6 @@
 #include "quiche/common/quiche_endian.h"
 #include "quiche/spdy/core/http2_frame_decoder_adapter.h"
 #include "quiche/spdy/core/http2_header_block.h"
-#include "quiche/spdy/core/recording_headers_handler.h"
 #include "quiche/spdy/core/spdy_alt_svc_wire_format.h"
 #include "quiche/spdy/core/spdy_protocol.h"
 
diff --git a/quiche/spdy/core/hpack/hpack_decoder_adapter.cc b/quiche/spdy/core/hpack/hpack_decoder_adapter.cc
index b982778..4dcdc60 100644
--- a/quiche/spdy/core/hpack/hpack_decoder_adapter.cc
+++ b/quiche/spdy/core/hpack/hpack_decoder_adapter.cc
@@ -8,11 +8,11 @@
 #include <string>
 
 #include "absl/strings/string_view.h"
+#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/platform/api/quiche_logging.h"
 #include "quiche/spdy/core/http2_header_block.h"
-#include "quiche/spdy/core/spdy_headers_handler_interface.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 d3d3dec..ba2ef97 100644
--- a/quiche/spdy/core/hpack/hpack_decoder_adapter.h
+++ b/quiche/spdy/core/hpack/hpack_decoder_adapter.h
@@ -13,13 +13,13 @@
 #include <string>
 
 #include "absl/strings/string_view.h"
+#include "quiche/http2/core/no_op_headers_handler.h"
+#include "quiche/http2/core/spdy_headers_handler_interface.h"
 #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/platform/api/quiche_export.h"
 #include "quiche/spdy/core/http2_header_block.h"
-#include "quiche/spdy/core/no_op_headers_handler.h"
-#include "quiche/spdy/core/spdy_headers_handler_interface.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 fbd11ad..16f0eeb 100644
--- a/quiche/spdy/core/hpack/hpack_decoder_adapter_test.cc
+++ b/quiche/spdy/core/hpack/hpack_decoder_adapter_test.cc
@@ -17,6 +17,7 @@
 #include "absl/base/macros.h"
 #include "absl/strings/escaping.h"
 #include "absl/strings/string_view.h"
+#include "quiche/http2/core/recording_headers_handler.h"
 #include "quiche/http2/hpack/decoder/hpack_decoder.h"
 #include "quiche/http2/hpack/decoder/hpack_decoder_state.h"
 #include "quiche/http2/hpack/decoder/hpack_decoder_tables.h"
@@ -30,7 +31,6 @@
 #include "quiche/common/platform/api/quiche_test.h"
 #include "quiche/common/quiche_text_utils.h"
 #include "quiche/spdy/core/http2_header_block.h"
-#include "quiche/spdy/core/recording_headers_handler.h"
 
 using ::http2::HpackEntryType;
 using ::http2::HpackStringPair;
diff --git a/quiche/spdy/core/hpack/hpack_round_trip_test.cc b/quiche/spdy/core/hpack/hpack_round_trip_test.cc
index db39349..e21c030 100644
--- a/quiche/spdy/core/hpack/hpack_round_trip_test.cc
+++ b/quiche/spdy/core/hpack/hpack_round_trip_test.cc
@@ -8,12 +8,12 @@
 #include <string>
 #include <vector>
 
+#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/platform/api/quiche_test.h"
 #include "quiche/spdy/core/hpack/hpack_decoder_adapter.h"
 #include "quiche/spdy/core/http2_header_block.h"
-#include "quiche/spdy/core/recording_headers_handler.h"
 
 namespace spdy {
 namespace test {
diff --git a/quiche/spdy/core/http2_frame_decoder_adapter.cc b/quiche/spdy/core/http2_frame_decoder_adapter.cc
index f8c7052..8eb9370 100644
--- a/quiche/spdy/core/http2_frame_decoder_adapter.cc
+++ b/quiche/spdy/core/http2_frame_decoder_adapter.cc
@@ -17,6 +17,7 @@
 #include <string>
 
 #include "absl/strings/string_view.h"
+#include "quiche/http2/core/spdy_headers_handler_interface.h"
 #include "quiche/http2/decoder/decode_buffer.h"
 #include "quiche/http2/decoder/decode_status.h"
 #include "quiche/http2/decoder/http2_frame_decoder.h"
@@ -29,7 +30,6 @@
 #include "quiche/common/quiche_endian.h"
 #include "quiche/spdy/core/hpack/hpack_decoder_adapter.h"
 #include "quiche/spdy/core/spdy_alt_svc_wire_format.h"
-#include "quiche/spdy/core/spdy_headers_handler_interface.h"
 #include "quiche/spdy/core/spdy_protocol.h"
 
 using ::spdy::ExtensionVisitorInterface;
diff --git a/quiche/spdy/core/http2_frame_decoder_adapter.h b/quiche/spdy/core/http2_frame_decoder_adapter.h
index fab2669..33249a3 100644
--- a/quiche/spdy/core/http2_frame_decoder_adapter.h
+++ b/quiche/spdy/core/http2_frame_decoder_adapter.h
@@ -13,6 +13,7 @@
 #include <string>
 
 #include "absl/strings/string_view.h"
+#include "quiche/http2/core/spdy_headers_handler_interface.h"
 #include "quiche/http2/decoder/decode_status.h"
 #include "quiche/http2/decoder/http2_frame_decoder.h"
 #include "quiche/http2/decoder/http2_frame_decoder_listener.h"
@@ -21,7 +22,6 @@
 #include "quiche/common/platform/api/quiche_export.h"
 #include "quiche/spdy/core/hpack/hpack_decoder_adapter.h"
 #include "quiche/spdy/core/spdy_alt_svc_wire_format.h"
-#include "quiche/spdy/core/spdy_headers_handler_interface.h"
 #include "quiche/spdy/core/spdy_protocol.h"
 
 namespace spdy {
diff --git a/quiche/spdy/core/http2_frame_decoder_adapter_fuzzer.cc b/quiche/spdy/core/http2_frame_decoder_adapter_fuzzer.cc
index 260d6c4..188b46f 100644
--- a/quiche/spdy/core/http2_frame_decoder_adapter_fuzzer.cc
+++ b/quiche/spdy/core/http2_frame_decoder_adapter_fuzzer.cc
@@ -1,8 +1,8 @@
 #include <cstddef>
 #include <cstdint>
 
+#include "quiche/http2/core/spdy_no_op_visitor.h"
 #include "quiche/spdy/core/http2_frame_decoder_adapter.h"
-#include "quiche/spdy/core/spdy_no_op_visitor.h"
 
 extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   spdy::SpdyNoOpVisitor visitor;
diff --git a/quiche/spdy/core/spdy_frame_builder.cc b/quiche/spdy/core/spdy_frame_builder.cc
index 30a9ddc..783fd03 100644
--- a/quiche/spdy/core/spdy_frame_builder.cc
+++ b/quiche/spdy/core/spdy_frame_builder.cc
@@ -10,11 +10,11 @@
 #include <cstring>
 
 #include "absl/strings/string_view.h"
+#include "quiche/http2/core/zero_copy_output_buffer.h"
 #include "quiche/common/platform/api/quiche_bug_tracker.h"
 #include "quiche/common/platform/api/quiche_logging.h"
 #include "quiche/spdy/core/spdy_bitmasks.h"
 #include "quiche/spdy/core/spdy_protocol.h"
-#include "quiche/spdy/core/zero_copy_output_buffer.h"
 
 namespace spdy {
 
diff --git a/quiche/spdy/core/spdy_frame_builder.h b/quiche/spdy/core/spdy_frame_builder.h
index 52cb1b0..829c878 100644
--- a/quiche/spdy/core/spdy_frame_builder.h
+++ b/quiche/spdy/core/spdy_frame_builder.h
@@ -10,11 +10,11 @@
 #include <memory>
 
 #include "absl/strings/string_view.h"
+#include "quiche/http2/core/zero_copy_output_buffer.h"
 #include "quiche/common/platform/api/quiche_bug_tracker.h"
 #include "quiche/common/platform/api/quiche_export.h"
 #include "quiche/common/quiche_endian.h"
 #include "quiche/spdy/core/spdy_protocol.h"
-#include "quiche/spdy/core/zero_copy_output_buffer.h"
 
 namespace spdy {
 
diff --git a/quiche/spdy/core/spdy_frame_builder_test.cc b/quiche/spdy/core/spdy_frame_builder_test.cc
index a4f5ac4..4992ead 100644
--- a/quiche/spdy/core/spdy_frame_builder_test.cc
+++ b/quiche/spdy/core/spdy_frame_builder_test.cc
@@ -9,10 +9,10 @@
 #include <cstring>
 
 #include "absl/strings/string_view.h"
+#include "quiche/http2/core/array_output_buffer.h"
 #include "quiche/http2/test_tools/spdy_test_utils.h"
 #include "quiche/common/platform/api/quiche_export.h"
 #include "quiche/common/platform/api/quiche_test.h"
-#include "quiche/spdy/core/array_output_buffer.h"
 #include "quiche/spdy/core/spdy_protocol.h"
 
 namespace spdy {
diff --git a/quiche/spdy/core/spdy_framer.cc b/quiche/spdy/core/spdy_framer.cc
index 097aaac..2e30a95 100644
--- a/quiche/spdy/core/spdy_framer.cc
+++ b/quiche/spdy/core/spdy_framer.cc
@@ -13,6 +13,7 @@
 
 #include "absl/base/attributes.h"
 #include "absl/memory/memory.h"
+#include "quiche/http2/core/zero_copy_output_buffer.h"
 #include "quiche/http2/hpack/hpack_constants.h"
 #include "quiche/http2/hpack/hpack_encoder.h"
 #include "quiche/common/platform/api/quiche_bug_tracker.h"
@@ -21,7 +22,6 @@
 #include "quiche/spdy/core/spdy_alt_svc_wire_format.h"
 #include "quiche/spdy/core/spdy_frame_builder.h"
 #include "quiche/spdy/core/spdy_protocol.h"
-#include "quiche/spdy/core/zero_copy_output_buffer.h"
 
 namespace spdy {
 
diff --git a/quiche/spdy/core/spdy_framer.h b/quiche/spdy/core/spdy_framer.h
index c9f8200..e660ed5 100644
--- a/quiche/spdy/core/spdy_framer.h
+++ b/quiche/spdy/core/spdy_framer.h
@@ -12,10 +12,10 @@
 #include <string>
 #include <utility>
 
+#include "quiche/http2/core/zero_copy_output_buffer.h"
 #include "quiche/http2/hpack/hpack_encoder.h"
 #include "quiche/common/platform/api/quiche_export.h"
 #include "quiche/spdy/core/spdy_protocol.h"
-#include "quiche/spdy/core/zero_copy_output_buffer.h"
 
 namespace spdy {
 
diff --git a/quiche/spdy/core/spdy_framer_test.cc b/quiche/spdy/core/spdy_framer_test.cc
index 0e4cb03..8b0ae57 100644
--- a/quiche/spdy/core/spdy_framer_test.cc
+++ b/quiche/spdy/core/spdy_framer_test.cc
@@ -18,20 +18,20 @@
 
 #include "absl/base/macros.h"
 #include "absl/strings/string_view.h"
+#include "quiche/http2/core/array_output_buffer.h"
+#include "quiche/http2/core/recording_headers_handler.h"
+#include "quiche/http2/core/spdy_headers_handler_interface.h"
 #include "quiche/http2/hpack/hpack_encoder.h"
 #include "quiche/http2/test_tools/mock_spdy_framer_visitor.h"
 #include "quiche/http2/test_tools/spdy_test_utils.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/array_output_buffer.h"
 #include "quiche/spdy/core/http2_frame_decoder_adapter.h"
 #include "quiche/spdy/core/http2_header_block.h"
-#include "quiche/spdy/core/recording_headers_handler.h"
 #include "quiche/spdy/core/spdy_alt_svc_wire_format.h"
 #include "quiche/spdy/core/spdy_bitmasks.h"
 #include "quiche/spdy/core/spdy_frame_builder.h"
-#include "quiche/spdy/core/spdy_headers_handler_interface.h"
 #include "quiche/spdy/core/spdy_protocol.h"
 
 using ::http2::Http2DecoderAdapter;
diff --git a/quiche/spdy/core/spdy_headers_handler_interface.h b/quiche/spdy/core/spdy_headers_handler_interface.h
index 6298741..8134781 100644
--- a/quiche/spdy/core/spdy_headers_handler_interface.h
+++ b/quiche/spdy/core/spdy_headers_handler_interface.h
@@ -5,35 +5,6 @@
 #ifndef QUICHE_SPDY_CORE_SPDY_HEADERS_HANDLER_INTERFACE_H_
 #define QUICHE_SPDY_CORE_SPDY_HEADERS_HANDLER_INTERFACE_H_
 
-#include <stddef.h>
-
-#include "absl/strings/string_view.h"
-#include "quiche/common/platform/api/quiche_export.h"
-
-namespace spdy {
-
-// This interface defines how an object that accepts header data should behave.
-// It is used by both SpdyHeadersBlockParser and HpackDecoder.
-class QUICHE_EXPORT SpdyHeadersHandlerInterface {
- public:
-  virtual ~SpdyHeadersHandlerInterface() {}
-
-  // A callback method which notifies when the parser starts handling a new
-  // header block. Will only be called once per block, even if it extends into
-  // CONTINUATION frames.
-  virtual void OnHeaderBlockStart() = 0;
-
-  // A callback method which notifies on a header key value pair. Multiple
-  // values for a given key will be emitted as multiple calls to OnHeader.
-  virtual void OnHeader(absl::string_view key, absl::string_view value) = 0;
-
-  // A callback method which notifies when the parser finishes handling a
-  // header block (i.e. the containing frame has the END_HEADERS flag set).
-  // Also indicates the total number of bytes in this block.
-  virtual void OnHeaderBlockEnd(size_t uncompressed_header_bytes,
-                                size_t compressed_header_bytes) = 0;
-};
-
-}  // namespace spdy
+#include "quiche/http2/core/spdy_headers_handler_interface.h"
 
 #endif  // QUICHE_SPDY_CORE_SPDY_HEADERS_HANDLER_INTERFACE_H_