Guard HTTP/3 priority code behind protocol flag quic_allow_http3_priority which is default false.

gfe-relnote: v99 only, not protected.
PiperOrigin-RevId: 269610032
Change-Id: Ie15cca2d45ab4821e253cec1f34e6e513fde5165
diff --git a/quic/core/http/quic_receive_control_stream.cc b/quic/core/http/quic_receive_control_stream.cc
index d6794c7..86005e7 100644
--- a/quic/core/http/quic_receive_control_stream.cc
+++ b/quic/core/http/quic_receive_control_stream.cc
@@ -7,6 +7,7 @@
 #include "net/third_party/quiche/src/quic/core/http/http_constants.h"
 #include "net/third_party/quiche/src/quic/core/http/http_decoder.h"
 #include "net/third_party/quiche/src/quic/core/http/quic_spdy_session.h"
+#include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_ptr_util.h"
 
 namespace quic {
@@ -231,6 +232,9 @@
 
 bool QuicReceiveControlStream::OnPriorityFrame(const PriorityFrame& priority) {
   DCHECK_EQ(Perspective::IS_SERVER, session()->perspective());
+  if (!GetQuicFlag(FLAGS_quic_allow_http3_priority)) {
+    return true;
+  }
   QuicStream* stream =
       session()->GetOrCreateStream(priority.prioritized_element_id);
   // It's possible that the client sends a Priority frame for a request stream
diff --git a/quic/core/http/quic_receive_control_stream_test.cc b/quic/core/http/quic_receive_control_stream_test.cc
index e305102..5eeb466 100644
--- a/quic/core/http/quic_receive_control_stream_test.cc
+++ b/quic/core/http/quic_receive_control_stream_test.cc
@@ -216,6 +216,7 @@
   if (perspective() == Perspective::IS_CLIENT) {
     return;
   }
+  SetQuicFlag(FLAGS_quic_allow_http3_priority, true);
   struct PriorityFrame frame;
   frame.prioritized_type = REQUEST_STREAM;
   frame.dependency_type = ROOT_OF_TREE;
diff --git a/quic/core/http/quic_spdy_session.cc b/quic/core/http/quic_spdy_session.cc
index 17c2884..abeed2b 100644
--- a/quic/core/http/quic_spdy_session.cc
+++ b/quic/core/http/quic_spdy_session.cc
@@ -524,6 +524,7 @@
 
 void QuicSpdySession::WriteH3Priority(const PriorityFrame& priority) {
   DCHECK(VersionHasStreamType(transport_version()));
+  DCHECK(GetQuicFlag(FLAGS_quic_allow_http3_priority));
   DCHECK(perspective() == Perspective::IS_CLIENT)
       << "Server must not send priority";
 
diff --git a/quic/core/http/quic_spdy_stream.cc b/quic/core/http/quic_spdy_stream.cc
index e702e85..a407d5c 100644
--- a/quic/core/http/quic_spdy_stream.cc
+++ b/quic/core/http/quic_spdy_stream.cc
@@ -1002,7 +1002,8 @@
         std::move(ack_listener));
   }
 
-  if (session()->perspective() == Perspective::IS_CLIENT && !priority_sent_) {
+  if (GetQuicFlag(FLAGS_quic_allow_http3_priority) &&
+      session()->perspective() == Perspective::IS_CLIENT && !priority_sent_) {
     PriorityFrame frame;
     PopulatePriorityFrame(&frame);
     spdy_session_->WriteH3Priority(frame);
diff --git a/quic/core/http/quic_spdy_stream_test.cc b/quic/core/http/quic_spdy_stream_test.cc
index 5db0263..b1f6672 100644
--- a/quic/core/http/quic_spdy_stream_test.cc
+++ b/quic/core/http/quic_spdy_stream_test.cc
@@ -1221,6 +1221,7 @@
 }
 
 TEST_P(QuicSpdyStreamTest, ClientWritesPriority) {
+  SetQuicFlag(FLAGS_quic_allow_http3_priority, true);
   InitializeWithPerspective(kShouldProcessData, Perspective::IS_CLIENT);
 
   if (VersionUsesQpack(GetParam().transport_version)) {