Add functions to handle WebTransport subprotocol negotiation headers.

Based on https://github.com/ietf-wg-webtrans/draft-ietf-webtrans-http3/pull/144

PiperOrigin-RevId: 583029408
diff --git a/build/source_list.bzl b/build/source_list.bzl
index 3615c89..df02f45 100644
--- a/build/source_list.bzl
+++ b/build/source_list.bzl
@@ -394,6 +394,7 @@
     "web_transport/complete_buffer_visitor.h",
     "web_transport/encapsulated/encapsulated_web_transport.h",
     "web_transport/web_transport.h",
+    "web_transport/web_transport_headers.h",
 ]
 quiche_core_srcs = [
     "common/capsule.cc",
@@ -682,6 +683,7 @@
     "spdy/core/spdy_protocol.cc",
     "web_transport/complete_buffer_visitor.cc",
     "web_transport/encapsulated/encapsulated_web_transport.cc",
+    "web_transport/web_transport_headers.cc",
 ]
 quiche_tool_support_hdrs = [
     "common/platform/api/quiche_command_line_flags.h",
@@ -1307,6 +1309,7 @@
     "spdy/core/spdy_prefixed_buffer_reader_test.cc",
     "spdy/core/spdy_protocol_test.cc",
     "web_transport/encapsulated/encapsulated_web_transport_test.cc",
+    "web_transport/web_transport_headers_test.cc",
 ]
 io_tests_hdrs = [
 ]
diff --git a/build/source_list.gni b/build/source_list.gni
index 472aede..16a7eea 100644
--- a/build/source_list.gni
+++ b/build/source_list.gni
@@ -394,6 +394,7 @@
     "src/quiche/web_transport/complete_buffer_visitor.h",
     "src/quiche/web_transport/encapsulated/encapsulated_web_transport.h",
     "src/quiche/web_transport/web_transport.h",
+    "src/quiche/web_transport/web_transport_headers.h",
 ]
 quiche_core_srcs = [
     "src/quiche/common/capsule.cc",
@@ -682,6 +683,7 @@
     "src/quiche/spdy/core/spdy_protocol.cc",
     "src/quiche/web_transport/complete_buffer_visitor.cc",
     "src/quiche/web_transport/encapsulated/encapsulated_web_transport.cc",
+    "src/quiche/web_transport/web_transport_headers.cc",
 ]
 quiche_tool_support_hdrs = [
     "src/quiche/common/platform/api/quiche_command_line_flags.h",
@@ -1308,6 +1310,7 @@
     "src/quiche/spdy/core/spdy_prefixed_buffer_reader_test.cc",
     "src/quiche/spdy/core/spdy_protocol_test.cc",
     "src/quiche/web_transport/encapsulated/encapsulated_web_transport_test.cc",
+    "src/quiche/web_transport/web_transport_headers_test.cc",
 ]
 io_tests_hdrs = [
 
diff --git a/build/source_list.json b/build/source_list.json
index fc9ff8b..41946db 100644
--- a/build/source_list.json
+++ b/build/source_list.json
@@ -392,7 +392,8 @@
     "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"
+    "quiche/web_transport/web_transport.h",
+    "quiche/web_transport/web_transport_headers.h"
   ],
   "quiche_core_srcs": [
     "quiche/common/capsule.cc",
@@ -680,7 +681,8 @@
     "quiche/spdy/core/spdy_prefixed_buffer_reader.cc",
     "quiche/spdy/core/spdy_protocol.cc",
     "quiche/web_transport/complete_buffer_visitor.cc",
-    "quiche/web_transport/encapsulated/encapsulated_web_transport.cc"
+    "quiche/web_transport/encapsulated/encapsulated_web_transport.cc",
+    "quiche/web_transport/web_transport_headers.cc"
   ],
   "quiche_tool_support_hdrs": [
     "quiche/common/platform/api/quiche_command_line_flags.h",
@@ -1306,7 +1308,8 @@
     "quiche/spdy/core/spdy_pinnable_buffer_piece_test.cc",
     "quiche/spdy/core/spdy_prefixed_buffer_reader_test.cc",
     "quiche/spdy/core/spdy_protocol_test.cc",
-    "quiche/web_transport/encapsulated/encapsulated_web_transport_test.cc"
+    "quiche/web_transport/encapsulated/encapsulated_web_transport_test.cc",
+    "quiche/web_transport/web_transport_headers_test.cc"
   ],
   "io_tests_hdrs": [