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;