Move quic::QuicCircularDeque to quiche::QuicheCircularDeque.

See last comment at cl/366295336 for motivation.

PiperOrigin-RevId: 370769667
Change-Id: I41907c4e7ef592fb8b7f6a298daf4e1ed15f4d2f
diff --git a/common/platform/api/quiche_test.h b/common/platform/api/quiche_test.h
index b584752..1af25df 100644
--- a/common/platform/api/quiche_test.h
+++ b/common/platform/api/quiche_test.h
@@ -12,4 +12,7 @@
 template <class T>
 using QuicheTestWithParam = quiche::test::QuicheTestWithParamImpl<T>;
 
+#define EXPECT_QUICHE_DEBUG_DEATH(condition, message) \
+  EXPECT_QUICHE_DEBUG_DEATH_IMPL(condition, message)
+
 #endif  // QUICHE_COMMON_PLATFORM_API_QUICHE_TEST_H_
diff --git a/quic/core/quic_circular_deque.h b/common/quiche_circular_deque.h
similarity index 88%
rename from quic/core/quic_circular_deque.h
rename to common/quiche_circular_deque.h
index 44637ab..42b2232 100644
--- a/quic/core/quic_circular_deque.h
+++ b/common/quiche_circular_deque.h
@@ -2,8 +2,8 @@
 // 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_CIRCULAR_DEQUE_H_
-#define QUICHE_QUIC_CORE_QUIC_CIRCULAR_DEQUE_H_
+#ifndef QUICHE_COMMON_QUICHE_CIRCULAR_DEQUE_H_
+#define QUICHE_COMMON_QUICHE_CIRCULAR_DEQUE_H_
 
 #include <algorithm>
 #include <cstddef>
@@ -13,16 +13,16 @@
 #include <ostream>
 #include <type_traits>
 
-#include "quic/platform/api/quic_export.h"
-#include "quic/platform/api/quic_logging.h"
+#include "common/platform/api/quiche_export.h"
+#include "common/platform/api/quiche_logging.h"
 
-namespace quic {
+namespace quiche {
 
-// QuicCircularDeque is a STL-style container that is similar to std deque in
+// QuicheCircularDeque is a STL-style container that is similar to std::deque in
 // API and std::vector in capacity management. The goal is to optimize a common
 // QUIC use case where we keep adding new elements to the end and removing old
 // elements from the beginning, under such scenarios, if the container's size()
-// remain relatively stable, QuicCircularDeque requires little to no memory
+// remain relatively stable, QuicheCircularDeque requires little to no memory
 // allocations or deallocations.
 //
 // The implementation, as the name suggests, uses a flat circular buffer to hold
@@ -40,12 +40,12 @@
 template <typename T,
           size_t MinCapacityIncrement = 3,
           typename Allocator = std::allocator<T>>
-class QUIC_NO_EXPORT QuicCircularDeque {
+class QUICHE_NO_EXPORT QuicheCircularDeque {
   using AllocatorTraits = std::allocator_traits<Allocator>;
 
   // Pointee is either T or const T.
   template <typename Pointee>
-  class QUIC_NO_EXPORT basic_iterator {
+  class QUICHE_NO_EXPORT basic_iterator {
     using size_type = typename AllocatorTraits::size_type;
 
    public:
@@ -159,7 +159,7 @@
     }
 
    private:
-    basic_iterator(const QuicCircularDeque* deque, size_type index)
+    basic_iterator(const QuicheCircularDeque* deque, size_type index)
         : deque_(deque), index_(index) {}
 
     void Increment() {
@@ -191,8 +191,8 @@
       return index_ + deque_->data_capacity() - deque_->begin_;
     }
 
-    friend class QuicCircularDeque;
-    const QuicCircularDeque* deque_ = nullptr;
+    friend class QuicheCircularDeque;
+    const QuicheCircularDeque* deque_ = nullptr;
     size_type index_ = 0;
   };
 
@@ -210,19 +210,19 @@
   using reverse_iterator = std::reverse_iterator<iterator>;
   using const_reverse_iterator = std::reverse_iterator<const_iterator>;
 
-  QuicCircularDeque() : QuicCircularDeque(allocator_type()) {}
-  explicit QuicCircularDeque(const allocator_type& alloc)
+  QuicheCircularDeque() : QuicheCircularDeque(allocator_type()) {}
+  explicit QuicheCircularDeque(const allocator_type& alloc)
       : allocator_and_data_(alloc) {}
 
-  QuicCircularDeque(size_type count,
-                    const T& value,
-                    const Allocator& alloc = allocator_type())
+  QuicheCircularDeque(size_type count,
+                      const T& value,
+                      const Allocator& alloc = allocator_type())
       : allocator_and_data_(alloc) {
     resize(count, value);
   }
 
-  explicit QuicCircularDeque(size_type count,
-                             const Allocator& alloc = allocator_type())
+  explicit QuicheCircularDeque(size_type count,
+                               const Allocator& alloc = allocator_type())
       : allocator_and_data_(alloc) {
     resize(count);
   }
@@ -232,25 +232,26 @@
       typename = std::enable_if_t<std::is_base_of<
           std::input_iterator_tag,
           typename std::iterator_traits<InputIt>::iterator_category>::value>>
-  QuicCircularDeque(InputIt first,
-                    InputIt last,
-                    const Allocator& alloc = allocator_type())
+  QuicheCircularDeque(InputIt first,
+                      InputIt last,
+                      const Allocator& alloc = allocator_type())
       : allocator_and_data_(alloc) {
     AssignRange(first, last);
   }
 
-  QuicCircularDeque(const QuicCircularDeque& other)
-      : QuicCircularDeque(
+  QuicheCircularDeque(const QuicheCircularDeque& other)
+      : QuicheCircularDeque(
             other,
             AllocatorTraits::select_on_container_copy_construction(
                 other.allocator_and_data_.allocator())) {}
 
-  QuicCircularDeque(const QuicCircularDeque& other, const allocator_type& alloc)
+  QuicheCircularDeque(const QuicheCircularDeque& other,
+                      const allocator_type& alloc)
       : allocator_and_data_(alloc) {
     assign(other.begin(), other.end());
   }
 
-  QuicCircularDeque(QuicCircularDeque&& other)
+  QuicheCircularDeque(QuicheCircularDeque&& other)
       : begin_(other.begin_),
         end_(other.end_),
         allocator_and_data_(std::move(other.allocator_and_data_)) {
@@ -259,16 +260,16 @@
     other.allocator_and_data_.data_capacity = 0;
   }
 
-  QuicCircularDeque(QuicCircularDeque&& other, const allocator_type& alloc)
+  QuicheCircularDeque(QuicheCircularDeque&& other, const allocator_type& alloc)
       : allocator_and_data_(alloc) {
     MoveRetainAllocator(std::move(other));
   }
 
-  QuicCircularDeque(std::initializer_list<T> init,
-                    const allocator_type& alloc = allocator_type())
-      : QuicCircularDeque(init.begin(), init.end(), alloc) {}
+  QuicheCircularDeque(std::initializer_list<T> init,
+                      const allocator_type& alloc = allocator_type())
+      : QuicheCircularDeque(init.begin(), init.end(), alloc) {}
 
-  QuicCircularDeque& operator=(const QuicCircularDeque& other) {
+  QuicheCircularDeque& operator=(const QuicheCircularDeque& other) {
     if (this == &other) {
       return *this;
     }
@@ -286,21 +287,21 @@
     return *this;
   }
 
-  QuicCircularDeque& operator=(QuicCircularDeque&& other) {
+  QuicheCircularDeque& operator=(QuicheCircularDeque&& other) {
     if (this == &other) {
       return *this;
     }
     if (AllocatorTraits::propagate_on_container_move_assignment::value) {
       // Take over the storage of "other", along with its allocator.
-      this->~QuicCircularDeque();
-      new (this) QuicCircularDeque(std::move(other));
+      this->~QuicheCircularDeque();
+      new (this) QuicheCircularDeque(std::move(other));
     } else {
       MoveRetainAllocator(std::move(other));
     }
     return *this;
   }
 
-  ~QuicCircularDeque() { DestroyAndDeallocateAll(); }
+  ~QuicheCircularDeque() { DestroyAndDeallocateAll(); }
 
   void assign(size_type count, const T& value) {
     ClearRetainCapacity();
@@ -333,7 +334,7 @@
   }
 
   const_reference at(size_type pos) const {
-    return const_cast<QuicCircularDeque*>(this)->at(pos);
+    return const_cast<QuicheCircularDeque*>(this)->at(pos);
   }
 
   reference operator[](size_type pos) { return at(pos); }
@@ -346,7 +347,7 @@
   }
 
   const_reference front() const {
-    return const_cast<QuicCircularDeque*>(this)->front();
+    return const_cast<QuicheCircularDeque*>(this)->front();
   }
 
   reference back() {
@@ -355,7 +356,7 @@
   }
 
   const_reference back() const {
-    return const_cast<QuicCircularDeque*>(this)->back();
+    return const_cast<QuicheCircularDeque*>(this)->back();
   }
 
   iterator begin() { return iterator(this, begin_); }
@@ -460,7 +461,7 @@
     return num_elements_to_pop;
   }
 
-  void swap(QuicCircularDeque& other) {
+  void swap(QuicheCircularDeque& other) {
     using std::swap;
     swap(begin_, other.begin_);
     swap(end_, other.end_);
@@ -479,7 +480,7 @@
     }
   }
 
-  friend void swap(QuicCircularDeque& lhs, QuicCircularDeque& rhs) {
+  friend void swap(QuicheCircularDeque& lhs, QuicheCircularDeque& rhs) {
     lhs.swap(rhs);
   }
 
@@ -487,18 +488,19 @@
     return allocator_and_data_.allocator();
   }
 
-  friend bool operator==(const QuicCircularDeque& lhs,
-                         const QuicCircularDeque& rhs) {
+  friend bool operator==(const QuicheCircularDeque& lhs,
+                         const QuicheCircularDeque& rhs) {
     return std::equal(lhs.begin(), lhs.end(), rhs.begin(), rhs.end());
   }
 
-  friend bool operator!=(const QuicCircularDeque& lhs,
-                         const QuicCircularDeque& rhs) {
+  friend bool operator!=(const QuicheCircularDeque& lhs,
+                         const QuicheCircularDeque& rhs) {
     return !(lhs == rhs);
   }
 
-  friend QUIC_NO_EXPORT std::ostream& operator<<(std::ostream& os,
-                                                 const QuicCircularDeque& dq) {
+  friend QUICHE_NO_EXPORT std::ostream& operator<<(
+      std::ostream& os,
+      const QuicheCircularDeque& dq) {
     os << "{";
     for (size_type pos = 0; pos != dq.size(); ++pos) {
       if (pos != 0) {
@@ -511,7 +513,7 @@
   }
 
  private:
-  void MoveRetainAllocator(QuicCircularDeque&& other) {
+  void MoveRetainAllocator(QuicheCircularDeque&& other) {
     if (get_allocator() == other.get_allocator()) {
       // Take over the storage of "other", with which we share an allocator.
       DestroyAndDeallocateAll();
@@ -752,6 +754,6 @@
   AllocatorAndData allocator_and_data_;
 };
 
-}  // namespace quic
+}  // namespace quiche
 
-#endif  // QUICHE_QUIC_CORE_QUIC_CIRCULAR_DEQUE_H_
+#endif  // QUICHE_COMMON_QUICHE_CIRCULAR_DEQUE_H_
diff --git a/quic/core/quic_circular_deque_test.cc b/common/quiche_circular_deque_test.cc
similarity index 80%
rename from quic/core/quic_circular_deque_test.cc
rename to common/quiche_circular_deque_test.cc
index 25aa78e..0b38ab7 100644
--- a/quic/core/quic_circular_deque_test.cc
+++ b/common/quiche_circular_deque_test.cc
@@ -2,19 +2,19 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "quic/core/quic_circular_deque.h"
+#include "common/quiche_circular_deque.h"
 
 #include <cstddef>
 #include <cstdint>
 #include <memory>
 #include <type_traits>
 
-#include "quic/platform/api/quic_logging.h"
-#include "quic/platform/api/quic_test.h"
+#include "common/platform/api/quiche_logging.h"
+#include "common/platform/api/quiche_test.h"
 
 using testing::ElementsAre;
 
-namespace quic {
+namespace quiche {
 namespace test {
 namespace {
 
@@ -106,10 +106,10 @@
   }
 }
 
-class QuicCircularDequeTest : public QuicTest {};
+class QuicheCircularDequeTest : public QuicheTest {};
 
-TEST_F(QuicCircularDequeTest, Empty) {
-  QuicCircularDeque<int> dq;
+TEST_F(QuicheCircularDequeTest, Empty) {
+  QuicheCircularDeque<int> dq;
   EXPECT_TRUE(dq.empty());
   EXPECT_EQ(0u, dq.size());
   dq.clear();
@@ -122,68 +122,69 @@
   EXPECT_TRUE(dq.empty());
   EXPECT_EQ(0u, dq.size());
 
-  EXPECT_QUIC_DEBUG_DEATH(dq.front(), "");
-  EXPECT_QUIC_DEBUG_DEATH(dq.back(), "");
-  EXPECT_QUIC_DEBUG_DEATH(dq.at(0), "");
-  EXPECT_QUIC_DEBUG_DEATH(dq[0], "");
+  EXPECT_QUICHE_DEBUG_DEATH(dq.front(), "");
+  EXPECT_QUICHE_DEBUG_DEATH(dq.back(), "");
+  EXPECT_QUICHE_DEBUG_DEATH(dq.at(0), "");
+  EXPECT_QUICHE_DEBUG_DEATH(dq[0], "");
 }
 
-TEST_F(QuicCircularDequeTest, Constructor) {
-  QuicCircularDeque<int> dq;
+TEST_F(QuicheCircularDequeTest, Constructor) {
+  QuicheCircularDeque<int> dq;
   EXPECT_TRUE(dq.empty());
 
   std::allocator<int> alloc;
-  QuicCircularDeque<int> dq1(alloc);
+  QuicheCircularDeque<int> dq1(alloc);
   EXPECT_TRUE(dq1.empty());
 
-  QuicCircularDeque<int> dq2(8, 100, alloc);
+  QuicheCircularDeque<int> dq2(8, 100, alloc);
   EXPECT_THAT(dq2, ElementsAre(100, 100, 100, 100, 100, 100, 100, 100));
 
-  QuicCircularDeque<int> dq3(5, alloc);
+  QuicheCircularDeque<int> dq3(5, alloc);
   EXPECT_THAT(dq3, ElementsAre(0, 0, 0, 0, 0));
 
-  QuicCircularDeque<int> dq4_rand_iter(dq3.begin(), dq3.end(), alloc);
+  QuicheCircularDeque<int> dq4_rand_iter(dq3.begin(), dq3.end(), alloc);
   EXPECT_THAT(dq4_rand_iter, ElementsAre(0, 0, 0, 0, 0));
   EXPECT_EQ(dq4_rand_iter, dq3);
 
   std::list<int> dq4_src = {4, 4, 4, 4};
-  QuicCircularDeque<int> dq4_bidi_iter(dq4_src.begin(), dq4_src.end());
+  QuicheCircularDeque<int> dq4_bidi_iter(dq4_src.begin(), dq4_src.end());
   EXPECT_THAT(dq4_bidi_iter, ElementsAre(4, 4, 4, 4));
 
-  QuicCircularDeque<int> dq5(dq4_bidi_iter);
+  QuicheCircularDeque<int> dq5(dq4_bidi_iter);
   EXPECT_THAT(dq5, ElementsAre(4, 4, 4, 4));
   EXPECT_EQ(dq5, dq4_bidi_iter);
 
-  QuicCircularDeque<int> dq6(dq5, alloc);
+  QuicheCircularDeque<int> dq6(dq5, alloc);
   EXPECT_THAT(dq6, ElementsAre(4, 4, 4, 4));
   EXPECT_EQ(dq6, dq5);
 
-  QuicCircularDeque<int> dq7(std::move(*&dq6));
+  QuicheCircularDeque<int> dq7(std::move(*&dq6));
   EXPECT_THAT(dq7, ElementsAre(4, 4, 4, 4));
   EXPECT_TRUE(dq6.empty());
 
-  QuicCircularDeque<int> dq8_equal_allocator(std::move(*&dq7), alloc);
+  QuicheCircularDeque<int> dq8_equal_allocator(std::move(*&dq7), alloc);
   EXPECT_THAT(dq8_equal_allocator, ElementsAre(4, 4, 4, 4));
   EXPECT_TRUE(dq7.empty());
 
-  QuicCircularDeque<int, 3, CountingAllocator<int>> dq8_temp = {5, 6, 7, 8, 9};
-  QuicCircularDeque<int, 3, CountingAllocator<int>> dq8_unequal_allocator(
+  QuicheCircularDeque<int, 3, CountingAllocator<int>> dq8_temp = {5, 6, 7, 8,
+                                                                  9};
+  QuicheCircularDeque<int, 3, CountingAllocator<int>> dq8_unequal_allocator(
       std::move(*&dq8_temp), CountingAllocator<int>());
   EXPECT_THAT(dq8_unequal_allocator, ElementsAre(5, 6, 7, 8, 9));
   EXPECT_TRUE(dq8_temp.empty());
 
-  QuicCircularDeque<int> dq9({3, 4, 5, 6, 7}, alloc);
+  QuicheCircularDeque<int> dq9({3, 4, 5, 6, 7}, alloc);
   EXPECT_THAT(dq9, ElementsAre(3, 4, 5, 6, 7));
 }
 
-TEST_F(QuicCircularDequeTest, Assign) {
+TEST_F(QuicheCircularDequeTest, Assign) {
   // assign()
-  QuicCircularDeque<int, 3, CountingAllocator<int>> dq;
+  QuicheCircularDeque<int, 3, CountingAllocator<int>> dq;
   dq.assign(7, 1);
   EXPECT_THAT(dq, ElementsAre(1, 1, 1, 1, 1, 1, 1));
   EXPECT_EQ(1u, dq.get_allocator().allocate_count());
 
-  QuicCircularDeque<int, 3, CountingAllocator<int>> dq2;
+  QuicheCircularDeque<int, 3, CountingAllocator<int>> dq2;
   dq2.assign(dq.begin(), dq.end());
   EXPECT_THAT(dq2, ElementsAre(1, 1, 1, 1, 1, 1, 1));
   EXPECT_EQ(1u, dq2.get_allocator().allocate_count());
@@ -194,7 +195,7 @@
 
   // Assign from a non random access iterator.
   std::list<int> dq3_src = {3, 3, 3, 3, 3};
-  QuicCircularDeque<int, 3, CountingAllocator<int>> dq3;
+  QuicheCircularDeque<int, 3, CountingAllocator<int>> dq3;
   dq3.assign(dq3_src.begin(), dq3_src.end());
   EXPECT_THAT(dq3, ElementsAre(3, 3, 3, 3, 3));
   EXPECT_LT(1u, dq3.get_allocator().allocate_count());
@@ -203,7 +204,7 @@
   dq3 = *&dq3;
   EXPECT_THAT(dq3, ElementsAre(3, 3, 3, 3, 3));
 
-  QuicCircularDeque<
+  QuicheCircularDeque<
       int, 3,
       ConfigurableAllocator<int,
                             /*propagate_on_copy_assignment=*/std::true_type,
@@ -215,7 +216,7 @@
   dq5 = dq4;
   EXPECT_THAT(dq5, ElementsAre(3, 3, 3, 3, 3));
 
-  QuicCircularDeque<
+  QuicheCircularDeque<
       int, 3,
       ConfigurableAllocator<int,
                             /*propagate_on_copy_assignment=*/std::false_type,
@@ -238,7 +239,7 @@
   EXPECT_THAT(dq8, ElementsAre(3, 3, 3, 3, 3));
   EXPECT_TRUE(dq3.empty());
 
-  QuicCircularDeque<
+  QuicheCircularDeque<
       int, 3,
       ConfigurableAllocator<int,
                             /*propagate_on_copy_assignment=*/std::true_type,
@@ -252,7 +253,7 @@
   EXPECT_THAT(dq9, ElementsAre(2, 2, 2, 2, 2, 2));
   EXPECT_TRUE(dq10.empty());
 
-  QuicCircularDeque<
+  QuicheCircularDeque<
       int, 3,
       ConfigurableAllocator<int,
                             /*propagate_on_copy_assignment=*/std::true_type,
@@ -267,13 +268,13 @@
   EXPECT_TRUE(dq12.empty());
 }
 
-TEST_F(QuicCircularDequeTest, Access) {
+TEST_F(QuicheCircularDequeTest, Access) {
   // at()
   // operator[]
   // front()
   // back()
 
-  QuicCircularDeque<int, 3, CountingAllocator<int>> dq;
+  QuicheCircularDeque<int, 3, CountingAllocator<int>> dq;
   dq.push_back(10);
   EXPECT_EQ(dq.front(), 10);
   EXPECT_EQ(dq.back(), 10);
@@ -369,15 +370,15 @@
   EXPECT_EQ(1u, dq.get_allocator().allocate_count());
 }
 
-TEST_F(QuicCircularDequeTest, Iterate) {
-  QuicCircularDeque<int> dq;
+TEST_F(QuicheCircularDequeTest, Iterate) {
+  QuicheCircularDeque<int> dq;
   EXPECT_EQ(dq.begin(), dq.end());
   EXPECT_EQ(dq.cbegin(), dq.cend());
   EXPECT_EQ(dq.rbegin(), dq.rend());
   EXPECT_EQ(dq.crbegin(), dq.crend());
 
   dq.emplace_back(2);
-  QuicCircularDeque<int>::const_iterator citer = dq.begin();
+  QuicheCircularDeque<int>::const_iterator citer = dq.begin();
   EXPECT_NE(citer, dq.end());
   EXPECT_EQ(*citer, 2);
   ++citer;
@@ -389,7 +390,7 @@
   EXPECT_EQ(*dq.crbegin(), 2);
 
   dq.emplace_front(1);
-  QuicCircularDeque<int>::const_reverse_iterator criter = dq.rbegin();
+  QuicheCircularDeque<int>::const_reverse_iterator criter = dq.rbegin();
   EXPECT_NE(criter, dq.rend());
   EXPECT_EQ(*criter, 2);
   ++criter;
@@ -407,42 +408,43 @@
 
   // Forward iterate.
   int expected_value = 1;
-  for (QuicCircularDeque<int>::iterator it = dq.begin(); it != dq.end(); ++it) {
+  for (QuicheCircularDeque<int>::iterator it = dq.begin(); it != dq.end();
+       ++it) {
     EXPECT_EQ(expected_value++, *it);
   }
 
   expected_value = 1;
-  for (QuicCircularDeque<int>::const_iterator it = dq.cbegin(); it != dq.cend();
-       ++it) {
+  for (QuicheCircularDeque<int>::const_iterator it = dq.cbegin();
+       it != dq.cend(); ++it) {
     EXPECT_EQ(expected_value++, *it);
   }
 
   // Reverse iterate.
   expected_value = 3;
-  for (QuicCircularDeque<int>::reverse_iterator it = dq.rbegin();
+  for (QuicheCircularDeque<int>::reverse_iterator it = dq.rbegin();
        it != dq.rend(); ++it) {
     EXPECT_EQ(expected_value--, *it);
   }
 
   expected_value = 3;
-  for (QuicCircularDeque<int>::const_reverse_iterator it = dq.crbegin();
+  for (QuicheCircularDeque<int>::const_reverse_iterator it = dq.crbegin();
        it != dq.crend(); ++it) {
     EXPECT_EQ(expected_value--, *it);
   }
 }
 
-TEST_F(QuicCircularDequeTest, Iterator) {
+TEST_F(QuicheCircularDequeTest, Iterator) {
   // Default constructed iterators of the same type compare equal.
-  EXPECT_EQ(QuicCircularDeque<int>::iterator(),
-            QuicCircularDeque<int>::iterator());
-  EXPECT_EQ(QuicCircularDeque<int>::const_iterator(),
-            QuicCircularDeque<int>::const_iterator());
-  EXPECT_EQ(QuicCircularDeque<int>::reverse_iterator(),
-            QuicCircularDeque<int>::reverse_iterator());
-  EXPECT_EQ(QuicCircularDeque<int>::const_reverse_iterator(),
-            QuicCircularDeque<int>::const_reverse_iterator());
+  EXPECT_EQ(QuicheCircularDeque<int>::iterator(),
+            QuicheCircularDeque<int>::iterator());
+  EXPECT_EQ(QuicheCircularDeque<int>::const_iterator(),
+            QuicheCircularDeque<int>::const_iterator());
+  EXPECT_EQ(QuicheCircularDeque<int>::reverse_iterator(),
+            QuicheCircularDeque<int>::reverse_iterator());
+  EXPECT_EQ(QuicheCircularDeque<int>::const_reverse_iterator(),
+            QuicheCircularDeque<int>::const_reverse_iterator());
 
-  QuicCircularDeque<QuicCircularDeque<int>, 3> dqdq = {
+  QuicheCircularDeque<QuicheCircularDeque<int>, 3> dqdq = {
       {1, 2}, {10, 20, 30}, {100, 200, 300, 400}};
 
   // iter points to {1, 2}
@@ -494,8 +496,8 @@
   }
 }
 
-TEST_F(QuicCircularDequeTest, Resize) {
-  QuicCircularDeque<int, 3, CountingAllocator<int>> dq;
+TEST_F(QuicheCircularDequeTest, Resize) {
+  QuicheCircularDeque<int, 3, CountingAllocator<int>> dq;
   dq.resize(8);
   EXPECT_THAT(dq, ElementsAre(0, 0, 0, 0, 0, 0, 0, 0));
   EXPECT_EQ(1u, dq.get_allocator().allocate_count());
@@ -503,7 +505,7 @@
   dq.resize(10, 5);
   EXPECT_THAT(dq, ElementsAre(0, 0, 0, 0, 0, 0, 0, 0, 5, 5));
 
-  QuicCircularDeque<int, 3, CountingAllocator<int>> dq2 = dq;
+  QuicheCircularDeque<int, 3, CountingAllocator<int>> dq2 = dq;
 
   for (size_t new_size = dq.size(); new_size != 0; --new_size) {
     dq.resize(new_size);
@@ -575,7 +577,7 @@
 };
 }  // namespace
 
-TEST_F(QuicCircularDequeTest, RelocateNonTriviallyCopyable) {
+TEST_F(QuicheCircularDequeTest, RelocateNonTriviallyCopyable) {
   // When relocating non-trivially-copyable objects:
   // - Move constructor is preferred, if available.
   // - Copy constructor is used otherwise.
@@ -585,8 +587,8 @@
     using MoveConstructible = std::unique_ptr<Foo>;
     ASSERT_FALSE(std::is_trivially_copyable<MoveConstructible>::value);
     ASSERT_TRUE(std::is_move_constructible<MoveConstructible>::value);
-    QuicCircularDeque<MoveConstructible, 3,
-                      CountingAllocator<MoveConstructible>>
+    QuicheCircularDeque<MoveConstructible, 3,
+                        CountingAllocator<MoveConstructible>>
         dq1;
     dq1.resize(3);
     EXPECT_EQ(dq1.size(), dq1.capacity());
@@ -606,8 +608,8 @@
     using NonMoveConstructible = Foo;
     ASSERT_FALSE(std::is_trivially_copyable<NonMoveConstructible>::value);
     ASSERT_FALSE(std::is_move_constructible<NonMoveConstructible>::value);
-    QuicCircularDeque<NonMoveConstructible, 3,
-                      CountingAllocator<NonMoveConstructible>>
+    QuicheCircularDeque<NonMoveConstructible, 3,
+                        CountingAllocator<NonMoveConstructible>>
         dq2;
     dq2.resize(3);
     EXPECT_EQ(dq2.size(), dq2.capacity());
@@ -623,49 +625,49 @@
   }
 }
 
-TEST_F(QuicCircularDequeTest, PushPop) {
+TEST_F(QuicheCircularDequeTest, PushPop) {
   // (push|pop|emplace)_(back|front)
 
   {
-    QuicCircularDeque<Foo, 4, CountingAllocator<Foo>> dq(4);
+    QuicheCircularDeque<Foo, 4, CountingAllocator<Foo>> dq(4);
     for (size_t i = 0; i < dq.size(); ++i) {
       dq[i].Set(i + 1);
     }
-    QUIC_LOG(INFO) << "dq initialized to " << dq;
+    QUICHE_LOG(INFO) << "dq initialized to " << dq;
     EXPECT_THAT(dq, ElementsAre(Foo(1), Foo(2), Foo(3), Foo(4)));
 
     ShiftLeft(&dq, false);
-    QUIC_LOG(INFO) << "shift left once : " << dq;
+    QUICHE_LOG(INFO) << "shift left once : " << dq;
     EXPECT_THAT(dq, ElementsAre(Foo(2), Foo(3), Foo(4), Foo(1)));
 
     ShiftLeft(&dq, true);
-    QUIC_LOG(INFO) << "shift left twice: " << dq;
+    QUICHE_LOG(INFO) << "shift left twice: " << dq;
     EXPECT_THAT(dq, ElementsAre(Foo(3), Foo(4), Foo(1), Foo(2)));
     ASSERT_GT(&dq.front(), &dq.back());
     // dq destructs with wrapped data.
   }
 
   {
-    QuicCircularDeque<Foo, 4, CountingAllocator<Foo>> dq1(4);
+    QuicheCircularDeque<Foo, 4, CountingAllocator<Foo>> dq1(4);
     for (size_t i = 0; i < dq1.size(); ++i) {
       dq1[i].Set(i + 1);
     }
-    QUIC_LOG(INFO) << "dq1 initialized to " << dq1;
+    QUICHE_LOG(INFO) << "dq1 initialized to " << dq1;
     EXPECT_THAT(dq1, ElementsAre(Foo(1), Foo(2), Foo(3), Foo(4)));
 
     ShiftRight(&dq1, false);
-    QUIC_LOG(INFO) << "shift right once : " << dq1;
+    QUICHE_LOG(INFO) << "shift right once : " << dq1;
     EXPECT_THAT(dq1, ElementsAre(Foo(4), Foo(1), Foo(2), Foo(3)));
 
     ShiftRight(&dq1, true);
-    QUIC_LOG(INFO) << "shift right twice: " << dq1;
+    QUICHE_LOG(INFO) << "shift right twice: " << dq1;
     EXPECT_THAT(dq1, ElementsAre(Foo(3), Foo(4), Foo(1), Foo(2)));
     ASSERT_GT(&dq1.front(), &dq1.back());
     // dq1 destructs with wrapped data.
   }
 
   {  // Pop n elements from front.
-    QuicCircularDeque<Foo, 4, CountingAllocator<Foo>> dq2(5);
+    QuicheCircularDeque<Foo, 4, CountingAllocator<Foo>> dq2(5);
     for (size_t i = 0; i < dq2.size(); ++i) {
       dq2[i].Set(i + 1);
     }
@@ -679,7 +681,7 @@
   }
 
   {  // Pop n elements from back.
-    QuicCircularDeque<Foo, 4, CountingAllocator<Foo>> dq3(6);
+    QuicheCircularDeque<Foo, 4, CountingAllocator<Foo>> dq3(6);
     for (size_t i = 0; i < dq3.size(); ++i) {
       dq3[i].Set(i + 1);
     }
@@ -700,11 +702,11 @@
   }
 }
 
-TEST_F(QuicCircularDequeTest, Allocation) {
+TEST_F(QuicheCircularDequeTest, Allocation) {
   CountingAllocator<int> alloc;
 
   {
-    QuicCircularDeque<int, 3, CountingAllocator<int>> dq(alloc);
+    QuicheCircularDeque<int, 3, CountingAllocator<int>> dq(alloc);
     EXPECT_EQ(alloc, dq.get_allocator());
     EXPECT_EQ(0u, dq.size());
     EXPECT_EQ(0u, dq.capacity());
@@ -734,13 +736,13 @@
 
 }  // namespace
 }  // namespace test
-}  // namespace quic
+}  // namespace quiche
 
-// Use a non-quic namespace to make sure swap can be used via ADL.
+// Use a non-quiche namespace to make sure swap can be used via ADL.
 namespace {
 
 template <typename T>
-using SwappableAllocator = quic::test::ConfigurableAllocator<
+using SwappableAllocator = quiche::test::ConfigurableAllocator<
     T,
     /*propagate_on_copy_assignment=*/std::true_type,
     /*propagate_on_move_assignment=*/std::true_type,
@@ -748,7 +750,7 @@
     /*equality_result=*/true>;
 
 template <typename T>
-using UnswappableEqualAllocator = quic::test::ConfigurableAllocator<
+using UnswappableEqualAllocator = quiche::test::ConfigurableAllocator<
     T,
     /*propagate_on_copy_assignment=*/std::true_type,
     /*propagate_on_move_assignment=*/std::true_type,
@@ -756,19 +758,19 @@
     /*equality_result=*/true>;
 
 template <typename T>
-using UnswappableUnequalAllocator = quic::test::ConfigurableAllocator<
+using UnswappableUnequalAllocator = quiche::test::ConfigurableAllocator<
     T,
     /*propagate_on_copy_assignment=*/std::true_type,
     /*propagate_on_move_assignment=*/std::true_type,
     /*propagate_on_swap=*/std::false_type,
     /*equality_result=*/false>;
 
-using quic::test::QuicCircularDequeTest;
+using quiche::test::QuicheCircularDequeTest;
 
-TEST_F(QuicCircularDequeTest, Swap) {
+TEST_F(QuicheCircularDequeTest, Swap) {
   using std::swap;
 
-  quic::QuicCircularDeque<int64_t, 3, SwappableAllocator<int64_t>> dq1, dq2;
+  quiche::QuicheCircularDeque<int64_t, 3, SwappableAllocator<int64_t>> dq1, dq2;
   dq1.push_back(10);
   dq1.push_back(11);
   dq2.push_back(20);
@@ -776,14 +778,16 @@
   EXPECT_THAT(dq1, ElementsAre(20));
   EXPECT_THAT(dq2, ElementsAre(10, 11));
 
-  quic::QuicCircularDeque<char, 3, UnswappableEqualAllocator<char>> dq3, dq4;
+  quiche::QuicheCircularDeque<char, 3, UnswappableEqualAllocator<char>> dq3,
+      dq4;
   dq3 = {1, 2, 3, 4, 5};
   dq4 = {6, 7, 8, 9, 0};
   swap(dq3, dq4);
   EXPECT_THAT(dq3, ElementsAre(6, 7, 8, 9, 0));
   EXPECT_THAT(dq4, ElementsAre(1, 2, 3, 4, 5));
 
-  quic::QuicCircularDeque<int, 3, UnswappableUnequalAllocator<int>> dq5, dq6;
+  quiche::QuicheCircularDeque<int, 3, UnswappableUnequalAllocator<int>> dq5,
+      dq6;
   dq6.push_front(4);
 
   // Using UnswappableUnequalAllocator is ok as long as swap is not called.
@@ -791,6 +795,6 @@
   EXPECT_THAT(dq5, ElementsAre(4));
 
   // Undefined behavior to swap between two containers with unequal allocators.
-  EXPECT_QUIC_DEBUG_DEATH(swap(dq5, dq6), "Undefined swap behavior");
+  EXPECT_QUICHE_DEBUG_DEATH(swap(dq5, dq6), "Undefined swap behavior");
 }
 }  // namespace
diff --git a/http2/hpack/decoder/hpack_decoder_tables.h b/http2/hpack/decoder/hpack_decoder_tables.h
index f75916d..ef5b3d2 100644
--- a/http2/hpack/decoder/hpack_decoder_tables.h
+++ b/http2/hpack/decoder/hpack_decoder_tables.h
@@ -25,8 +25,8 @@
 #include <vector>
 
 #include "http2/http2_constants.h"
-#include "quic/core/quic_circular_deque.h"
 #include "common/platform/api/quiche_export.h"
+#include "common/quiche_circular_deque.h"
 
 namespace http2 {
 namespace test {
@@ -107,7 +107,7 @@
   // Removes the oldest dynamic table entry.
   void RemoveLastEntry();
 
-  quic::QuicCircularDeque<HpackStringPair> table_;
+  quiche::QuicheCircularDeque<HpackStringPair> table_;
 
   // The last received DynamicTableSizeUpdate value, initialized to
   // SETTINGS_HEADER_TABLE_SIZE.
diff --git a/quic/core/batch_writer/quic_batch_writer_base.h b/quic/core/batch_writer/quic_batch_writer_base.h
index ff924d0..e7d1f12 100644
--- a/quic/core/batch_writer/quic_batch_writer_base.h
+++ b/quic/core/batch_writer/quic_batch_writer_base.h
@@ -60,7 +60,7 @@
   const QuicBatchWriterBuffer& batch_buffer() const { return *batch_buffer_; }
   QuicBatchWriterBuffer& batch_buffer() { return *batch_buffer_; }
 
-  const QuicCircularDeque<BufferedWrite>& buffered_writes() const {
+  const quiche::QuicheCircularDeque<BufferedWrite>& buffered_writes() const {
     return batch_buffer_->buffered_writes();
   }
 
diff --git a/quic/core/batch_writer/quic_batch_writer_buffer.h b/quic/core/batch_writer/quic_batch_writer_buffer.h
index 007c283..4faa3cb 100644
--- a/quic/core/batch_writer/quic_batch_writer_buffer.h
+++ b/quic/core/batch_writer/quic_batch_writer_buffer.h
@@ -6,11 +6,11 @@
 #define QUICHE_QUIC_PLATFORM_IMPL_BATCH_WRITER_QUIC_BATCH_WRITER_BUFFER_H_
 
 #include "absl/base/optimization.h"
-#include "quic/core/quic_circular_deque.h"
 #include "quic/core/quic_linux_socket_utils.h"
 #include "quic/core/quic_packet_writer.h"
 #include "quic/platform/api/quic_ip_address.h"
 #include "quic/platform/api/quic_socket_address.h"
+#include "common/quiche_circular_deque.h"
 
 namespace quic {
 
@@ -61,7 +61,7 @@
   };
   PopResult PopBufferedWrite(int32_t num_buffered_writes);
 
-  const QuicCircularDeque<BufferedWrite>& buffered_writes() const {
+  const quiche::QuicheCircularDeque<BufferedWrite>& buffered_writes() const {
     return buffered_writes_;
   }
 
@@ -87,7 +87,7 @@
   bool Invariants() const;
   const char* buffer_end() const { return buffer_ + sizeof(buffer_); }
   ABSL_CACHELINE_ALIGNED char buffer_[kBufferSize];
-  QuicCircularDeque<BufferedWrite> buffered_writes_;
+  quiche::QuicheCircularDeque<BufferedWrite> buffered_writes_;
 };
 
 }  // namespace quic
diff --git a/quic/core/congestion_control/bandwidth_sampler.h b/quic/core/congestion_control/bandwidth_sampler.h
index 7a34097..6738f49 100644
--- a/quic/core/congestion_control/bandwidth_sampler.h
+++ b/quic/core/congestion_control/bandwidth_sampler.h
@@ -9,13 +9,13 @@
 #include "quic/core/congestion_control/windowed_filter.h"
 #include "quic/core/packet_number_indexed_queue.h"
 #include "quic/core/quic_bandwidth.h"
-#include "quic/core/quic_circular_deque.h"
 #include "quic/core/quic_packets.h"
 #include "quic/core/quic_time.h"
 #include "quic/core/quic_types.h"
 #include "quic/core/quic_unacked_packet_map.h"
 #include "quic/platform/api/quic_export.h"
 #include "quic/platform/api/quic_flags.h"
+#include "common/quiche_circular_deque.h"
 
 namespace quic {
 
@@ -540,7 +540,7 @@
   PacketNumberIndexedQueue<ConnectionStateOnSentPacket> connection_state_map_;
 
   RecentAckPoints recent_ack_points_;
-  QuicCircularDeque<AckPoint> a0_candidates_;
+  quiche::QuicheCircularDeque<AckPoint> a0_candidates_;
 
   // Maximum number of tracked packets.
   const QuicPacketCount max_tracked_packets_;
diff --git a/quic/core/http/quic_header_list.h b/quic/core/http/quic_header_list.h
index 9ddf6de..01c861d 100644
--- a/quic/core/http/quic_header_list.h
+++ b/quic/core/http/quic_header_list.h
@@ -11,9 +11,9 @@
 #include <utility>
 
 #include "absl/strings/string_view.h"
-#include "quic/core/quic_circular_deque.h"
 #include "quic/platform/api/quic_bug_tracker.h"
 #include "quic/platform/api/quic_export.h"
+#include "common/quiche_circular_deque.h"
 #include "spdy/core/spdy_header_block.h"
 #include "spdy/core/spdy_headers_handler_interface.h"
 
@@ -23,7 +23,8 @@
 class QUIC_EXPORT_PRIVATE QuicHeaderList
     : public spdy::SpdyHeadersHandlerInterface {
  public:
-  using ListType = QuicCircularDeque<std::pair<std::string, std::string>>;
+  using ListType =
+      quiche::QuicheCircularDeque<std::pair<std::string, std::string>>;
   using value_type = ListType::value_type;
   using const_iterator = ListType::const_iterator;
 
@@ -59,7 +60,7 @@
   std::string DebugString() const;
 
  private:
-  QuicCircularDeque<std::pair<std::string, std::string>> header_list_;
+  quiche::QuicheCircularDeque<std::pair<std::string, std::string>> header_list_;
 
   // The limit on the size of the header list (defined by spec as name + value +
   // overhead for each header field). Headers over this limit will not be
diff --git a/quic/core/http/quic_headers_stream.h b/quic/core/http/quic_headers_stream.h
index ae9e2af..153575b 100644
--- a/quic/core/http/quic_headers_stream.h
+++ b/quic/core/http/quic_headers_stream.h
@@ -91,7 +91,7 @@
   QuicSpdySession* spdy_session_;
 
   // Headers that have not been fully acked.
-  QuicCircularDeque<CompressedHeaderInfo> unacked_headers_;
+  quiche::QuicheCircularDeque<CompressedHeaderInfo> unacked_headers_;
 };
 
 }  // namespace quic
diff --git a/quic/core/http/quic_spdy_session.h b/quic/core/http/quic_spdy_session.h
index 823bb2e..214d1da 100644
--- a/quic/core/http/quic_spdy_session.h
+++ b/quic/core/http/quic_spdy_session.h
@@ -26,13 +26,13 @@
 #include "quic/core/qpack/qpack_encoder_stream_sender.h"
 #include "quic/core/qpack/qpack_receive_stream.h"
 #include "quic/core/qpack/qpack_send_stream.h"
-#include "quic/core/quic_circular_deque.h"
 #include "quic/core/quic_session.h"
 #include "quic/core/quic_time.h"
 #include "quic/core/quic_types.h"
 #include "quic/core/quic_versions.h"
 #include "quic/platform/api/quic_containers.h"
 #include "quic/platform/api/quic_export.h"
+#include "common/quiche_circular_deque.h"
 #include "spdy/core/http2_frame_decoder_adapter.h"
 
 namespace quic {
diff --git a/quic/core/http/quic_spdy_stream_body_manager.h b/quic/core/http/quic_spdy_stream_body_manager.h
index 7b2d9f1..f34801a 100644
--- a/quic/core/http/quic_spdy_stream_body_manager.h
+++ b/quic/core/http/quic_spdy_stream_body_manager.h
@@ -7,11 +7,11 @@
 
 #include "absl/base/attributes.h"
 #include "absl/strings/string_view.h"
-#include "quic/core/quic_circular_deque.h"
 #include "quic/core/quic_constants.h"
 #include "quic/platform/api/quic_bug_tracker.h"
 #include "quic/platform/api/quic_export.h"
 #include "quic/platform/api/quic_iovec.h"
+#include "common/quiche_circular_deque.h"
 
 namespace quic {
 
@@ -84,7 +84,7 @@
     QuicByteCount trailing_non_body_byte_count;
   };
   // Queue of body fragments and trailing non-body byte counts.
-  QuicCircularDeque<Fragment> fragments_;
+  quiche::QuicheCircularDeque<Fragment> fragments_;
   // Total body bytes received.
   QuicByteCount total_body_bytes_received_;
 };
diff --git a/quic/core/http/web_transport_http3.h b/quic/core/http/web_transport_http3.h
index 0c91c2b..667256e 100644
--- a/quic/core/http/web_transport_http3.h
+++ b/quic/core/http/web_transport_http3.h
@@ -75,8 +75,8 @@
   bool ready_ = false;
   std::unique_ptr<WebTransportVisitor> visitor_;
   absl::flat_hash_set<QuicStreamId> streams_;
-  QuicCircularDeque<QuicStreamId> incoming_bidirectional_streams_;
-  QuicCircularDeque<QuicStreamId> incoming_unidirectional_streams_;
+  quiche::QuicheCircularDeque<QuicStreamId> incoming_bidirectional_streams_;
+  quiche::QuicheCircularDeque<QuicStreamId> incoming_unidirectional_streams_;
 };
 
 class QUIC_EXPORT_PRIVATE WebTransportHttp3UnidirectionalStream
diff --git a/quic/core/packet_number_indexed_queue.h b/quic/core/packet_number_indexed_queue.h
index b839160..8e80c7d 100644
--- a/quic/core/packet_number_indexed_queue.h
+++ b/quic/core/packet_number_indexed_queue.h
@@ -5,11 +5,11 @@
 #ifndef QUICHE_QUIC_CORE_PACKET_NUMBER_INDEXED_QUEUE_H_
 #define QUICHE_QUIC_CORE_PACKET_NUMBER_INDEXED_QUEUE_H_
 
-#include "quic/core/quic_circular_deque.h"
 #include "quic/core/quic_constants.h"
 #include "quic/core/quic_packet_number.h"
 #include "quic/core/quic_types.h"
 #include "quic/platform/api/quic_bug_tracker.h"
+#include "common/quiche_circular_deque.h"
 
 namespace quic {
 
@@ -115,7 +115,7 @@
     return const_cast<EntryWrapper*>(const_this->GetEntryWrapper(offset));
   }
 
-  QuicCircularDeque<EntryWrapper> entries_;
+  quiche::QuicheCircularDeque<EntryWrapper> entries_;
   // NOTE(wub): When --quic_bw_sampler_remove_packets_once_per_congestion_event
   // is enabled, |number_of_present_entries_| only represents number of holes,
   // which does not include number of acked or lost packets.
diff --git a/quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc b/quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc
index 6c3e351..b4ed2ef 100644
--- a/quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc
+++ b/quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc
@@ -15,11 +15,11 @@
 #include "quic/core/qpack/qpack_encoder.h"
 #include "quic/core/qpack/qpack_stream_sender_delegate.h"
 #include "quic/core/qpack/value_splitting_header_list.h"
-#include "quic/core/quic_circular_deque.h"
 #include "quic/core/quic_error_codes.h"
 #include "quic/platform/api/quic_fuzzed_data_provider.h"
 #include "quic/test_tools/qpack/qpack_decoder_test_utils.h"
 #include "quic/test_tools/qpack/qpack_encoder_peer.h"
+#include "common/quiche_circular_deque.h"
 #include "spdy/core/spdy_header_block.h"
 
 namespace quic {
@@ -437,7 +437,7 @@
  private:
   QpackStreamReceiver* const receiver_;
   QuicFuzzedDataProvider* const provider_;
-  QuicCircularDeque<std::string> stream_data;
+  quiche::QuicheCircularDeque<std::string> stream_data;
 };
 
 // Generate header list using fuzzer data.
diff --git a/quic/core/qpack/qpack_blocking_manager.h b/quic/core/qpack/qpack_blocking_manager.h
index 70870a6..4188350 100644
--- a/quic/core/qpack/qpack_blocking_manager.h
+++ b/quic/core/qpack/qpack_blocking_manager.h
@@ -75,8 +75,8 @@
   // A stream typically has only one header block, except for the rare cases of
   // 1xx responses, trailers, or push promises.  Even if there are multiple
   // header blocks sent on a single stream, they might not be blocked at the
-  // same time.  Use std::list instead of QuicCircularDeque because it has lower
-  // memory footprint when holding few elements.
+  // same time.  Use std::list instead of quiche::QuicheCircularDeque because it
+  // has lower memory footprint when holding few elements.
   using HeaderBlocksForStream = std::list<IndexSet>;
   using HeaderBlocks = absl::flat_hash_map<QuicStreamId, HeaderBlocksForStream>;
 
diff --git a/quic/core/quic_connection.h b/quic/core/quic_connection.h
index b81eb02..21555a8 100644
--- a/quic/core/quic_connection.h
+++ b/quic/core/quic_connection.h
@@ -36,7 +36,6 @@
 #include "quic/core/quic_alarm.h"
 #include "quic/core/quic_alarm_factory.h"
 #include "quic/core/quic_blocked_writer_interface.h"
-#include "quic/core/quic_circular_deque.h"
 #include "quic/core/quic_connection_id.h"
 #include "quic/core/quic_connection_id_manager.h"
 #include "quic/core/quic_connection_stats.h"
@@ -58,6 +57,7 @@
 #include "quic/platform/api/quic_export.h"
 #include "quic/platform/api/quic_flags.h"
 #include "quic/platform/api/quic_socket_address.h"
+#include "common/quiche_circular_deque.h"
 
 namespace quic {
 
@@ -1920,7 +1920,7 @@
 
   // Collection of coalesced packets which were received while processing
   // the current packet.
-  QuicCircularDeque<std::unique_ptr<QuicEncryptedPacket>>
+  quiche::QuicheCircularDeque<std::unique_ptr<QuicEncryptedPacket>>
       received_coalesced_packets_;
 
   // Maximum number of undecryptable packets the connection will store.
@@ -2130,13 +2130,15 @@
   // saved and responded to.
   // TODO(danzh) deprecate this field when deprecating
   // --quic_send_path_response.
-  QuicCircularDeque<QuicPathFrameBuffer> received_path_challenge_payloads_;
+  quiche::QuicheCircularDeque<QuicPathFrameBuffer>
+      received_path_challenge_payloads_;
 
   // Buffer outstanding PATH_CHALLENGEs if socket write is blocked, future
   // OnCanWrite will attempt to respond with PATH_RESPONSEs using the retained
   // payload and peer addresses.
   // TODO(fayang): remove this when deprecating quic_drop_unsent_path_response.
-  QuicCircularDeque<PendingPathChallenge> pending_path_challenge_payloads_;
+  quiche::QuicheCircularDeque<PendingPathChallenge>
+      pending_path_challenge_payloads_;
 
   // Set of connection IDs that should be accepted as destination on
   // received packets. This is conceptually a set but is implemented as a
diff --git a/quic/core/quic_control_frame_manager.h b/quic/core/quic_control_frame_manager.h
index 1bb3703..4f20666 100644
--- a/quic/core/quic_control_frame_manager.h
+++ b/quic/core/quic_control_frame_manager.h
@@ -9,9 +9,9 @@
 #include <string>
 
 #include "quic/core/frames/quic_frame.h"
-#include "quic/core/quic_circular_deque.h"
 #include "quic/core/quic_connection_id.h"
 #include "quic/core/quic_types.h"
+#include "common/quiche_circular_deque.h"
 
 namespace quic {
 
@@ -163,7 +163,7 @@
   // frame.
   void WriteOrBufferQuicFrame(QuicFrame frame);
 
-  QuicCircularDeque<QuicFrame> control_frames_;
+  quiche::QuicheCircularDeque<QuicFrame> control_frames_;
 
   // Id of latest saved control frame. 0 if no control frame has been saved.
   QuicControlFrameId last_control_frame_id_;
diff --git a/quic/core/quic_datagram_queue.h b/quic/core/quic_datagram_queue.h
index 286aeae..4d3aa2f 100644
--- a/quic/core/quic_datagram_queue.h
+++ b/quic/core/quic_datagram_queue.h
@@ -8,10 +8,10 @@
 #include <memory>
 
 #include "absl/types/optional.h"
-#include "quic/core/quic_circular_deque.h"
 #include "quic/core/quic_time.h"
 #include "quic/core/quic_types.h"
 #include "quic/platform/api/quic_mem_slice.h"
+#include "common/quiche_circular_deque.h"
 
 namespace quic {
 
@@ -80,7 +80,7 @@
   const QuicClock* clock_;
 
   QuicTime::Delta max_time_in_queue_ = QuicTime::Delta::Zero();
-  QuicCircularDeque<Datagram> queue_;
+  quiche::QuicheCircularDeque<Datagram> queue_;
   std::unique_ptr<Observer> observer_;
 };
 
diff --git a/quic/core/quic_interval_deque.h b/quic/core/quic_interval_deque.h
index ba27aa9..274c2e3 100644
--- a/quic/core/quic_interval_deque.h
+++ b/quic/core/quic_interval_deque.h
@@ -8,12 +8,12 @@
 #include <algorithm>
 
 #include "absl/types/optional.h"
-#include "quic/core/quic_circular_deque.h"
 #include "quic/core/quic_interval.h"
 #include "quic/core/quic_types.h"
 #include "quic/platform/api/quic_bug_tracker.h"
 #include "quic/platform/api/quic_export.h"
 #include "quic/platform/api/quic_logging.h"
+#include "common/quiche_circular_deque.h"
 
 namespace quic {
 
@@ -137,7 +137,7 @@
 //   //   cached_index -> 1
 //   //   container -> {{2, [25, 30)}, {3, [35, 50)}}
 
-template <class T, class C = QUIC_NO_EXPORT QuicCircularDeque<T>>
+template <class T, class C = QUIC_NO_EXPORT quiche::QuicheCircularDeque<T>>
 class QUIC_NO_EXPORT QuicIntervalDeque {
  public:
   class QUIC_NO_EXPORT Iterator {
@@ -363,7 +363,7 @@
   // Adding an empty interval is a bug.
   if (interval.Empty()) {
     QUIC_BUG(quic_bug_10862_3)
-        << "Trying to save empty interval to QuicCircularDeque.";
+        << "Trying to save empty interval to quiche::QuicheCircularDeque.";
     return;
   }
   container_.push_back(std::forward<U>(item));
diff --git a/quic/core/quic_linux_socket_utils.h b/quic/core/quic_linux_socket_utils.h
index 14c26dc..5bbd875 100644
--- a/quic/core/quic_linux_socket_utils.h
+++ b/quic/core/quic_linux_socket_utils.h
@@ -148,7 +148,7 @@
 // multiple packets at once via ::sendmmsg.
 //
 // Example:
-//   QuicCircularDeque<BufferedWrite> buffered_writes;
+//   quiche::QuicheCircularDeque<BufferedWrite> buffered_writes;
 //   ... (Populate buffered_writes) ...
 //
 //   QuicMMsgHdr mhdr(
diff --git a/quic/core/quic_linux_socket_utils_test.cc b/quic/core/quic_linux_socket_utils_test.cc
index 8425958..588c2be 100644
--- a/quic/core/quic_linux_socket_utils_test.cc
+++ b/quic/core/quic_linux_socket_utils_test.cc
@@ -12,9 +12,9 @@
 
 #include <string>
 
-#include "quic/core/quic_circular_deque.h"
 #include "quic/platform/api/quic_test.h"
 #include "quic/test_tools/quic_mock_syscall_wrapper.h"
+#include "common/quiche_circular_deque.h"
 
 using testing::_;
 using testing::InSequence;
@@ -28,8 +28,8 @@
  protected:
   WriteResult TestWriteMultiplePackets(
       int fd,
-      const QuicCircularDeque<BufferedWrite>::const_iterator& first,
-      const QuicCircularDeque<BufferedWrite>::const_iterator& last,
+      const quiche::QuicheCircularDeque<BufferedWrite>::const_iterator& first,
+      const quiche::QuicheCircularDeque<BufferedWrite>::const_iterator& last,
       int* num_packets_sent) {
     QuicMMsgHdr mhdr(
         first, last, kCmsgSpaceForIp,
@@ -171,7 +171,7 @@
 }
 
 TEST_F(QuicLinuxSocketUtilsTest, QuicMMsgHdr) {
-  QuicCircularDeque<BufferedWrite> buffered_writes;
+  quiche::QuicheCircularDeque<BufferedWrite> buffered_writes;
   char packet_buf1[1024];
   char packet_buf2[512];
   buffered_writes.emplace_back(
@@ -205,7 +205,7 @@
 
 TEST_F(QuicLinuxSocketUtilsTest, WriteMultiplePackets_NoPacketsToSend) {
   int num_packets_sent;
-  QuicCircularDeque<BufferedWrite> buffered_writes;
+  quiche::QuicheCircularDeque<BufferedWrite> buffered_writes;
 
   EXPECT_CALL(mock_syscalls_, Sendmmsg(_, _, _, _)).Times(0);
 
@@ -216,7 +216,7 @@
 
 TEST_F(QuicLinuxSocketUtilsTest, WriteMultiplePackets_WriteBlocked) {
   int num_packets_sent;
-  QuicCircularDeque<BufferedWrite> buffered_writes;
+  quiche::QuicheCircularDeque<BufferedWrite> buffered_writes;
   buffered_writes.emplace_back(nullptr, 0, QuicIpAddress(),
                                QuicSocketAddress(QuicIpAddress::Any4(), 0));
 
@@ -235,7 +235,7 @@
 
 TEST_F(QuicLinuxSocketUtilsTest, WriteMultiplePackets_WriteError) {
   int num_packets_sent;
-  QuicCircularDeque<BufferedWrite> buffered_writes;
+  quiche::QuicheCircularDeque<BufferedWrite> buffered_writes;
   buffered_writes.emplace_back(nullptr, 0, QuicIpAddress(),
                                QuicSocketAddress(QuicIpAddress::Any4(), 0));
 
@@ -254,7 +254,7 @@
 
 TEST_F(QuicLinuxSocketUtilsTest, WriteMultiplePackets_WriteSuccess) {
   int num_packets_sent;
-  QuicCircularDeque<BufferedWrite> buffered_writes;
+  quiche::QuicheCircularDeque<BufferedWrite> buffered_writes;
   const int kNumBufferedWrites = 10;
   static_assert(kNumBufferedWrites < 256, "Must be less than 256");
   std::vector<std::string> buffer_holder;
diff --git a/quic/core/quic_packet_creator.cc b/quic/core/quic_packet_creator.cc
index 48fa88e..1267d81 100644
--- a/quic/core/quic_packet_creator.cc
+++ b/quic/core/quic_packet_creator.cc
@@ -937,7 +937,7 @@
 
 std::unique_ptr<SerializedPacket>
 QuicPacketCreator::SerializePathResponseConnectivityProbingPacket(
-    const QuicCircularDeque<QuicPathFrameBuffer>& payloads,
+    const quiche::QuicheCircularDeque<QuicPathFrameBuffer>& payloads,
     const bool is_padded) {
   QUIC_BUG_IF(quic_bug_12398_13,
               !VersionHasIetfQuicFrames(framer_->transport_version()))
@@ -1010,7 +1010,7 @@
     const QuicPacketHeader& header,
     char* buffer,
     size_t packet_length,
-    const QuicCircularDeque<QuicPathFrameBuffer>& payloads,
+    const quiche::QuicheCircularDeque<QuicPathFrameBuffer>& payloads,
     const bool is_padded,
     EncryptionLevel level) {
   if (payloads.empty()) {
diff --git a/quic/core/quic_packet_creator.h b/quic/core/quic_packet_creator.h
index 2fc32f6..a04df43 100644
--- a/quic/core/quic_packet_creator.h
+++ b/quic/core/quic_packet_creator.h
@@ -23,13 +23,13 @@
 #include "absl/base/attributes.h"
 #include "absl/strings/string_view.h"
 #include "quic/core/frames/quic_stream_frame.h"
-#include "quic/core/quic_circular_deque.h"
 #include "quic/core/quic_coalesced_packet.h"
 #include "quic/core/quic_connection_id.h"
 #include "quic/core/quic_framer.h"
 #include "quic/core/quic_packets.h"
 #include "quic/core/quic_types.h"
 #include "quic/platform/api/quic_export.h"
+#include "common/quiche_circular_deque.h"
 
 namespace quic {
 namespace test {
@@ -258,7 +258,7 @@
   // |payloads| is cleared.
   std::unique_ptr<SerializedPacket>
   SerializePathResponseConnectivityProbingPacket(
-      const QuicCircularDeque<QuicPathFrameBuffer>& payloads,
+      const quiche::QuicheCircularDeque<QuicPathFrameBuffer>& payloads,
       const bool is_padded);
 
   // Add PATH_RESPONSE to current packet, flush before or afterwards if needed.
@@ -465,7 +465,7 @@
       const QuicPacketHeader& header,
       char* buffer,
       size_t packet_length,
-      const QuicCircularDeque<QuicPathFrameBuffer>& payloads,
+      const quiche::QuicheCircularDeque<QuicPathFrameBuffer>& payloads,
       const bool is_padded,
       EncryptionLevel level);
 
diff --git a/quic/core/quic_packet_creator_test.cc b/quic/core/quic_packet_creator_test.cc
index 25b9a51..b371bb3 100644
--- a/quic/core/quic_packet_creator_test.cc
+++ b/quic/core/quic_packet_creator_test.cc
@@ -752,7 +752,7 @@
   };
   // clang-format on
   std::unique_ptr<char[]> buffer(new char[kMaxOutgoingPacketSize]);
-  QuicCircularDeque<QuicPathFrameBuffer> payloads;
+  quiche::QuicheCircularDeque<QuicPathFrameBuffer> payloads;
   payloads.push_back(payload0);
   size_t length = creator_.BuildPathResponsePacket(
       header, buffer.get(), ABSL_ARRAYSIZE(packet), payloads,
@@ -799,7 +799,7 @@
   };
   // clang-format on
   std::unique_ptr<char[]> buffer(new char[kMaxOutgoingPacketSize]);
-  QuicCircularDeque<QuicPathFrameBuffer> payloads;
+  quiche::QuicheCircularDeque<QuicPathFrameBuffer> payloads;
   payloads.push_back(payload0);
   size_t length = creator_.BuildPathResponsePacket(
       header, buffer.get(), ABSL_ARRAYSIZE(packet), payloads,
@@ -849,7 +849,7 @@
   // clang-format on
 
   std::unique_ptr<char[]> buffer(new char[kMaxOutgoingPacketSize]);
-  QuicCircularDeque<QuicPathFrameBuffer> payloads;
+  quiche::QuicheCircularDeque<QuicPathFrameBuffer> payloads;
   payloads.push_back(payload0);
   payloads.push_back(payload1);
   payloads.push_back(payload2);
@@ -903,7 +903,7 @@
   // clang-format on
 
   std::unique_ptr<char[]> buffer(new char[kMaxOutgoingPacketSize]);
-  QuicCircularDeque<QuicPathFrameBuffer> payloads;
+  quiche::QuicheCircularDeque<QuicPathFrameBuffer> payloads;
   payloads.push_back(payload0);
   payloads.push_back(payload1);
   payloads.push_back(payload2);
@@ -988,7 +988,7 @@
 
   creator_.set_encryption_level(ENCRYPTION_FORWARD_SECURE);
 
-  QuicCircularDeque<QuicPathFrameBuffer> payloads;
+  quiche::QuicheCircularDeque<QuicPathFrameBuffer> payloads;
   payloads.push_back(payload0);
 
   std::unique_ptr<SerializedPacket> encrypted(
@@ -1018,7 +1018,7 @@
 
   creator_.set_encryption_level(ENCRYPTION_FORWARD_SECURE);
 
-  QuicCircularDeque<QuicPathFrameBuffer> payloads;
+  quiche::QuicheCircularDeque<QuicPathFrameBuffer> payloads;
   payloads.push_back(payload0);
 
   std::unique_ptr<SerializedPacket> encrypted(
@@ -1048,7 +1048,7 @@
 
   creator_.set_encryption_level(ENCRYPTION_FORWARD_SECURE);
 
-  QuicCircularDeque<QuicPathFrameBuffer> payloads;
+  quiche::QuicheCircularDeque<QuicPathFrameBuffer> payloads;
   payloads.push_back(payload0);
   payloads.push_back(payload1);
 
@@ -1081,7 +1081,7 @@
 
   creator_.set_encryption_level(ENCRYPTION_FORWARD_SECURE);
 
-  QuicCircularDeque<QuicPathFrameBuffer> payloads;
+  quiche::QuicheCircularDeque<QuicPathFrameBuffer> payloads;
   payloads.push_back(payload0);
   payloads.push_back(payload1);
 
@@ -1114,7 +1114,7 @@
 
   creator_.set_encryption_level(ENCRYPTION_FORWARD_SECURE);
 
-  QuicCircularDeque<QuicPathFrameBuffer> payloads;
+  quiche::QuicheCircularDeque<QuicPathFrameBuffer> payloads;
   payloads.push_back(payload0);
   payloads.push_back(payload1);
   payloads.push_back(payload2);
@@ -1150,7 +1150,7 @@
 
   creator_.set_encryption_level(ENCRYPTION_FORWARD_SECURE);
 
-  QuicCircularDeque<QuicPathFrameBuffer> payloads;
+  quiche::QuicheCircularDeque<QuicPathFrameBuffer> payloads;
   payloads.push_back(payload0);
   payloads.push_back(payload1);
   payloads.push_back(payload2);
diff --git a/quic/core/quic_sent_packet_manager.h b/quic/core/quic_sent_packet_manager.h
index 13e2396..781f6f9 100644
--- a/quic/core/quic_sent_packet_manager.h
+++ b/quic/core/quic_sent_packet_manager.h
@@ -19,7 +19,6 @@
 #include "quic/core/congestion_control/send_algorithm_interface.h"
 #include "quic/core/congestion_control/uber_loss_algorithm.h"
 #include "quic/core/proto/cached_network_parameters_proto.h"
-#include "quic/core/quic_circular_deque.h"
 #include "quic/core/quic_packets.h"
 #include "quic/core/quic_sustained_bandwidth_recorder.h"
 #include "quic/core/quic_time.h"
@@ -28,6 +27,7 @@
 #include "quic/core/quic_unacked_packet_map.h"
 #include "quic/platform/api/quic_containers.h"
 #include "quic/platform/api/quic_export.h"
+#include "common/quiche_circular_deque.h"
 
 namespace quic {
 
@@ -673,7 +673,8 @@
   // The history of outstanding max_ack_delays sent to peer. Outstanding means
   // a max_ack_delay is sent as part of the last acked AckFrequencyFrame or
   // an unacked AckFrequencyFrame after that.
-  QuicCircularDeque<std::pair<QuicTime::Delta, /*sequence_number=*/uint64_t>>
+  quiche::QuicheCircularDeque<
+      std::pair<QuicTime::Delta, /*sequence_number=*/uint64_t>>
       in_use_sent_ack_delays_;
 
   // Latest received ack frame.
diff --git a/quic/core/quic_stream_send_buffer.h b/quic/core/quic_stream_send_buffer.h
index cb6e3aa..4b23d3d 100644
--- a/quic/core/quic_stream_send_buffer.h
+++ b/quic/core/quic_stream_send_buffer.h
@@ -6,13 +6,13 @@
 #define QUICHE_QUIC_CORE_QUIC_STREAM_SEND_BUFFER_H_
 
 #include "quic/core/frames/quic_stream_frame.h"
-#include "quic/core/quic_circular_deque.h"
 #include "quic/core/quic_interval_deque.h"
 #include "quic/core/quic_interval_set.h"
 #include "quic/core/quic_types.h"
 #include "quic/platform/api/quic_iovec.h"
 #include "quic/platform/api/quic_mem_slice.h"
 #include "quic/platform/api/quic_mem_slice_span.h"
+#include "common/quiche_circular_deque.h"
 
 namespace quic {
 
diff --git a/quic/core/quic_time_wait_list_manager.h b/quic/core/quic_time_wait_list_manager.h
index 2018f72..ac371f2 100644
--- a/quic/core/quic_time_wait_list_manager.h
+++ b/quic/core/quic_time_wait_list_manager.h
@@ -224,7 +224,7 @@
   virtual bool SendOrQueuePacket(std::unique_ptr<QueuedPacket> packet,
                                  const QuicPerPacketContext* packet_context);
 
-  const QuicCircularDeque<std::unique_ptr<QueuedPacket>>&
+  const quiche::QuicheCircularDeque<std::unique_ptr<QueuedPacket>>&
   pending_packets_queue() const {
     return pending_packets_queue_;
   }
@@ -318,7 +318,8 @@
 
   // Pending termination packets that need to be sent out to the peer when we
   // are given a chance to write by the dispatcher.
-  QuicCircularDeque<std::unique_ptr<QueuedPacket>> pending_packets_queue_;
+  quiche::QuicheCircularDeque<std::unique_ptr<QueuedPacket>>
+      pending_packets_queue_;
 
   // Time period for which connection_ids should remain in time wait state.
   const QuicTime::Delta time_wait_period_;
diff --git a/quic/core/quic_unacked_packet_map.h b/quic/core/quic_unacked_packet_map.h
index 75c835d..67c25f7 100644
--- a/quic/core/quic_unacked_packet_map.h
+++ b/quic/core/quic_unacked_packet_map.h
@@ -10,12 +10,12 @@
 #include <deque>
 
 #include "absl/strings/str_cat.h"
-#include "quic/core/quic_circular_deque.h"
 #include "quic/core/quic_packets.h"
 #include "quic/core/quic_transmission_info.h"
 #include "quic/core/session_notifier_interface.h"
 #include "quic/platform/api/quic_export.h"
 #include "quic/platform/api/quic_flags.h"
+#include "common/quiche_circular_deque.h"
 
 namespace quic {
 
@@ -113,10 +113,10 @@
   QuicPacketNumber GetLeastUnacked() const;
 
   using const_iterator =
-      QuicCircularDeque<QuicTransmissionInfo>::const_iterator;
+      quiche::QuicheCircularDeque<QuicTransmissionInfo>::const_iterator;
   using const_reverse_iterator =
-      QuicCircularDeque<QuicTransmissionInfo>::const_reverse_iterator;
-  using iterator = QuicCircularDeque<QuicTransmissionInfo>::iterator;
+      quiche::QuicheCircularDeque<QuicTransmissionInfo>::const_reverse_iterator;
+  using iterator = quiche::QuicheCircularDeque<QuicTransmissionInfo>::iterator;
 
   const_iterator begin() const { return unacked_packets_.begin(); }
   const_iterator end() const { return unacked_packets_.end(); }
@@ -300,7 +300,7 @@
   // If the old packet is acked before the new packet, then the old entry will
   // be removed from the map and the new entry's retransmittable frames will be
   // set to nullptr.
-  QuicCircularDeque<QuicTransmissionInfo> unacked_packets_;
+  quiche::QuicheCircularDeque<QuicTransmissionInfo> unacked_packets_;
 
   // The packet at the 0th index of unacked_packets_.
   QuicPacketNumber least_unacked_;
diff --git a/quic/platform/api/quic_test.h b/quic/platform/api/quic_test.h
index 69995c3..58896f7 100644
--- a/quic/platform/api/quic_test.h
+++ b/quic/platform/api/quic_test.h
@@ -25,9 +25,6 @@
   return QuicGetTestMemoryCachePathImpl();
 }
 
-#define EXPECT_QUIC_DEBUG_DEATH(condition, message) \
-  EXPECT_QUIC_DEBUG_DEATH_IMPL(condition, message)
-
 #define QUIC_SLOW_TEST(test) QUIC_SLOW_TEST_IMPL(test)
 
 #endif  // QUICHE_QUIC_PLATFORM_API_QUIC_TEST_H_
diff --git a/quic/quic_transport/quic_transport_client_session.h b/quic/quic_transport/quic_transport_client_session.h
index 6f6d091..ad29a15 100644
--- a/quic/quic_transport/quic_transport_client_session.h
+++ b/quic/quic_transport/quic_transport_client_session.h
@@ -152,8 +152,10 @@
   // has not accepted to a smaller number, by checking the size of
   // |incoming_bidirectional_streams_| and |incoming_unidirectional_streams_|
   // before sending MAX_STREAMS.
-  QuicCircularDeque<QuicTransportStream*> incoming_bidirectional_streams_;
-  QuicCircularDeque<QuicTransportStream*> incoming_unidirectional_streams_;
+  quiche::QuicheCircularDeque<QuicTransportStream*>
+      incoming_bidirectional_streams_;
+  quiche::QuicheCircularDeque<QuicTransportStream*>
+      incoming_unidirectional_streams_;
 };
 
 }  // namespace quic
diff --git a/quic/test_tools/quic_test_backend.cc b/quic/test_tools/quic_test_backend.cc
index b88301a..eb419b6 100644
--- a/quic/test_tools/quic_test_backend.cc
+++ b/quic/test_tools/quic_test_backend.cc
@@ -9,7 +9,6 @@
 
 #include "absl/strings/string_view.h"
 #include "quic/core/quic_buffer_allocator.h"
-#include "quic/core/quic_circular_deque.h"
 #include "quic/core/quic_simple_buffer_allocator.h"
 #include "quic/core/web_transport_interface.h"
 #include "quic/platform/api/quic_mem_slice.h"
diff --git a/quic/test_tools/server_thread.cc b/quic/test_tools/server_thread.cc
index f5c9b7e..f9315677 100644
--- a/quic/test_tools/server_thread.cc
+++ b/quic/test_tools/server_thread.cc
@@ -126,7 +126,7 @@
 }
 
 void ServerThread::ExecuteScheduledActions() {
-  QuicCircularDeque<std::function<void()>> actions;
+  quiche::QuicheCircularDeque<std::function<void()>> actions;
   {
     QuicWriterMutexLock lock(&scheduled_actions_lock_);
     actions.swap(scheduled_actions_);
diff --git a/quic/test_tools/server_thread.h b/quic/test_tools/server_thread.h
index fa604a8..81d0bf2 100644
--- a/quic/test_tools/server_thread.h
+++ b/quic/test_tools/server_thread.h
@@ -86,7 +86,7 @@
   bool initialized_;
 
   QuicMutex scheduled_actions_lock_;
-  QuicCircularDeque<std::function<void()>> scheduled_actions_
+  quiche::QuicheCircularDeque<std::function<void()>> scheduled_actions_
       QUIC_GUARDED_BY(scheduled_actions_lock_);
 };
 
diff --git a/quic/test_tools/simple_session_notifier.h b/quic/test_tools/simple_session_notifier.h
index 2219c27..bc76ddc 100644
--- a/quic/test_tools/simple_session_notifier.h
+++ b/quic/test_tools/simple_session_notifier.h
@@ -6,10 +6,10 @@
 #define QUICHE_QUIC_TEST_TOOLS_SIMPLE_SESSION_NOTIFIER_H_
 
 #include "absl/container/flat_hash_map.h"
-#include "quic/core/quic_circular_deque.h"
 #include "quic/core/quic_interval_set.h"
 #include "quic/core/session_notifier_interface.h"
 #include "quic/platform/api/quic_test.h"
+#include "common/quiche_circular_deque.h"
 
 namespace quic {
 
@@ -132,7 +132,7 @@
 
   bool StreamHasBufferedData(QuicStreamId id) const;
 
-  QuicCircularDeque<QuicFrame> control_frames_;
+  quiche::QuicheCircularDeque<QuicFrame> control_frames_;
 
   QuicLinkedHashMap<QuicControlFrameId, bool> lost_control_frames_;
 
diff --git a/quic/test_tools/simulator/link.h b/quic/test_tools/simulator/link.h
index 7d2f92d..5d72385 100644
--- a/quic/test_tools/simulator/link.h
+++ b/quic/test_tools/simulator/link.h
@@ -9,9 +9,9 @@
 
 #include "quic/core/crypto/quic_random.h"
 #include "quic/core/quic_bandwidth.h"
-#include "quic/core/quic_circular_deque.h"
 #include "quic/test_tools/simulator/actor.h"
 #include "quic/test_tools/simulator/port.h"
+#include "common/quiche_circular_deque.h"
 
 namespace quic {
 namespace simulator {
@@ -61,7 +61,7 @@
   void ScheduleNextPacketDeparture();
 
   UnconstrainedPortInterface* sink_;
-  QuicCircularDeque<QueuedPacket> packets_in_transit_;
+  quiche::QuicheCircularDeque<QueuedPacket> packets_in_transit_;
 
   QuicBandwidth bandwidth_;
   const QuicTime::Delta propagation_delay_;
diff --git a/quic/test_tools/simulator/queue.h b/quic/test_tools/simulator/queue.h
index 943b8b0..7e4be83 100644
--- a/quic/test_tools/simulator/queue.h
+++ b/quic/test_tools/simulator/queue.h
@@ -6,8 +6,8 @@
 #define QUICHE_QUIC_TEST_TOOLS_SIMULATOR_QUEUE_H_
 
 #include "quic/core/quic_alarm.h"
-#include "quic/core/quic_circular_deque.h"
 #include "quic/test_tools/simulator/link.h"
+#include "common/quiche_circular_deque.h"
 
 namespace quic {
 namespace simulator {
@@ -110,7 +110,7 @@
   std::unique_ptr<QuicAlarm> aggregation_timeout_alarm_;
 
   ConstrainedPortInterface* tx_port_;
-  QuicCircularDeque<EnqueuedPacket> queue_;
+  quiche::QuicheCircularDeque<EnqueuedPacket> queue_;
 
   ListenerInterface* listener_;
 };
diff --git a/quic/test_tools/simulator/switch.h b/quic/test_tools/simulator/switch.h
index bd4e7b6..eebb47c 100644
--- a/quic/test_tools/simulator/switch.h
+++ b/quic/test_tools/simulator/switch.h
@@ -78,7 +78,7 @@
   void DispatchPacket(SwitchPortNumber port_number,
                       std::unique_ptr<Packet> packet);
 
-  // This can not be a QuicCircularDeque since pointers into this are
+  // This cannot be a quiche::QuicheCircularDeque since pointers into this are
   // assumed to be stable.
   std::deque<Port> ports_;
   absl::flat_hash_map<std::string, Port*> switching_table_;
diff --git a/quic/tools/quic_simple_server_session.h b/quic/tools/quic_simple_server_session.h
index 636b8e1..2cc3dcf 100644
--- a/quic/tools/quic_simple_server_session.h
+++ b/quic/tools/quic_simple_server_session.h
@@ -144,7 +144,7 @@
   // the queue also increases by 2 from previous one's. The front element's
   // stream_id is always next_outgoing_stream_id_, and the last one is always
   // highest_promised_stream_id_.
-  QuicCircularDeque<PromisedStreamInfo> promised_streams_;
+  quiche::QuicheCircularDeque<PromisedStreamInfo> promised_streams_;
 
   QuicSimpleServerBackend* quic_simple_server_backend_;  // Not owned.
 };
diff --git a/quic/tools/quic_transport_simple_server_session.h b/quic/tools/quic_transport_simple_server_session.h
index 2d3be8a..a51eab6 100644
--- a/quic/tools/quic_transport_simple_server_session.h
+++ b/quic/tools/quic_transport_simple_server_session.h
@@ -73,7 +73,7 @@
   size_t pending_outgoing_bidirectional_streams_ = 0u;
   Mode mode_;
   std::vector<url::Origin> accepted_origins_;
-  QuicCircularDeque<std::string> streams_to_echo_back_;
+  quiche::QuicheCircularDeque<std::string> streams_to_echo_back_;
 };
 
 }  // namespace quic
diff --git a/quic/tools/web_transport_test_visitors.h b/quic/tools/web_transport_test_visitors.h
index c9efcb7..e348750 100644
--- a/quic/tools/web_transport_test_visitors.h
+++ b/quic/tools/web_transport_test_visitors.h
@@ -7,10 +7,10 @@
 
 #include <string>
 
-#include "quic/core/quic_circular_deque.h"
 #include "quic/core/quic_simple_buffer_allocator.h"
 #include "quic/core/web_transport_interface.h"
 #include "quic/platform/api/quic_logging.h"
+#include "common/quiche_circular_deque.h"
 
 namespace quic {
 
@@ -220,7 +220,7 @@
   SimpleBufferAllocator allocator_;
   bool echo_stream_opened_ = false;
 
-  QuicCircularDeque<std::string> streams_to_echo_back_;
+  quiche::QuicheCircularDeque<std::string> streams_to_echo_back_;
 };
 
 }  // namespace quic