Deprecate --gfe2_reloadable_flag_quic_enable_http3_metadata_decoding

PiperOrigin-RevId: 633433081
diff --git a/quiche/common/quiche_feature_flags_list.h b/quiche/common/quiche_feature_flags_list.h
index 5e28f02..dcf5b04 100755
--- a/quiche/common/quiche_feature_flags_list.h
+++ b/quiche/common/quiche_feature_flags_list.h
@@ -29,7 +29,6 @@
 QUICHE_FLAG(bool, quiche_reloadable_flag_quic_disable_version_rfcv1, false, "If true, disable QUIC version h3 (RFCv1).")
 QUICHE_FLAG(bool, quiche_reloadable_flag_quic_discard_initial_packet_with_key_dropped, false, "If true, discard INITIAL packet if the key has been dropped.")
 QUICHE_FLAG(bool, quiche_reloadable_flag_quic_enable_disable_resumption, true, "If true, disable resumption when receiving NRES connection option.")
-QUICHE_FLAG(bool, quiche_reloadable_flag_quic_enable_http3_metadata_decoding, true, "If true, the HTTP/3 decoder will decode METADATA frames and not treat them as Unknown.")
 QUICHE_FLAG(bool, quiche_reloadable_flag_quic_enable_mtu_discovery_at_server, false, "If true, QUIC will default enable MTU discovery at server, with a target of 1450 bytes.")
 QUICHE_FLAG(bool, quiche_reloadable_flag_quic_enable_server_on_wire_ping, true, "If true, enable server retransmittable on wire PING.")
 QUICHE_FLAG(bool, quiche_reloadable_flag_quic_enable_version_rfcv2, false, "When true, support RFC9369.")
diff --git a/quiche/quic/core/http/http_decoder.cc b/quiche/quic/core/http/http_decoder.cc
index 4ddcbcb..1503b5b 100644
--- a/quiche/quic/core/http/http_decoder.cc
+++ b/quiche/quic/core/http/http_decoder.cc
@@ -43,9 +43,7 @@
       current_type_field_length_(0),
       remaining_type_field_length_(0),
       error_(QUIC_NO_ERROR),
-      error_detail_(""),
-      enable_metadata_decoding_(
-          GetQuicReloadableFlag(quic_enable_http3_metadata_decoding)) {
+      error_detail_("") {
   QUICHE_DCHECK(visitor_);
 }
 
@@ -284,10 +282,8 @@
       continue_processing = visitor_->OnAcceptChFrameStart(header_length);
       break;
     default:
-      if (enable_metadata_decoding_ &&
-          current_frame_type_ ==
-              static_cast<uint64_t>(HttpFrameType::METADATA)) {
-        QUIC_RELOADABLE_FLAG_COUNT_N(quic_enable_http3_metadata_decoding, 1, 3);
+      if (current_frame_type_ ==
+          static_cast<uint64_t>(HttpFrameType::METADATA)) {
         continue_processing = visitor_->OnMetadataFrameStart(
             header_length, current_frame_length_);
         break;
@@ -386,10 +382,8 @@
       break;
     }
     default: {
-      if (enable_metadata_decoding_ &&
-          current_frame_type_ ==
-              static_cast<uint64_t>(HttpFrameType::METADATA)) {
-        QUIC_RELOADABLE_FLAG_COUNT_N(quic_enable_http3_metadata_decoding, 2, 3);
+      if (current_frame_type_ ==
+          static_cast<uint64_t>(HttpFrameType::METADATA)) {
         QuicByteCount bytes_to_read = std::min<QuicByteCount>(
             remaining_frame_length_, reader->BytesRemaining());
         absl::string_view payload;
@@ -456,10 +450,8 @@
       break;
     }
     default:
-      if (enable_metadata_decoding_ &&
-          current_frame_type_ ==
-              static_cast<uint64_t>(HttpFrameType::METADATA)) {
-        QUIC_RELOADABLE_FLAG_COUNT_N(quic_enable_http3_metadata_decoding, 3, 3);
+      if (current_frame_type_ ==
+          static_cast<uint64_t>(HttpFrameType::METADATA)) {
         continue_processing = visitor_->OnMetadataFrameEnd();
         break;
       }
diff --git a/quiche/quic/core/http/http_decoder.h b/quiche/quic/core/http/http_decoder.h
index a08c562..6d305e4 100644
--- a/quiche/quic/core/http/http_decoder.h
+++ b/quiche/quic/core/http/http_decoder.h
@@ -282,9 +282,6 @@
   std::array<char, sizeof(uint64_t)> length_buffer_;
   // Remaining unparsed type field data.
   std::array<char, sizeof(uint64_t)> type_buffer_;
-
-  // Latched value of --quic_enable_http3_metadata_decoding.
-  const bool enable_metadata_decoding_;
 };
 
 }  // namespace quic
diff --git a/quiche/quic/core/http/http_decoder_test.cc b/quiche/quic/core/http/http_decoder_test.cc
index 4fe08c0..b7f3255 100644
--- a/quiche/quic/core/http/http_decoder_test.cc
+++ b/quiche/quic/core/http/http_decoder_test.cc
@@ -498,9 +498,6 @@
 }
 
 TEST_F(HttpDecoderTest, MetadataFrame) {
-  if (!GetQuicReloadableFlag(quic_enable_http3_metadata_decoding)) {
-    return;
-  }
   InSequence s;
   std::string type_and_length_bytes;
   ASSERT_TRUE(
diff --git a/quiche/quic/core/http/quic_spdy_stream.cc b/quiche/quic/core/http/quic_spdy_stream.cc
index 035d21f..1649bc5 100644
--- a/quiche/quic/core/http/quic_spdy_stream.cc
+++ b/quiche/quic/core/http/quic_spdy_stream.cc
@@ -724,8 +724,6 @@
 }
 
 void QuicSpdyStream::RegisterMetadataVisitor(MetadataVisitor* visitor) {
-  QUIC_BUG_IF(Metadata visitor requires http3 metadata flag,
-              !GetQuicReloadableFlag(quic_enable_http3_metadata_decoding));
   metadata_visitor_ = visitor;
 }
 
diff --git a/quiche/quic/core/http/quic_spdy_stream_test.cc b/quiche/quic/core/http/quic_spdy_stream_test.cc
index d16217f..21fc928 100644
--- a/quiche/quic/core/http/quic_spdy_stream_test.cc
+++ b/quiche/quic/core/http/quic_spdy_stream_test.cc
@@ -2786,8 +2786,7 @@
 };
 
 TEST_P(QuicSpdyStreamIncrementalConsumptionTest, ReceiveMetadataFrame) {
-  if (!UsesHttp3() ||
-      !GetQuicReloadableFlag(quic_enable_http3_metadata_decoding)) {
+  if (!UsesHttp3()) {
     return;
   }
   StrictMock<MockMetadataVisitor> metadata_visitor;
@@ -2824,8 +2823,7 @@
 
 TEST_P(QuicSpdyStreamIncrementalConsumptionTest,
        ResetDuringMultipleMetadataFrames) {
-  if (!UsesHttp3() ||
-      !GetQuicReloadableFlag(quic_enable_http3_metadata_decoding)) {
+  if (!UsesHttp3()) {
     return;
   }
   StrictMock<MockMetadataVisitor> metadata_visitor;
diff --git a/quiche/quic/core/quic_flags_list.h b/quiche/quic/core/quic_flags_list.h
index 61393cb..8945726 100644
--- a/quiche/quic/core/quic_flags_list.h
+++ b/quiche/quic/core/quic_flags_list.h
@@ -73,8 +73,6 @@
 QUIC_FLAG(quic_reloadable_flag_quic_disable_batch_write, false)
 // If true, set burst token to 2 in cwnd bootstrapping experiment.
 QUIC_FLAG(quic_reloadable_flag_quic_conservative_bursts, false)
-// If true, the HTTP/3 decoder will decode METADATA frames and not treat them as Unknown.
-QUIC_FLAG(quic_reloadable_flag_quic_enable_http3_metadata_decoding, true)
 // If true, use BBRv2 as the default congestion controller. Takes precedence over --quic_default_to_bbr.
 QUIC_FLAG(quic_reloadable_flag_quic_default_to_bbr_v2, false)
 // If true, use a LRU cache to record client addresses of packets received on server\'s original address.