Incrementally process HTTP/3 METADATA frames instead of buffering the full payload.

PiperOrigin-RevId: 615608615
diff --git a/build/source_list.bzl b/build/source_list.bzl
index 9d9cf94..19fb0c8 100644
--- a/build/source_list.bzl
+++ b/build/source_list.bzl
@@ -224,6 +224,7 @@
     "quic/core/http/http_decoder.h",
     "quic/core/http/http_encoder.h",
     "quic/core/http/http_frames.h",
+    "quic/core/http/metadata_decoder.h",
     "quic/core/http/quic_header_list.h",
     "quic/core/http/quic_headers_stream.h",
     "quic/core/http/quic_receive_control_stream.h",
@@ -562,6 +563,7 @@
     "quic/core/http/http_constants.cc",
     "quic/core/http/http_decoder.cc",
     "quic/core/http/http_encoder.cc",
+    "quic/core/http/metadata_decoder.cc",
     "quic/core/http/quic_header_list.cc",
     "quic/core/http/quic_headers_stream.cc",
     "quic/core/http/quic_receive_control_stream.cc",
@@ -1197,6 +1199,7 @@
     "quic/core/http/http_decoder_test.cc",
     "quic/core/http/http_encoder_test.cc",
     "quic/core/http/http_frames_test.cc",
+    "quic/core/http/metadata_decoder_test.cc",
     "quic/core/http/quic_header_list_test.cc",
     "quic/core/http/quic_headers_stream_test.cc",
     "quic/core/http/quic_receive_control_stream_test.cc",
diff --git a/build/source_list.gni b/build/source_list.gni
index 589f737..b8ab180 100644
--- a/build/source_list.gni
+++ b/build/source_list.gni
@@ -224,6 +224,7 @@
     "src/quiche/quic/core/http/http_decoder.h",
     "src/quiche/quic/core/http/http_encoder.h",
     "src/quiche/quic/core/http/http_frames.h",
+    "src/quiche/quic/core/http/metadata_decoder.h",
     "src/quiche/quic/core/http/quic_header_list.h",
     "src/quiche/quic/core/http/quic_headers_stream.h",
     "src/quiche/quic/core/http/quic_receive_control_stream.h",
@@ -562,6 +563,7 @@
     "src/quiche/quic/core/http/http_constants.cc",
     "src/quiche/quic/core/http/http_decoder.cc",
     "src/quiche/quic/core/http/http_encoder.cc",
+    "src/quiche/quic/core/http/metadata_decoder.cc",
     "src/quiche/quic/core/http/quic_header_list.cc",
     "src/quiche/quic/core/http/quic_headers_stream.cc",
     "src/quiche/quic/core/http/quic_receive_control_stream.cc",
@@ -1198,6 +1200,7 @@
     "src/quiche/quic/core/http/http_decoder_test.cc",
     "src/quiche/quic/core/http/http_encoder_test.cc",
     "src/quiche/quic/core/http/http_frames_test.cc",
+    "src/quiche/quic/core/http/metadata_decoder_test.cc",
     "src/quiche/quic/core/http/quic_header_list_test.cc",
     "src/quiche/quic/core/http/quic_headers_stream_test.cc",
     "src/quiche/quic/core/http/quic_receive_control_stream_test.cc",
diff --git a/build/source_list.json b/build/source_list.json
index 274f204..373a3ea 100644
--- a/build/source_list.json
+++ b/build/source_list.json
@@ -223,6 +223,7 @@
     "quiche/quic/core/http/http_decoder.h",
     "quiche/quic/core/http/http_encoder.h",
     "quiche/quic/core/http/http_frames.h",
+    "quiche/quic/core/http/metadata_decoder.h",
     "quiche/quic/core/http/quic_header_list.h",
     "quiche/quic/core/http/quic_headers_stream.h",
     "quiche/quic/core/http/quic_receive_control_stream.h",
@@ -561,6 +562,7 @@
     "quiche/quic/core/http/http_constants.cc",
     "quiche/quic/core/http/http_decoder.cc",
     "quiche/quic/core/http/http_encoder.cc",
+    "quiche/quic/core/http/metadata_decoder.cc",
     "quiche/quic/core/http/quic_header_list.cc",
     "quiche/quic/core/http/quic_headers_stream.cc",
     "quiche/quic/core/http/quic_receive_control_stream.cc",
@@ -1197,6 +1199,7 @@
     "quiche/quic/core/http/http_decoder_test.cc",
     "quiche/quic/core/http/http_encoder_test.cc",
     "quiche/quic/core/http/http_frames_test.cc",
+    "quiche/quic/core/http/metadata_decoder_test.cc",
     "quiche/quic/core/http/quic_header_list_test.cc",
     "quiche/quic/core/http/quic_headers_stream_test.cc",
     "quiche/quic/core/http/quic_receive_control_stream_test.cc",