Transforms the output parameter of HpackEncoder::EncodeHeaderSet into a return value. This replaces the preexisting bool return value, which is never checked outside of tests.

This refactoring requires renaming the method, as otherwise the overload that returns a ProgressiveEncoder conflicts.

Protected by refactoring, no functional change expected.

PiperOrigin-RevId: 393446298
diff --git a/http2/adapter/test_frame_sequence.cc b/http2/adapter/test_frame_sequence.cc
index bb1517d..346eac8 100644
--- a/http2/adapter/test_frame_sequence.cc
+++ b/http2/adapter/test_frame_sequence.cc
@@ -102,10 +102,9 @@
     // nonterminal HEADERS frame explicitly, so we'll need to use
     // SpdyUnknownIRs. For simplicity, and in order not to mess up HPACK state,
     // the payload will be uncompressed.
-    std::string encoded_block;
     spdy::HpackEncoder encoder;
     encoder.DisableCompression();
-    encoder.EncodeHeaderSet(block, &encoded_block);
+    std::string encoded_block = encoder.EncodeHeaderBlock(block);
     const size_t pos = encoded_block.size() / 2;
     const uint8_t flags = fin ? 0x1 : 0x0;
     frames_.push_back(absl::make_unique<spdy::SpdyUnknownIR>(
@@ -186,9 +185,7 @@
   block["example-payload"] = payload;
   spdy::HpackEncoder encoder;
   encoder.DisableCompression();
-  std::string encoded_payload;
-  encoder.EncodeHeaderSet(block, &encoded_payload);
-  return encoded_payload;
+  return encoder.EncodeHeaderBlock(block);
 }
 
 }  // namespace test
diff --git a/http2/adapter/test_utils.cc b/http2/adapter/test_utils.cc
index 43ad61c..80e113e 100644
--- a/http2/adapter/test_utils.cc
+++ b/http2/adapter/test_utils.cc
@@ -77,9 +77,7 @@
 std::string EncodeHeaders(const spdy::SpdyHeaderBlock& entries) {
   spdy::HpackEncoder encoder;
   encoder.DisableCompression();
-  std::string result;
-  QUICHE_CHECK(encoder.EncodeHeaderSet(entries, &result));
-  return result;
+  return encoder.EncodeHeaderBlock(entries);
 }
 
 TestMetadataSource::TestMetadataSource(const spdy::SpdyHeaderBlock& entries)
diff --git a/spdy/core/hpack/hpack_decoder_adapter_test.cc b/spdy/core/hpack/hpack_decoder_adapter_test.cc
index 8aa588d..53e4939 100644
--- a/spdy/core/hpack/hpack_decoder_adapter_test.cc
+++ b/spdy/core/hpack/hpack_decoder_adapter_test.cc
@@ -709,9 +709,8 @@
   expected_header_set[":path"] = "/";
   expected_header_set[":authority"] = "www.example.com";
 
-  std::string encoded_header_set;
-  EXPECT_TRUE(
-      encoder.EncodeHeaderSet(expected_header_set, &encoded_header_set));
+  std::string encoded_header_set =
+      encoder.EncodeHeaderBlock(expected_header_set);
 
   EXPECT_TRUE(DecodeHeaderBlock(encoded_header_set));
   EXPECT_EQ(expected_header_set, decoded_block());
diff --git a/spdy/core/hpack/hpack_encoder.cc b/spdy/core/hpack/hpack_encoder.cc
index 4b87a0e..1821d7c 100644
--- a/spdy/core/hpack/hpack_encoder.cc
+++ b/spdy/core/hpack/hpack_encoder.cc
@@ -84,8 +84,7 @@
 
 HpackEncoder::~HpackEncoder() = default;
 
-bool HpackEncoder::EncodeHeaderSet(const SpdyHeaderBlock& header_set,
-                                   std::string* output) {
+std::string HpackEncoder::EncodeHeaderBlock(const SpdyHeaderBlock& header_set) {
   // Separate header set into pseudo-headers and regular headers.
   Representations pseudo_headers;
   Representations regular_headers;
@@ -104,11 +103,8 @@
     }
   }
 
-  {
-    RepresentationIterator iter(pseudo_headers, regular_headers);
-    EncodeRepresentations(&iter, output);
-  }
-  return true;
+  RepresentationIterator iter(pseudo_headers, regular_headers);
+  return EncodeRepresentations(&iter);
 }
 
 void HpackEncoder::ApplyHeaderTableSizeSetting(size_t size_setting) {
@@ -123,8 +119,7 @@
   should_emit_table_size_ = true;
 }
 
-void HpackEncoder::EncodeRepresentations(RepresentationIterator* iter,
-                                         std::string* output) {
+std::string HpackEncoder::EncodeRepresentations(RepresentationIterator* iter) {
   MaybeEmitTableSize();
   while (iter->HasNext()) {
     const auto header = iter->Next();
@@ -144,7 +139,7 @@
     }
   }
 
-  *output = output_stream_.TakeString();
+  return output_stream_.TakeString();
 }
 
 void HpackEncoder::EmitIndex(size_t index) {
diff --git a/spdy/core/hpack/hpack_encoder.h b/spdy/core/hpack/hpack_encoder.h
index bed59f7..0529297 100644
--- a/spdy/core/hpack/hpack_encoder.h
+++ b/spdy/core/hpack/hpack_encoder.h
@@ -49,9 +49,8 @@
   HpackEncoder& operator=(const HpackEncoder&) = delete;
   ~HpackEncoder();
 
-  // Encodes the given header set into the given string. Returns
-  // whether or not the encoding was successful.
-  bool EncodeHeaderSet(const SpdyHeaderBlock& header_set, std::string* output);
+  // Encodes and returns the given header set as a string.
+  std::string EncodeHeaderBlock(const SpdyHeaderBlock& header_set);
 
   class QUICHE_EXPORT_PRIVATE ProgressiveEncoder {
    public:
@@ -105,7 +104,7 @@
   class Encoderator;
 
   // Encodes a sequence of header name-value pairs as a single header block.
-  void EncodeRepresentations(RepresentationIterator* iter, std::string* output);
+  std::string EncodeRepresentations(RepresentationIterator* iter);
 
   // Emits a static/dynamic indexed representation (Section 7.1).
   void EmitIndex(size_t index);
diff --git a/spdy/core/hpack/hpack_encoder_test.cc b/spdy/core/hpack/hpack_encoder_test.cc
index af73889..c47bf97 100644
--- a/spdy/core/hpack/hpack_encoder_test.cc
+++ b/spdy/core/hpack/hpack_encoder_test.cc
@@ -71,10 +71,9 @@
 
   // TODO(dahollings): Remove or clean up these methods when deprecating
   // non-incremental encoding path.
-  static bool EncodeHeaderSet(HpackEncoder* encoder,
-                              const SpdyHeaderBlock& header_set,
-                              std::string* output) {
-    return encoder->EncodeHeaderSet(header_set, output);
+  static std::string EncodeHeaderBlock(HpackEncoder* encoder,
+                                       const SpdyHeaderBlock& header_set) {
+    return encoder->EncodeHeaderBlock(header_set);
   }
 
   static bool EncodeIncremental(HpackEncoder* encoder,
@@ -221,8 +220,8 @@
     std::string expected_out = expected_.TakeString();
     switch (strategy_) {
       case kDefault:
-        EXPECT_TRUE(test::HpackEncoderPeer::EncodeHeaderSet(
-            &encoder_, header_set, &actual_out));
+        actual_out =
+            test::HpackEncoderPeer::EncodeHeaderBlock(&encoder_, header_set);
         break;
       case kIncremental:
         EXPECT_TRUE(test::HpackEncoderPeer::EncodeIncremental(
diff --git a/spdy/core/hpack/hpack_round_trip_test.cc b/spdy/core/hpack/hpack_round_trip_test.cc
index 3f92e0d..42a4f2e 100644
--- a/spdy/core/hpack/hpack_round_trip_test.cc
+++ b/spdy/core/hpack/hpack_round_trip_test.cc
@@ -31,8 +31,7 @@
   }
 
   bool RoundTrip(const SpdyHeaderBlock& header_set) {
-    std::string encoded;
-    encoder_.EncodeHeaderSet(header_set, &encoded);
+    std::string encoded = encoder_.EncodeHeaderBlock(header_set);
 
     bool success = true;
     if (GetParam() == ALL_INPUT) {
diff --git a/spdy/core/spdy_framer.cc b/spdy/core/spdy_framer.cc
index 580d1e2..d1d0102 100644
--- a/spdy/core/spdy_framer.cc
+++ b/spdy/core/spdy_framer.cc
@@ -577,7 +577,8 @@
     *size = *size + 5;
   }
 
-  GetHpackEncoder()->EncodeHeaderSet(headers.header_block(), hpack_encoding);
+  *hpack_encoding =
+      GetHpackEncoder()->EncodeHeaderBlock(headers.header_block());
   *size = *size + hpack_encoding->size();
   if (*size > kHttp2MaxControlFrameSendSize) {
     *size = *size + GetNumberRequiredContinuationFrames(*size) *
@@ -670,8 +671,8 @@
     *size = *size + push_promise.padding_payload_len();
   }
 
-  GetHpackEncoder()->EncodeHeaderSet(push_promise.header_block(),
-                                     hpack_encoding);
+  *hpack_encoding =
+      GetHpackEncoder()->EncodeHeaderBlock(push_promise.header_block());
   *size = *size + hpack_encoding->size();
   if (*size > kHttp2MaxControlFrameSendSize) {
     *size = *size + GetNumberRequiredContinuationFrames(*size) *
diff --git a/spdy/core/spdy_framer_test.cc b/spdy/core/spdy_framer_test.cc
index 138c487..058c26f 100644
--- a/spdy/core/spdy_framer_test.cc
+++ b/spdy/core/spdy_framer_test.cc
@@ -1112,10 +1112,9 @@
   // TODO(jgraettinger): If this pattern appears again, move to test class.
   Http2HeaderBlock header_set;
   header_set["name"] = value;
-  std::string buffer;
   HpackEncoder encoder;
   encoder.DisableCompression();
-  encoder.EncodeHeaderSet(header_set, &buffer);
+  std::string buffer = encoder.EncodeHeaderBlock(header_set);
   // Frame builder with plentiful buffer size.
   SpdyFrameBuilder frame(1024);
   frame.BeginNewFrame(SpdyFrameType::HEADERS,
@@ -2401,10 +2400,9 @@
   Http2HeaderBlock header_block;
   header_block["bar"] = "foo";
   header_block["foo"] = "bar";
-  std::string buffer;
   HpackEncoder encoder;
   encoder.DisableCompression();
-  encoder.EncodeHeaderSet(header_block, &buffer);
+  std::string buffer = encoder.EncodeHeaderBlock(header_block);
 
   SpdyContinuationIR continuation(/* stream_id = */ 42);
   continuation.take_encoding(std::move(buffer));