Update default HTTP/3 priority. Default value in draft spec was changed from 1 to 3 at https://github.com/httpwg/http-extensions/pull/1172. Protected by FLAGS_quic_reloadable_flag_quic_http3_new_default_urgency_value. PiperOrigin-RevId: 329295352 Change-Id: I7a3a42ed25f3250b8aa465c5c34ca924ba3167bc
diff --git a/quic/core/http/quic_spdy_session_test.cc b/quic/core/http/quic_spdy_session_test.cc index 0ff48c1..fa6aec9 100644 --- a/quic/core/http/quic_spdy_session_test.cc +++ b/quic/core/http/quic_spdy_session_test.cc
@@ -2143,7 +2143,7 @@ // PRIORITY_UPDATE frame arrives after stream creation. TestStream* stream1 = session_.CreateIncomingStream(stream_id1); - EXPECT_EQ(QuicStream::kDefaultUrgency, + EXPECT_EQ(QuicStream::DefaultUrgency(), stream1->precedence().spdy3_priority()); EXPECT_CALL(debug_visitor, OnPriorityUpdateFrameReceived(priority_update1)); session_.OnStreamFrame(data3);
diff --git a/quic/core/http/quic_spdy_stream.cc b/quic/core/http/quic_spdy_stream.cc index 259493f..a14c3e5 100644 --- a/quic/core/http/quic_spdy_stream.cc +++ b/quic/core/http/quic_spdy_stream.cc
@@ -199,7 +199,7 @@ sequencer_offset_(0), is_decoder_processing_input_(false), ack_listener_(nullptr), - last_sent_urgency_(kDefaultUrgency) { + last_sent_urgency_(DefaultUrgency()) { DCHECK_EQ(session()->connection(), spdy_session->connection()); DCHECK_EQ(transport_version(), spdy_session->transport_version()); DCHECK(!QuicUtils::IsCryptoStreamId(transport_version(), id)); @@ -235,7 +235,7 @@ sequencer_offset_(sequencer()->NumBytesConsumed()), is_decoder_processing_input_(false), ack_listener_(nullptr), - last_sent_urgency_(kDefaultUrgency) { + last_sent_urgency_(DefaultUrgency()) { DCHECK_EQ(session()->connection(), spdy_session->connection()); DCHECK_EQ(transport_version(), spdy_session->transport_version()); DCHECK(!QuicUtils::IsCryptoStreamId(transport_version(), id()));
diff --git a/quic/core/quic_stream.cc b/quic/core/quic_stream.cc index dfe00a6..d965fa7 100644 --- a/quic/core/quic_stream.cc +++ b/quic/core/quic_stream.cc
@@ -109,9 +109,6 @@ // static const SpdyPriority QuicStream::kDefaultPriority; -// static -const int QuicStream::kDefaultUrgency; - PendingStream::PendingStream(QuicStreamId id, QuicSession* session) : id_(id), session_(session), @@ -388,6 +385,16 @@ } } +// static +int QuicStream::DefaultUrgency() { + if (GetQuicReloadableFlag(quic_http3_new_default_urgency_value)) { + QUIC_RELOADABLE_FLAG_COUNT(quic_http3_new_default_urgency_value); + return 3; + } else { + return 1; + } +} + void QuicStream::OnStreamFrame(const QuicStreamFrame& frame) { DCHECK_EQ(frame.stream_id, id_); @@ -1337,7 +1344,7 @@ spdy::SpdyStreamPrecedence QuicStream::CalculateDefaultPriority( const QuicSession* session) { if (VersionUsesHttp3(session->transport_version())) { - return spdy::SpdyStreamPrecedence(QuicStream::kDefaultUrgency); + return spdy::SpdyStreamPrecedence(DefaultUrgency()); } if (session->use_http2_priority_write_scheduler()) {
diff --git a/quic/core/quic_stream.h b/quic/core/quic_stream.h index d6fe8f8..8f669ca 100644 --- a/quic/core/quic_stream.h +++ b/quic/core/quic_stream.h
@@ -113,6 +113,7 @@ class QUIC_EXPORT_PRIVATE QuicStream : public QuicStreamSequencer::StreamInterface { public: + // Default priority for Google QUIC. // This is somewhat arbitrary. It's possible, but unlikely, we will either // fail to set a priority client-side, or cancel a stream before stripping the // priority from the wire server-side. In either case, start out with a @@ -121,10 +122,6 @@ static_assert(kDefaultPriority == (spdy::kV3LowestPriority + spdy::kV3HighestPriority) / 2, "Unexpected value of kDefaultPriority"); - // On the other hand, when using IETF QUIC, use the default value defined by - // the priority extension at - // https://httpwg.org/http-extensions/draft-ietf-httpbis-priority.html#default. - static const int kDefaultUrgency = 1; // Creates a new stream with stream_id |id| associated with |session|. If // |is_static| is true, then the stream will be given precedence @@ -142,6 +139,12 @@ virtual ~QuicStream(); + // Default priority for IETF QUIC, defined by the priority extension at + // https://httpwg.org/http-extensions/draft-ietf-httpbis-priority.html#urgency. + // TODO(bnc): Remove this method and reinstate static const int + // kDefaultUrgency member when removing quic_http3_new_default_urgency_value. + static int DefaultUrgency(); + // QuicStreamSequencer::StreamInterface implementation. QuicStreamId id() const override { return id_; } // Called by the stream subclass after it has consumed the final incoming
diff --git a/quic/tools/quic_spdy_client_base.cc b/quic/tools/quic_spdy_client_base.cc index 309928f..212e605 100644 --- a/quic/tools/quic_spdy_client_base.cc +++ b/quic/tools/quic_spdy_client_base.cc
@@ -188,8 +188,6 @@ auto* stream = static_cast<QuicSpdyClientStream*>( client_session()->CreateOutgoingBidirectionalStream()); if (stream) { - stream->SetPriority( - spdy::SpdyStreamPrecedence(QuicStream::kDefaultPriority)); stream->set_visitor(this); } return stream;