Allow QuicSession::WritevData() to write data at a specified encryption level.
gfe-relnote: protected by gfe2_reloadable_flag_quic_writevdata_at_level
PiperOrigin-RevId: 297697074
Change-Id: Ib4e5d860f22f506f36db76f4f8ee1c1e406f6a20
diff --git a/quic/core/http/quic_headers_stream_test.cc b/quic/core/http/quic_headers_stream_test.cc
index 4337318..9459351 100644
--- a/quic/core/http/quic_headers_stream_test.cc
+++ b/quic/core/http/quic_headers_stream_test.cc
@@ -288,7 +288,7 @@
// Write the headers and capture the outgoing data
EXPECT_CALL(session_, WritevData(QuicUtils::GetHeadersStreamId(
connection_->transport_version()),
- _, _, NO_FIN, _))
+ _, _, NO_FIN, _, _))
.WillOnce(WithArgs<1>(Invoke(this, &QuicHeadersStreamTest::SaveIov)));
QuicSpdySessionPeer::WriteHeadersOnHeadersStream(
&session_, stream_id, headers_.Clone(), fin,
@@ -412,7 +412,7 @@
// Write the headers and capture the outgoing data
EXPECT_CALL(session_, WritevData(QuicUtils::GetHeadersStreamId(
connection_->transport_version()),
- _, _, NO_FIN, _))
+ _, _, NO_FIN, _, _))
.WillOnce(WithArgs<1>(Invoke(this, &QuicHeadersStreamTest::SaveIov)));
session_.WritePushPromise(stream_id, promised_stream_id,
headers_.Clone());
@@ -827,7 +827,7 @@
TEST_P(QuicHeadersStreamTest, AckSentData) {
EXPECT_CALL(session_, WritevData(QuicUtils::GetHeadersStreamId(
connection_->transport_version()),
- _, _, NO_FIN, _))
+ _, _, NO_FIN, _, _))
.WillRepeatedly(Invoke(&session_, &MockQuicSpdySession::ConsumeData));
InSequence s;
QuicReferenceCountedPointer<MockAckListener> ack_listener1(
@@ -896,7 +896,7 @@
// In this test, a stream frame can contain multiple headers.
EXPECT_CALL(session_, WritevData(QuicUtils::GetHeadersStreamId(
connection_->transport_version()),
- _, _, NO_FIN, _))
+ _, _, NO_FIN, _, _))
.WillRepeatedly(Invoke(&session_, &MockQuicSpdySession::ConsumeData));
InSequence s;
QuicReferenceCountedPointer<MockAckListener> ack_listener1(
@@ -946,7 +946,7 @@
TEST_P(QuicHeadersStreamTest, HeadersGetAckedMultipleTimes) {
EXPECT_CALL(session_, WritevData(QuicUtils::GetHeadersStreamId(
connection_->transport_version()),
- _, _, NO_FIN, _))
+ _, _, NO_FIN, _, _))
.WillRepeatedly(Invoke(&session_, &MockQuicSpdySession::ConsumeData));
InSequence s;
QuicReferenceCountedPointer<MockAckListener> ack_listener1(
diff --git a/quic/core/http/quic_send_control_stream_test.cc b/quic/core/http/quic_send_control_stream_test.cc
index 49c5dea..9e72f23 100644
--- a/quic/core/http/quic_send_control_stream_test.cc
+++ b/quic/core/http/quic_send_control_stream_test.cc
@@ -73,7 +73,7 @@
perspective(),
SupportedVersions(GetParam().version))),
session_(connection_) {
- ON_CALL(session_, WritevData(_, _, _, _, _))
+ ON_CALL(session_, WritevData(_, _, _, _, _, _))
.WillByDefault(Invoke(&session_, &MockQuicSpdySession::ConsumeData));
}
@@ -132,22 +132,22 @@
// A lambda to save and consume stream data when QuicSession::WritevData() is
// called.
- auto save_write_data = [&writer, this](QuicStreamId /*id*/,
- size_t write_length,
- QuicStreamOffset offset,
- StreamSendingState /*state*/,
- bool /*is_retransmission*/) {
- send_control_stream_->WriteStreamData(offset, write_length, &writer);
- return QuicConsumedData(/* bytes_consumed = */ write_length,
- /* fin_consumed = */ false);
- };
+ auto save_write_data =
+ [&writer, this](QuicStreamId /*id*/, size_t write_length,
+ QuicStreamOffset offset, StreamSendingState /*state*/,
+ bool /*is_retransmission*/,
+ quiche::QuicheOptional<EncryptionLevel> /*level*/) {
+ send_control_stream_->WriteStreamData(offset, write_length, &writer);
+ return QuicConsumedData(/* bytes_consumed = */ write_length,
+ /* fin_consumed = */ false);
+ };
- EXPECT_CALL(session_, WritevData(send_control_stream_->id(), 1, _, _, _))
+ EXPECT_CALL(session_, WritevData(send_control_stream_->id(), 1, _, _, _, _))
.WillOnce(Invoke(save_write_data));
EXPECT_CALL(session_, WritevData(send_control_stream_->id(),
- expected_write_data.size() - 5, _, _, _))
+ expected_write_data.size() - 5, _, _, _, _))
.WillOnce(Invoke(save_write_data));
- EXPECT_CALL(session_, WritevData(send_control_stream_->id(), 4, _, _, _))
+ EXPECT_CALL(session_, WritevData(send_control_stream_->id(), 4, _, _, _, _))
.WillOnce(Invoke(save_write_data));
send_control_stream_->MaybeSendSettingsFrame();
@@ -159,8 +159,8 @@
Initialize();
testing::InSequence s;
- EXPECT_CALL(session_, WritevData(send_control_stream_->id(), 1, _, _, _));
- EXPECT_CALL(session_, WritevData(send_control_stream_->id(), _, _, _, _))
+ EXPECT_CALL(session_, WritevData(send_control_stream_->id(), 1, _, _, _, _));
+ EXPECT_CALL(session_, WritevData(send_control_stream_->id(), _, _, _, _, _))
.Times(2);
send_control_stream_->MaybeSendSettingsFrame();
@@ -176,12 +176,12 @@
// The first write will trigger the control stream to write stream type, a
// SETTINGS frame, and a greased frame before the PRIORITY_UPDATE frame.
- EXPECT_CALL(session_, WritevData(send_control_stream_->id(), _, _, _, _))
+ EXPECT_CALL(session_, WritevData(send_control_stream_->id(), _, _, _, _, _))
.Times(4);
PriorityUpdateFrame frame;
send_control_stream_->WritePriorityUpdate(frame);
- EXPECT_CALL(session_, WritevData(send_control_stream_->id(), _, _, _, _));
+ EXPECT_CALL(session_, WritevData(send_control_stream_->id(), _, _, _, _, _));
send_control_stream_->WritePriorityUpdate(frame);
}
diff --git a/quic/core/http/quic_spdy_client_session_test.cc b/quic/core/http/quic_spdy_client_session_test.cc
index 01e9fd8..a8ddc09 100644
--- a/quic/core/http/quic_spdy_client_session_test.cc
+++ b/quic/core/http/quic_spdy_client_session_test.cc
@@ -232,7 +232,7 @@
// Verify that no data may be send on existing streams.
char data[] = "hello world";
QuicConsumedData consumed = session_->WritevData(
- stream->id(), QUICHE_ARRAYSIZE(data), 0, NO_FIN, false);
+ stream->id(), QUICHE_ARRAYSIZE(data), 0, NO_FIN, false, QuicheNullOpt);
EXPECT_FALSE(consumed.fin_consumed);
EXPECT_EQ(0u, consumed.bytes_consumed);
}
diff --git a/quic/core/http/quic_spdy_session_test.cc b/quic/core/http/quic_spdy_session_test.cc
index bff8bbc..37b559c 100644
--- a/quic/core/http/quic_spdy_session_test.cc
+++ b/quic/core/http/quic_spdy_session_test.cc
@@ -267,16 +267,18 @@
return QuicSpdySession::GetOrCreateStream(stream_id);
}
- QuicConsumedData WritevData(QuicStreamId id,
- size_t write_length,
- QuicStreamOffset offset,
- StreamSendingState state,
- bool is_retransmission) override {
+ QuicConsumedData WritevData(
+ QuicStreamId id,
+ size_t write_length,
+ QuicStreamOffset offset,
+ StreamSendingState state,
+ bool is_retransmission,
+ quiche::QuicheOptional<EncryptionLevel> level) override {
bool fin = state != NO_FIN;
QuicConsumedData consumed(write_length, fin);
if (!writev_consumes_all_data_) {
consumed = QuicSession::WritevData(id, write_length, offset, state,
- is_retransmission);
+ is_retransmission, level);
}
QuicSessionPeer::GetWriteBlockedStreams(this)->UpdateBytesForStream(
id, consumed.bytes_consumed);
@@ -296,7 +298,8 @@
}
MakeIOVector("not empty", &iov);
QuicStreamPeer::SendBuffer(stream).SaveStreamData(&iov, 1, 0, 9);
- QuicConsumedData consumed = WritevData(stream->id(), 9, 0, FIN, false);
+ QuicConsumedData consumed =
+ WritevData(stream->id(), 9, 0, FIN, false, QuicheNullOpt);
QuicStreamPeer::SendBuffer(stream).OnStreamDataConsumed(
consumed.bytes_consumed);
return consumed;
@@ -304,7 +307,7 @@
QuicConsumedData SendLargeFakeData(QuicStream* stream, int bytes) {
DCHECK(writev_consumes_all_data_);
- return WritevData(stream->id(), bytes, 0, FIN, false);
+ return WritevData(stream->id(), bytes, 0, FIN, false, QuicheNullOpt);
}
using QuicSession::closed_streams;
diff --git a/quic/core/http/quic_spdy_stream_test.cc b/quic/core/http/quic_spdy_stream_test.cc
index c8f9d3a..5b70813 100644
--- a/quic/core/http/quic_spdy_stream_test.cc
+++ b/quic/core/http/quic_spdy_stream_test.cc
@@ -202,7 +202,7 @@
&helper_, &alarm_factory_, perspective, SupportedVersions(GetParam()));
session_ = std::make_unique<StrictMock<MockQuicSpdySession>>(connection_);
session_->Initialize();
- ON_CALL(*session_, WritevData(_, _, _, _, _))
+ ON_CALL(*session_, WritevData(_, _, _, _, _, _))
.WillByDefault(
Invoke(session_.get(), &MockQuicSpdySession::ConsumeData));
@@ -237,16 +237,17 @@
}
auto send_control_stream =
QuicSpdySessionPeer::GetSendControlStream(session_.get());
- EXPECT_CALL(*session_, WritevData(send_control_stream->id(), _, _, _, _))
+ EXPECT_CALL(*session_,
+ WritevData(send_control_stream->id(), _, _, _, _, _))
.Times(num_control_stream_writes);
auto qpack_decoder_stream =
QuicSpdySessionPeer::GetQpackDecoderSendStream(session_.get());
EXPECT_CALL(*session_,
- WritevData(qpack_decoder_stream->id(), 1, 0, _, _));
+ WritevData(qpack_decoder_stream->id(), 1, 0, _, _, _));
auto qpack_encoder_stream =
QuicSpdySessionPeer::GetQpackEncoderSendStream(session_.get());
EXPECT_CALL(*session_,
- WritevData(qpack_encoder_stream->id(), 1, 0, _, _));
+ WritevData(qpack_encoder_stream->id(), 1, 0, _, _, _));
}
static_cast<QuicSession*>(session_.get())
->SetDefaultEncryptionLevel(ENCRYPTION_ZERO_RTT);
@@ -769,9 +770,9 @@
const uint64_t kHeaderLength = UsesHttp3() ? 2 : 0;
if (UsesHttp3()) {
- EXPECT_CALL(*session_, WritevData(_, kHeaderLength, _, NO_FIN, _));
+ EXPECT_CALL(*session_, WritevData(_, kHeaderLength, _, NO_FIN, _, _));
}
- EXPECT_CALL(*session_, WritevData(_, _, _, _, _))
+ EXPECT_CALL(*session_, WritevData(_, _, _, _, _, _))
.WillOnce(Return(QuicConsumedData(kWindow - kHeaderLength, true)));
EXPECT_CALL(*connection_, SendControlFrame(_));
stream_->WriteOrBufferBody(body, false);
@@ -1047,7 +1048,7 @@
EXPECT_CALL(*connection_,
SendBlocked(GetNthClientInitiatedBidirectionalId(0)))
.Times(0);
- EXPECT_CALL(*session_, WritevData(_, 0, _, FIN, _));
+ EXPECT_CALL(*session_, WritevData(_, 0, _, FIN, _, _));
stream_->WriteOrBufferBody(body, fin);
}
@@ -1290,7 +1291,7 @@
// In this case, TestStream::WriteHeadersImpl() does not prevent writes.
// Four writes on the request stream: HEADERS frame header and payload both
// for headers and trailers.
- EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _)).Times(4);
+ EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _, _)).Times(4);
}
// Write the initial headers, without a FIN.
@@ -1314,13 +1315,13 @@
// Four writes on the request stream: HEADERS frame header and payload both
// for headers and trailers.
- EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _)).Times(4);
+ EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _, _)).Times(4);
// 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->id(), _, _, _, _))
+ EXPECT_CALL(*session_, WritevData(send_control_stream->id(), _, _, _, _, _))
.Times(0);
// Write the initial headers, without a FIN.
@@ -1343,14 +1344,14 @@
InitializeWithPerspective(kShouldProcessData, Perspective::IS_CLIENT);
// Two writes on the request stream: HEADERS frame header and payload.
- EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _)).Times(2);
+ EXPECT_CALL(*session_, WritevData(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->id(), _, _, _, _));
+ EXPECT_CALL(*session_, WritevData(send_control_stream->id(), _, _, _, _, _));
stream_->SetPriority(spdy::SpdyStreamPrecedence(kV3HighestPriority));
}
@@ -1365,14 +1366,14 @@
// is called, before HEADERS frame is sent.
auto send_control_stream =
QuicSpdySessionPeer::GetSendControlStream(session_.get());
- EXPECT_CALL(*session_, WritevData(send_control_stream->id(), _, _, _, _));
+ EXPECT_CALL(*session_, WritevData(send_control_stream->id(), _, _, _, _, _));
stream_->SetPriority(spdy::SpdyStreamPrecedence(kV3HighestPriority));
testing::Mock::VerifyAndClearExpectations(session_.get());
// Two writes on the request stream: HEADERS frame header and payload.
// PRIORITY_UPDATE frame is not sent this time, because one is already sent.
- EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _)).Times(2);
+ EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _, _)).Times(2);
EXPECT_CALL(*stream_, WriteHeadersMock(true));
stream_->WriteHeaders(SpdyHeaderBlock(), /*fin=*/true, nullptr);
}
@@ -1385,7 +1386,7 @@
if (UsesHttp3()) {
// In this case, TestStream::WriteHeadersImpl() does not prevent writes.
// HEADERS frame header and payload on the request stream.
- EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _)).Times(2);
+ EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _, _)).Times(2);
}
// Write the initial headers.
@@ -1393,7 +1394,7 @@
stream_->WriteHeaders(SpdyHeaderBlock(), /*fin=*/false, nullptr);
// Write non-zero body data to force a non-zero final offset.
- EXPECT_CALL(*session_, WritevData(_, _, _, _, _)).Times(AtLeast(1));
+ EXPECT_CALL(*session_, WritevData(_, _, _, _, _, _)).Times(AtLeast(1));
std::string body(1024, 'x'); // 1 kB
QuicByteCount header_length = 0;
if (UsesHttp3()) {
@@ -1428,7 +1429,7 @@
// Expect data being written on the stream. In addition to that, headers are
// also written on the stream in case of IETF QUIC.
- EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _))
+ EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _, _))
.Times(AtLeast(1));
// Write the initial headers.
@@ -1467,9 +1468,9 @@
// Write non-zero body data, but only consume partially, ensuring queueing.
const int kBodySize = 1 * 1024; // 1 kB
if (UsesHttp3()) {
- EXPECT_CALL(*session_, WritevData(_, 3, _, NO_FIN, _));
+ EXPECT_CALL(*session_, WritevData(_, 3, _, NO_FIN, _, _));
}
- EXPECT_CALL(*session_, WritevData(_, kBodySize, _, NO_FIN, _))
+ EXPECT_CALL(*session_, WritevData(_, kBodySize, _, NO_FIN, _, _))
.WillOnce(Return(QuicConsumedData(kBodySize - 1, false)));
stream_->WriteOrBufferBody(std::string(kBodySize, 'x'), false);
EXPECT_EQ(1u, stream_->BufferedDataBytes());
@@ -1482,7 +1483,7 @@
EXPECT_FALSE(stream_->write_side_closed());
// Writing the queued bytes will close the write side of the stream.
- EXPECT_CALL(*session_, WritevData(_, 1, _, NO_FIN, _));
+ EXPECT_CALL(*session_, WritevData(_, 1, _, NO_FIN, _, _));
stream_->OnCanWrite();
EXPECT_TRUE(stream_->write_side_closed());
}
@@ -1520,7 +1521,7 @@
const char kBody2[] = "Test2";
Initialize(kShouldProcessData);
- EXPECT_CALL(*session_, WritevData(_, _, _, _, _)).Times(AtLeast(1));
+ EXPECT_CALL(*session_, WritevData(_, _, _, _, _, _)).Times(AtLeast(1));
testing::InSequence s;
QuicReferenceCountedPointer<MockAckListener> ack_listener1(
new MockAckListener());
@@ -1566,7 +1567,7 @@
TEST_P(QuicSpdyStreamTest, StreamBecomesZombieWithWriteThatCloses) {
Initialize(kShouldProcessData);
- EXPECT_CALL(*session_, WritevData(_, _, _, _, _)).Times(AtLeast(1));
+ EXPECT_CALL(*session_, WritevData(_, _, _, _, _, _)).Times(AtLeast(1));
QuicStreamPeer::CloseReadSide(stream_);
// This write causes stream to be closed.
stream_->WriteOrBufferBody("Test1", true);
@@ -1588,9 +1589,9 @@
Initialize(kShouldProcessData);
if (UsesHttp3()) {
- EXPECT_CALL(*session_, WritevData(_, 2, _, NO_FIN, _));
+ EXPECT_CALL(*session_, WritevData(_, 2, _, NO_FIN, _, _));
}
- EXPECT_CALL(*session_, WritevData(_, 4, _, FIN, _));
+ EXPECT_CALL(*session_, WritevData(_, 4, _, FIN, _, _));
stream_->WriteOrBufferBody("data", true);
stream_->OnPriorityFrame(spdy::SpdyStreamPrecedence(kV3HighestPriority));
EXPECT_EQ(spdy::SpdyStreamPrecedence(kV3HighestPriority),
@@ -1627,7 +1628,7 @@
QuicReferenceCountedPointer<MockAckListener> mock_ack_listener(
new StrictMock<MockAckListener>);
stream_->set_ack_listener(mock_ack_listener);
- EXPECT_CALL(*session_, WritevData(_, _, _, _, _)).Times(AtLeast(1));
+ EXPECT_CALL(*session_, WritevData(_, _, _, _, _, _)).Times(AtLeast(1));
// Stream is not waiting for acks initially.
EXPECT_FALSE(stream_->IsWaitingForAcks());
EXPECT_EQ(0u, QuicStreamPeer::SendBuffer(stream_).size());
@@ -1681,7 +1682,7 @@
QuicReferenceCountedPointer<MockAckListener> mock_ack_listener(
new StrictMock<MockAckListener>);
stream_->set_ack_listener(mock_ack_listener);
- EXPECT_CALL(*session_, WritevData(_, _, _, _, _)).Times(AtLeast(1));
+ EXPECT_CALL(*session_, WritevData(_, _, _, _, _, _)).Times(AtLeast(1));
// Send [0, 27) and fin.
stream_->WriteOrBufferData("FooAndBar", false, nullptr);
stream_->WriteOrBufferData("FooAndBar", false, nullptr);
@@ -1749,7 +1750,7 @@
std::string body = "Test1";
std::string body2(100, 'x');
- EXPECT_CALL(*session_, WritevData(_, _, _, _, _)).Times(AtLeast(1));
+ EXPECT_CALL(*session_, WritevData(_, _, _, _, _, _)).Times(AtLeast(1));
stream_->WriteOrBufferBody(body, false);
stream_->WriteOrBufferBody(body2, true);
@@ -1802,7 +1803,7 @@
helper_.GetStreamSendBufferAllocator(), 1024);
QuicMemSliceStorage storage2(&body2_iov, 1,
helper_.GetStreamSendBufferAllocator(), 1024);
- EXPECT_CALL(*session_, WritevData(_, _, _, _, _)).Times(AtLeast(1));
+ EXPECT_CALL(*session_, WritevData(_, _, _, _, _, _)).Times(AtLeast(1));
stream_->WriteBodySlices(storage.ToSpan(), false);
stream_->WriteBodySlices(storage2.ToSpan(), true);
@@ -1832,7 +1833,7 @@
std::string body1 = "Test1";
std::string body2(100, 'x');
- EXPECT_CALL(*session_, WritevData(_, _, _, _, _)).Times(AtLeast(1));
+ EXPECT_CALL(*session_, WritevData(_, _, _, _, _, _)).Times(AtLeast(1));
stream_->WriteOrBufferBody(body1, false);
stream_->WriteOrBufferBody(body2, true);
@@ -2022,7 +2023,7 @@
QuicSpdySessionPeer::GetQpackDecoderSendStream(session_.get());
// The stream byte will be written in the first byte.
- EXPECT_CALL(*session_, WritevData(decoder_send_stream->id(), _, _, _, _));
+ EXPECT_CALL(*session_, WritevData(decoder_send_stream->id(), _, _, _, _, _));
// Deliver dynamic table entry to decoder.
session_->qpack_decoder()->OnInsertWithoutNameReference("foo", "bar");
@@ -2044,7 +2045,7 @@
headers.length(), data));
EXPECT_EQ(kDataFramePayload, stream_->data());
- EXPECT_CALL(*session_, WritevData(decoder_send_stream->id(), _, _, _, _));
+ EXPECT_CALL(*session_, WritevData(decoder_send_stream->id(), _, _, _, _, _));
// Deliver second dynamic table entry to decoder.
session_->qpack_decoder()->OnInsertWithoutNameReference("trailing", "foobar");
@@ -2085,7 +2086,7 @@
QuicSpdySessionPeer::GetQpackDecoderSendStream(session_.get());
// The stream byte will be written in the first byte.
- EXPECT_CALL(*session_, WritevData(decoder_send_stream->id(), _, _, _, _));
+ EXPECT_CALL(*session_, WritevData(decoder_send_stream->id(), _, _, _, _, _));
// Deliver dynamic table entry to decoder.
session_->qpack_decoder()->OnInsertWithoutNameReference("foo", "bar");
EXPECT_TRUE(stream_->headers_decompressed());
@@ -2110,7 +2111,7 @@
// Decoding is blocked because dynamic table entry has not been received yet.
EXPECT_FALSE(stream_->trailers_decompressed());
- EXPECT_CALL(*session_, WritevData(decoder_send_stream->id(), _, _, _, _));
+ EXPECT_CALL(*session_, WritevData(decoder_send_stream->id(), _, _, _, _, _));
// Deliver second dynamic table entry to decoder.
session_->qpack_decoder()->OnInsertWithoutNameReference("trailing", "foobar");
EXPECT_TRUE(stream_->trailers_decompressed());
@@ -2204,7 +2205,7 @@
QuicSpdySessionPeer::GetQpackDecoderSendStream(session_.get());
// The stream byte will be written in the first byte.
- EXPECT_CALL(*session_, WritevData(decoder_send_stream->id(), _, _, _, _));
+ EXPECT_CALL(*session_, WritevData(decoder_send_stream->id(), _, _, _, _, _));
// Deliver dynamic table entry to decoder.
session_->qpack_decoder()->OnInsertWithoutNameReference("foo", "bar");
EXPECT_TRUE(stream_->headers_decompressed());
@@ -2633,7 +2634,7 @@
auto qpack_decoder_stream =
QuicSpdySessionPeer::GetQpackDecoderSendStream(session_.get());
- EXPECT_CALL(*session_, WritevData(qpack_decoder_stream->id(), 1, 1, _, _));
+ EXPECT_CALL(*session_, WritevData(qpack_decoder_stream->id(), 1, 1, _, _, _));
EXPECT_CALL(*session_,
SendRstStream(stream_->id(), QUIC_STREAM_CANCELLED, 0));
@@ -2651,7 +2652,7 @@
auto qpack_decoder_stream =
QuicSpdySessionPeer::GetQpackDecoderSendStream(session_.get());
- EXPECT_CALL(*session_, WritevData(qpack_decoder_stream->id(), 1, 1, _, _));
+ EXPECT_CALL(*session_, WritevData(qpack_decoder_stream->id(), 1, 1, _, _, _));
stream_->OnStreamReset(QuicRstStreamFrame(
kInvalidControlFrameId, stream_->id(), QUIC_STREAM_CANCELLED, 0));