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));