Make QpackEncoder::EncodeHeaderList() and FirstPassEncode() take header_list by const ref.
Changing argument type from const* to const&, as discussed on cr/264499016.
gfe-relnote: n/a, change method signatures, no functional change.
PiperOrigin-RevId: 264808104
Change-Id: I84d6c8c6d4446648bd675e6d9cd58fdd50501693
diff --git a/quic/core/http/end_to_end_test.cc b/quic/core/http/end_to_end_test.cc
index 27d3785..6eb6ac6 100644
--- a/quic/core/http/end_to_end_test.cc
+++ b/quic/core/http/end_to_end_test.cc
@@ -2469,7 +2469,7 @@
qpack_encoder.set_qpack_stream_sender_delegate(
&encoder_stream_sender_delegate);
std::string encoded_headers =
- qpack_encoder.EncodeHeaderList(/* stream_id = */ 0, &headers);
+ qpack_encoder.EncodeHeaderList(/* stream_id = */ 0, headers);
header_size = encoded_headers.size();
}
diff --git a/quic/core/http/quic_spdy_session.cc b/quic/core/http/quic_spdy_session.cc
index 29c6d9d..c869459 100644
--- a/quic/core/http/quic_spdy_session.cc
+++ b/quic/core/http/quic_spdy_session.cc
@@ -545,7 +545,7 @@
// Encode header list.
std::string encoded_headers =
- qpack_encoder_->EncodeHeaderList(original_stream_id, &headers);
+ qpack_encoder_->EncodeHeaderList(original_stream_id, headers);
PushPromiseFrame frame;
frame.push_id = promised_stream_id;
frame.headers = encoded_headers;
diff --git a/quic/core/http/quic_spdy_stream.cc b/quic/core/http/quic_spdy_stream.cc
index 2471756..464c0a3 100644
--- a/quic/core/http/quic_spdy_stream.cc
+++ b/quic/core/http/quic_spdy_stream.cc
@@ -1018,7 +1018,7 @@
// Encode header list.
std::string encoded_headers =
- spdy_session_->qpack_encoder()->EncodeHeaderList(id(), &header_block);
+ spdy_session_->qpack_encoder()->EncodeHeaderList(id(), header_block);
// Write HEADERS frame.
std::unique_ptr<char[]> headers_frame_header;
diff --git a/quic/core/http/quic_spdy_stream_test.cc b/quic/core/http/quic_spdy_stream_test.cc
index f247df4..8b1c922 100644
--- a/quic/core/http/quic_spdy_stream_test.cc
+++ b/quic/core/http/quic_spdy_stream_test.cc
@@ -184,7 +184,7 @@
&encoder_stream_sender_delegate);
// QpackEncoder does not use the dynamic table by default,
// therefore the value of |stream_id| does not matter.
- return qpack_encoder->EncodeHeaderList(/* stream_id = */ 0, &header);
+ return qpack_encoder->EncodeHeaderList(/* stream_id = */ 0, header);
}
void Initialize(bool stream_should_process_data) {
diff --git a/quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc b/quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc
index 53cd279..624eca5 100644
--- a/quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc
+++ b/quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc
@@ -50,7 +50,7 @@
}
std::string EncodeHeaderList(QuicStreamId stream_id,
- const spdy::SpdyHeaderBlock* header_list) {
+ const spdy::SpdyHeaderBlock& header_list) {
return encoder_.EncodeHeaderList(stream_id, header_list);
}
@@ -614,7 +614,7 @@
// Encode header list.
std::string encoded_header_block =
- encoder.EncodeHeaderList(stream_id, &header_list);
+ encoder.EncodeHeaderList(stream_id, header_list);
// TODO(bnc): Randomly cancel the stream.
diff --git a/quic/core/qpack/qpack_encoder.cc b/quic/core/qpack/qpack_encoder.cc
index 31bebcc..370887a 100644
--- a/quic/core/qpack/qpack_encoder.cc
+++ b/quic/core/qpack/qpack_encoder.cc
@@ -86,10 +86,10 @@
}
QpackEncoder::Instructions QpackEncoder::FirstPassEncode(
- const spdy::SpdyHeaderBlock* header_list,
+ const spdy::SpdyHeaderBlock& header_list,
QpackBlockingManager::IndexSet* referred_indices) {
Instructions instructions;
- instructions.reserve(header_list->size());
+ instructions.reserve(header_list.size());
// The index of the oldest entry that must not be evicted.
uint64_t smallest_blocking_index =
@@ -108,8 +108,8 @@
const bool blocking_allowed =
maximum_blocked_streams_ > blocking_manager_.blocked_stream_count();
- for (const auto& header : ValueSplittingHeaderList(header_list)) {
- // These strings are owned by |*header_list|.
+ for (const auto& header : ValueSplittingHeaderList(&header_list)) {
+ // These strings are owned by |header_list|.
QuicStringPiece name = header.first;
QuicStringPiece value = header.second;
@@ -296,7 +296,7 @@
std::string QpackEncoder::EncodeHeaderList(
QuicStreamId stream_id,
- const spdy::SpdyHeaderBlock* header_list) {
+ const spdy::SpdyHeaderBlock& header_list) {
// Keep track of all dynamic table indices that this header block refers to so
// that it can be passed to QpackBlockingManager.
QpackBlockingManager::IndexSet referred_indices;
diff --git a/quic/core/qpack/qpack_encoder.h b/quic/core/qpack/qpack_encoder.h
index 55dd1e9..67f1faa 100644
--- a/quic/core/qpack/qpack_encoder.h
+++ b/quic/core/qpack/qpack_encoder.h
@@ -50,9 +50,8 @@
~QpackEncoder() override;
// Encode a header list.
- // TODO(bnc): Take |header_list| by const reference instead of pointer.
std::string EncodeHeaderList(QuicStreamId stream_id,
- const spdy::SpdyHeaderBlock* header_list);
+ const spdy::SpdyHeaderBlock& header_list);
// Set maximum capacity of dynamic table, measured in bytes.
// Called when SETTINGS_QPACK_MAX_TABLE_CAPACITY is received.
@@ -125,9 +124,8 @@
// header field representations, with all dynamic table entries referred to
// with absolute indices. Returned Instructions object may have
// QuicStringPieces pointing to strings owned by |*header_list|.
- // TODO(bnc): Take |header_list| by const reference instead of pointer.
Instructions FirstPassEncode(
- const spdy::SpdyHeaderBlock* header_list,
+ const spdy::SpdyHeaderBlock& header_list,
QpackBlockingManager::IndexSet* referred_indices);
// Performs second pass of two-pass encoding: serializes representations
diff --git a/quic/core/qpack/qpack_encoder_test.cc b/quic/core/qpack/qpack_encoder_test.cc
index 01452ab..f23cb8b 100644
--- a/quic/core/qpack/qpack_encoder_test.cc
+++ b/quic/core/qpack/qpack_encoder_test.cc
@@ -30,7 +30,7 @@
~QpackEncoderTest() override = default;
- std::string Encode(const spdy::SpdyHeaderBlock* header_list) {
+ std::string Encode(const spdy::SpdyHeaderBlock& header_list) {
return encoder_.EncodeHeaderList(/* stream_id = */ 1, header_list);
}
@@ -41,7 +41,7 @@
TEST_F(QpackEncoderTest, Empty) {
spdy::SpdyHeaderBlock header_list;
- std::string output = Encode(&header_list);
+ std::string output = Encode(header_list);
EXPECT_EQ(QuicTextUtils::HexDecode("0000"), output);
}
@@ -49,7 +49,7 @@
TEST_F(QpackEncoderTest, EmptyName) {
spdy::SpdyHeaderBlock header_list;
header_list[""] = "foo";
- std::string output = Encode(&header_list);
+ std::string output = Encode(header_list);
EXPECT_EQ(QuicTextUtils::HexDecode("0000208294e7"), output);
}
@@ -57,7 +57,7 @@
TEST_F(QpackEncoderTest, EmptyValue) {
spdy::SpdyHeaderBlock header_list;
header_list["foo"] = "";
- std::string output = Encode(&header_list);
+ std::string output = Encode(header_list);
EXPECT_EQ(QuicTextUtils::HexDecode("00002a94e700"), output);
}
@@ -65,7 +65,7 @@
TEST_F(QpackEncoderTest, EmptyNameAndValue) {
spdy::SpdyHeaderBlock header_list;
header_list[""] = "";
- std::string output = Encode(&header_list);
+ std::string output = Encode(header_list);
EXPECT_EQ(QuicTextUtils::HexDecode("00002000"), output);
}
@@ -73,7 +73,7 @@
TEST_F(QpackEncoderTest, Simple) {
spdy::SpdyHeaderBlock header_list;
header_list["foo"] = "bar";
- std::string output = Encode(&header_list);
+ std::string output = Encode(header_list);
EXPECT_EQ(QuicTextUtils::HexDecode("00002a94e703626172"), output);
}
@@ -83,7 +83,7 @@
header_list["foo"] = "bar";
// 'Z' would be Huffman encoded to 8 bits, so no Huffman encoding is used.
header_list["ZZZZZZZ"] = std::string(127, 'Z');
- std::string output = Encode(&header_list);
+ std::string output = Encode(header_list);
EXPECT_EQ(
QuicTextUtils::HexDecode(
@@ -107,7 +107,7 @@
header_list["accept-encoding"] = "gzip, deflate, br";
header_list["location"] = "";
- std::string output = Encode(&header_list);
+ std::string output = Encode(header_list);
EXPECT_EQ(QuicTextUtils::HexDecode("0000d1dfcc"), output);
}
{
@@ -116,7 +116,7 @@
header_list["accept-encoding"] = "compress";
header_list["location"] = "foo";
- std::string output = Encode(&header_list);
+ std::string output = Encode(header_list);
EXPECT_EQ(QuicTextUtils::HexDecode("0000d45f108621e9aec2a11f5c8294e7"),
output);
}
@@ -125,7 +125,7 @@
header_list[":method"] = "TRACE";
header_list["accept-encoding"] = "";
- std::string output = Encode(&header_list);
+ std::string output = Encode(header_list);
EXPECT_EQ(QuicTextUtils::HexDecode("00005f000554524143455f1000"), output);
}
}
@@ -143,7 +143,7 @@
TEST_F(QpackEncoderTest, SplitAlongNullCharacter) {
spdy::SpdyHeaderBlock header_list;
header_list["foo"] = QuicStringPiece("bar\0bar\0baz", 11);
- std::string output = Encode(&header_list);
+ std::string output = Encode(header_list);
EXPECT_EQ(QuicTextUtils::HexDecode("0000" // prefix
"2a94e703626172" // foo: bar
@@ -209,7 +209,7 @@
EXPECT_EQ(QuicTextUtils::HexDecode(
"0400" // prefix
"828180"), // dynamic entries with relative index 0, 1, and 2
- Encode(&header_list));
+ Encode(header_list));
}
// There is no room in the dynamic table after inserting the first entry.
@@ -239,7 +239,7 @@
"0362617a" // with literal value "baz"
"23626172" // literal name "bar"
"0362617a"), // with literal value "baz"
- Encode(&header_list));
+ Encode(header_list));
}
TEST_F(QpackEncoderTest, BlockedStream) {
@@ -258,7 +258,7 @@
EXPECT_EQ(QuicTextUtils::HexDecode("0200" // prefix
"80"), // dynamic entry 0
- encoder_.EncodeHeaderList(/* stream_id = */ 1, &header_list1));
+ encoder_.EncodeHeaderList(/* stream_id = */ 1, header_list1));
// Stream 1 is blocked. Stream 2 is not allowed to block.
spdy::SpdyHeaderBlock header_list2;
@@ -277,7 +277,7 @@
"0362617a" // with literal value "baz"
"23626172" // literal name "bar"
"0362617a"), // with literal value "baz"
- encoder_.EncodeHeaderList(/* stream_id = */ 2, &header_list2));
+ encoder_.EncodeHeaderList(/* stream_id = */ 2, header_list2));
// Peer acknowledges receipt of one dynamic table entry.
// Stream 1 is no longer blocked.
@@ -299,7 +299,7 @@
"0362617a")))); // value "baz"
EXPECT_EQ(QuicTextUtils::HexDecode("0500" // prefix
"83828180"), // dynamic entries
- encoder_.EncodeHeaderList(/* stream_id = */ 3, &header_list2));
+ encoder_.EncodeHeaderList(/* stream_id = */ 3, header_list2));
// Stream 3 is blocked. Stream 4 is not allowed to block, but it can
// reference already acknowledged dynamic entry 0.
@@ -311,7 +311,7 @@
"0362617a" // with literal value "baz"
"23626172" // literal name "bar"
"0362617a"), // with literal value "baz"
- encoder_.EncodeHeaderList(/* stream_id = */ 4, &header_list2));
+ encoder_.EncodeHeaderList(/* stream_id = */ 4, header_list2));
// Peer acknowledges receipt of two more dynamic table entries.
// Stream 3 is still blocked.
@@ -323,7 +323,7 @@
"828180" // dynamic entries
"23626172" // literal name "bar"
"0362617a"), // with literal value "baz"
- encoder_.EncodeHeaderList(/* stream_id = */ 5, &header_list2));
+ encoder_.EncodeHeaderList(/* stream_id = */ 5, header_list2));
// Peer acknowledges decoding header block on stream 3.
// Stream 3 is not blocked any longer.
@@ -331,7 +331,7 @@
EXPECT_EQ(QuicTextUtils::HexDecode("0500" // prefix
"83828180"), // dynamic entries
- encoder_.EncodeHeaderList(/* stream_id = */ 6, &header_list2));
+ encoder_.EncodeHeaderList(/* stream_id = */ 6, header_list2));
}
TEST_F(QpackEncoderTest, Draining) {
@@ -368,7 +368,7 @@
EXPECT_EQ(
QuicTextUtils::HexDecode("0b00" // prefix
"89888786858483828180"), // dynamic entries
- Encode(&header_list1));
+ Encode(header_list1));
// Entry is identical to oldest one, which is draining. It will be
// duplicated and referenced.
@@ -381,7 +381,7 @@
EXPECT_EQ(QuicTextUtils::HexDecode("0c00" // prefix
"80"), // most recent dynamic table entry
- Encode(&header_list2));
+ Encode(header_list2));
spdy::SpdyHeaderBlock header_list3;
// Entry is identical to second oldest one, which is draining. There is no
@@ -396,7 +396,7 @@
"8294e7" // literal value "foo"
"2374776f" // literal name "two"
"03626172"), // literal value "bar"
- Encode(&header_list3));
+ Encode(header_list3));
}
} // namespace
diff --git a/quic/core/qpack/qpack_round_trip_test.cc b/quic/core/qpack/qpack_round_trip_test.cc
index 48249b0..9441b82 100644
--- a/quic/core/qpack/qpack_round_trip_test.cc
+++ b/quic/core/qpack/qpack_round_trip_test.cc
@@ -32,7 +32,7 @@
QpackEncoder encoder(&decoder_stream_error_delegate);
encoder.set_qpack_stream_sender_delegate(&encoder_stream_sender_delegate);
std::string encoded_header_block =
- encoder.EncodeHeaderList(/* stream_id = */ 1, &header_list);
+ encoder.EncodeHeaderList(/* stream_id = */ 1, header_list);
TestHeadersHandler handler;
NoopEncoderStreamErrorDelegate encoder_stream_error_delegate;