This change migrates SpdyHeaderStorage from SpdyUnsafeArena to SpdySimpleArena. SpdyUnsafeArena has different backing implementations per platform.

SpdySimpleArena offers the same interface but is strictly superior, as it does not allocate memory upon construction. This will allow some simplification in SpdyHeaderBlock and SpdyHeaderStorage.

gfe-relnote: Migrates google3 to use the same arena implementation as Chromium. No functional change; not protected.
PiperOrigin-RevId: 284766924
Change-Id: I8a57e4f5d65eece951ffc64d1edce9fc9e796853
diff --git a/spdy/core/spdy_header_storage.cc b/spdy/core/spdy_header_storage.cc
index 7028e90..e84b3be 100644
--- a/spdy/core/spdy_header_storage.cc
+++ b/spdy/core/spdy_header_storage.cc
@@ -1,5 +1,7 @@
 #include "net/third_party/quiche/src/spdy/core/spdy_header_storage.h"
 
+#include "net/third_party/quiche/src/spdy/platform/api/spdy_logging.h"
+
 namespace spdy {
 namespace {
 
diff --git a/spdy/core/spdy_header_storage.h b/spdy/core/spdy_header_storage.h
index 26ae2ae..fd31555 100644
--- a/spdy/core/spdy_header_storage.h
+++ b/spdy/core/spdy_header_storage.h
@@ -1,9 +1,9 @@
 #ifndef QUICHE_SPDY_CORE_SPDY_HEADER_STORAGE_H_
 #define QUICHE_SPDY_CORE_SPDY_HEADER_STORAGE_H_
 
+#include "net/third_party/quiche/src/spdy/core/spdy_simple_arena.h"
 #include "net/third_party/quiche/src/spdy/platform/api/spdy_export.h"
 #include "net/third_party/quiche/src/spdy/platform/api/spdy_string_piece.h"
-#include "net/third_party/quiche/src/spdy/platform/api/spdy_unsafe_arena.h"
 
 namespace spdy {
 
@@ -19,6 +19,7 @@
 class SPDY_EXPORT_PRIVATE SpdyHeaderStorage {
  public:
   SpdyHeaderStorage();
+
   SpdyHeaderStorage(const SpdyHeaderStorage&) = delete;
   SpdyHeaderStorage& operator=(const SpdyHeaderStorage&) = delete;
 
@@ -41,7 +42,7 @@
   size_t EstimateMemoryUsage() const { return bytes_allocated(); }
 
  private:
-  SpdyUnsafeArena arena_;
+  SpdySimpleArena arena_;
 };
 
 // Writes |fragments| to |dst|, joined by |separator|. |dst| must be large
diff --git a/spdy/core/spdy_simple_arena_test.cc b/spdy/core/spdy_simple_arena_test.cc
index 60bbe24..b0da896 100644
--- a/spdy/core/spdy_simple_arena_test.cc
+++ b/spdy/core/spdy_simple_arena_test.cc
@@ -16,6 +16,11 @@
 size_t kDefaultBlockSize = 2048;
 const char kTestString[] = "This is a decently long test string.";
 
+TEST(SpdySimpleArenaTest, NoAllocationOnConstruction) {
+  SpdySimpleArena arena(kDefaultBlockSize);
+  EXPECT_EQ(0, arena.status().bytes_allocated());
+}
+
 TEST(SpdySimpleArenaTest, Memdup) {
   SpdySimpleArena arena(kDefaultBlockSize);
   const size_t length = strlen(kTestString);