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;