Change default QuicStream priority when using IETF QUIC.
This allows removal of MaybeSendPriorityUpdateFrame() call in
QuicSpdyStream::WriteHeaders(): if priority is default, no need to send
PRIORITY_UPDATE; if SetPriority() has been called, then PRIORITY_UPDATE has
already been sent.
gfe-relnote: n/a, change to QUIC v99-only code. Protected by existing disabled gfe2_reloadable_flag_quic_enable_version_99.
PiperOrigin-RevId: 292745471
Change-Id: Ic9fff95e6a1650a91449a659fbe156265f2b9cac
diff --git a/quic/core/http/quic_spdy_stream_test.cc b/quic/core/http/quic_spdy_stream_test.cc
index 5d0a162..9f7e894 100644
--- a/quic/core/http/quic_spdy_stream_test.cc
+++ b/quic/core/http/quic_spdy_stream_test.cc
@@ -1311,34 +1311,6 @@
EXPECT_TRUE(stream_->fin_sent());
}
-TEST_P(QuicSpdyStreamTest, SendPriorityUpdate) {
- if (!UsesHttp3()) {
- return;
- }
-
- InitializeWithPerspective(kShouldProcessData, Perspective::IS_CLIENT);
-
- // Four writes on the request stream: HEADERS frame header and payload both
- // for headers and trailers.
- EXPECT_CALL(*session_, WritevData(stream_, stream_->id(), _, _, _)).Times(4);
- // PRIORITY_UPDATE frame on the control stream.
- auto send_control_stream =
- QuicSpdySessionPeer::GetSendControlStream(session_.get());
- EXPECT_CALL(*session_, WritevData(send_control_stream,
- send_control_stream->id(), _, _, _));
-
- // Write the initial headers, without a FIN.
- EXPECT_CALL(*stream_, WriteHeadersMock(false));
- stream_->WriteHeaders(SpdyHeaderBlock(), /*fin=*/false, nullptr);
-
- // Writing trailers implicitly sends a FIN.
- SpdyHeaderBlock trailers;
- trailers["trailer key"] = "trailer value";
- EXPECT_CALL(*stream_, WriteHeadersMock(true));
- stream_->WriteTrailers(std::move(trailers), nullptr);
- EXPECT_TRUE(stream_->fin_sent());
-}
-
TEST_P(QuicSpdyStreamTest, DoNotSendPriorityUpdateWithDefaultUrgency) {
if (!UsesHttp3()) {
return;
@@ -1350,10 +1322,8 @@
// for headers and trailers.
EXPECT_CALL(*session_, WritevData(stream_, stream_->id(), _, _, _)).Times(4);
- stream_->SetPriority(
- spdy::SpdyStreamPrecedence(QuicSpdyStream::kDefaultUrgency));
-
- // No PRIORITY_UPDATE frames on the control stream.
+ // No PRIORITY_UPDATE frames on the control stream,
+ // because the stream has default priority.
auto send_control_stream =
QuicSpdySessionPeer::GetSendControlStream(session_.get());
EXPECT_CALL(*session_, WritevData(send_control_stream,
@@ -1382,17 +1352,13 @@
// Two writes on the request stream: HEADERS frame header and payload.
EXPECT_CALL(*session_, WritevData(stream_, stream_->id(), _, _, _)).Times(2);
EXPECT_CALL(*stream_, WriteHeadersMock(false));
+ stream_->WriteHeaders(SpdyHeaderBlock(), /*fin=*/false, nullptr);
+
// PRIORITY_UPDATE frame on the control stream.
auto send_control_stream =
QuicSpdySessionPeer::GetSendControlStream(session_.get());
EXPECT_CALL(*session_, WritevData(send_control_stream,
send_control_stream->id(), _, _, _));
- stream_->WriteHeaders(SpdyHeaderBlock(), /*fin=*/false, nullptr);
- testing::Mock::VerifyAndClearExpectations(session_.get());
-
- // Another PRIORITY_UPDATE frame.
- EXPECT_CALL(*session_, WritevData(send_control_stream,
- send_control_stream->id(), _, _, _));
stream_->SetPriority(spdy::SpdyStreamPrecedence(kV3HighestPriority));
}