Move QuicBufferAllocator and SimpleBufferAllocator to third_party/quiche.

Move QuicBufferAllocator and SimpleBufferAllocator from third_party/quic/core to
third_party/quiche/common, because they are used by QuicheMemSliceStorage and
its tests in third_party/quiche/common/.

PiperOrigin-RevId: 432173303
diff --git a/common/platform/api/quiche_mem_slice.h b/common/platform/api/quiche_mem_slice.h
index 61249bc..ce59c75 100644
--- a/common/platform/api/quiche_mem_slice.h
+++ b/common/platform/api/quiche_mem_slice.h
@@ -9,8 +9,8 @@
 
 #include "quiche_platform_impl/quiche_mem_slice_impl.h"
 #include "absl/strings/string_view.h"
-#include "quic/core/quic_buffer_allocator.h"
 #include "common/platform/api/quiche_export.h"
+#include "common/quiche_buffer_allocator.h"
 
 namespace quiche {
 
@@ -24,7 +24,7 @@
   // Constructs a QuicheMemSlice that takes ownership of |buffer|.  The length
   // of the |buffer| must not be zero.  To construct an empty QuicheMemSlice,
   // use the zero-argument constructor instead.
-  explicit QuicheMemSlice(quic::QuicBuffer buffer) : impl_(std::move(buffer)) {}
+  explicit QuicheMemSlice(QuicheBuffer buffer) : impl_(std::move(buffer)) {}
 
   // Constructs a QuicheMemSlice that takes ownership of |buffer| allocated on
   // heap.  |length| must not be zero.
diff --git a/common/platform/api/quiche_mem_slice_test.cc b/common/platform/api/quiche_mem_slice_test.cc
index 4500b5d..e110f90 100644
--- a/common/platform/api/quiche_mem_slice_test.cc
+++ b/common/platform/api/quiche_mem_slice_test.cc
@@ -7,9 +7,9 @@
 #include <memory>
 
 #include "absl/strings/string_view.h"
-#include "quic/core/quic_buffer_allocator.h"
-#include "quic/core/quic_simple_buffer_allocator.h"
 #include "common/platform/api/quiche_test.h"
+#include "common/quiche_buffer_allocator.h"
+#include "common/simple_buffer_allocator.h"
 
 namespace quiche {
 namespace test {
@@ -19,12 +19,12 @@
  public:
   QuicheMemSliceTest() {
     size_t length = 1024;
-    slice_ = QuicheMemSlice(quic::QuicBuffer(&allocator_, length));
+    slice_ = QuicheMemSlice(QuicheBuffer(&allocator_, length));
     orig_data_ = slice_.data();
     orig_length_ = slice_.length();
   }
 
-  quic::SimpleBufferAllocator allocator_;
+  SimpleBufferAllocator allocator_;
   QuicheMemSlice slice_;
   const char* orig_data_;
   size_t orig_length_;
@@ -62,7 +62,7 @@
 TEST_F(QuicheMemSliceTest, SliceFromBuffer) {
   const absl::string_view kTestString =
       "RFC 9000 Release Celebration Memorial Test String";
-  auto buffer = quic::QuicBuffer::Copy(&allocator_, kTestString);
+  auto buffer = QuicheBuffer::Copy(&allocator_, kTestString);
   QuicheMemSlice slice(std::move(buffer));
 
   EXPECT_EQ(buffer.data(), nullptr);  // NOLINT(bugprone-use-after-move)
diff --git a/common/platform/default/quiche_platform_impl/quiche_mem_slice_impl.h b/common/platform/default/quiche_platform_impl/quiche_mem_slice_impl.h
index 0d13dec..2db6c44 100644
--- a/common/platform/default/quiche_platform_impl/quiche_mem_slice_impl.h
+++ b/common/platform/default/quiche_platform_impl/quiche_mem_slice_impl.h
@@ -1,9 +1,9 @@
 #ifndef QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_MEM_SLICE_IMPL_H_
 #define QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_MEM_SLICE_IMPL_H_
 
-#include "quic/core/quic_buffer_allocator.h"
-#include "quic/core/quic_simple_buffer_allocator.h"
 #include "common/platform/api/quiche_export.h"
+#include "common/quiche_buffer_allocator.h"
+#include "common/simple_buffer_allocator.h"
 
 namespace quiche {
 
@@ -11,15 +11,15 @@
  public:
   QuicheMemSliceImpl() = default;
 
-  explicit QuicheMemSliceImpl(quic::QuicBuffer buffer)
+  explicit QuicheMemSliceImpl(QuicheBuffer buffer)
       : buffer_(std::move(buffer)) {}
 
   QuicheMemSliceImpl(std::unique_ptr<char[]> buffer, size_t length)
-      : buffer_(quic::QuicBuffer(
-            quic::QuicUniqueBufferPtr(
-                buffer.release(),
-                quic::QuicBufferDeleter(quic::SimpleBufferAllocator::Get())),
-            length)) {}
+      : buffer_(
+            QuicheBuffer(QuicheUniqueBufferPtr(
+                             buffer.release(),
+                             QuicheBufferDeleter(SimpleBufferAllocator::Get())),
+                         length)) {}
 
   QuicheMemSliceImpl(const QuicheMemSliceImpl& other) = delete;
   QuicheMemSliceImpl& operator=(const QuicheMemSliceImpl& other) = delete;
@@ -31,14 +31,14 @@
 
   ~QuicheMemSliceImpl() = default;
 
-  void Reset() { buffer_ = quic::QuicBuffer(); }
+  void Reset() { buffer_ = QuicheBuffer(); }
 
   const char* data() const { return buffer_.data(); }
   size_t length() const { return buffer_.size(); }
   bool empty() const { return buffer_.empty(); }
 
  private:
-  quic::QuicBuffer buffer_;
+  QuicheBuffer buffer_;
 };
 
 }  // namespace quiche
diff --git a/common/quiche_buffer_allocator.h b/common/quiche_buffer_allocator.h
new file mode 100644
index 0000000..40140ac
--- /dev/null
+++ b/common/quiche_buffer_allocator.h
@@ -0,0 +1,117 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef QUICHE_COMMON_QUICHE_BUFFER_ALLOCATOR_H_
+#define QUICHE_COMMON_QUICHE_BUFFER_ALLOCATOR_H_
+
+#include <stddef.h>
+
+#include <memory>
+
+#include "absl/strings/string_view.h"
+#include "common/platform/api/quiche_export.h"
+
+namespace quiche {
+
+// Abstract base class for classes which allocate and delete buffers.
+class QUICHE_EXPORT_PRIVATE QuicheBufferAllocator {
+ public:
+  virtual ~QuicheBufferAllocator() = default;
+
+  // Returns or allocates a new buffer of |size|. Never returns null.
+  virtual char* New(size_t size) = 0;
+
+  // Returns or allocates a new buffer of |size| if |flag_enable| is true.
+  // Otherwise, returns a buffer that is compatible with this class directly
+  // with operator new. Never returns null.
+  virtual char* New(size_t size, bool flag_enable) = 0;
+
+  // Releases a buffer.
+  virtual void Delete(char* buffer) = 0;
+
+  // Marks the allocator as being idle. Serves as a hint to notify the allocator
+  // that it should release any resources it's still holding on to.
+  virtual void MarkAllocatorIdle() {}
+};
+
+// A deleter that can be used to manage ownership of buffers allocated via
+// QuicheBufferAllocator through std::unique_ptr.
+class QUICHE_EXPORT_PRIVATE QuicheBufferDeleter {
+ public:
+  explicit QuicheBufferDeleter(QuicheBufferAllocator* allocator)
+      : allocator_(allocator) {}
+
+  QuicheBufferAllocator* allocator() { return allocator_; }
+  void operator()(char* buffer) { allocator_->Delete(buffer); }
+
+ private:
+  QuicheBufferAllocator* allocator_;
+};
+
+using QuicheUniqueBufferPtr = std::unique_ptr<char[], QuicheBufferDeleter>;
+
+inline QuicheUniqueBufferPtr MakeUniqueBuffer(QuicheBufferAllocator* allocator,
+                                              size_t size) {
+  return QuicheUniqueBufferPtr(allocator->New(size),
+                               QuicheBufferDeleter(allocator));
+}
+
+// QuicheUniqueBufferPtr with a length attached to it.  Similar to
+// QuicheMemSlice, except unlike QuicheMemSlice, QuicheBuffer is mutable and is
+// not platform-specific.  Also unlike QuicheMemSlice, QuicheBuffer can be
+// empty.
+class QUICHE_EXPORT_PRIVATE QuicheBuffer {
+ public:
+  QuicheBuffer() : buffer_(nullptr, QuicheBufferDeleter(nullptr)), size_(0) {}
+  QuicheBuffer(QuicheBufferAllocator* allocator, size_t size)
+      : buffer_(MakeUniqueBuffer(allocator, size)), size_(size) {}
+
+  QuicheBuffer(QuicheUniqueBufferPtr buffer, size_t size)
+      : buffer_(std::move(buffer)), size_(size) {}
+
+  // Make sure the move constructor zeroes out the size field.
+  QuicheBuffer(QuicheBuffer&& other)
+      : buffer_(std::move(other.buffer_)), size_(other.size_) {
+    other.buffer_ = nullptr;
+    other.size_ = 0;
+  }
+  QuicheBuffer& operator=(QuicheBuffer&& other) {
+    buffer_ = std::move(other.buffer_);
+    size_ = other.size_;
+
+    other.buffer_ = nullptr;
+    other.size_ = 0;
+    return *this;
+  }
+
+  // Factory method to create a QuicheBuffer that holds a copy of `data`.
+  static QuicheBuffer Copy(QuicheBufferAllocator* allocator,
+                           absl::string_view data) {
+    QuicheBuffer result(allocator, data.size());
+    memcpy(result.data(), data.data(), data.size());
+    return result;
+  }
+
+  const char* data() const { return buffer_.get(); }
+  char* data() { return buffer_.get(); }
+  size_t size() const { return size_; }
+  bool empty() const { return size_ == 0; }
+  absl::string_view AsStringView() const {
+    return absl::string_view(data(), size());
+  }
+
+  // Releases the ownership of the underlying buffer.
+  QuicheUniqueBufferPtr Release() {
+    size_ = 0;
+    return std::move(buffer_);
+  }
+
+ private:
+  QuicheUniqueBufferPtr buffer_;
+  size_t size_;
+};
+
+}  // namespace quiche
+
+#endif  // QUICHE_COMMON_QUICHE_BUFFER_ALLOCATOR_H_
diff --git a/common/quiche_mem_slice_storage.cc b/common/quiche_mem_slice_storage.cc
index e3e1c5a..2b1b5e1 100644
--- a/common/quiche_mem_slice_storage.cc
+++ b/common/quiche_mem_slice_storage.cc
@@ -9,8 +9,7 @@
 namespace quiche {
 
 QuicheMemSliceStorage::QuicheMemSliceStorage(
-    const struct iovec* iov, int iov_count,
-    quic::QuicBufferAllocator* allocator,
+    const struct iovec* iov, int iov_count, QuicheBufferAllocator* allocator,
     const quic::QuicByteCount max_slice_len) {
   if (iov == nullptr) {
     return;
@@ -24,7 +23,7 @@
   size_t io_offset = 0;
   while (write_len > 0) {
     size_t slice_len = std::min(write_len, max_slice_len);
-    quic::QuicBuffer buffer(allocator, slice_len);
+    QuicheBuffer buffer(allocator, slice_len);
     quic::QuicUtils::CopyToBuffer(iov, iov_count, io_offset, slice_len,
                                   buffer.data());
     storage_.push_back(QuicheMemSlice(std::move(buffer)));
diff --git a/common/quiche_mem_slice_storage.h b/common/quiche_mem_slice_storage.h
index 6ec68bb..155169f 100644
--- a/common/quiche_mem_slice_storage.h
+++ b/common/quiche_mem_slice_storage.h
@@ -8,11 +8,11 @@
 #include <vector>
 
 #include "absl/types/span.h"
-#include "quic/core/quic_buffer_allocator.h"
 #include "quic/core/quic_types.h"
 #include "quic/platform/api/quic_iovec.h"
 #include "common/platform/api/quiche_export.h"
 #include "common/platform/api/quiche_mem_slice.h"
+#include "common/quiche_buffer_allocator.h"
 
 namespace quiche {
 
@@ -21,7 +21,7 @@
 class QUICHE_EXPORT_PRIVATE QuicheMemSliceStorage {
  public:
   QuicheMemSliceStorage(const struct iovec* iov, int iov_count,
-                        quic::QuicBufferAllocator* allocator,
+                        QuicheBufferAllocator* allocator,
                         const quic::QuicByteCount max_slice_len);
 
   QuicheMemSliceStorage(const QuicheMemSliceStorage& other) = default;
diff --git a/common/quiche_mem_slice_storage_test.cc b/common/quiche_mem_slice_storage_test.cc
index a07c71d..15d8294 100644
--- a/common/quiche_mem_slice_storage_test.cc
+++ b/common/quiche_mem_slice_storage_test.cc
@@ -4,8 +4,8 @@
 
 #include "common/quiche_mem_slice_storage.h"
 
-#include "quic/core/quic_simple_buffer_allocator.h"
 #include "common/platform/api/quiche_test.h"
+#include "common/simple_buffer_allocator.h"
 
 namespace quiche {
 namespace test {
@@ -22,7 +22,7 @@
 }
 
 TEST_F(QuicheMemSliceStorageImplTest, SingleIov) {
-  quic::SimpleBufferAllocator allocator;
+  SimpleBufferAllocator allocator;
   std::string body(3, 'c');
   struct iovec iov = {const_cast<char*>(body.data()), body.length()};
   QuicheMemSliceStorage storage(&iov, 1, &allocator, 1024);
@@ -32,7 +32,7 @@
 }
 
 TEST_F(QuicheMemSliceStorageImplTest, MultipleIovInSingleSlice) {
-  quic::SimpleBufferAllocator allocator;
+  SimpleBufferAllocator allocator;
   std::string body1(3, 'a');
   std::string body2(4, 'b');
   struct iovec iov[] = {{const_cast<char*>(body1.data()), body1.length()},
@@ -44,7 +44,7 @@
 }
 
 TEST_F(QuicheMemSliceStorageImplTest, MultipleIovInMultipleSlice) {
-  quic::SimpleBufferAllocator allocator;
+  SimpleBufferAllocator allocator;
   std::string body1(4, 'a');
   std::string body2(4, 'b');
   struct iovec iov[] = {{const_cast<char*>(body1.data()), body1.length()},
diff --git a/quic/core/quic_simple_buffer_allocator.cc b/common/simple_buffer_allocator.cc
similarity index 81%
rename from quic/core/quic_simple_buffer_allocator.cc
rename to common/simple_buffer_allocator.cc
index aba8c43..64501a1 100644
--- a/quic/core/quic_simple_buffer_allocator.cc
+++ b/common/simple_buffer_allocator.cc
@@ -2,9 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "quic/core/quic_simple_buffer_allocator.h"
+#include "common/simple_buffer_allocator.h"
 
-namespace quic {
+namespace quiche {
 
 char* SimpleBufferAllocator::New(size_t size) {
   return new char[size];
@@ -18,4 +18,4 @@
   delete[] buffer;
 }
 
-}  // namespace quic
+}  // namespace quiche
diff --git a/quic/core/quic_simple_buffer_allocator.h b/common/simple_buffer_allocator.h
similarity index 62%
rename from quic/core/quic_simple_buffer_allocator.h
rename to common/simple_buffer_allocator.h
index 62f406b..586c0f3 100644
--- a/quic/core/quic_simple_buffer_allocator.h
+++ b/common/simple_buffer_allocator.h
@@ -2,18 +2,19 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef QUICHE_QUIC_CORE_QUIC_SIMPLE_BUFFER_ALLOCATOR_H_
-#define QUICHE_QUIC_CORE_QUIC_SIMPLE_BUFFER_ALLOCATOR_H_
+#ifndef QUICHE_COMMON_QUICHE_SIMPLE_BUFFER_ALLOCATOR_H_
+#define QUICHE_COMMON_QUICHE_SIMPLE_BUFFER_ALLOCATOR_H_
 
-#include "quic/core/quic_buffer_allocator.h"
-#include "quic/platform/api/quic_export.h"
+#include "common/platform/api/quiche_export.h"
+#include "common/quiche_buffer_allocator.h"
 
-namespace quic {
+namespace quiche {
 
 // Provides buffer allocation using operators new[] and delete[] on char arrays.
 // Note that some of the QUICHE code relies on this being the case for deleting
 // new[]-allocated arrays from elsewhere.
-class QUIC_EXPORT_PRIVATE SimpleBufferAllocator : public QuicBufferAllocator {
+class QUICHE_EXPORT_PRIVATE SimpleBufferAllocator
+    : public QuicheBufferAllocator {
  public:
   static SimpleBufferAllocator* Get() {
     static SimpleBufferAllocator* singleton = new SimpleBufferAllocator();
@@ -25,6 +26,6 @@
   void Delete(char* buffer) override;
 };
 
-}  // namespace quic
+}  // namespace quiche
 
-#endif  // QUICHE_QUIC_CORE_QUIC_SIMPLE_BUFFER_ALLOCATOR_H_
+#endif  // QUICHE_COMMON_QUICHE_SIMPLE_BUFFER_ALLOCATOR_H_
diff --git a/quic/core/quic_simple_buffer_allocator_test.cc b/common/simple_buffer_allocator_test.cc
similarity index 63%
rename from quic/core/quic_simple_buffer_allocator_test.cc
rename to common/simple_buffer_allocator_test.cc
index 5416cd4..e768bbb 100644
--- a/quic/core/quic_simple_buffer_allocator_test.cc
+++ b/common/simple_buffer_allocator_test.cc
@@ -2,46 +2,43 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "quic/core/quic_simple_buffer_allocator.h"
+#include "common/simple_buffer_allocator.h"
 
-#include "quic/core/quic_packets.h"
-#include "quic/platform/api/quic_test.h"
+#include "common/platform/api/quiche_test.h"
 
-namespace quic {
+namespace quiche {
 namespace {
 
-class SimpleBufferAllocatorTest : public QuicTest {};
-
-TEST_F(SimpleBufferAllocatorTest, NewDelete) {
+TEST(SimpleBufferAllocatorTest, NewDelete) {
   SimpleBufferAllocator alloc;
   char* buf = alloc.New(4);
   EXPECT_NE(nullptr, buf);
   alloc.Delete(buf);
 }
 
-TEST_F(SimpleBufferAllocatorTest, DeleteNull) {
+TEST(SimpleBufferAllocatorTest, DeleteNull) {
   SimpleBufferAllocator alloc;
   alloc.Delete(nullptr);
 }
 
-TEST_F(SimpleBufferAllocatorTest, MoveBuffersConstructor) {
+TEST(SimpleBufferAllocatorTest, MoveBuffersConstructor) {
   SimpleBufferAllocator alloc;
-  QuicBuffer buffer1(&alloc, 16);
+  QuicheBuffer buffer1(&alloc, 16);
 
   EXPECT_NE(buffer1.data(), nullptr);
   EXPECT_EQ(buffer1.size(), 16u);
 
-  QuicBuffer buffer2(std::move(buffer1));
+  QuicheBuffer buffer2(std::move(buffer1));
   EXPECT_EQ(buffer1.data(), nullptr);  // NOLINT(bugprone-use-after-move)
   EXPECT_EQ(buffer1.size(), 0u);
   EXPECT_NE(buffer2.data(), nullptr);
   EXPECT_EQ(buffer2.size(), 16u);
 }
 
-TEST_F(SimpleBufferAllocatorTest, MoveBuffersAssignment) {
+TEST(SimpleBufferAllocatorTest, MoveBuffersAssignment) {
   SimpleBufferAllocator alloc;
-  QuicBuffer buffer1(&alloc, 16);
-  QuicBuffer buffer2;
+  QuicheBuffer buffer1(&alloc, 16);
+  QuicheBuffer buffer2;
 
   EXPECT_NE(buffer1.data(), nullptr);
   EXPECT_EQ(buffer1.size(), 16u);
@@ -55,12 +52,12 @@
   EXPECT_EQ(buffer2.size(), 16u);
 }
 
-TEST_F(SimpleBufferAllocatorTest, CopyBuffer) {
+TEST(SimpleBufferAllocatorTest, CopyBuffer) {
   SimpleBufferAllocator alloc;
   const absl::string_view original = "Test string";
-  QuicBuffer copy = QuicBuffer::Copy(&alloc, original);
+  QuicheBuffer copy = QuicheBuffer::Copy(&alloc, original);
   EXPECT_EQ(copy.AsStringView(), original);
 }
 
 }  // namespace
-}  // namespace quic
+}  // namespace quiche
diff --git a/quic/core/frames/quic_crypto_frame.h b/quic/core/frames/quic_crypto_frame.h
index e1e79a6..6e15fbe 100644
--- a/quic/core/frames/quic_crypto_frame.h
+++ b/quic/core/frames/quic_crypto_frame.h
@@ -9,7 +9,6 @@
 #include <ostream>
 
 #include "absl/strings/string_view.h"
-#include "quic/core/quic_buffer_allocator.h"
 #include "quic/core/quic_types.h"
 #include "quic/platform/api/quic_export.h"
 
diff --git a/quic/core/frames/quic_frame.cc b/quic/core/frames/quic_frame.cc
index e83e422..48bc12a 100644
--- a/quic/core/frames/quic_frame.cc
+++ b/quic/core/frames/quic_frame.cc
@@ -6,12 +6,12 @@
 
 #include "quic/core/frames/quic_new_connection_id_frame.h"
 #include "quic/core/frames/quic_retire_connection_id_frame.h"
-#include "quic/core/quic_buffer_allocator.h"
 #include "quic/core/quic_constants.h"
 #include "quic/core/quic_types.h"
 #include "quic/platform/api/quic_bug_tracker.h"
 #include "quic/platform/api/quic_logging.h"
 #include "common/platform/api/quiche_mem_slice.h"
+#include "common/quiche_buffer_allocator.h"
 
 namespace quic {
 
@@ -327,7 +327,7 @@
   return copy;
 }
 
-QuicFrame CopyQuicFrame(QuicBufferAllocator* allocator,
+QuicFrame CopyQuicFrame(quiche::QuicheBufferAllocator* allocator,
                         const QuicFrame& frame) {
   QuicFrame copy;
   switch (frame.type) {
@@ -392,7 +392,8 @@
       copy.message_frame->data = frame.message_frame->data;
       copy.message_frame->message_length = frame.message_frame->message_length;
       for (const auto& slice : frame.message_frame->message_data) {
-        QuicBuffer buffer = QuicBuffer::Copy(allocator, slice.AsStringView());
+        quiche::QuicheBuffer buffer =
+            quiche::QuicheBuffer::Copy(allocator, slice.AsStringView());
         copy.message_frame->message_data.push_back(
             quiche::QuicheMemSlice(std::move(buffer)));
       }
@@ -419,7 +420,7 @@
   return copy;
 }
 
-QuicFrames CopyQuicFrames(QuicBufferAllocator* allocator,
+QuicFrames CopyQuicFrames(quiche::QuicheBufferAllocator* allocator,
                           const QuicFrames& frames) {
   QuicFrames copy;
   for (const auto& frame : frames) {
diff --git a/quic/core/frames/quic_frame.h b/quic/core/frames/quic_frame.h
index 9ee4568..7de9bb6 100644
--- a/quic/core/frames/quic_frame.h
+++ b/quic/core/frames/quic_frame.h
@@ -163,12 +163,12 @@
 CopyRetransmittableControlFrame(const QuicFrame& frame);
 
 // Returns a copy of |frame|.
-QUIC_EXPORT_PRIVATE QuicFrame CopyQuicFrame(QuicBufferAllocator* allocator,
-                                            const QuicFrame& frame);
+QUIC_EXPORT_PRIVATE QuicFrame
+CopyQuicFrame(quiche::QuicheBufferAllocator* allocator, const QuicFrame& frame);
 
 // Returns a copy of |frames|.
-QUIC_EXPORT_PRIVATE QuicFrames CopyQuicFrames(QuicBufferAllocator* allocator,
-                                              const QuicFrames& frames);
+QUIC_EXPORT_PRIVATE QuicFrames CopyQuicFrames(
+    quiche::QuicheBufferAllocator* allocator, const QuicFrames& frames);
 
 // Human-readable description suitable for logging.
 QUIC_EXPORT_PRIVATE std::string QuicFramesToString(const QuicFrames& frames);
diff --git a/quic/core/frames/quic_frames_test.cc b/quic/core/frames/quic_frames_test.cc
index 43eabf7..6955094 100644
--- a/quic/core/frames/quic_frames_test.cc
+++ b/quic/core/frames/quic_frames_test.cc
@@ -625,7 +625,8 @@
     }
   }
 
-  QuicFrames copy = CopyQuicFrames(SimpleBufferAllocator::Get(), frames);
+  QuicFrames copy =
+      CopyQuicFrames(quiche::SimpleBufferAllocator::Get(), frames);
   ASSERT_EQ(NUM_FRAME_TYPES, copy.size());
   for (uint8_t i = 0; i < NUM_FRAME_TYPES; ++i) {
     EXPECT_EQ(i, copy[i].type);
diff --git a/quic/core/frames/quic_new_token_frame.h b/quic/core/frames/quic_new_token_frame.h
index 805216b..d0d7e8e 100644
--- a/quic/core/frames/quic_new_token_frame.h
+++ b/quic/core/frames/quic_new_token_frame.h
@@ -9,7 +9,6 @@
 #include <ostream>
 
 #include "absl/strings/string_view.h"
-#include "quic/core/quic_buffer_allocator.h"
 #include "quic/core/quic_constants.h"
 #include "quic/core/quic_types.h"
 #include "quic/platform/api/quic_export.h"
diff --git a/quic/core/frames/quic_stream_frame.h b/quic/core/frames/quic_stream_frame.h
index 9ba8ccc..2e2daba 100644
--- a/quic/core/frames/quic_stream_frame.h
+++ b/quic/core/frames/quic_stream_frame.h
@@ -10,7 +10,6 @@
 
 #include "absl/strings/string_view.h"
 #include "quic/core/frames/quic_inlined_frame.h"
-#include "quic/core/quic_buffer_allocator.h"
 #include "quic/core/quic_types.h"
 #include "quic/platform/api/quic_export.h"
 
diff --git a/quic/core/http/capsule.cc b/quic/core/http/capsule.cc
index 21df166..fd89b38 100644
--- a/quic/core/http/capsule.cc
+++ b/quic/core/http/capsule.cc
@@ -392,8 +392,8 @@
   QUICHE_DCHECK_NE(visitor_, nullptr);
 }
 
-QuicBuffer SerializeCapsule(const Capsule& capsule,
-                            QuicBufferAllocator* allocator) {
+quiche::QuicheBuffer SerializeCapsule(
+    const Capsule& capsule, quiche::QuicheBufferAllocator* allocator) {
   QuicByteCount capsule_type_length = QuicDataWriter::GetVarInt62Len(
       static_cast<uint64_t>(capsule.capsule_type()));
   QuicByteCount capsule_data_length;
@@ -454,15 +454,15 @@
       QuicDataWriter::GetVarInt62Len(capsule_data_length);
   QuicByteCount total_capsule_length =
       capsule_type_length + capsule_length_length + capsule_data_length;
-  QuicBuffer buffer(allocator, total_capsule_length);
+  quiche::QuicheBuffer buffer(allocator, total_capsule_length);
   QuicDataWriter writer(buffer.size(), buffer.data());
   if (!writer.WriteVarInt62(static_cast<uint64_t>(capsule.capsule_type()))) {
     QUIC_BUG(capsule type write fail) << "Failed to write CAPSULE type";
-    return QuicBuffer();
+    return {};
   }
   if (!writer.WriteVarInt62(capsule_data_length)) {
     QUIC_BUG(capsule length write fail) << "Failed to write CAPSULE length";
-    return QuicBuffer();
+    return {};
   }
   switch (capsule.capsule_type()) {
     case CapsuleType::LEGACY_DATAGRAM:
@@ -471,14 +471,14 @@
                 capsule.legacy_datagram_capsule().context_id.value())) {
           QUIC_BUG(datagram capsule context ID write fail)
               << "Failed to write LEGACY_DATAGRAM CAPSULE context ID";
-          return QuicBuffer();
+          return {};
         }
       }
       if (!writer.WriteStringPiece(
               capsule.legacy_datagram_capsule().http_datagram_payload)) {
         QUIC_BUG(datagram capsule payload write fail)
             << "Failed to write LEGACY_DATAGRAM CAPSULE payload";
-        return QuicBuffer();
+        return {};
       }
       break;
     case CapsuleType::DATAGRAM_WITH_CONTEXT:
@@ -486,13 +486,13 @@
               capsule.datagram_with_context_capsule().context_id)) {
         QUIC_BUG(datagram capsule context ID write fail)
             << "Failed to write DATAGRAM_WITH_CONTEXT CAPSULE context ID";
-        return QuicBuffer();
+        return {};
       }
       if (!writer.WriteStringPiece(
               capsule.datagram_with_context_capsule().http_datagram_payload)) {
         QUIC_BUG(datagram capsule payload write fail)
             << "Failed to write DATAGRAM_WITH_CONTEXT CAPSULE payload";
-        return QuicBuffer();
+        return {};
       }
       break;
     case CapsuleType::DATAGRAM_WITHOUT_CONTEXT:
@@ -500,7 +500,7 @@
                                        .http_datagram_payload)) {
         QUIC_BUG(datagram capsule payload write fail)
             << "Failed to write DATAGRAM_WITHOUT_CONTEXT CAPSULE payload";
-        return QuicBuffer();
+        return {};
       }
       break;
     case CapsuleType::REGISTER_DATAGRAM_CONTEXT:
@@ -508,20 +508,20 @@
               capsule.register_datagram_context_capsule().context_id)) {
         QUIC_BUG(register context capsule context ID write fail)
             << "Failed to write REGISTER_DATAGRAM_CONTEXT CAPSULE context ID";
-        return QuicBuffer();
+        return {};
       }
       if (!writer.WriteVarInt62(static_cast<uint64_t>(
               capsule.register_datagram_context_capsule().format_type))) {
         QUIC_BUG(register context capsule format type write fail)
             << "Failed to write REGISTER_DATAGRAM_CONTEXT CAPSULE format type";
-        return QuicBuffer();
+        return {};
       }
       if (!writer.WriteStringPiece(capsule.register_datagram_context_capsule()
                                        .format_additional_data)) {
         QUIC_BUG(register context capsule additional data write fail)
             << "Failed to write REGISTER_DATAGRAM_CONTEXT CAPSULE additional "
                "data";
-        return QuicBuffer();
+        return {};
       }
       break;
     case CapsuleType::REGISTER_DATAGRAM_NO_CONTEXT:
@@ -530,7 +530,7 @@
         QUIC_BUG(register no context capsule format type write fail)
             << "Failed to write REGISTER_DATAGRAM_NO_CONTEXT CAPSULE format "
                "type";
-        return QuicBuffer();
+        return {};
       }
       if (!writer.WriteStringPiece(
               capsule.register_datagram_no_context_capsule()
@@ -538,7 +538,7 @@
         QUIC_BUG(register no context capsule additional data write fail)
             << "Failed to write REGISTER_DATAGRAM_NO_CONTEXT CAPSULE "
                "additional data";
-        return QuicBuffer();
+        return {};
       }
       break;
     case CapsuleType::CLOSE_DATAGRAM_CONTEXT:
@@ -546,19 +546,19 @@
               capsule.close_datagram_context_capsule().context_id)) {
         QUIC_BUG(close context capsule context ID write fail)
             << "Failed to write CLOSE_DATAGRAM_CONTEXT CAPSULE context ID";
-        return QuicBuffer();
+        return {};
       }
       if (!writer.WriteVarInt62(static_cast<uint64_t>(
               capsule.close_datagram_context_capsule().close_code))) {
         QUIC_BUG(close context capsule close code write fail)
             << "Failed to write CLOSE_DATAGRAM_CONTEXT CAPSULE close code";
-        return QuicBuffer();
+        return {};
       }
       if (!writer.WriteStringPiece(
               capsule.close_datagram_context_capsule().close_details)) {
         QUIC_BUG(close context capsule close details write fail)
             << "Failed to write CLOSE_DATAGRAM_CONTEXT CAPSULE close details";
-        return QuicBuffer();
+        return {};
       }
       break;
     case CapsuleType::CLOSE_WEBTRANSPORT_SESSION:
@@ -566,19 +566,19 @@
               capsule.close_web_transport_session_capsule().error_code)) {
         QUIC_BUG(close webtransport session capsule error code write fail)
             << "Failed to write CLOSE_WEBTRANSPORT_SESSION error code";
-        return QuicBuffer();
+        return {};
       }
       if (!writer.WriteStringPiece(
               capsule.close_web_transport_session_capsule().error_message)) {
         QUIC_BUG(close webtransport session capsule error message write fail)
             << "Failed to write CLOSE_WEBTRANSPORT_SESSION error message";
-        return QuicBuffer();
+        return {};
       }
       break;
     default:
       if (!writer.WriteStringPiece(capsule.unknown_capsule_data())) {
         QUIC_BUG(capsule data write fail) << "Failed to write CAPSULE data";
-        return QuicBuffer();
+        return {};
       }
       break;
   }
@@ -586,7 +586,7 @@
     QUIC_BUG(capsule write length mismatch)
         << "CAPSULE serialization wrote " << writer.length() << " instead of "
         << writer.capacity();
-    return QuicBuffer();
+    return {};
   }
   return buffer;
 }
diff --git a/quic/core/http/capsule.h b/quic/core/http/capsule.h
index 42190bb..94601f9 100644
--- a/quic/core/http/capsule.h
+++ b/quic/core/http/capsule.h
@@ -11,10 +11,10 @@
 #include "absl/strings/str_cat.h"
 #include "absl/strings/string_view.h"
 #include "absl/types/optional.h"
-#include "quic/core/quic_buffer_allocator.h"
 #include "quic/core/quic_data_reader.h"
 #include "quic/core/quic_types.h"
 #include "common/platform/api/quiche_logging.h"
+#include "common/quiche_buffer_allocator.h"
 
 namespace quic {
 
@@ -283,8 +283,8 @@
 };
 
 // Serializes |capsule| into a newly allocated buffer.
-QUIC_EXPORT_PRIVATE QuicBuffer SerializeCapsule(const Capsule& capsule,
-                                                QuicBufferAllocator* allocator);
+QUIC_EXPORT_PRIVATE quiche::QuicheBuffer SerializeCapsule(
+    const Capsule& capsule, quiche::QuicheBufferAllocator* allocator);
 
 }  // namespace quic
 
diff --git a/quic/core/http/capsule_test.cc b/quic/core/http/capsule_test.cc
index 2dfdef4..c971826 100644
--- a/quic/core/http/capsule_test.cc
+++ b/quic/core/http/capsule_test.cc
@@ -60,8 +60,8 @@
 
   void TestSerialization(const Capsule& capsule,
                          const std::string& expected_bytes) {
-    QuicBuffer serialized_capsule =
-        SerializeCapsule(capsule, SimpleBufferAllocator::Get());
+    quiche::QuicheBuffer serialized_capsule =
+        SerializeCapsule(capsule, quiche::SimpleBufferAllocator::Get());
     quiche::test::CompareCharArraysWithHexError(
         "Serialized capsule", serialized_capsule.data(),
         serialized_capsule.size(), expected_bytes.data(),
diff --git a/quic/core/http/end_to_end_test.cc b/quic/core/http/end_to_end_test.cc
index ccf2d3a..c778faa 100644
--- a/quic/core/http/end_to_end_test.cc
+++ b/quic/core/http/end_to_end_test.cc
@@ -6642,7 +6642,7 @@
   ASSERT_TRUE(session != nullptr);
   NiceMock<MockClientVisitor>& visitor = SetupWebTransportVisitor(session);
 
-  SimpleBufferAllocator allocator;
+  quiche::SimpleBufferAllocator allocator;
   for (int i = 0; i < 10; i++) {
     session->SendOrQueueDatagram(MemSliceFromString("test"));
   }
@@ -6672,7 +6672,7 @@
   ASSERT_TRUE(connect_stream != nullptr);
   NiceMock<MockClientVisitor>& visitor = SetupWebTransportVisitor(session);
 
-  SimpleBufferAllocator allocator;
+  quiche::SimpleBufferAllocator allocator;
   for (int i = 0; i < 10; i++) {
     session->SendOrQueueDatagram(MemSliceFromString("test"));
   }
diff --git a/quic/core/http/http_decoder_test.cc b/quic/core/http/http_decoder_test.cc
index 95d5913..d8a54e0 100644
--- a/quic/core/http/http_decoder_test.cc
+++ b/quic/core/http/http_decoder_test.cc
@@ -419,8 +419,8 @@
   InSequence s;
   // A large input that will occupy more than 1 byte in the length field.
   std::string input(2048, 'x');
-  QuicBuffer header = HttpEncoder::SerializeDataFrameHeader(
-      input.length(), SimpleBufferAllocator::Get());
+  quiche::QuicheBuffer header = HttpEncoder::SerializeDataFrameHeader(
+      input.length(), quiche::SimpleBufferAllocator::Get());
   // Partially send only 1 byte of the header to process.
   EXPECT_EQ(1u, decoder_.ProcessInput(header.data(), 1));
   EXPECT_THAT(decoder_.error(), IsQuicNoError());
diff --git a/quic/core/http/http_encoder.cc b/quic/core/http/http_encoder.cc
index 25f6200..684fdde 100644
--- a/quic/core/http/http_encoder.cc
+++ b/quic/core/http/http_encoder.cc
@@ -43,13 +43,12 @@
 }
 
 // static
-QuicBuffer HttpEncoder::SerializeDataFrameHeader(
-    QuicByteCount payload_length,
-    QuicBufferAllocator* allocator) {
+quiche::QuicheBuffer HttpEncoder::SerializeDataFrameHeader(
+    QuicByteCount payload_length, quiche::QuicheBufferAllocator* allocator) {
   QUICHE_DCHECK_NE(0u, payload_length);
   QuicByteCount header_length = GetDataFrameHeaderLength(payload_length);
 
-  QuicBuffer header(allocator, header_length);
+  quiche::QuicheBuffer header(allocator, header_length);
   QuicDataWriter writer(header.size(), header.data());
 
   if (WriteFrameHeader(payload_length, HttpFrameType::DATA, &writer)) {
@@ -57,7 +56,7 @@
   }
   QUIC_DLOG(ERROR)
       << "Http encoder failed when attempting to serialize data frame header.";
-  return QuicBuffer();
+  return quiche::QuicheBuffer();
 }
 
 // static
diff --git a/quic/core/http/http_encoder.h b/quic/core/http/http_encoder.h
index 585e739..97f4b3d 100644
--- a/quic/core/http/http_encoder.h
+++ b/quic/core/http/http_encoder.h
@@ -6,11 +6,12 @@
 #define QUICHE_QUIC_CORE_HTTP_HTTP_ENCODER_H_
 
 #include <memory>
+
 #include "quic/core/http/http_frames.h"
-#include "quic/core/quic_buffer_allocator.h"
 #include "quic/core/quic_error_codes.h"
 #include "quic/core/quic_types.h"
 #include "quic/platform/api/quic_export.h"
+#include "common/quiche_buffer_allocator.h"
 
 namespace quic {
 
@@ -25,10 +26,10 @@
   // Returns the length of the header for a DATA frame.
   static QuicByteCount GetDataFrameHeaderLength(QuicByteCount payload_length);
 
-  // Serializes a DATA frame header into a QuicBuffer; returns said QuicBuffer
-  // on success, empty buffer otherwise.
-  static QuicBuffer SerializeDataFrameHeader(QuicByteCount payload_length,
-                                             QuicBufferAllocator* allocator);
+  // Serializes a DATA frame header into a QuicheBuffer; returns said
+  // QuicheBuffer on success, empty buffer otherwise.
+  static quiche::QuicheBuffer SerializeDataFrameHeader(
+      QuicByteCount payload_length, quiche::QuicheBufferAllocator* allocator);
 
   // Serializes a HEADERS frame header into a new buffer stored in |output|.
   // Returns the length of the buffer on success, or 0 otherwise.
diff --git a/quic/core/http/http_encoder_test.cc b/quic/core/http/http_encoder_test.cc
index c2b0f36..aab63a1 100644
--- a/quic/core/http/http_encoder_test.cc
+++ b/quic/core/http/http_encoder_test.cc
@@ -5,18 +5,18 @@
 #include "quic/core/http/http_encoder.h"
 
 #include "absl/base/macros.h"
-#include "quic/core/quic_simple_buffer_allocator.h"
 #include "quic/platform/api/quic_flags.h"
 #include "quic/platform/api/quic_test.h"
 #include "quic/test_tools/quic_test_utils.h"
+#include "common/simple_buffer_allocator.h"
 #include "common/test_tools/quiche_test_utils.h"
 
 namespace quic {
 namespace test {
 
 TEST(HttpEncoderTest, SerializeDataFrameHeader) {
-  QuicBuffer buffer = HttpEncoder::SerializeDataFrameHeader(
-      /* payload_length = */ 5, SimpleBufferAllocator::Get());
+  quiche::QuicheBuffer buffer = HttpEncoder::SerializeDataFrameHeader(
+      /* payload_length = */ 5, quiche::SimpleBufferAllocator::Get());
   char output[] = {// type (DATA)
                    0x00,
                    // length
diff --git a/quic/core/http/quic_receive_control_stream_test.cc b/quic/core/http/quic_receive_control_stream_test.cc
index ae7a0d8..4fc2ddf 100644
--- a/quic/core/http/quic_receive_control_stream_test.cc
+++ b/quic/core/http/quic_receive_control_stream_test.cc
@@ -9,13 +9,13 @@
 #include "absl/strings/string_view.h"
 #include "quic/core/http/http_constants.h"
 #include "quic/core/qpack/qpack_header_table.h"
-#include "quic/core/quic_simple_buffer_allocator.h"
 #include "quic/core/quic_types.h"
 #include "quic/core/quic_utils.h"
 #include "quic/test_tools/qpack/qpack_encoder_peer.h"
 #include "quic/test_tools/quic_spdy_session_peer.h"
 #include "quic/test_tools/quic_stream_peer.h"
 #include "quic/test_tools/quic_test_utils.h"
+#include "common/simple_buffer_allocator.h"
 
 namespace quic {
 
@@ -240,8 +240,8 @@
 
 TEST_P(QuicReceiveControlStreamTest, ReceiveWrongFrame) {
   // DATA frame header without payload.
-  QuicBuffer data = HttpEncoder::SerializeDataFrameHeader(
-      /* payload_length = */ 2, SimpleBufferAllocator::Get());
+  quiche::QuicheBuffer data = HttpEncoder::SerializeDataFrameHeader(
+      /* payload_length = */ 2, quiche::SimpleBufferAllocator::Get());
 
   QuicStreamFrame frame(receive_control_stream_->id(), false, 1,
                         data.AsStringView());
diff --git a/quic/core/http/quic_spdy_client_stream_test.cc b/quic/core/http/quic_spdy_client_stream_test.cc
index 32a0c0c..a7e5d86 100644
--- a/quic/core/http/quic_spdy_client_stream_test.cc
+++ b/quic/core/http/quic_spdy_client_stream_test.cc
@@ -12,7 +12,6 @@
 #include "quic/core/crypto/null_encrypter.h"
 #include "quic/core/http/quic_spdy_client_session.h"
 #include "quic/core/http/spdy_utils.h"
-#include "quic/core/quic_simple_buffer_allocator.h"
 #include "quic/core/quic_utils.h"
 #include "quic/platform/api/quic_logging.h"
 #include "quic/platform/api/quic_socket_address.h"
@@ -20,6 +19,7 @@
 #include "quic/test_tools/crypto_test_utils.h"
 #include "quic/test_tools/quic_spdy_session_peer.h"
 #include "quic/test_tools/quic_test_utils.h"
+#include "common/simple_buffer_allocator.h"
 
 using spdy::SpdyHeaderBlock;
 using testing::_;
@@ -158,8 +158,8 @@
   auto headers = AsHeaderList(headers_);
   stream_->OnStreamHeaderList(false, headers.uncompressed_header_bytes(),
                               headers);
-  QuicBuffer header = HttpEncoder::SerializeDataFrameHeader(
-      body_.length(), SimpleBufferAllocator::Get());
+  quiche::QuicheBuffer header = HttpEncoder::SerializeDataFrameHeader(
+      body_.length(), quiche::SimpleBufferAllocator::Get());
   std::string data = VersionUsesHttp3(connection_->transport_version())
                          ? absl::StrCat(header.AsStringView(), body_)
                          : body_;
@@ -185,8 +185,8 @@
   headers = AsHeaderList(headers_);
   stream_->OnStreamHeaderList(false, headers.uncompressed_header_bytes(),
                               headers);
-  QuicBuffer header = HttpEncoder::SerializeDataFrameHeader(
-      body_.length(), SimpleBufferAllocator::Get());
+  quiche::QuicheBuffer header = HttpEncoder::SerializeDataFrameHeader(
+      body_.length(), quiche::SimpleBufferAllocator::Get());
   std::string data = VersionUsesHttp3(connection_->transport_version())
                          ? absl::StrCat(header.AsStringView(), body_)
                          : body_;
@@ -214,8 +214,8 @@
   headers = AsHeaderList(headers_);
   stream_->OnStreamHeaderList(false, headers.uncompressed_header_bytes(),
                               headers);
-  QuicBuffer header = HttpEncoder::SerializeDataFrameHeader(
-      body_.length(), SimpleBufferAllocator::Get());
+  quiche::QuicheBuffer header = HttpEncoder::SerializeDataFrameHeader(
+      body_.length(), quiche::SimpleBufferAllocator::Get());
   std::string data = VersionUsesHttp3(connection_->transport_version())
                          ? absl::StrCat(header.AsStringView(), body_)
                          : body_;
@@ -245,8 +245,8 @@
   auto headers = AsHeaderList(headers_);
   stream_->OnStreamHeaderList(false, headers.uncompressed_header_bytes(),
                               headers);
-  QuicBuffer header = HttpEncoder::SerializeDataFrameHeader(
-      body_.length(), SimpleBufferAllocator::Get());
+  quiche::QuicheBuffer header = HttpEncoder::SerializeDataFrameHeader(
+      body_.length(), quiche::SimpleBufferAllocator::Get());
   std::string data = VersionUsesHttp3(connection_->transport_version())
                          ? absl::StrCat(header.AsStringView(), body_)
                          : body_;
@@ -268,8 +268,8 @@
   EXPECT_THAT(stream_->stream_error(), IsQuicStreamNoError());
   EXPECT_EQ("200", stream_->response_headers().find(":status")->second);
   EXPECT_EQ(200, stream_->response_code());
-  QuicBuffer header = HttpEncoder::SerializeDataFrameHeader(
-      large_body.length(), SimpleBufferAllocator::Get());
+  quiche::QuicheBuffer header = HttpEncoder::SerializeDataFrameHeader(
+      large_body.length(), quiche::SimpleBufferAllocator::Get());
   std::string data = VersionUsesHttp3(connection_->transport_version())
                          ? absl::StrCat(header.AsStringView(), large_body)
                          : large_body;
@@ -309,8 +309,8 @@
 
   // Now send the body, which should close the stream as the FIN has been
   // received, as well as all data.
-  QuicBuffer header = HttpEncoder::SerializeDataFrameHeader(
-      body_.length(), SimpleBufferAllocator::Get());
+  quiche::QuicheBuffer header = HttpEncoder::SerializeDataFrameHeader(
+      body_.length(), quiche::SimpleBufferAllocator::Get());
   std::string data = VersionUsesHttp3(connection_->transport_version())
                          ? absl::StrCat(header.AsStringView(), body_)
                          : body_;
diff --git a/quic/core/http/quic_spdy_session.cc b/quic/core/http/quic_spdy_session.cc
index 6a57107..095efdd 100644
--- a/quic/core/http/quic_spdy_session.cc
+++ b/quic/core/http/quic_spdy_session.cc
@@ -1663,8 +1663,8 @@
   if (context_id.has_value()) {
     slice_length += QuicDataWriter::GetVarInt62Len(context_id.value());
   }
-  QuicBuffer buffer(connection()->helper()->GetStreamSendBufferAllocator(),
-                    slice_length);
+  quiche::QuicheBuffer buffer(
+      connection()->helper()->GetStreamSendBufferAllocator(), slice_length);
   QuicDataWriter writer(slice_length, buffer.data());
   if (!writer.WriteVarInt62(stream_id_to_write)) {
     QUIC_BUG(h3 datagram stream ID write fail)
diff --git a/quic/core/http/quic_spdy_stream.cc b/quic/core/http/quic_spdy_stream.cc
index 2fcece7..adeb224 100644
--- a/quic/core/http/quic_spdy_stream.cc
+++ b/quic/core/http/quic_spdy_stream.cc
@@ -401,7 +401,7 @@
                                           bool force_write) {
   QUICHE_DCHECK(VersionUsesHttp3(transport_version()));
   QUICHE_DCHECK_GT(data_length, 0u);
-  QuicBuffer header = HttpEncoder::SerializeDataFrameHeader(
+  quiche::QuicheBuffer header = HttpEncoder::SerializeDataFrameHeader(
       data_length,
       spdy_session_->connection()->helper()->GetStreamSendBufferAllocator());
   const bool can_write = CanWriteNewDataAfterData(header.size());
@@ -1563,7 +1563,7 @@
 void QuicSpdyStream::WriteCapsule(const Capsule& capsule, bool fin) {
   QUIC_DLOG(INFO) << ENDPOINT << "Stream " << id() << " sending capsule "
                   << capsule;
-  QuicBuffer serialized_capsule = SerializeCapsule(
+  quiche::QuicheBuffer serialized_capsule = SerializeCapsule(
       capsule,
       spdy_session_->connection()->helper()->GetStreamSendBufferAllocator());
   QUICHE_DCHECK_GT(serialized_capsule.size(), 0u);
diff --git a/quic/core/http/quic_spdy_stream_test.cc b/quic/core/http/quic_spdy_stream_test.cc
index cb00c2a..bf4dc45 100644
--- a/quic/core/http/quic_spdy_stream_test.cc
+++ b/quic/core/http/quic_spdy_stream_test.cc
@@ -20,7 +20,6 @@
 #include "quic/core/http/spdy_utils.h"
 #include "quic/core/http/web_transport_http3.h"
 #include "quic/core/quic_connection.h"
-#include "quic/core/quic_simple_buffer_allocator.h"
 #include "quic/core/quic_stream_sequencer_buffer.h"
 #include "quic/core/quic_utils.h"
 #include "quic/core/quic_versions.h"
@@ -38,6 +37,7 @@
 #include "quic/test_tools/quic_stream_peer.h"
 #include "quic/test_tools/quic_test_utils.h"
 #include "common/quiche_mem_slice_storage.h"
+#include "common/simple_buffer_allocator.h"
 
 using spdy::kV3HighestPriority;
 using spdy::kV3LowestPriority;
@@ -477,8 +477,8 @@
   }
 
   std::string DataFrame(absl::string_view payload) {
-    QuicBuffer header = HttpEncoder::SerializeDataFrameHeader(
-        payload.length(), SimpleBufferAllocator::Get());
+    quiche::QuicheBuffer header = HttpEncoder::SerializeDataFrameHeader(
+        payload.length(), quiche::SimpleBufferAllocator::Get());
     return absl::StrCat(header.AsStringView(), payload);
   }
 
@@ -1010,8 +1010,8 @@
   std::string data;
 
   if (UsesHttp3()) {
-    QuicBuffer header = HttpEncoder::SerializeDataFrameHeader(
-        body.length(), SimpleBufferAllocator::Get());
+    quiche::QuicheBuffer header = HttpEncoder::SerializeDataFrameHeader(
+        body.length(), quiche::SimpleBufferAllocator::Get());
     data = absl::StrCat(header.AsStringView(), body);
     header_length = header.size();
   } else {
@@ -1053,8 +1053,8 @@
   std::string data;
 
   if (UsesHttp3()) {
-    QuicBuffer header = HttpEncoder::SerializeDataFrameHeader(
-        body.length(), SimpleBufferAllocator::Get());
+    quiche::QuicheBuffer header = HttpEncoder::SerializeDataFrameHeader(
+        body.length(), quiche::SimpleBufferAllocator::Get());
     data = absl::StrCat(header.AsStringView(), body);
     header_length = header.size();
   } else {
@@ -1118,12 +1118,12 @@
 
   if (UsesHttp3()) {
     body = std::string(kWindow / 4 - 2, 'a');
-    QuicBuffer header = HttpEncoder::SerializeDataFrameHeader(
-        body.length(), SimpleBufferAllocator::Get());
+    quiche::QuicheBuffer header = HttpEncoder::SerializeDataFrameHeader(
+        body.length(), quiche::SimpleBufferAllocator::Get());
     data = absl::StrCat(header.AsStringView(), body);
     header_length = header.size();
-    QuicBuffer header2 = HttpEncoder::SerializeDataFrameHeader(
-        body.length(), SimpleBufferAllocator::Get());
+    quiche::QuicheBuffer header2 = HttpEncoder::SerializeDataFrameHeader(
+        body.length(), quiche::SimpleBufferAllocator::Get());
     data2 = absl::StrCat(header2.AsStringView(), body2);
   } else {
     body = std::string(kWindow / 4, 'a');
@@ -1596,7 +1596,7 @@
   QuicByteCount header_length = 0;
   if (UsesHttp3()) {
     header_length = HttpEncoder::SerializeDataFrameHeader(
-                        body.length(), SimpleBufferAllocator::Get())
+                        body.length(), quiche::SimpleBufferAllocator::Get())
                         .size();
   }
 
@@ -1940,10 +1940,10 @@
   stream_->WriteOrBufferBody(body, false);
   stream_->WriteOrBufferBody(body2, true);
 
-  QuicBuffer header = HttpEncoder::SerializeDataFrameHeader(
-      body.length(), SimpleBufferAllocator::Get());
-  QuicBuffer header2 = HttpEncoder::SerializeDataFrameHeader(
-      body2.length(), SimpleBufferAllocator::Get());
+  quiche::QuicheBuffer header = HttpEncoder::SerializeDataFrameHeader(
+      body.length(), quiche::SimpleBufferAllocator::Get());
+  quiche::QuicheBuffer header2 = HttpEncoder::SerializeDataFrameHeader(
+      body2.length(), quiche::SimpleBufferAllocator::Get());
 
   EXPECT_CALL(*mock_ack_listener, OnPacketAcked(body.length(), _));
   QuicStreamFrame frame(stream_->id(), false, 0,
diff --git a/quic/core/http/web_transport_stream_adapter.cc b/quic/core/http/web_transport_stream_adapter.cc
index eb42fd8..7c6e990 100644
--- a/quic/core/http/web_transport_stream_adapter.cc
+++ b/quic/core/http/web_transport_stream_adapter.cc
@@ -46,7 +46,7 @@
     return false;
   }
 
-  quiche::QuicheMemSlice memslice(QuicBuffer::Copy(
+  quiche::QuicheMemSlice memslice(quiche::QuicheBuffer::Copy(
       session_->connection()->helper()->GetStreamSendBufferAllocator(), data));
   QuicConsumedData consumed =
       stream_->WriteMemSlices(absl::MakeSpan(&memslice, 1), /*fin=*/false);
diff --git a/quic/core/quic_buffer_allocator.cc b/quic/core/quic_buffer_allocator.cc
deleted file mode 100644
index 41491d9..0000000
--- a/quic/core/quic_buffer_allocator.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "quic/core/quic_buffer_allocator.h"
-
-namespace quic {
-
-QuicBufferAllocator::~QuicBufferAllocator() = default;
-
-}  // namespace quic
diff --git a/quic/core/quic_buffer_allocator.h b/quic/core/quic_buffer_allocator.h
deleted file mode 100644
index 4d62f84..0000000
--- a/quic/core/quic_buffer_allocator.h
+++ /dev/null
@@ -1,117 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef QUICHE_QUIC_CORE_QUIC_BUFFER_ALLOCATOR_H_
-#define QUICHE_QUIC_CORE_QUIC_BUFFER_ALLOCATOR_H_
-
-#include <stddef.h>
-
-#include <memory>
-
-#include "absl/strings/string_view.h"
-#include "quic/platform/api/quic_export.h"
-
-namespace quic {
-
-// Abstract base class for classes which allocate and delete buffers.
-class QUIC_EXPORT_PRIVATE QuicBufferAllocator {
- public:
-  virtual ~QuicBufferAllocator();
-
-  // Returns or allocates a new buffer of |size|. Never returns null.
-  virtual char* New(size_t size) = 0;
-
-  // Returns or allocates a new buffer of |size| if |flag_enable| is true.
-  // Otherwise, returns a buffer that is compatible with this class directly
-  // with operator new. Never returns null.
-  virtual char* New(size_t size, bool flag_enable) = 0;
-
-  // Releases a buffer.
-  virtual void Delete(char* buffer) = 0;
-
-  // Marks the allocator as being idle. Serves as a hint to notify the allocator
-  // that it should release any resources it's still holding on to.
-  virtual void MarkAllocatorIdle() {}
-};
-
-// A deleter that can be used to manage ownership of buffers allocated via
-// QuicBufferAllocator through std::unique_ptr.
-class QUIC_EXPORT_PRIVATE QuicBufferDeleter {
- public:
-  explicit QuicBufferDeleter(QuicBufferAllocator* allocator)
-      : allocator_(allocator) {}
-
-  QuicBufferAllocator* allocator() { return allocator_; }
-  void operator()(char* buffer) { allocator_->Delete(buffer); }
-
- private:
-  QuicBufferAllocator* allocator_;
-};
-
-using QuicUniqueBufferPtr = std::unique_ptr<char[], QuicBufferDeleter>;
-
-inline QuicUniqueBufferPtr MakeUniqueBuffer(QuicBufferAllocator* allocator,
-                                            size_t size) {
-  return QuicUniqueBufferPtr(allocator->New(size),
-                             QuicBufferDeleter(allocator));
-}
-
-// QuicUniqueBufferPtr with a length attached to it.  Similar to QuicheMemSlice,
-// except unlike QuicheMemSlice, QuicBuffer is mutable and is not
-// platform-specific.  Also unlike QuicheMemSlice, QuicBuffer can be empty.
-class QUIC_EXPORT_PRIVATE QuicBuffer {
- public:
-  QuicBuffer() : buffer_(nullptr, QuicBufferDeleter(nullptr)), size_(0) {}
-  QuicBuffer(QuicBufferAllocator* allocator, size_t size)
-      : buffer_(MakeUniqueBuffer(allocator, size)), size_(size) {}
-
-  QuicBuffer(QuicUniqueBufferPtr buffer, size_t size)
-      : buffer_(std::move(buffer)), size_(size) {}
-
-  // Make sure the move constructor zeroes out the size field.
-  QuicBuffer(QuicBuffer&& other)
-      : buffer_(std::move(other.buffer_)), size_(other.size_) {
-    other.buffer_ = nullptr;
-    other.size_ = 0;
-  }
-  QuicBuffer& operator=(QuicBuffer&& other) {
-    buffer_ = std::move(other.buffer_);
-    size_ = other.size_;
-
-    other.buffer_ = nullptr;
-    other.size_ = 0;
-    return *this;
-  }
-
-  // Convenience method to initialize a QuicBuffer by copying from an existing
-  // one.
-  static QuicBuffer Copy(QuicBufferAllocator* allocator,
-                         absl::string_view data) {
-    QuicBuffer result(allocator, data.size());
-    memcpy(result.data(), data.data(), data.size());
-    return result;
-  }
-
-  const char* data() const { return buffer_.get(); }
-  char* data() { return buffer_.get(); }
-  size_t size() const { return size_; }
-  bool empty() const { return size_ == 0; }
-  absl::string_view AsStringView() const {
-    return absl::string_view(data(), size());
-  }
-
-  // Releases the ownership of the underlying buffer.
-  QuicUniqueBufferPtr Release() {
-    size_ = 0;
-    return std::move(buffer_);
-  }
-
- private:
-  QuicUniqueBufferPtr buffer_;
-  size_t size_;
-};
-
-}  // namespace quic
-
-#endif  // QUICHE_QUIC_CORE_QUIC_BUFFER_ALLOCATOR_H_
diff --git a/quic/core/quic_coalesced_packet.cc b/quic/core/quic_coalesced_packet.cc
index 52673b6..e8ce931 100644
--- a/quic/core/quic_coalesced_packet.cc
+++ b/quic/core/quic_coalesced_packet.cc
@@ -18,10 +18,9 @@
 }
 
 bool QuicCoalescedPacket::MaybeCoalescePacket(
-    const SerializedPacket& packet,
-    const QuicSocketAddress& self_address,
+    const SerializedPacket& packet, const QuicSocketAddress& self_address,
     const QuicSocketAddress& peer_address,
-    QuicBufferAllocator* allocator,
+    quiche::QuicheBufferAllocator* allocator,
     QuicPacketLength current_max_packet_length) {
   if (packet.encrypted_length == 0) {
     QUIC_BUG(quic_bug_10611_1) << "Trying to coalesce an empty packet";
diff --git a/quic/core/quic_coalesced_packet.h b/quic/core/quic_coalesced_packet.h
index e8bc2c3..9b8295c 100644
--- a/quic/core/quic_coalesced_packet.h
+++ b/quic/core/quic_coalesced_packet.h
@@ -21,7 +21,7 @@
   bool MaybeCoalescePacket(const SerializedPacket& packet,
                            const QuicSocketAddress& self_address,
                            const QuicSocketAddress& peer_address,
-                           QuicBufferAllocator* allocator,
+                           quiche::QuicheBufferAllocator* allocator,
                            QuicPacketLength current_max_packet_length);
 
   // Clears this coalesced packet.
diff --git a/quic/core/quic_coalesced_packet_test.cc b/quic/core/quic_coalesced_packet_test.cc
index 34f6da3..f626891 100644
--- a/quic/core/quic_coalesced_packet_test.cc
+++ b/quic/core/quic_coalesced_packet_test.cc
@@ -17,7 +17,7 @@
   QuicCoalescedPacket coalesced;
   EXPECT_EQ("total_length: 0 padding_size: 0 packets: {}",
             coalesced.ToString(0));
-  SimpleBufferAllocator allocator;
+  quiche::SimpleBufferAllocator allocator;
   EXPECT_EQ(0u, coalesced.length());
   EXPECT_EQ(0u, coalesced.NumberOfPackets());
   char buffer[1000];
@@ -96,7 +96,7 @@
 
 TEST(QuicCoalescedPacketTest, CopyEncryptedBuffers) {
   QuicCoalescedPacket coalesced;
-  SimpleBufferAllocator allocator;
+  quiche::SimpleBufferAllocator allocator;
   QuicSocketAddress self_address(QuicIpAddress::Loopback4(), 1);
   QuicSocketAddress peer_address(QuicIpAddress::Loopback4(), 2);
   std::string buffer(500, 'a');
@@ -139,7 +139,7 @@
   EXPECT_EQ("total_length: 0 padding_size: 0 packets: {}",
             coalesced.ToString(0));
 
-  SimpleBufferAllocator allocator;
+  quiche::SimpleBufferAllocator allocator;
   EXPECT_EQ(0u, coalesced.length());
   char buffer[1000];
   QuicSocketAddress self_address(QuicIpAddress::Loopback4(), 1);
diff --git a/quic/core/quic_connection.h b/quic/core/quic_connection.h
index 42b4358..40c55a3 100644
--- a/quic/core/quic_connection.h
+++ b/quic/core/quic_connection.h
@@ -452,8 +452,8 @@
   // Returns a QuicRandom to be used for all random number related functions.
   virtual QuicRandom* GetRandomGenerator() = 0;
 
-  // Returns a QuicBufferAllocator to be used for stream send buffers.
-  virtual QuicBufferAllocator* GetStreamSendBufferAllocator() = 0;
+  // Returns a QuicheBufferAllocator to be used for stream send buffers.
+  virtual quiche::QuicheBufferAllocator* GetStreamSendBufferAllocator() = 0;
 };
 
 class QUIC_EXPORT_PRIVATE QuicConnection
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc
index 1162de1..fc4df23 100644
--- a/quic/core/quic_connection_test.cc
+++ b/quic/core/quic_connection_test.cc
@@ -30,7 +30,6 @@
 #include "quic/core/quic_packet_creator.h"
 #include "quic/core/quic_packets.h"
 #include "quic/core/quic_path_validator.h"
-#include "quic/core/quic_simple_buffer_allocator.h"
 #include "quic/core/quic_types.h"
 #include "quic/core/quic_utils.h"
 #include "quic/core/quic_versions.h"
@@ -53,6 +52,7 @@
 #include "quic/test_tools/quic_test_utils.h"
 #include "quic/test_tools/simple_data_producer.h"
 #include "quic/test_tools/simple_session_notifier.h"
+#include "common/simple_buffer_allocator.h"
 
 using testing::_;
 using testing::AnyNumber;
@@ -169,14 +169,14 @@
 
   QuicRandom* GetRandomGenerator() override { return random_generator_; }
 
-  QuicBufferAllocator* GetStreamSendBufferAllocator() override {
+  quiche::QuicheBufferAllocator* GetStreamSendBufferAllocator() override {
     return &buffer_allocator_;
   }
 
  private:
   MockClock* clock_;
   MockRandom* random_generator_;
-  SimpleBufferAllocator buffer_allocator_;
+  quiche::SimpleBufferAllocator buffer_allocator_;
 };
 
 class TestConnection : public QuicConnection {
@@ -1068,7 +1068,7 @@
 
   MessageStatus SendMessage(absl::string_view message) {
     connection_.SetDefaultEncryptionLevel(ENCRYPTION_FORWARD_SECURE);
-    quiche::QuicheMemSlice slice(QuicBuffer::Copy(
+    quiche::QuicheMemSlice slice(quiche::QuicheBuffer::Copy(
         connection_.helper()->GetStreamSendBufferAllocator(), message));
     return connection_.SendMessage(1, absl::MakeSpan(&slice, 1), false);
   }
@@ -1465,7 +1465,7 @@
   std::unique_ptr<MockLossAlgorithm> loss_algorithm_;
   MockClock clock_;
   MockRandom random_generator_;
-  SimpleBufferAllocator buffer_allocator_;
+  quiche::SimpleBufferAllocator buffer_allocator_;
   std::unique_ptr<TestConnectionHelper> helper_;
   std::unique_ptr<TestAlarmFactory> alarm_factory_;
   QuicFramer peer_framer_;
diff --git a/quic/core/quic_datagram_queue_test.cc b/quic/core/quic_datagram_queue_test.cc
index 041275c..295e72a 100644
--- a/quic/core/quic_datagram_queue_test.cc
+++ b/quic/core/quic_datagram_queue_test.cc
@@ -9,13 +9,13 @@
 #include "absl/strings/string_view.h"
 #include "absl/types/optional.h"
 #include "quic/core/crypto/null_encrypter.h"
-#include "quic/core/quic_buffer_allocator.h"
 #include "quic/core/quic_time.h"
 #include "quic/core/quic_types.h"
 #include "quic/platform/api/quic_reference_counted.h"
 #include "quic/platform/api/quic_test.h"
 #include "quic/test_tools/quic_test_utils.h"
 #include "common/platform/api/quiche_mem_slice.h"
+#include "common/quiche_buffer_allocator.h"
 
 namespace quic {
 namespace test {
@@ -71,8 +71,8 @@
   ~QuicDatagramQueueTestBase() = default;
 
   quiche::QuicheMemSlice CreateMemSlice(absl::string_view data) {
-    return quiche::QuicheMemSlice(
-        QuicBuffer::Copy(helper_.GetStreamSendBufferAllocator(), data));
+    return quiche::QuicheMemSlice(quiche::QuicheBuffer::Copy(
+        helper_.GetStreamSendBufferAllocator(), data));
   }
 
   MockQuicConnectionHelper helper_;
diff --git a/quic/core/quic_dispatcher.cc b/quic/core/quic_dispatcher.cc
index 0da608c..1cc4cf3 100644
--- a/quic/core/quic_dispatcher.cc
+++ b/quic/core/quic_dispatcher.cc
@@ -77,7 +77,7 @@
 class PacketCollector : public QuicPacketCreator::DelegateInterface,
                         public QuicStreamFrameDataProducer {
  public:
-  explicit PacketCollector(QuicBufferAllocator* allocator)
+  explicit PacketCollector(quiche::QuicheBufferAllocator* allocator)
       : send_buffer_(allocator) {}
   ~PacketCollector() override = default;
 
diff --git a/quic/core/quic_epoll_connection_helper.cc b/quic/core/quic_epoll_connection_helper.cc
index 42d2e02..980a09f 100644
--- a/quic/core/quic_epoll_connection_helper.cc
+++ b/quic/core/quic_epoll_connection_helper.cc
@@ -27,7 +27,8 @@
   return random_generator_;
 }
 
-QuicBufferAllocator* QuicEpollConnectionHelper::GetStreamSendBufferAllocator() {
+quiche::QuicheBufferAllocator*
+QuicEpollConnectionHelper::GetStreamSendBufferAllocator() {
   if (allocator_type_ == QuicAllocator::BUFFER_POOL) {
     return &stream_buffer_allocator_;
   } else {
diff --git a/quic/core/quic_epoll_connection_helper.h b/quic/core/quic_epoll_connection_helper.h
index d363d6b..e433ff5 100644
--- a/quic/core/quic_epoll_connection_helper.h
+++ b/quic/core/quic_epoll_connection_helper.h
@@ -9,17 +9,18 @@
 #define QUICHE_QUIC_CORE_QUIC_EPOLL_CONNECTION_HELPER_H_
 
 #include <sys/types.h>
+
 #include <set>
 
 #include "quic/core/quic_connection.h"
 #include "quic/core/quic_default_packet_writer.h"
 #include "quic/core/quic_packet_writer.h"
 #include "quic/core/quic_packets.h"
-#include "quic/core/quic_simple_buffer_allocator.h"
 #include "quic/core/quic_time.h"
 #include "quic/platform/api/quic_epoll.h"
 #include "quic/platform/api/quic_stream_buffer_allocator.h"
 #include "net/quic/platform/impl/quic_epoll_clock.h"
+#include "common/simple_buffer_allocator.h"
 
 namespace quic {
 
@@ -40,7 +41,7 @@
   // QuicConnectionHelperInterface
   const QuicClock* GetClock() const override;
   QuicRandom* GetRandomGenerator() override;
-  QuicBufferAllocator* GetStreamSendBufferAllocator() override;
+  quiche::QuicheBufferAllocator* GetStreamSendBufferAllocator() override;
 
  private:
   const QuicEpollClock clock_;
@@ -48,7 +49,7 @@
   // Set up allocators.  They take up minimal memory before use.
   // Allocator for stream send buffers.
   QuicStreamBufferAllocator stream_buffer_allocator_;
-  SimpleBufferAllocator simple_buffer_allocator_;
+  quiche::SimpleBufferAllocator simple_buffer_allocator_;
   QuicAllocator allocator_type_;
 };
 
diff --git a/quic/core/quic_framer_test.cc b/quic/core/quic_framer_test.cc
index d24664d..150f2b8 100644
--- a/quic/core/quic_framer_test.cc
+++ b/quic/core/quic_framer_test.cc
@@ -921,7 +921,7 @@
   QuicTime start_;
   QuicFramer framer_;
   test::TestQuicVisitor visitor_;
-  SimpleBufferAllocator allocator_;
+  quiche::SimpleBufferAllocator allocator_;
 };
 
 // Multiple test cases of QuicFramerTest use byte arrays to define packets for
diff --git a/quic/core/quic_packet_creator_test.cc b/quic/core/quic_packet_creator_test.cc
index c7b7dcb..3b56f82 100644
--- a/quic/core/quic_packet_creator_test.cc
+++ b/quic/core/quic_packet_creator_test.cc
@@ -21,7 +21,6 @@
 #include "quic/core/frames/quic_stream_frame.h"
 #include "quic/core/quic_connection_id.h"
 #include "quic/core/quic_data_writer.h"
-#include "quic/core/quic_simple_buffer_allocator.h"
 #include "quic/core/quic_types.h"
 #include "quic/core/quic_utils.h"
 #include "quic/platform/api/quic_expect_bug.h"
@@ -33,6 +32,7 @@
 #include "quic/test_tools/quic_test_utils.h"
 #include "quic/test_tools/simple_data_producer.h"
 #include "quic/test_tools/simple_quic_framer.h"
+#include "common/simple_buffer_allocator.h"
 #include "common/test_tools/quiche_test_utils.h"
 
 using ::testing::_;
@@ -287,7 +287,7 @@
   TestPacketCreator creator_;
   std::unique_ptr<SerializedPacket> serialized_packet_;
   SimpleDataProducer producer_;
-  SimpleBufferAllocator allocator_;
+  quiche::SimpleBufferAllocator allocator_;
 };
 
 // Run all packet creator tests with all supported versions of QUIC, and with
@@ -2140,7 +2140,7 @@
 
 TEST_P(QuicPacketCreatorTest, SerializeCoalescedPacket) {
   QuicCoalescedPacket coalesced;
-  SimpleBufferAllocator allocator;
+  quiche::SimpleBufferAllocator allocator;
   QuicSocketAddress self_address(QuicIpAddress::Loopback4(), 1);
   QuicSocketAddress peer_address(QuicIpAddress::Loopback4(), 2);
   for (size_t i = ENCRYPTION_INITIAL; i < NUM_ENCRYPTION_LEVELS; ++i) {
@@ -2606,7 +2606,7 @@
   std::vector<SerializedPacket> packets_;
   QuicAckFrame ack_frame_;
   struct iovec iov_;
-  SimpleBufferAllocator allocator_;
+  quiche::SimpleBufferAllocator allocator_;
 
  private:
   std::unique_ptr<char[]> data_array_;
diff --git a/quic/core/quic_packets.cc b/quic/core/quic_packets.cc
index d625b5d..91840f8 100644
--- a/quic/core/quic_packets.cc
+++ b/quic/core/quic_packets.cc
@@ -511,7 +511,7 @@
 }
 
 SerializedPacket* CopySerializedPacket(const SerializedPacket& serialized,
-                                       QuicBufferAllocator* allocator,
+                                       quiche::QuicheBufferAllocator* allocator,
                                        bool copy_buffer) {
   SerializedPacket* copy = new SerializedPacket(
       serialized.packet_number, serialized.packet_number_length,
diff --git a/quic/core/quic_packets.h b/quic/core/quic_packets.h
index c79e5a5..c373327 100644
--- a/quic/core/quic_packets.h
+++ b/quic/core/quic_packets.h
@@ -410,8 +410,7 @@
 // indicates whether the encrypted buffer should be copied.
 QUIC_EXPORT_PRIVATE SerializedPacket* CopySerializedPacket(
     const SerializedPacket& serialized,
-    QuicBufferAllocator* allocator,
-    bool copy_buffer);
+    quiche::QuicheBufferAllocator* allocator, bool copy_buffer);
 
 // Allocates a new char[] of size |packet.encrypted_length| and copies in
 // |packet.encrypted_buffer|.
diff --git a/quic/core/quic_packets_test.cc b/quic/core/quic_packets_test.cc
index a07e289..ce7cf8e 100644
--- a/quic/core/quic_packets_test.cc
+++ b/quic/core/quic_packets_test.cc
@@ -74,7 +74,7 @@
 
 TEST_F(QuicPacketsTest, CopySerializedPacket) {
   std::string buffer(1000, 'a');
-  SimpleBufferAllocator allocator;
+  quiche::SimpleBufferAllocator allocator;
   SerializedPacket packet(QuicPacketNumber(1), PACKET_1BYTE_PACKET_NUMBER,
                           buffer.data(), buffer.length(), /*has_ack=*/false,
                           /*has_stop_waiting=*/false);
diff --git a/quic/core/quic_sent_packet_manager_test.cc b/quic/core/quic_sent_packet_manager_test.cc
index 565eb96..02ae04c 100644
--- a/quic/core/quic_sent_packet_manager_test.cc
+++ b/quic/core/quic_sent_packet_manager_test.cc
@@ -335,7 +335,7 @@
     return 4;
   }
 
-  SimpleBufferAllocator allocator_;
+  quiche::SimpleBufferAllocator allocator_;
   QuicSentPacketManager manager_;
   MockClock clock_;
   QuicConnectionStats stats_;
@@ -4495,7 +4495,7 @@
 
   QuicMessageFrame* message_frame = nullptr;
   {
-    quiche::QuicheMemSlice slice(QuicBuffer(&allocator_, 1024));
+    quiche::QuicheMemSlice slice(quiche::QuicheBuffer(&allocator_, 1024));
     message_frame = new QuicMessageFrame(/*message_id=*/1, std::move(slice));
     EXPECT_FALSE(message_frame->message_data.empty());
     EXPECT_EQ(message_frame->message_length, 1024);
diff --git a/quic/core/quic_stream_send_buffer.cc b/quic/core/quic_stream_send_buffer.cc
index e1e437b..aa58ead 100644
--- a/quic/core/quic_stream_send_buffer.cc
+++ b/quic/core/quic_stream_send_buffer.cc
@@ -47,7 +47,8 @@
   return offset == other.offset && length == other.length;
 }
 
-QuicStreamSendBuffer::QuicStreamSendBuffer(QuicBufferAllocator* allocator)
+QuicStreamSendBuffer::QuicStreamSendBuffer(
+    quiche::QuicheBufferAllocator* allocator)
     : current_end_offset_(0),
       stream_offset_(0),
       allocator_(allocator),
@@ -67,7 +68,7 @@
       GetQuicFlag(FLAGS_quic_send_buffer_max_data_slice_size);
   while (data_length > 0) {
     size_t slice_len = std::min(data_length, max_data_slice_size);
-    QuicBuffer buffer(allocator_, slice_len);
+    quiche::QuicheBuffer buffer(allocator_, slice_len);
     QuicUtils::CopyToBuffer(iov, iov_count, iov_offset, slice_len,
                             buffer.data());
     SaveMemSlice(quiche::QuicheMemSlice(std::move(buffer)));
diff --git a/quic/core/quic_stream_send_buffer.h b/quic/core/quic_stream_send_buffer.h
index 2069e8b..6fe7b75 100644
--- a/quic/core/quic_stream_send_buffer.h
+++ b/quic/core/quic_stream_send_buffer.h
@@ -64,7 +64,7 @@
 // across slice boundaries.
 class QUIC_EXPORT_PRIVATE QuicStreamSendBuffer {
  public:
-  explicit QuicStreamSendBuffer(QuicBufferAllocator* allocator);
+  explicit QuicStreamSendBuffer(quiche::QuicheBufferAllocator* allocator);
   QuicStreamSendBuffer(const QuicStreamSendBuffer& other) = delete;
   QuicStreamSendBuffer(QuicStreamSendBuffer&& other) = delete;
   ~QuicStreamSendBuffer();
@@ -153,7 +153,7 @@
   // Offset of next inserted byte.
   QuicStreamOffset stream_offset_;
 
-  QuicBufferAllocator* allocator_;
+  quiche::QuicheBufferAllocator* allocator_;
 
   // Bytes that have been consumed by the stream.
   uint64_t stream_bytes_written_;
diff --git a/quic/core/quic_stream_send_buffer_test.cc b/quic/core/quic_stream_send_buffer_test.cc
index 15e0d3f..2e0f9dc 100644
--- a/quic/core/quic_stream_send_buffer_test.cc
+++ b/quic/core/quic_stream_send_buffer_test.cc
@@ -8,13 +8,13 @@
 
 #include "absl/strings/string_view.h"
 #include "quic/core/quic_data_writer.h"
-#include "quic/core/quic_simple_buffer_allocator.h"
 #include "quic/core/quic_utils.h"
 #include "quic/platform/api/quic_expect_bug.h"
 #include "quic/platform/api/quic_flags.h"
 #include "quic/platform/api/quic_test.h"
 #include "quic/test_tools/quic_stream_send_buffer_peer.h"
 #include "quic/test_tools/quic_test_utils.h"
+#include "common/simple_buffer_allocator.h"
 
 namespace quic {
 namespace test {
@@ -38,10 +38,10 @@
     iov[0] = MakeIovec(absl::string_view(data1));
     iov[1] = MakeIovec(absl::string_view(data2));
 
-    QuicBuffer buffer1(&allocator_, 1024);
+    quiche::QuicheBuffer buffer1(&allocator_, 1024);
     memset(buffer1.data(), 'c', buffer1.size());
     quiche::QuicheMemSlice slice1(std::move(buffer1));
-    QuicBuffer buffer2(&allocator_, 768);
+    quiche::QuicheBuffer buffer2(&allocator_, 768);
     memset(buffer2.data(), 'd', buffer2.size());
     quiche::QuicheMemSlice slice2(std::move(buffer2));
 
@@ -73,7 +73,7 @@
     EXPECT_EQ(3840u, send_buffer_.stream_bytes_outstanding());
   }
 
-  SimpleBufferAllocator allocator_;
+  quiche::SimpleBufferAllocator allocator_;
   QuicStreamSendBuffer send_buffer_;
 };
 
@@ -308,7 +308,7 @@
 
   // Last offset is end offset of last slice.
   EXPECT_EQ(3840u, QuicStreamSendBufferPeer::EndOffset(&send_buffer_));
-  QuicBuffer buffer(&allocator_, 60);
+  quiche::QuicheBuffer buffer(&allocator_, 60);
   memset(buffer.data(), 'e', buffer.size());
   quiche::QuicheMemSlice slice(std::move(buffer));
   send_buffer_.SaveMemSlice(std::move(slice));
@@ -317,7 +317,7 @@
 }
 
 TEST_F(QuicStreamSendBufferTest, SaveMemSliceSpan) {
-  SimpleBufferAllocator allocator;
+  quiche::SimpleBufferAllocator allocator;
   QuicStreamSendBuffer send_buffer(&allocator);
 
   std::string data(1024, 'a');
@@ -331,7 +331,7 @@
 }
 
 TEST_F(QuicStreamSendBufferTest, SaveEmptyMemSliceSpan) {
-  SimpleBufferAllocator allocator;
+  quiche::SimpleBufferAllocator allocator;
   QuicStreamSendBuffer send_buffer(&allocator);
 
   std::string data(1024, 'a');
diff --git a/quic/core/quic_stream_test.cc b/quic/core/quic_stream_test.cc
index 7c97ce9..a1c0560 100644
--- a/quic/core/quic_stream_test.cc
+++ b/quic/core/quic_stream_test.cc
@@ -1249,14 +1249,18 @@
 
   Initialize();
   constexpr QuicByteCount kDataSize = 1024;
-  QuicBufferAllocator* allocator =
+  quiche::QuicheBufferAllocator* allocator =
       connection_->helper()->GetStreamSendBufferAllocator();
   std::vector<quiche::QuicheMemSlice> vector1;
-  vector1.push_back(quiche::QuicheMemSlice(QuicBuffer(allocator, kDataSize)));
-  vector1.push_back(quiche::QuicheMemSlice(QuicBuffer(allocator, kDataSize)));
+  vector1.push_back(
+      quiche::QuicheMemSlice(quiche::QuicheBuffer(allocator, kDataSize)));
+  vector1.push_back(
+      quiche::QuicheMemSlice(quiche::QuicheBuffer(allocator, kDataSize)));
   std::vector<quiche::QuicheMemSlice> vector2;
-  vector2.push_back(quiche::QuicheMemSlice(QuicBuffer(allocator, kDataSize)));
-  vector2.push_back(quiche::QuicheMemSlice(QuicBuffer(allocator, kDataSize)));
+  vector2.push_back(
+      quiche::QuicheMemSlice(quiche::QuicheBuffer(allocator, kDataSize)));
+  vector2.push_back(
+      quiche::QuicheMemSlice(quiche::QuicheBuffer(allocator, kDataSize)));
   absl::Span<quiche::QuicheMemSlice> span1(vector1);
   absl::Span<quiche::QuicheMemSlice> span2(vector2);
 
diff --git a/quic/masque/masque_compression_engine.cc b/quic/masque/masque_compression_engine.cc
index ca9ed93..69f75c0 100644
--- a/quic/masque/masque_compression_engine.cc
+++ b/quic/masque/masque_compression_engine.cc
@@ -7,7 +7,6 @@
 #include <cstdint>
 
 #include "absl/strings/string_view.h"
-#include "quic/core/quic_buffer_allocator.h"
 #include "quic/core/quic_data_reader.h"
 #include "quic/core/quic_data_writer.h"
 #include "quic/core/quic_framer.h"
@@ -16,6 +15,7 @@
 #include "quic/core/quic_versions.h"
 #include "quic/platform/api/quic_containers.h"
 #include "common/platform/api/quiche_mem_slice.h"
+#include "common/quiche_buffer_allocator.h"
 #include "common/quiche_text_utils.h"
 
 namespace quic {
@@ -269,7 +269,7 @@
                     sizeof(server_address.port()) + sizeof(uint8_t) +
                     server_address.host().ToPackedString().length();
   }
-  QuicBuffer buffer(
+  quiche::QuicheBuffer buffer(
       masque_session_->connection()->helper()->GetStreamSendBufferAllocator(),
       slice_length);
   QuicDataWriter writer(buffer.size(), buffer.data());
diff --git a/quic/qbone/qbone_session_base.cc b/quic/qbone/qbone_session_base.cc
index a5e8a2d..c12ec4e 100644
--- a/quic/qbone/qbone_session_base.cc
+++ b/quic/qbone/qbone_session_base.cc
@@ -10,7 +10,6 @@
 #include <utility>
 
 #include "absl/strings/string_view.h"
-#include "quic/core/quic_buffer_allocator.h"
 #include "quic/core/quic_data_reader.h"
 #include "quic/core/quic_types.h"
 #include "quic/platform/api/quic_exported_stats.h"
@@ -20,6 +19,7 @@
 #include "quic/qbone/qbone_constants.h"
 #include "common/platform/api/quiche_command_line_flags.h"
 #include "common/platform/api/quiche_mem_slice.h"
+#include "common/quiche_buffer_allocator.h"
 
 DEFINE_QUICHE_COMMAND_LINE_FLAG(
     bool, qbone_close_ephemeral_frames, true,
@@ -140,7 +140,7 @@
   }
 
   if (send_packets_as_messages_) {
-    quiche::QuicheMemSlice slice(QuicBuffer::Copy(
+    quiche::QuicheMemSlice slice(quiche::QuicheBuffer::Copy(
         connection()->helper()->GetStreamSendBufferAllocator(), packet));
     switch (SendMessage(absl::MakeSpan(&slice, 1), /*flush=*/true).status) {
       case MESSAGE_STATUS_SUCCESS:
diff --git a/quic/qbone/qbone_stream_test.cc b/quic/qbone/qbone_stream_test.cc
index 8e724a4..c2c862a 100644
--- a/quic/qbone/qbone_stream_test.cc
+++ b/quic/qbone/qbone_stream_test.cc
@@ -9,7 +9,6 @@
 #include "absl/strings/string_view.h"
 #include "quic/core/crypto/quic_random.h"
 #include "quic/core/quic_session.h"
-#include "quic/core/quic_simple_buffer_allocator.h"
 #include "quic/core/quic_utils.h"
 #include "quic/platform/api/quic_test.h"
 #include "quic/platform/api/quic_test_loopback.h"
@@ -17,6 +16,7 @@
 #include "quic/qbone/qbone_session_base.h"
 #include "quic/test_tools/mock_clock.h"
 #include "quic/test_tools/quic_test_utils.h"
+#include "common/simple_buffer_allocator.h"
 #include "spdy/core/spdy_protocol.h"
 
 namespace quic {
@@ -159,7 +159,7 @@
     return QuicRandom::GetInstance();
   }
 
-  QuicBufferAllocator* GetStreamSendBufferAllocator() override {
+  quiche::QuicheBufferAllocator* GetStreamSendBufferAllocator() override {
     return &buffer_allocator_;
   }
 
@@ -170,7 +170,7 @@
   std::unique_ptr<QuicAlarmFactory> alarm_factory_;
   std::unique_ptr<QuicConnection> connection_;
   // Used to implement the QuicConnectionHelperInterface.
-  SimpleBufferAllocator buffer_allocator_;
+  quiche::SimpleBufferAllocator buffer_allocator_;
   MockClock clock_;
   const QuicStreamId kStreamId = QuicUtils::GetFirstUnidirectionalStreamId(
       CurrentSupportedVersions()[0].transport_version, Perspective::IS_CLIENT);
diff --git a/quic/quic_transport/quic_transport_integration_test.cc b/quic/quic_transport/quic_transport_integration_test.cc
index 7bb8479..742fd46 100644
--- a/quic/quic_transport/quic_transport_integration_test.cc
+++ b/quic/quic_transport/quic_transport_integration_test.cc
@@ -13,7 +13,6 @@
 #include "url/origin.h"
 #include "quic/core/crypto/quic_crypto_client_config.h"
 #include "quic/core/crypto/quic_crypto_server_config.h"
-#include "quic/core/quic_buffer_allocator.h"
 #include "quic/core/quic_connection.h"
 #include "quic/core/quic_error_codes.h"
 #include "quic/core/quic_types.h"
diff --git a/quic/quic_transport/quic_transport_stream.cc b/quic/quic_transport/quic_transport_stream.cc
index 4def1de..a66f24c 100644
--- a/quic/quic_transport/quic_transport_stream.cc
+++ b/quic/quic_transport/quic_transport_stream.cc
@@ -7,7 +7,6 @@
 #include <sys/types.h>
 
 #include "absl/strings/string_view.h"
-#include "quic/core/quic_buffer_allocator.h"
 #include "quic/core/quic_error_codes.h"
 #include "quic/core/quic_types.h"
 #include "quic/core/quic_utils.h"
diff --git a/quic/test_tools/quic_test_backend.cc b/quic/test_tools/quic_test_backend.cc
index 12f530a..f84e93e 100644
--- a/quic/test_tools/quic_test_backend.cc
+++ b/quic/test_tools/quic_test_backend.cc
@@ -10,8 +10,6 @@
 #include "absl/strings/str_cat.h"
 #include "absl/strings/str_split.h"
 #include "absl/strings/string_view.h"
-#include "quic/core/quic_buffer_allocator.h"
-#include "quic/core/quic_simple_buffer_allocator.h"
 #include "quic/core/web_transport_interface.h"
 #include "quic/test_tools/web_transport_resets_backend.h"
 #include "quic/tools/web_transport_test_visitors.h"
diff --git a/quic/test_tools/quic_test_utils.cc b/quic/test_tools/quic_test_utils.cc
index 52eafed..9bc950f 100644
--- a/quic/test_tools/quic_test_utils.cc
+++ b/quic/test_tools/quic_test_utils.cc
@@ -21,12 +21,10 @@
 #include "quic/core/crypto/quic_decrypter.h"
 #include "quic/core/crypto/quic_encrypter.h"
 #include "quic/core/http/quic_spdy_client_session.h"
-#include "quic/core/quic_buffer_allocator.h"
 #include "quic/core/quic_config.h"
 #include "quic/core/quic_data_writer.h"
 #include "quic/core/quic_framer.h"
 #include "quic/core/quic_packet_creator.h"
-#include "quic/core/quic_simple_buffer_allocator.h"
 #include "quic/core/quic_types.h"
 #include "quic/core/quic_utils.h"
 #include "quic/core/quic_versions.h"
@@ -36,7 +34,9 @@
 #include "quic/test_tools/crypto_test_utils.h"
 #include "quic/test_tools/quic_config_peer.h"
 #include "quic/test_tools/quic_connection_peer.h"
+#include "common/quiche_buffer_allocator.h"
 #include "common/quiche_endian.h"
+#include "common/simple_buffer_allocator.h"
 #include "spdy/core/spdy_frame_builder.h"
 
 using testing::_;
@@ -486,7 +486,8 @@
   }
 }
 
-QuicBufferAllocator* MockQuicConnectionHelper::GetStreamSendBufferAllocator() {
+quiche::QuicheBufferAllocator*
+MockQuicConnectionHelper::GetStreamSendBufferAllocator() {
   return &buffer_allocator_;
 }
 
@@ -1315,8 +1316,9 @@
     return quiche::QuicheMemSlice();
   }
 
-  static SimpleBufferAllocator* allocator = new SimpleBufferAllocator();
-  return quiche::QuicheMemSlice(QuicBuffer::Copy(allocator, data));
+  static quiche::SimpleBufferAllocator* allocator =
+      new quiche::SimpleBufferAllocator();
+  return quiche::QuicheMemSlice(quiche::QuicheBuffer::Copy(allocator, data));
 }
 
 bool TaggingEncrypter::EncryptPacket(uint64_t /*packet_number*/,
diff --git a/quic/test_tools/quic_test_utils.h b/quic/test_tools/quic_test_utils.h
index 3f6842e..869e416 100644
--- a/quic/test_tools/quic_test_utils.h
+++ b/quic/test_tools/quic_test_utils.h
@@ -30,7 +30,6 @@
 #include "quic/core/quic_path_validator.h"
 #include "quic/core/quic_sent_packet_manager.h"
 #include "quic/core/quic_server_id.h"
-#include "quic/core/quic_simple_buffer_allocator.h"
 #include "quic/core/quic_types.h"
 #include "quic/core/quic_utils.h"
 #include "quic/platform/api/quic_socket_address.h"
@@ -41,6 +40,7 @@
 #include "quic/test_tools/quic_framer_peer.h"
 #include "quic/test_tools/simple_quic_framer.h"
 #include "common/quiche_mem_slice_storage.h"
+#include "common/simple_buffer_allocator.h"
 
 namespace quic {
 
@@ -517,13 +517,13 @@
   ~MockQuicConnectionHelper() override;
   const QuicClock* GetClock() const override;
   QuicRandom* GetRandomGenerator() override;
-  QuicBufferAllocator* GetStreamSendBufferAllocator() override;
+  quiche::QuicheBufferAllocator* GetStreamSendBufferAllocator() override;
   void AdvanceTime(QuicTime::Delta delta);
 
  private:
   MockClock clock_;
   MockRandom random_generator_;
-  SimpleBufferAllocator buffer_allocator_;
+  quiche::SimpleBufferAllocator buffer_allocator_;
 };
 
 class MockAlarmFactory : public QuicAlarmFactory {
diff --git a/quic/test_tools/simple_data_producer.h b/quic/test_tools/simple_data_producer.h
index dc0c076..e8dd4e4 100644
--- a/quic/test_tools/simple_data_producer.h
+++ b/quic/test_tools/simple_data_producer.h
@@ -7,10 +7,10 @@
 
 #include "absl/container/flat_hash_map.h"
 #include "absl/strings/string_view.h"
-#include "quic/core/quic_simple_buffer_allocator.h"
 #include "quic/core/quic_stream_frame_data_producer.h"
 #include "quic/core/quic_stream_send_buffer.h"
 #include "quic/platform/api/quic_containers.h"
+#include "common/simple_buffer_allocator.h"
 
 namespace quic {
 
@@ -57,7 +57,7 @@
       absl::flat_hash_map<std::pair<EncryptionLevel, QuicStreamOffset>,
                           std::string>;
 
-  SimpleBufferAllocator allocator_;
+  quiche::SimpleBufferAllocator allocator_;
 
   SendBufferMap send_buffer_map_;
 
diff --git a/quic/test_tools/simulator/simulator.cc b/quic/test_tools/simulator/simulator.cc
index a9835e8..2cdfe44 100644
--- a/quic/test_tools/simulator/simulator.cc
+++ b/quic/test_tools/simulator/simulator.cc
@@ -113,7 +113,7 @@
   return random_generator_;
 }
 
-QuicBufferAllocator* Simulator::GetStreamSendBufferAllocator() {
+quiche::QuicheBufferAllocator* Simulator::GetStreamSendBufferAllocator() {
   return &buffer_allocator_;
 }
 
diff --git a/quic/test_tools/simulator/simulator.h b/quic/test_tools/simulator/simulator.h
index b4298f5..225441d 100644
--- a/quic/test_tools/simulator/simulator.h
+++ b/quic/test_tools/simulator/simulator.h
@@ -10,11 +10,11 @@
 #include "absl/container/flat_hash_map.h"
 #include "absl/container/flat_hash_set.h"
 #include "quic/core/quic_connection.h"
-#include "quic/core/quic_simple_buffer_allocator.h"
 #include "quic/platform/api/quic_bug_tracker.h"
 #include "quic/platform/api/quic_containers.h"
 #include "quic/test_tools/simulator/actor.h"
 #include "quic/test_tools/simulator/alarm_factory.h"
+#include "common/simple_buffer_allocator.h"
 
 namespace quic {
 namespace simulator {
@@ -42,7 +42,7 @@
   // Begin QuicConnectionHelperInterface implementation.
   const QuicClock* GetClock() const override;
   QuicRandom* GetRandomGenerator() override;
-  QuicBufferAllocator* GetStreamSendBufferAllocator() override;
+  quiche::QuicheBufferAllocator* GetStreamSendBufferAllocator() override;
   // End QuicConnectionHelperInterface implementation.
 
   QuicAlarmFactory* GetAlarmFactory();
@@ -110,7 +110,7 @@
 
   Clock clock_;
   QuicRandom* random_generator_;
-  SimpleBufferAllocator buffer_allocator_;
+  quiche::SimpleBufferAllocator buffer_allocator_;
   AlarmFactory alarm_factory_;
 
   // Alarm for RunFor() method.
diff --git a/quic/tools/quic_simple_server_stream_test.cc b/quic/tools/quic_simple_server_stream_test.cc
index b75246f..40b470e 100644
--- a/quic/tools/quic_simple_server_stream_test.cc
+++ b/quic/tools/quic_simple_server_stream_test.cc
@@ -16,7 +16,6 @@
 #include "quic/core/http/http_encoder.h"
 #include "quic/core/http/spdy_utils.h"
 #include "quic/core/quic_error_codes.h"
-#include "quic/core/quic_simple_buffer_allocator.h"
 #include "quic/core/quic_types.h"
 #include "quic/core/quic_utils.h"
 #include "quic/platform/api/quic_expect_bug.h"
@@ -32,6 +31,7 @@
 #include "quic/tools/quic_backend_response.h"
 #include "quic/tools/quic_memory_cache_backend.h"
 #include "quic/tools/quic_simple_server_session.h"
+#include "common/simple_buffer_allocator.h"
 
 using testing::_;
 using testing::AnyNumber;
@@ -280,8 +280,8 @@
       .WillRepeatedly(
           Invoke(&session_, &MockQuicSimpleServerSession::ConsumeData));
   stream_->OnStreamHeaderList(false, kFakeFrameLen, header_list_);
-  QuicBuffer header = HttpEncoder::SerializeDataFrameHeader(
-      body_.length(), SimpleBufferAllocator::Get());
+  quiche::QuicheBuffer header = HttpEncoder::SerializeDataFrameHeader(
+      body_.length(), quiche::SimpleBufferAllocator::Get());
   std::string data =
       UsesHttp3() ? absl::StrCat(header.AsStringView(), body_) : body_;
   stream_->OnStreamFrame(
@@ -298,8 +298,8 @@
           Invoke(&session_, &MockQuicSimpleServerSession::ConsumeData));
 
   stream_->OnStreamHeaderList(false, kFakeFrameLen, header_list_);
-  QuicBuffer header = HttpEncoder::SerializeDataFrameHeader(
-      body_.length(), SimpleBufferAllocator::Get());
+  quiche::QuicheBuffer header = HttpEncoder::SerializeDataFrameHeader(
+      body_.length(), quiche::SimpleBufferAllocator::Get());
   std::string data =
       UsesHttp3() ? absl::StrCat(header.AsStringView(), body_) : body_;
   stream_->OnStreamFrame(
@@ -349,8 +349,8 @@
   EXPECT_CALL(session_, WritevData(_, kErrorLength, _, FIN, _, _));
 
   stream_->OnStreamHeaderList(false, kFakeFrameLen, header_list_);
-  QuicBuffer header = HttpEncoder::SerializeDataFrameHeader(
-      body_.length(), SimpleBufferAllocator::Get());
+  quiche::QuicheBuffer header = HttpEncoder::SerializeDataFrameHeader(
+      body_.length(), quiche::SimpleBufferAllocator::Get());
   std::string data =
       UsesHttp3() ? absl::StrCat(header.AsStringView(), body_) : body_;
 
@@ -358,8 +358,8 @@
       QuicStreamFrame(stream_->id(), /*fin=*/false, /*offset=*/0, data));
   // Content length is still 11.  This will register as an error and we won't
   // accept the bytes.
-  header = HttpEncoder::SerializeDataFrameHeader(large_body.length(),
-                                                 SimpleBufferAllocator::Get());
+  header = HttpEncoder::SerializeDataFrameHeader(
+      large_body.length(), quiche::SimpleBufferAllocator::Get());
   std::string data2 = UsesHttp3()
                           ? absl::StrCat(header.AsStringView(), large_body)
                           : large_body;
@@ -381,8 +381,8 @@
   response_headers_[":status"] = "200 OK";
   response_headers_["content-length"] = "5";
   std::string body = "Yummm";
-  QuicBuffer header = HttpEncoder::SerializeDataFrameHeader(
-      body.length(), SimpleBufferAllocator::Get());
+  quiche::QuicheBuffer header = HttpEncoder::SerializeDataFrameHeader(
+      body.length(), quiche::SimpleBufferAllocator::Get());
 
   memory_cache_backend_.AddResponse("www.google.com", "/bar",
                                     std::move(response_headers_), body);
@@ -413,8 +413,8 @@
   response_headers_["content-length"] = "5";
   std::string body = "Yummm";
 
-  QuicBuffer header = HttpEncoder::SerializeDataFrameHeader(
-      body.length(), SimpleBufferAllocator::Get());
+  quiche::QuicheBuffer header = HttpEncoder::SerializeDataFrameHeader(
+      body.length(), quiche::SimpleBufferAllocator::Get());
 
   memory_cache_backend_.AddResponse("www.google.com", "/bar",
                                     std::move(response_headers_), body);
@@ -482,8 +482,8 @@
   response_headers_["content-length"] = "5";
   std::string body = "Yummm";
 
-  QuicBuffer header = HttpEncoder::SerializeDataFrameHeader(
-      body.length(), SimpleBufferAllocator::Get());
+  quiche::QuicheBuffer header = HttpEncoder::SerializeDataFrameHeader(
+      body.length(), quiche::SimpleBufferAllocator::Get());
 
   memory_cache_backend_.AddResponse("www.google.com", "/bar",
                                     std::move(response_headers_), body);
@@ -512,8 +512,8 @@
   (*request_headers)[":authority"] = host;
   (*request_headers)[":method"] = "GET";
 
-  QuicBuffer header = HttpEncoder::SerializeDataFrameHeader(
-      body.length(), SimpleBufferAllocator::Get());
+  quiche::QuicheBuffer header = HttpEncoder::SerializeDataFrameHeader(
+      body.length(), quiche::SimpleBufferAllocator::Get());
   std::vector<spdy::Http2HeaderBlock> early_hints;
   // Add two Early Hints.
   const size_t kNumEarlyHintsResponses = 2;
@@ -581,8 +581,8 @@
   response_headers_[":status"] = "200";
   response_headers_["content-length"] = "5";
   const std::string kBody = "Hello";
-  QuicBuffer header = HttpEncoder::SerializeDataFrameHeader(
-      body_.length(), SimpleBufferAllocator::Get());
+  quiche::QuicheBuffer header = HttpEncoder::SerializeDataFrameHeader(
+      body_.length(), quiche::SimpleBufferAllocator::Get());
   memory_cache_backend_.AddResponse(kHost, kPath, std::move(response_headers_),
                                     kBody);
 
@@ -742,8 +742,8 @@
   header_list.OnHeaderBlockEnd(128, 128);
   EXPECT_CALL(*stream_, WriteHeadersMock(/*fin=*/false));
   stream_->OnStreamHeaderList(/*fin=*/false, kFakeFrameLen, header_list);
-  QuicBuffer header = HttpEncoder::SerializeDataFrameHeader(
-      body_.length(), SimpleBufferAllocator::Get());
+  quiche::QuicheBuffer header = HttpEncoder::SerializeDataFrameHeader(
+      body_.length(), quiche::SimpleBufferAllocator::Get());
   std::string data =
       UsesHttp3() ? absl::StrCat(header.AsStringView(), body_) : body_;
   stream_->OnStreamFrame(
diff --git a/quic/tools/quic_transport_simple_server_session.cc b/quic/tools/quic_transport_simple_server_session.cc
index 157c16c..b8616d8 100644
--- a/quic/tools/quic_transport_simple_server_session.cc
+++ b/quic/tools/quic_transport_simple_server_session.cc
@@ -8,7 +8,6 @@
 
 #include "url/gurl.h"
 #include "url/origin.h"
-#include "quic/core/quic_buffer_allocator.h"
 #include "quic/core/quic_types.h"
 #include "quic/core/quic_versions.h"
 #include "quic/platform/api/quic_flags.h"
@@ -17,6 +16,7 @@
 #include "quic/quic_transport/quic_transport_stream.h"
 #include "quic/tools/web_transport_test_visitors.h"
 #include "common/platform/api/quiche_mem_slice.h"
+#include "common/quiche_buffer_allocator.h"
 
 namespace quic {
 
@@ -128,8 +128,9 @@
   if (mode_ != ECHO) {
     return;
   }
-  datagram_queue()->SendOrQueueDatagram(quiche::QuicheMemSlice(QuicBuffer::Copy(
-      connection()->helper()->GetStreamSendBufferAllocator(), message)));
+  datagram_queue()->SendOrQueueDatagram(
+      quiche::QuicheMemSlice(quiche::QuicheBuffer::Copy(
+          connection()->helper()->GetStreamSendBufferAllocator(), message)));
 }
 
 void QuicTransportSimpleServerSession::MaybeEchoStreamsBack() {
diff --git a/quic/tools/web_transport_test_visitors.h b/quic/tools/web_transport_test_visitors.h
index 4fdac1c..27605b1 100644
--- a/quic/tools/web_transport_test_visitors.h
+++ b/quic/tools/web_transport_test_visitors.h
@@ -7,11 +7,11 @@
 
 #include <string>
 
-#include "quic/core/quic_simple_buffer_allocator.h"
 #include "quic/core/web_transport_interface.h"
 #include "quic/platform/api/quic_logging.h"
 #include "common/platform/api/quiche_mem_slice.h"
 #include "common/quiche_circular_deque.h"
+#include "common/simple_buffer_allocator.h"
 
 namespace quic {
 
@@ -219,7 +219,8 @@
   }
 
   void OnDatagramReceived(absl::string_view datagram) override {
-    quiche::QuicheMemSlice slice(QuicBuffer::Copy(&allocator_, datagram));
+    quiche::QuicheMemSlice slice(
+        quiche::QuicheBuffer::Copy(&allocator_, datagram));
     session_->SendOrQueueDatagram(std::move(slice));
   }
 
@@ -251,7 +252,7 @@
 
  private:
   WebTransportSession* session_;
-  SimpleBufferAllocator allocator_;
+  quiche::SimpleBufferAllocator allocator_;
   bool echo_stream_opened_ = false;
 
   quiche::QuicheCircularDeque<std::string> streams_to_echo_back_;