Deprecate --gfe2_reloadable_flag_quic_priority_update_structured_headers_parser.

PiperOrigin-RevId: 505846370
diff --git a/quiche/quic/core/http/quic_receive_control_stream.cc b/quiche/quic/core/http/quic_receive_control_stream.cc
index b23fc57..c3862be 100644
--- a/quiche/quic/core/http/quic_receive_control_stream.cc
+++ b/quiche/quic/core/http/quic_receive_control_stream.cc
@@ -137,56 +137,17 @@
     spdy_session()->debug_visitor()->OnPriorityUpdateFrameReceived(frame);
   }
 
-  if (GetQuicReloadableFlag(quic_priority_update_structured_headers_parser)) {
-    QUIC_RELOADABLE_FLAG_COUNT(quic_priority_update_structured_headers_parser);
-    absl::optional<QuicStreamPriority> priority =
-        ParsePriorityFieldValue(frame.priority_field_value);
+  absl::optional<QuicStreamPriority> priority =
+      ParsePriorityFieldValue(frame.priority_field_value);
 
-    if (!priority.has_value()) {
-      stream_delegate()->OnStreamError(
-          QUIC_INVALID_PRIORITY_UPDATE,
-          "Invalid PRIORITY_UPDATE frame payload.");
-      return false;
-    }
-
-    const QuicStreamId stream_id = frame.prioritized_element_id;
-    return spdy_session_->OnPriorityUpdateForRequestStream(stream_id,
-                                                           *priority);
+  if (!priority.has_value()) {
+    stream_delegate()->OnStreamError(QUIC_INVALID_PRIORITY_UPDATE,
+                                     "Invalid PRIORITY_UPDATE frame payload.");
+    return false;
   }
 
-  for (absl::string_view key_value :
-       absl::StrSplit(frame.priority_field_value, ',')) {
-    std::vector<absl::string_view> key_and_value =
-        absl::StrSplit(key_value, '=');
-    if (key_and_value.size() != 2) {
-      continue;
-    }
-
-    absl::string_view key = key_and_value[0];
-    quiche::QuicheTextUtils::RemoveLeadingAndTrailingWhitespace(&key);
-    if (key != "u") {
-      continue;
-    }
-
-    absl::string_view value = key_and_value[1];
-    int urgency;
-    // This violates RFC9218 Section 4: "priority parameters with out-of-range
-    // values, or values of unexpected types MUST be ignored".
-    if (!absl::SimpleAtoi(value, &urgency) || urgency < 0 || urgency > 7) {
-      stream_delegate()->OnStreamError(
-          QUIC_INVALID_PRIORITY_UPDATE,
-          "Invalid value for PRIORITY_UPDATE urgency parameter.");
-      return false;
-    }
-
-    return spdy_session_->OnPriorityUpdateForRequestStream(
-        frame.prioritized_element_id,
-        QuicStreamPriority{static_cast<uint8_t>(urgency),
-                           QuicStreamPriority::kDefaultIncremental});
-  }
-
-  // Ignore frame if no urgency parameter can be parsed.
-  return true;
+  const QuicStreamId stream_id = frame.prioritized_element_id;
+  return spdy_session_->OnPriorityUpdateForRequestStream(stream_id, *priority);
 }
 
 bool QuicReceiveControlStream::OnAcceptChFrameStart(
diff --git a/quiche/quic/core/http/quic_spdy_session_test.cc b/quiche/quic/core/http/quic_spdy_session_test.cc
index 550ba80..4c23b9e 100644
--- a/quiche/quic/core/http/quic_spdy_session_test.cc
+++ b/quiche/quic/core/http/quic_spdy_session_test.cc
@@ -2246,11 +2246,7 @@
   session_.OnStreamFrame(stream_frame3);
   // Priority is applied upon stream construction.
   TestStream* stream2 = session_.CreateIncomingStream(stream_id2);
-  if (GetQuicReloadableFlag(quic_priority_update_structured_headers_parser)) {
-    EXPECT_EQ((QuicStreamPriority{5u, true}), stream2->priority());
-  } else {
-    EXPECT_EQ((QuicStreamPriority{5u, false}), stream2->priority());
-  }
+  EXPECT_EQ((QuicStreamPriority{5u, true}), stream2->priority());
 }
 
 TEST_P(QuicSpdySessionTestServer, OnInvalidPriorityUpdateFrame) {
@@ -2289,13 +2285,9 @@
   PriorityUpdateFrame priority_update{stream_id, "00"};
 
   EXPECT_CALL(debug_visitor, OnPriorityUpdateFrameReceived(priority_update));
-  if (GetQuicReloadableFlag(quic_priority_update_structured_headers_parser)) {
-    EXPECT_CALL(*connection_,
-                CloseConnection(QUIC_INVALID_PRIORITY_UPDATE,
-                                "Invalid PRIORITY_UPDATE frame payload.", _));
-  } else {
-    EXPECT_CALL(*connection_, CloseConnection(_, _, _)).Times(0);
-  }
+  EXPECT_CALL(*connection_,
+              CloseConnection(QUIC_INVALID_PRIORITY_UPDATE,
+                              "Invalid PRIORITY_UPDATE frame payload.", _));
 
   std::string serialized_priority_update =
       HttpEncoder::SerializePriorityUpdateFrame(priority_update);
@@ -2339,14 +2331,7 @@
   PriorityUpdateFrame priority_update{stream_id, "u=9"};
 
   EXPECT_CALL(debug_visitor, OnPriorityUpdateFrameReceived(priority_update));
-  if (GetQuicReloadableFlag(quic_priority_update_structured_headers_parser)) {
-    EXPECT_CALL(*connection_, CloseConnection(_, _, _)).Times(0);
-  } else {
-    EXPECT_CALL(*connection_,
-                CloseConnection(
-                    QUIC_INVALID_PRIORITY_UPDATE,
-                    "Invalid value for PRIORITY_UPDATE urgency parameter.", _));
-  }
+  EXPECT_CALL(*connection_, CloseConnection(_, _, _)).Times(0);
 
   std::string serialized_priority_update =
       HttpEncoder::SerializePriorityUpdateFrame(priority_update);
diff --git a/quiche/quic/core/quic_flags_list.h b/quiche/quic/core/quic_flags_list.h
index d9333b2..ee67f58 100644
--- a/quiche/quic/core/quic_flags_list.h
+++ b/quiche/quic/core/quic_flags_list.h
@@ -77,8 +77,6 @@
 QUIC_FLAG(quic_reloadable_flag_quic_connection_migration_use_new_cid_v2, true)
 // If true, use next_connection_id_sequence_number to validate retired cid number.
 QUIC_FLAG(quic_reloadable_flag_quic_check_retire_cid_with_next_cid_sequence_number, true)
-// If true, use quiche/common/structured_headers in QuicReceiveControlStream::OnPriorityUpdateFrame().
-QUIC_FLAG(quic_reloadable_flag_quic_priority_update_structured_headers_parser, true)
 // If true, uses conservative cwnd gain and pacing gain when cwnd gets bootstrapped.
 QUIC_FLAG(quic_reloadable_flag_quic_conservative_cwnd_and_pacing_gains, false)
 // If true, when TicketCrypter fails to encrypt a session ticket, quic::TlsServerHandshaker will send a placeholder ticket, instead of an empty one, to the client.