This change simplifies SpdyHeaderBlock and SpdyHeaderStorage, now that the underlying arena implementation does not allocate memory upon construction.

gfe-relnote: Code simplifications to classes in //third_party/spdy, no functional change; not protected.
PiperOrigin-RevId: 284805587
Change-Id: I3b0cbdda821c1f2ea89b9f880d76a3132490b196
diff --git a/spdy/core/spdy_header_block.h b/spdy/core/spdy_header_block.h
index ff5f4c9..bd575f4 100644
--- a/spdy/core/spdy_header_block.h
+++ b/spdy/core/spdy_header_block.h
@@ -8,7 +8,6 @@
 #include <stddef.h>
 
 #include <list>
-#include <memory>
 #include <string>
 #include <utility>
 #include <vector>
@@ -51,6 +50,8 @@
     HeaderValue(HeaderValue&& other);
     HeaderValue& operator=(HeaderValue&& other);
 
+    void set_storage(SpdyHeaderStorage* storage);
+
     // Copies are not.
     HeaderValue(const HeaderValue& other) = delete;
     HeaderValue& operator=(const HeaderValue& other) = delete;
@@ -225,14 +226,12 @@
   friend class test::SpdyHeaderBlockPeer;
 
   void AppendHeader(const SpdyStringPiece key, const SpdyStringPiece value);
-  SpdyHeaderStorage* GetStorage();
   SpdyStringPiece WriteKey(const SpdyStringPiece key);
   size_t bytes_allocated() const;
 
-  // SpdyStringPieces held by |map_| point to memory owned by |*storage_|.
-  // |storage_| might be nullptr as long as |map_| is empty.
+  // SpdyStringPieces held by |map_| point to memory owned by |storage_|.
   MapType map_;
-  std::unique_ptr<SpdyHeaderStorage> storage_;
+  SpdyHeaderStorage storage_;
 
   size_t key_size_ = 0;
   size_t value_size_ = 0;