gfe-relnote: Fixes HPACK encoding of SpdyHeaderBlocks when compression is disabled. No functional change in production.

For HTTP/2, compression is always enabled in production. Shinkansen metadata uses a different HpackEncoder API that is not affected by this CL.

PiperOrigin-RevId: 285208542
Change-Id: I8c755500bb4c1004d264c7663bc4d6308a0b06ce
diff --git a/spdy/core/hpack/hpack_encoder.cc b/spdy/core/hpack/hpack_encoder.cc
index 39a4de8..368754e 100644
--- a/spdy/core/hpack/hpack_encoder.cc
+++ b/spdy/core/hpack/hpack_encoder.cc
@@ -271,12 +271,6 @@
   }
 }
 
-// static
-void HpackEncoder::GatherRepresentation(const Representation& header_field,
-                                        Representations* out) {
-  out->push_back(std::make_pair(header_field.first, header_field.second));
-}
-
 // Iteratively encodes a SpdyHeaderBlock.
 class HpackEncoder::Encoderator : public ProgressiveEncoder {
  public:
@@ -306,7 +300,6 @@
                                        HpackEncoder* encoder)
     : encoder_(encoder), has_next_(true) {
   // Separate header set into pseudo-headers and regular headers.
-  const bool use_compression = encoder_->enable_compression_;
   bool found_cookie = false;
   for (const auto& header : header_set) {
     if (!found_cookie && header.first == "cookie") {
@@ -316,11 +309,9 @@
       CookieToCrumbs(header, &regular_headers_);
     } else if (!header.first.empty() &&
                header.first[0] == kPseudoHeaderPrefix) {
-      use_compression ? DecomposeRepresentation(header, &pseudo_headers_)
-                      : GatherRepresentation(header, &pseudo_headers_);
+      DecomposeRepresentation(header, &pseudo_headers_);
     } else {
-      use_compression ? DecomposeRepresentation(header, &regular_headers_)
-                      : GatherRepresentation(header, &regular_headers_);
+      DecomposeRepresentation(header, &regular_headers_);
     }
   }
   header_it_ = std::make_unique<RepresentationIterator>(pseudo_headers_,
diff --git a/spdy/core/hpack/hpack_encoder.h b/spdy/core/hpack/hpack_encoder.h
index d3bfc95..03c9d92 100644
--- a/spdy/core/hpack/hpack_encoder.h
+++ b/spdy/core/hpack/hpack_encoder.h
@@ -137,10 +137,6 @@
   static void DecomposeRepresentation(const Representation& header_field,
                                       Representations* out);
 
-  // Gathers headers without crumbling. Used when compression is not enabled.
-  static void GatherRepresentation(const Representation& header_field,
-                                   Representations* out);
-
   HpackHeaderTable header_table_;
   HpackOutputStream output_stream_;
 
diff --git a/spdy/core/hpack/hpack_encoder_test.cc b/spdy/core/hpack/hpack_encoder_test.cc
index fb09301..b18abad 100644
--- a/spdy/core/hpack/hpack_encoder_test.cc
+++ b/spdy/core/hpack/hpack_encoder_test.cc
@@ -426,8 +426,7 @@
   ExpectNonIndexedLiteral(":path", "/index.html");
   ExpectNonIndexedLiteral("cookie", "foo=bar");
   ExpectNonIndexedLiteral("cookie", "baz=bing");
-  if (strategy_ != kDefault) {
-    // BUG: encodes as a \0-delimited value. Should be separate entries.
+  if (strategy_ == kRepresentations) {
     ExpectNonIndexedLiteral("hello", std::string("goodbye\0aloha", 13));
   } else {
     ExpectNonIndexedLiteral("hello", "goodbye");
@@ -444,9 +443,7 @@
 
   CompareWithExpectedEncoding(headers);
 
-  if (strategy_ != kDefault) {
-    // BUG: value for "hello" encodes as \0-delimited. Should be separate
-    // entries.
+  if (strategy_ == kRepresentations) {
     EXPECT_THAT(
         headers_observed_,
         ElementsAre(Pair(":path", "/index.html"), Pair("cookie", "foo=bar"),