Replace std::deque and std::queue in //content.

These are replaced with the base versions base::circular_deque and base::queue.

Typedefs were replaced with using statements in changed code, and adjacent
typedefs were also converted.

RTCTimestamps struct in rtc_video_encoder.cc was made copyable and moveable
(it's just an int64 and an int32) to support being put in a circular_deque.
BrowsingDataRemoverImpl::RemovalTask was made move-only (from previously
not movable or copyable).

BUG=757232

Cq-Include-Trybots: master.tryserver.chromium.linux:linux_site_isolation
Change-Id: Ib83f929ae4c014ae0d3766a57e9cb56cba446e2b
Reviewed-on: https://chromium-review.googlesource.com/656066
Commit-Queue: Brett Wilson <[email protected]>
Reviewed-by: Dmitry Gozman <[email protected]>
Cr-Commit-Position: refs/heads/master@{#501169}
diff --git a/content/browser/android/synchronous_compositor_browser_filter.h b/content/browser/android/synchronous_compositor_browser_filter.h
index 15c606f..fd40185 100644
--- a/content/browser/android/synchronous_compositor_browser_filter.h
+++ b/content/browser/android/synchronous_compositor_browser_filter.h
@@ -5,10 +5,10 @@
 #ifndef CONTENT_BROWSER_ANDROID_SYNCHRONOUS_COMPOSITOR_BROWSER_FILTER_H_
 #define CONTENT_BROWSER_ANDROID_SYNCHRONOUS_COMPOSITOR_BROWSER_FILTER_H_
 
-#include <deque>
 #include <map>
 #include <vector>
 
+#include "base/containers/circular_deque.h"
 #include "base/macros.h"
 #include "base/synchronization/lock.h"
 #include "cc/output/compositor_frame_metadata.h"
@@ -70,7 +70,7 @@
   base::Lock future_map_lock_;  // Protects fields below.
   bool filter_ready_ = false;
   using FrameFutureQueue =
-      std::deque<scoped_refptr<SynchronousCompositor::FrameFuture>>;
+      base::circular_deque<scoped_refptr<SynchronousCompositor::FrameFuture>>;
   // This object is per renderer process, so routing_id is unique.
   using FrameFutureMap = std::map<int, FrameFutureQueue>;
   FrameFutureMap future_map_;
diff --git a/content/browser/appcache/appcache_quota_client.h b/content/browser/appcache/appcache_quota_client.h
index 6366204..acbaafba 100644
--- a/content/browser/appcache/appcache_quota_client.h
+++ b/content/browser/appcache/appcache_quota_client.h
@@ -5,11 +5,11 @@
 #ifndef CONTENT_BROWSER_APPCACHE_APPCACHE_QUOTA_CLIENT_H_
 #define CONTENT_BROWSER_APPCACHE_APPCACHE_QUOTA_CLIENT_H_
 
-#include <deque>
 #include <map>
 #include <memory>
 #include <string>
 
+#include "base/containers/circular_deque.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "content/browser/appcache/appcache_storage.h"
@@ -31,7 +31,7 @@
 // been destroyed.
 class AppCacheQuotaClient : public storage::QuotaClient {
  public:
-  typedef std::deque<base::OnceClosure> RequestQueue;
+  using RequestQueue = base::circular_deque<base::OnceClosure>;
 
   ~AppCacheQuotaClient() override;
 
diff --git a/content/browser/appcache/appcache_storage_impl.h b/content/browser/appcache/appcache_storage_impl.h
index bc98e38..30cf261 100644
--- a/content/browser/appcache/appcache_storage_impl.h
+++ b/content/browser/appcache/appcache_storage_impl.h
@@ -7,13 +7,13 @@
 
 #include <stdint.h>
 
-#include <deque>
 #include <map>
 #include <set>
 #include <utility>
 #include <vector>
 
 #include "base/callback.h"
+#include "base/containers/circular_deque.h"
 #include "base/files/file_path.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/weak_ptr.h"
@@ -96,11 +96,11 @@
   class CommitLastAccessTimesTask;
   class UpdateEvictionTimesTask;
 
-  typedef std::deque<DatabaseTask*> DatabaseTaskQueue;
-  typedef std::map<int64_t, CacheLoadTask*> PendingCacheLoads;
-  typedef std::map<GURL, GroupLoadTask*> PendingGroupLoads;
-  typedef std::deque<std::pair<GURL, int64_t>> PendingForeignMarkings;
-  typedef std::set<StoreGroupAndCacheTask*> PendingQuotaQueries;
+  using DatabaseTaskQueue = base::circular_deque<DatabaseTask*>;
+  using PendingCacheLoads = std::map<int64_t, CacheLoadTask*>;
+  using PendingGroupLoads = std::map<GURL, GroupLoadTask*>;
+  using PendingForeignMarkings = base::circular_deque<std::pair<GURL, int64_t>>;
+  using PendingQuotaQueries = std::set<StoreGroupAndCacheTask*>;
 
   bool IsInitTaskComplete() {
     return last_cache_id_ != AppCacheStorage::kUnitializedId;
@@ -165,7 +165,7 @@
   PendingQuotaQueries pending_quota_queries_;
 
   // Structures to keep track of lazy response deletion.
-  std::deque<int64_t> deletable_response_ids_;
+  base::circular_deque<int64_t> deletable_response_ids_;
   std::vector<int64_t> deleted_response_ids_;
   bool is_response_deletion_scheduled_;
   bool did_start_deleting_responses_;
@@ -191,7 +191,7 @@
 
   // Used to short-circuit certain operations without having to schedule
   // any tasks on the background database thread.
-  std::deque<base::OnceClosure> pending_simple_tasks_;
+  base::circular_deque<base::OnceClosure> pending_simple_tasks_;
   base::WeakPtrFactory<AppCacheStorageImpl> weak_factory_;
 
   friend class content::AppCacheStorageImplTest;
diff --git a/content/browser/appcache/appcache_update_job.h b/content/browser/appcache/appcache_update_job.h
index cce40a2..c3785e97 100644
--- a/content/browser/appcache/appcache_update_job.h
+++ b/content/browser/appcache/appcache_update_job.h
@@ -8,12 +8,12 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include <deque>
 #include <map>
 #include <set>
 #include <string>
 #include <vector>
 
+#include "base/containers/circular_deque.h"
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
@@ -252,7 +252,7 @@
   // Helper container to track which urls have not been fetched yet. URLs are
   // removed when the fetch is initiated. Flag indicates whether an attempt
   // to load the URL from storage has already been tried and failed.
-  std::deque<UrlToFetch> urls_to_fetch_;
+  base::circular_deque<UrlToFetch> urls_to_fetch_;
 
   // Helper container to track which urls are being loaded from response
   // storage.
diff --git a/content/browser/appcache/mock_appcache_storage.h b/content/browser/appcache/mock_appcache_storage.h
index 717a7070..e144752 100644
--- a/content/browser/appcache/mock_appcache_storage.h
+++ b/content/browser/appcache/mock_appcache_storage.h
@@ -7,12 +7,12 @@
 
 #include <stdint.h>
 
-#include <deque>
 #include <map>
 #include <memory>
 #include <vector>
 
 #include "base/callback.h"
+#include "base/containers/circular_deque.h"
 #include "base/containers/hash_tables.h"
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
@@ -201,7 +201,7 @@
   StoredEvictionTimesMap stored_eviction_times_;
   DoomedResponseIds doomed_response_ids_;
   std::unique_ptr<AppCacheDiskCache> disk_cache_;
-  std::deque<base::OnceClosure> pending_tasks_;
+  base::circular_deque<base::OnceClosure> pending_tasks_;
 
   bool simulate_make_group_obsolete_failure_;
   bool simulate_store_group_and_newest_cache_failure_;
diff --git a/content/browser/background_fetch/background_fetch_data_manager.cc b/content/browser/background_fetch/background_fetch_data_manager.cc
index ede6a3b..41fc47a 100644
--- a/content/browser/background_fetch/background_fetch_data_manager.cc
+++ b/content/browser/background_fetch/background_fetch_data_manager.cc
@@ -5,9 +5,9 @@
 #include "content/browser/background_fetch/background_fetch_data_manager.h"
 
 #include <algorithm>
-#include <queue>
 
 #include "base/command_line.h"
+#include "base/containers/queue.h"
 #include "base/memory/ptr_util.h"
 #include "base/numerics/checked_math.h"
 #include "base/strings/string_number_conversions.h"
@@ -473,7 +473,7 @@
  private:
   BackgroundFetchOptions options_;
 
-  std::queue<scoped_refptr<BackgroundFetchRequestInfo>> pending_requests_;
+  base::queue<scoped_refptr<BackgroundFetchRequestInfo>> pending_requests_;
   std::vector<scoped_refptr<BackgroundFetchRequestInfo>> active_requests_;
 
   // TODO(peter): Right now it's safe for this to be a vector because we only
diff --git a/content/browser/browser_plugin/browser_plugin_guest.h b/content/browser/browser_plugin/browser_plugin_guest.h
index 17540f9d..ba02415 100644
--- a/content/browser/browser_plugin/browser_plugin_guest.h
+++ b/content/browser/browser_plugin/browser_plugin_guest.h
@@ -22,9 +22,9 @@
 
 #include <map>
 #include <memory>
-#include <queue>
 
 #include "base/compiler_specific.h"
+#include "base/containers/circular_deque.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "base/values.h"
@@ -453,7 +453,7 @@
 
   // This is a queue of messages that are destined to be sent to the embedder
   // once the guest is attached to a particular embedder.
-  std::deque<std::unique_ptr<IPC::Message>> pending_messages_;
+  base::circular_deque<std::unique_ptr<IPC::Message>> pending_messages_;
 
   BrowserPluginGuestDelegate* const delegate_;
 
diff --git a/content/browser/browsing_data/browsing_data_remover_impl.cc b/content/browser/browsing_data/browsing_data_remover_impl.cc
index c3c257c..2e762da6 100644
--- a/content/browser/browsing_data/browsing_data_remover_impl.cc
+++ b/content/browser/browsing_data/browsing_data_remover_impl.cc
@@ -572,6 +572,9 @@
       filter_builder(std::move(filter_builder)),
       observer(observer) {}
 
+BrowsingDataRemoverImpl::RemovalTask::RemovalTask(
+    RemovalTask&& other) noexcept = default;
+
 BrowsingDataRemoverImpl::RemovalTask::~RemovalTask() {}
 
 bool BrowsingDataRemoverImpl::AllDone() {
diff --git a/content/browser/browsing_data/browsing_data_remover_impl.h b/content/browser/browsing_data/browsing_data_remover_impl.h
index 2085951..81b62a77 100644
--- a/content/browser/browsing_data/browsing_data_remover_impl.h
+++ b/content/browser/browsing_data/browsing_data_remover_impl.h
@@ -7,9 +7,9 @@
 
 #include <stdint.h>
 
-#include <queue>
 #include <set>
 
+#include "base/containers/queue.h"
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
@@ -134,6 +134,7 @@
                 int origin_type_mask,
                 std::unique_ptr<BrowsingDataFilterBuilder> filter_builder,
                 Observer* observer);
+    RemovalTask(RemovalTask&& other) noexcept;
     ~RemovalTask();
 
     base::Time delete_begin;
@@ -201,7 +202,7 @@
   bool is_removing_;
 
   // Removal tasks to be processed.
-  std::queue<RemovalTask> task_queue_;
+  base::queue<RemovalTask> task_queue_;
 
   // If non-null, the |would_complete_callback_| is called each time an instance
   // is about to complete a browsing data removal process, and has the ability
diff --git a/content/browser/byte_stream.cc b/content/browser/byte_stream.cc
index eb07e14..0244811 100644
--- a/content/browser/byte_stream.cc
+++ b/content/browser/byte_stream.cc
@@ -4,11 +4,11 @@
 
 #include "content/browser/byte_stream.h"
 
-#include <deque>
 #include <set>
 #include <utility>
 
 #include "base/bind.h"
+#include "base/containers/circular_deque.h"
 #include "base/location.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
@@ -17,8 +17,8 @@
 namespace content {
 namespace {
 
-typedef std::deque<std::pair<scoped_refptr<net::IOBuffer>, size_t> >
-ContentVector;
+using ContentVector =
+    base::circular_deque<std::pair<scoped_refptr<net::IOBuffer>, size_t>>;
 
 class ByteStreamReaderImpl;
 
diff --git a/content/browser/byte_stream_unittest.cc b/content/browser/byte_stream_unittest.cc
index f233a41..e774da1 100644
--- a/content/browser/byte_stream_unittest.cc
+++ b/content/browser/byte_stream_unittest.cc
@@ -6,11 +6,11 @@
 
 #include <stddef.h>
 
-#include <deque>
 #include <limits>
 
 #include "base/bind.h"
 #include "base/callback.h"
+#include "base/containers/circular_deque.h"
 #include "base/memory/ref_counted.h"
 #include "base/message_loop/message_loop.h"
 #include "base/run_loop.h"
@@ -94,8 +94,8 @@
  private:
   int producing_seed_key_;
   int consuming_seed_key_;
-  std::deque<char*> pointer_queue_;
-  std::deque<size_t> length_queue_;
+  base::circular_deque<char*> pointer_queue_;
+  base::circular_deque<size_t> length_queue_;
 };
 
 ByteStreamTest::ByteStreamTest()
diff --git a/content/browser/devtools/devtools_io_context.cc b/content/browser/devtools/devtools_io_context.cc
index 2e8bb87..4598f16 100644
--- a/content/browser/devtools/devtools_io_context.cc
+++ b/content/browser/devtools/devtools_io_context.cc
@@ -5,6 +5,7 @@
 #include "content/browser/devtools/devtools_io_context.h"
 
 #include "base/base64.h"
+#include "base/containers/queue.h"
 #include "base/files/file.h"
 #include "base/files/file_util.h"
 #include "base/memory/ptr_util.h"
@@ -232,7 +233,7 @@
   OpenCallback open_callback_;
   scoped_refptr<storage::FileSystemContext> fs_context_;
   std::unique_ptr<BlobReader> blob_reader_;
-  std::queue<std::unique_ptr<ReadRequest>> pending_reads_;
+  base::queue<std::unique_ptr<ReadRequest>> pending_reads_;
   scoped_refptr<net::IOBufferWithSize> io_buf_;
   off_t last_read_pos_;
   bool failed_;
@@ -350,7 +351,7 @@
     return;
   }
   failed_ = true;
-  pending_reads_ = std::queue<std::unique_ptr<ReadRequest>>();
+  pending_reads_ = base::queue<std::unique_ptr<ReadRequest>>();
   open_callback_ = OpenCallback();
 }
 
diff --git a/content/browser/devtools/protocol/input_handler.h b/content/browser/devtools/protocol/input_handler.h
index e14d78f..5e7cd42 100644
--- a/content/browser/devtools/protocol/input_handler.h
+++ b/content/browser/devtools/protocol/input_handler.h
@@ -5,6 +5,7 @@
 #ifndef CONTENT_BROWSER_DEVTOOLS_PROTOCOL_INPUT_HANDLER_H_
 #define CONTENT_BROWSER_DEVTOOLS_PROTOCOL_INPUT_HANDLER_H_
 
+#include "base/containers/circular_deque.h"
 #include "base/containers/flat_map.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
@@ -148,8 +149,9 @@
   // Callbacks for calls to Input.dispatchKey/MouseEvent that have been sent to
   // the renderer, but that we haven't yet received an ack for.
   bool input_queued_;
-  std::deque<std::unique_ptr<DispatchKeyEventCallback>> pending_key_callbacks_;
-  std::deque<std::unique_ptr<DispatchMouseEventCallback>>
+  base::circular_deque<std::unique_ptr<DispatchKeyEventCallback>>
+      pending_key_callbacks_;
+  base::circular_deque<std::unique_ptr<DispatchMouseEventCallback>>
       pending_mouse_callbacks_;
   float page_scale_factor_;
   gfx::SizeF scrollable_viewport_size_;
diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/browser/devtools/protocol/network_handler.cc
index a7970f9f..2e3951c 100644
--- a/content/browser/devtools/protocol/network_handler.cc
+++ b/content/browser/devtools/protocol/network_handler.cc
@@ -11,6 +11,7 @@
 #include "base/base64.h"
 #include "base/command_line.h"
 #include "base/containers/hash_tables.h"
+#include "base/containers/queue.h"
 #include "base/process/process_handle.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
@@ -357,7 +358,7 @@
     for (size_t i = 0; i < actual_urls->length(); i++)
       urls.push_back(GURL(actual_urls->get(i)));
   } else {
-    std::queue<FrameTreeNode*> queue;
+    base::queue<FrameTreeNode*> queue;
     queue.push(frame_host->frame_tree_node());
     while (!queue.empty()) {
       FrameTreeNode* node = queue.front();
diff --git a/content/browser/devtools/protocol/target_auto_attacher.cc b/content/browser/devtools/protocol/target_auto_attacher.cc
index 90e566d..bbc9b99 100644
--- a/content/browser/devtools/protocol/target_auto_attacher.cc
+++ b/content/browser/devtools/protocol/target_auto_attacher.cc
@@ -4,6 +4,7 @@
 
 #include "content/browser/devtools/protocol/target_auto_attacher.h"
 
+#include "base/containers/queue.h"
 #include "content/browser/devtools/render_frame_devtools_agent_host.h"
 #include "content/browser/devtools/service_worker_devtools_agent_host.h"
 #include "content/browser/frame_host/frame_tree.h"
@@ -112,7 +113,7 @@
   Hosts new_hosts;
   if (render_frame_host_) {
     FrameTreeNode* root = render_frame_host_->frame_tree_node();
-    std::queue<FrameTreeNode*> queue;
+    base::queue<FrameTreeNode*> queue;
     queue.push(root);
     while (!queue.empty()) {
       FrameTreeNode* node = queue.front();
diff --git a/content/browser/dom_storage/dom_storage_context_impl.h b/content/browser/dom_storage/dom_storage_context_impl.h
index acea443..4e25baa7 100644
--- a/content/browser/dom_storage/dom_storage_context_impl.h
+++ b/content/browser/dom_storage/dom_storage_context_impl.h
@@ -7,13 +7,13 @@
 
 #include <stdint.h>
 
-#include <deque>
 #include <map>
 #include <set>
 #include <string>
 #include <vector>
 
 #include "base/atomicops.h"
+#include "base/containers/circular_deque.h"
 #include "base/files/file_path.h"
 #include "base/gtest_prod_util.h"
 #include "base/memory/ref_counted.h"
@@ -249,7 +249,7 @@
   const int session_id_offset_;
   base::subtle::Atomic32 session_id_sequence_;
   // For diagnoostic purposes.
-  std::deque<int64_t> recently_deleted_session_ids_;
+  base::circular_deque<int64_t> recently_deleted_session_ids_;
 
   bool is_shutdown_;
   bool force_keep_session_state_;
diff --git a/content/browser/download/download_item_impl_unittest.cc b/content/browser/download/download_item_impl_unittest.cc
index 37d4453..04e24e9 100644
--- a/content/browser/download/download_item_impl_unittest.cc
+++ b/content/browser/download/download_item_impl_unittest.cc
@@ -6,16 +6,16 @@
 
 #include <stdint.h>
 
-#include <deque>
 #include <iterator>
 #include <map>
 #include <memory>
-#include <queue>
 #include <utility>
 #include <vector>
 
 #include "base/callback.h"
 #include "base/callback_helpers.h"
+#include "base/containers/circular_deque.h"
+#include "base/containers/queue.h"
 #include "base/feature_list.h"
 #include "base/files/file_util.h"
 #include "base/memory/ptr_util.h"
@@ -1974,14 +1974,14 @@
 
 // A list of observations that are to be made during some event in the
 // DownloadItemImpl control flow. Ordering of the observations is significant.
-using ObservationList = std::deque<CurriedObservation>;
+using ObservationList = base::circular_deque<CurriedObservation>;
 
 // An ordered list of events.
 //
 // An "event" in this context refers to some stage in the DownloadItemImpl's
 // workflow described as "A", "B", "C", or "D" above. An EventList is expected
 // to always contains kEventCount events.
-using EventList = std::deque<ObservationList>;
+using EventList = base::circular_deque<ObservationList>;
 
 // Number of events in an EventList. This is always 4 for now as described
 // above.
@@ -2139,8 +2139,8 @@
   std::unique_ptr<MockDownloadFile> file_;
   std::unique_ptr<MockRequestHandle> request_handle_;
 
-  std::queue<base::Closure> successful_update_events_;
-  std::queue<base::Closure> failing_update_events_;
+  base::queue<base::Closure> successful_update_events_;
+  base::queue<base::Closure> failing_update_events_;
 };
 
 INSTANTIATE_TEST_CASE_P(Success,
diff --git a/content/browser/download/mhtml_generation_manager.cc b/content/browser/download/mhtml_generation_manager.cc
index 910a3de..2475cecd 100644
--- a/content/browser/download/mhtml_generation_manager.cc
+++ b/content/browser/download/mhtml_generation_manager.cc
@@ -5,10 +5,10 @@
 #include "content/browser/download/mhtml_generation_manager.h"
 
 #include <map>
-#include <queue>
 #include <utility>
 
 #include "base/bind.h"
+#include "base/containers/queue.h"
 #include "base/files/file.h"
 #include "base/guid.h"
 #include "base/macros.h"
@@ -152,7 +152,7 @@
   MHTMLGenerationParams params_;
 
   // The IDs of frames that still need to be processed.
-  std::queue<int> pending_frame_tree_node_ids_;
+  base::queue<int> pending_frame_tree_node_ids_;
 
   // Identifies a frame to which we've sent FrameMsg_SerializeAsMHTML but for
   // which we didn't yet process FrameHostMsg_SerializeAsMHTMLResponse via
diff --git a/content/browser/download/save_package.h b/content/browser/download/save_package.h
index b7a8ab9..1a5c6bd 100644
--- a/content/browser/download/save_package.h
+++ b/content/browser/download/save_package.h
@@ -8,7 +8,6 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include <deque>
 #include <map>
 #include <memory>
 #include <set>
@@ -16,6 +15,7 @@
 #include <unordered_map>
 #include <vector>
 
+#include "base/containers/circular_deque.h"
 #include "base/files/file_path.h"
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
@@ -352,7 +352,7 @@
       const std::string& contents_mime_type);
 
   // A queue for items we are about to start saving.
-  std::deque<std::unique_ptr<SaveItem>> waiting_item_queue_;
+  base::circular_deque<std::unique_ptr<SaveItem>> waiting_item_queue_;
 
   // Map of all saving job in in-progress state.
   SaveItemIdMap in_progress_items_;
diff --git a/content/browser/find_request_manager.cc b/content/browser/find_request_manager.cc
index de2783c..f224f70 100644
--- a/content/browser/find_request_manager.cc
+++ b/content/browser/find_request_manager.cc
@@ -6,6 +6,7 @@
 
 #include <algorithm>
 
+#include "base/containers/queue.h"
 #include "content/browser/frame_host/render_frame_host_impl.h"
 #include "content/browser/web_contents/web_contents_impl.h"
 #include "content/common/frame_messages.h"
@@ -261,7 +262,7 @@
 
   // If this is a new find session, clear any queued requests from last session.
   if (!options.find_next)
-    find_request_queue_ = std::queue<FindRequest>();
+    find_request_queue_ = base::queue<FindRequest>();
 
   find_request_queue_.emplace(request_id, search_text, options);
   if (find_request_queue_.size() == 1)
diff --git a/content/browser/find_request_manager.h b/content/browser/find_request_manager.h
index 245ab69..5a3fbd3 100644
--- a/content/browser/find_request_manager.h
+++ b/content/browser/find_request_manager.h
@@ -5,12 +5,12 @@
 #ifndef CONTENT_BROWSER_FIND_REQUEST_MANAGER_H_
 #define CONTENT_BROWSER_FIND_REQUEST_MANAGER_H_
 
-#include <queue>
 #include <unordered_map>
 #include <unordered_set>
 #include <utility>
 #include <vector>
 
+#include "base/containers/queue.h"
 #include "content/common/content_export.h"
 #include "content/public/browser/web_contents_observer.h"
 #include "content/public/common/stop_find_action.h"
@@ -299,7 +299,7 @@
 
   // Find requests are queued here when previous requests need to be handled
   // before these ones can be properly routed.
-  std::queue<FindRequest> find_request_queue_;
+  base::queue<FindRequest> find_request_queue_;
 
   // Keeps track of the find request ID of the last find reply reported via
   // NotifyFindReply().
diff --git a/content/browser/frame_host/frame_tree.h b/content/browser/frame_host/frame_tree.h
index f9300509f..6fe990e 100644
--- a/content/browser/frame_host/frame_tree.h
+++ b/content/browser/frame_host/frame_tree.h
@@ -12,6 +12,7 @@
 #include <string>
 
 #include "base/callback.h"
+#include "base/containers/queue.h"
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
 #include "content/browser/frame_host/frame_tree_node.h"
@@ -64,7 +65,7 @@
 
     FrameTreeNode* current_node_;
     FrameTreeNode* const root_of_subtree_to_skip_;
-    std::queue<FrameTreeNode*> queue_;
+    base::queue<FrameTreeNode*> queue_;
   };
 
   class CONTENT_EXPORT NodeRange {
diff --git a/content/browser/frame_host/navigation_entry_impl.cc b/content/browser/frame_host/navigation_entry_impl.cc
index 71e8e7f..ac6821c 100644
--- a/content/browser/frame_host/navigation_entry_impl.cc
+++ b/content/browser/frame_host/navigation_entry_impl.cc
@@ -6,9 +6,9 @@
 
 #include <stddef.h>
 
-#include <queue>
 #include <utility>
 
+#include "base/containers/queue.h"
 #include "base/i18n/rtl.h"
 #include "base/memory/ptr_util.h"
 #include "base/metrics/histogram_macros.h"
@@ -892,7 +892,7 @@
   DCHECK(!frame_tree_node->IsMainFrame());
 
   NavigationEntryImpl::TreeNode* node = nullptr;
-  std::queue<NavigationEntryImpl::TreeNode*> work_queue;
+  base::queue<NavigationEntryImpl::TreeNode*> work_queue;
   int count = 0;
 
   work_queue.push(root_node());
@@ -941,7 +941,7 @@
 NavigationEntryImpl::TreeNode* NavigationEntryImpl::FindFrameEntry(
     FrameTreeNode* frame_tree_node) const {
   NavigationEntryImpl::TreeNode* node = nullptr;
-  std::queue<NavigationEntryImpl::TreeNode*> work_queue;
+  base::queue<NavigationEntryImpl::TreeNode*> work_queue;
   work_queue.push(root_node());
   while (!work_queue.empty()) {
     node = work_queue.front();
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
index c2dd3034..a516093 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -5,12 +5,12 @@
 #include "content/browser/frame_host/render_frame_host_impl.h"
 
 #include <algorithm>
-#include <queue>
 #include <utility>
 
 #include "base/bind.h"
 #include "base/command_line.h"
 #include "base/containers/hash_tables.h"
+#include "base/containers/queue.h"
 #include "base/feature_list.h"
 #include "base/lazy_instance.h"
 #include "base/memory/ptr_util.h"
@@ -4291,7 +4291,7 @@
   if (!frame_tree_node_->child_count())
     return;
 
-  std::queue<FrameTreeNode*> queue;
+  base::queue<FrameTreeNode*> queue;
   for (size_t index = 0; index < frame_tree_node_->child_count(); ++index)
     queue.push(frame_tree_node_->child_at(index));
   while (queue.size()) {
diff --git a/content/browser/gpu/gpu_process_host.h b/content/browser/gpu/gpu_process_host.h
index 3f040d8..4ccec417 100644
--- a/content/browser/gpu/gpu_process_host.h
+++ b/content/browser/gpu/gpu_process_host.h
@@ -9,12 +9,12 @@
 
 #include <map>
 #include <memory>
-#include <queue>
 #include <set>
 #include <string>
 
 #include "base/callback.h"
 #include "base/containers/hash_tables.h"
+#include "base/containers/queue.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "base/sequence_checker.h"
@@ -238,10 +238,10 @@
 
   // These are the channel requests that we have already sent to
   // the GPU process, but haven't heard back about yet.
-  std::queue<EstablishChannelCallback> channel_requests_;
+  base::queue<EstablishChannelCallback> channel_requests_;
 
   // The pending create gpu memory buffer requests we need to reply to.
-  std::queue<CreateGpuMemoryBufferCallback> create_gpu_memory_buffer_requests_;
+  base::queue<CreateGpuMemoryBufferCallback> create_gpu_memory_buffer_requests_;
 
   // A callback to signal the completion of a SendDestroyingVideoSurface call.
   base::Closure send_destroying_video_surface_done_cb_;
@@ -249,7 +249,7 @@
   std::vector<RequestGPUInfoCallback> request_gpu_info_callbacks_;
 
   // Qeueud messages to send when the process launches.
-  std::queue<IPC::Message*> queued_messages_;
+  base::queue<IPC::Message*> queued_messages_;
 
   // Whether the GPU process is valid, set to false after Send() failed.
   bool valid_;
diff --git a/content/browser/indexed_db/indexed_db_database.h b/content/browser/indexed_db/indexed_db_database.h
index 91791fb..30401ca 100644
--- a/content/browser/indexed_db/indexed_db_database.h
+++ b/content/browser/indexed_db/indexed_db_database.h
@@ -11,12 +11,12 @@
 #include <list>
 #include <map>
 #include <memory>
-#include <queue>
 #include <string>
 #include <tuple>
 #include <utility>
 #include <vector>
 
+#include "base/containers/queue.h"
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
@@ -346,7 +346,7 @@
   // This holds open or delete requests that are waiting for the active
   // request to be completed. The requests have not yet broadcast
   // OnVersionChange (if necessary).
-  std::queue<std::unique_ptr<ConnectionRequest>> pending_requests_;
+  base::queue<std::unique_ptr<ConnectionRequest>> pending_requests_;
 
   // The |processing_pending_requests_| flag is set while ProcessRequestQueue()
   // is executing. It prevents rentrant calls if the active request completes
diff --git a/content/browser/indexed_db/indexed_db_transaction.h b/content/browser/indexed_db/indexed_db_transaction.h
index 2fc65ca..7166d636 100644
--- a/content/browser/indexed_db/indexed_db_transaction.h
+++ b/content/browser/indexed_db/indexed_db_transaction.h
@@ -8,10 +8,10 @@
 #include <stdint.h>
 
 #include <memory>
-#include <queue>
 #include <set>
 #include <stack>
 
+#include "base/containers/queue.h"
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
@@ -183,7 +183,7 @@
     void clear();
 
    private:
-    std::queue<Operation> queue_;
+    base::queue<Operation> queue_;
 
     DISALLOW_COPY_AND_ASSIGN(TaskQueue);
   };
diff --git a/content/browser/loader/resource_buffer.h b/content/browser/loader/resource_buffer.h
index e071d19..85354c4 100644
--- a/content/browser/loader/resource_buffer.h
+++ b/content/browser/loader/resource_buffer.h
@@ -5,8 +5,7 @@
 #ifndef CONTENT_BROWSER_LOADER_RESOURCE_BUFFER_H_
 #define CONTENT_BROWSER_LOADER_RESOURCE_BUFFER_H_
 
-#include <queue>
-
+#include "base/containers/queue.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/shared_memory.h"
@@ -113,7 +112,7 @@
   int alloc_start_;
   int alloc_end_;
 
-  std::queue<int> alloc_sizes_;
+  base::queue<int> alloc_sizes_;
 
   DISALLOW_COPY_AND_ASSIGN(ResourceBuffer);
 };
diff --git a/content/browser/loader/resource_loader_unittest.cc b/content/browser/loader/resource_loader_unittest.cc
index 1b8bc12..1a3f002c 100644
--- a/content/browser/loader/resource_loader_unittest.cc
+++ b/content/browser/loader/resource_loader_unittest.cc
@@ -7,11 +7,11 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include <deque>
 #include <memory>
 #include <utility>
 #include <vector>
 
+#include "base/containers/circular_deque.h"
 #include "base/location.h"
 #include "base/macros.h"
 #include "base/memory/ptr_util.h"
@@ -530,7 +530,7 @@
   // Allows controlling the return values of sequential calls to
   // HandleExternalProtocol. Values are removed by the measure they are used
   // but the last one which is used for all following calls.
-  std::deque<bool> handle_external_protocol_results_{false};
+  base::circular_deque<bool> handle_external_protocol_results_{false};
 
   net::URLRequestJobFactoryImpl job_factory_;
   net::TestNetworkQualityEstimator network_quality_estimator_;
diff --git a/content/browser/ppapi_plugin_process_host.h b/content/browser/ppapi_plugin_process_host.h
index 56231141..e631d09d 100644
--- a/content/browser/ppapi_plugin_process_host.h
+++ b/content/browser/ppapi_plugin_process_host.h
@@ -8,10 +8,10 @@
 #include <stdint.h>
 
 #include <memory>
-#include <queue>
 #include <string>
 #include <vector>
 
+#include "base/containers/queue.h"
 #include "base/files/file_path.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
@@ -158,7 +158,7 @@
 
   // Channel requests that we have already sent to the plugin process, but
   // haven't heard back about yet.
-  std::queue<Client*> sent_requests_;
+  base::queue<Client*> sent_requests_;
 
   // Path to the plugin library.
   base::FilePath plugin_path_;
diff --git a/content/browser/renderer_host/browser_compositor_view_mac.mm b/content/browser/renderer_host/browser_compositor_view_mac.mm
index 428bef1..192a2716 100644
--- a/content/browser/renderer_host/browser_compositor_view_mac.mm
+++ b/content/browser/renderer_host/browser_compositor_view_mac.mm
@@ -8,6 +8,7 @@
 
 #include <utility>
 
+#include "base/containers/circular_deque.h"
 #include "base/lazy_instance.h"
 #include "base/trace_event/trace_event.h"
 #include "content/browser/compositor/image_transport_factory.h"
@@ -34,8 +35,9 @@
 uint32_t g_browser_compositor_count = 0;
 
 // A spare RecyclableCompositorMac kept around for recycling.
-base::LazyInstance<std::deque<std::unique_ptr<RecyclableCompositorMac>>>::
-    DestructorAtExit g_spare_recyclable_compositors;
+base::LazyInstance<base::circular_deque<
+    std::unique_ptr<RecyclableCompositorMac>>>::DestructorAtExit
+    g_spare_recyclable_compositors;
 
 void ReleaseSpareCompositors() {
   // Allow at most one spare recyclable compositor.
diff --git a/content/browser/renderer_host/input/gesture_event_queue.h b/content/browser/renderer_host/input/gesture_event_queue.h
index de6f127..cdb8988 100644
--- a/content/browser/renderer_host/input/gesture_event_queue.h
+++ b/content/browser/renderer_host/input/gesture_event_queue.h
@@ -10,6 +10,7 @@
 #include <deque>
 #include <memory>
 
+#include "base/containers/circular_deque.h"
 #include "base/macros.h"
 #include "base/timer/timer.h"
 #include "content/browser/renderer_host/event_with_latency_info.h"
@@ -183,9 +184,9 @@
 
   bool processing_acks_ = false;
 
-  typedef std::deque<GestureEventWithLatencyInfo> GestureQueue;
-  typedef std::deque<GestureEventWithLatencyInfoAndAckState>
-      GestureQueueWithAckState;
+  using GestureQueue = base::circular_deque<GestureEventWithLatencyInfo>;
+  using GestureQueueWithAckState =
+      base::circular_deque<GestureEventWithLatencyInfoAndAckState>;
 
   // If |allow_multiple_inflight_events_|, |coalesced_gesture_events_| stores
   // outstanding events that have been sent to the renderer but not yet been
diff --git a/content/browser/renderer_host/input/legacy_input_router_impl.h b/content/browser/renderer_host/input/legacy_input_router_impl.h
index 4152ec49..bfed77ad6 100644
--- a/content/browser/renderer_host/input/legacy_input_router_impl.h
+++ b/content/browser/renderer_host/input/legacy_input_router_impl.h
@@ -9,8 +9,8 @@
 
 #include <map>
 #include <memory>
-#include <queue>
 
+#include "base/containers/circular_deque.h"
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
 #include "base/time/time.h"
@@ -214,7 +214,7 @@
 
   // Queue of pending select messages to send after receiving the next select
   // message ack.
-  std::deque<std::unique_ptr<IPC::Message>> pending_select_messages_;
+  base::circular_deque<std::unique_ptr<IPC::Message>> pending_select_messages_;
 
   // True while waiting for MoveCaret_ACK.
   bool move_caret_pending_;
@@ -224,13 +224,13 @@
 
   // A queue of the mouse move events sent to the renderer. Similar
   // to |key_queue_|.
-  typedef std::deque<MouseEventWithLatencyInfo> MouseEventQueue;
+  using MouseEventQueue = base::circular_deque<MouseEventWithLatencyInfo>;
   MouseEventQueue mouse_event_queue_;
 
   // A queue of keyboard events. We can't trust data from the renderer so we
   // stuff key events into a queue and pop them out on ACK, feeding our copy
   // back to whatever unhandled handler instead of the returned version.
-  typedef std::deque<NativeWebKeyboardEventWithLatencyInfo> KeyQueue;
+  using KeyQueue = base::circular_deque<NativeWebKeyboardEventWithLatencyInfo>;
   KeyQueue key_queue_;
 
   // The source of the ack within the scope of |ProcessInputEventAck()|.
diff --git a/content/browser/renderer_host/input/legacy_touch_event_queue.h b/content/browser/renderer_host/input/legacy_touch_event_queue.h
index 742301a..f18b8140 100644
--- a/content/browser/renderer_host/input/legacy_touch_event_queue.h
+++ b/content/browser/renderer_host/input/legacy_touch_event_queue.h
@@ -8,10 +8,10 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include <deque>
 #include <list>
 #include <memory>
 
+#include "base/containers/circular_deque.h"
 #include "base/macros.h"
 #include "base/time/time.h"
 #include "content/browser/renderer_host/event_with_latency_info.h"
@@ -195,7 +195,7 @@
   // uncancelable touchmoves which are still waiting for their acks back from
   // render. We do not put them back to the front the touch_event_queue any
   // more.
-  std::deque<uint32_t> ack_pending_async_touchmove_ids_;
+  base::circular_deque<uint32_t> ack_pending_async_touchmove_ids_;
 
   double last_sent_touch_timestamp_sec_;
 
diff --git a/content/browser/renderer_host/input/legacy_touch_event_queue_unittest.cc b/content/browser/renderer_host/input/legacy_touch_event_queue_unittest.cc
index c346dde..08bf421 100644
--- a/content/browser/renderer_host/input/legacy_touch_event_queue_unittest.cc
+++ b/content/browser/renderer_host/input/legacy_touch_event_queue_unittest.cc
@@ -9,6 +9,7 @@
 #include <memory>
 #include <utility>
 
+#include "base/containers/circular_deque.h"
 #include "base/location.h"
 #include "base/logging.h"
 #include "base/message_loop/message_loop.h"
@@ -339,7 +340,7 @@
   std::unique_ptr<InputEventAckState> sync_ack_result_;
   double slop_length_dips_;
   gfx::PointF anchor_;
-  std::deque<int> sent_events_ids_;
+  base::circular_deque<int> sent_events_ids_;
 };
 
 // Tests that touch-events are queued properly.
diff --git a/content/browser/renderer_host/input/mouse_wheel_event_queue.h b/content/browser/renderer_host/input/mouse_wheel_event_queue.h
index b0389f95..ba90b5e 100644
--- a/content/browser/renderer_host/input/mouse_wheel_event_queue.h
+++ b/content/browser/renderer_host/input/mouse_wheel_event_queue.h
@@ -5,9 +5,9 @@
 #ifndef CONTENT_BROWSER_RENDERER_HOST_INPUT_MOUSE_WHEEL_EVENT_QUEUE_H_
 #define CONTENT_BROWSER_RENDERER_HOST_INPUT_MOUSE_WHEEL_EVENT_QUEUE_H_
 
-#include <deque>
 #include <memory>
 
+#include "base/containers/circular_deque.h"
 #include "base/time/time.h"
 #include "content/browser/renderer_host/event_with_latency_info.h"
 #include "content/common/content_export.h"
@@ -80,7 +80,7 @@
 
   MouseWheelEventQueueClient* client_;
 
-  std::deque<std::unique_ptr<QueuedWebMouseWheelEvent>> wheel_queue_;
+  base::circular_deque<std::unique_ptr<QueuedWebMouseWheelEvent>> wheel_queue_;
   std::unique_ptr<QueuedWebMouseWheelEvent> event_sent_for_gesture_ack_;
 
   // True if a non-synthetic GSB needs to be sent before a GSU is sent.
diff --git a/content/browser/renderer_host/input/passthrough_touch_event_queue_unittest.cc b/content/browser/renderer_host/input/passthrough_touch_event_queue_unittest.cc
index 1b76ac6..dc29a53 100644
--- a/content/browser/renderer_host/input/passthrough_touch_event_queue_unittest.cc
+++ b/content/browser/renderer_host/input/passthrough_touch_event_queue_unittest.cc
@@ -9,6 +9,7 @@
 #include <memory>
 #include <utility>
 
+#include "base/containers/circular_deque.h"
 #include "base/location.h"
 #include "base/logging.h"
 #include "base/message_loop/message_loop.h"
@@ -339,7 +340,7 @@
   std::unique_ptr<InputEventAckState> sync_ack_result_;
   double slop_length_dips_;
   gfx::PointF anchor_;
-  std::deque<int> sent_events_ids_;
+  base::circular_deque<int> sent_events_ids_;
 };
 
 // Tests that touch-events are queued properly.
diff --git a/content/browser/renderer_host/input/synthetic_gesture_controller.h b/content/browser/renderer_host/input/synthetic_gesture_controller.h
index cbb4403..085fdc353f 100644
--- a/content/browser/renderer_host/input/synthetic_gesture_controller.h
+++ b/content/browser/renderer_host/input/synthetic_gesture_controller.h
@@ -6,11 +6,11 @@
 #define CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_GESTURE_CONTROLLER_H_
 
 #include <memory>
-#include <queue>
 #include <utility>
 #include <vector>
 
 #include "base/callback.h"
+#include "base/containers/queue.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "base/time/time.h"
@@ -105,7 +105,7 @@
     SyntheticGesture::Result result_of_current_gesture_ =
         SyntheticGesture::GESTURE_RUNNING;
     std::vector<std::unique_ptr<SyntheticGesture>> gestures_;
-    std::queue<OnGestureCompleteCallback> callbacks_;
+    base::queue<OnGestureCompleteCallback> callbacks_;
 
     DISALLOW_COPY_AND_ASSIGN(GestureAndCallbackQueue);
   } pending_gesture_queue_;
diff --git a/content/browser/renderer_host/input/touch_emulator.cc b/content/browser/renderer_host/input/touch_emulator.cc
index e564e4e..c8cd9a98 100644
--- a/content/browser/renderer_host/input/touch_emulator.cc
+++ b/content/browser/renderer_host/input/touch_emulator.cc
@@ -4,6 +4,7 @@
 
 #include "content/browser/renderer_host/input/touch_emulator.h"
 
+#include "base/containers/queue.h"
 #include "build/build_config.h"
 #include "content/browser/renderer_host/input/motion_event_web.h"
 #include "content/browser/renderer_host/ui_events_helper.h"
@@ -117,7 +118,7 @@
   mode_ = Mode::kEmulatingTouchFromMouse;
   CancelTouch();
   gesture_provider_.reset();
-  std::queue<base::OnceClosure> empty;
+  base::queue<base::OnceClosure> empty;
   injected_touch_completion_callbacks_.swap(empty);
   client_->SetCursor(pointer_cursor_);
   ResetState();
diff --git a/content/browser/renderer_host/input/touch_emulator.h b/content/browser/renderer_host/input/touch_emulator.h
index 3bed9e7..c501cef 100644
--- a/content/browser/renderer_host/input/touch_emulator.h
+++ b/content/browser/renderer_host/input/touch_emulator.h
@@ -6,9 +6,9 @@
 #define CONTENT_BROWSER_RENDERER_HOST_INPUT_TOUCH_EMULATOR_H_
 
 #include <memory>
-#include <queue>
 
 #include "base/callback.h"
+#include "base/containers/queue.h"
 #include "base/macros.h"
 #include "content/browser/renderer_host/input/touch_emulator_client.h"
 #include "content/common/cursors/webcursor.h"
@@ -149,7 +149,7 @@
   float pinch_scale_;
   bool pinch_gesture_active_;
 
-  std::queue<base::OnceClosure> injected_touch_completion_callbacks_;
+  base::queue<base::OnceClosure> injected_touch_completion_callbacks_;
 
   DISALLOW_COPY_AND_ASSIGN(TouchEmulator);
 };
diff --git a/content/browser/renderer_host/media/audio_input_sync_writer.h b/content/browser/renderer_host/media/audio_input_sync_writer.h
index 4777418..f41631d 100644
--- a/content/browser/renderer_host/media/audio_input_sync_writer.h
+++ b/content/browser/renderer_host/media/audio_input_sync_writer.h
@@ -8,11 +8,11 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include <deque>
 #include <memory>
 #include <string>
 #include <vector>
 
+#include "base/containers/circular_deque.h"
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
 #include "base/sync_socket.h"
@@ -170,7 +170,7 @@
     bool key_pressed;
     base::TimeTicks capture_time;
   };
-  std::deque<OverflowParams> overflow_params_;
+  base::circular_deque<OverflowParams> overflow_params_;
 
   DISALLOW_IMPLICIT_CONSTRUCTORS(AudioInputSyncWriter);
 };
diff --git a/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc b/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc
index f6eb0a08..99dbf601 100644
--- a/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc
+++ b/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc
@@ -6,13 +6,13 @@
 
 #include <stddef.h>
 #include <memory>
-#include <queue>
 #include <string>
 #include <utility>
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/command_line.h"
+#include "base/containers/queue.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
 #include "base/system_monitor/system_monitor.h"
@@ -218,7 +218,7 @@
 
   mojo::BindingSet<mojom::MediaStreamDispatcher> bindings_;
   const scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
-  std::queue<base::Closure> quit_closures_;
+  base::queue<base::Closure> quit_closures_;
 };
 
 class MockMediaStreamUIProxy : public FakeMediaStreamUIProxy {
diff --git a/content/browser/renderer_host/p2p/socket_host_tcp.h b/content/browser/renderer_host/p2p/socket_host_tcp.h
index 9e8fe2d..e1d673e 100644
--- a/content/browser/renderer_host/p2p/socket_host_tcp.h
+++ b/content/browser/renderer_host/p2p/socket_host_tcp.h
@@ -8,10 +8,10 @@
 #include <stdint.h>
 
 #include <memory>
-#include <queue>
 #include <vector>
 
 #include "base/compiler_specific.h"
+#include "base/containers/queue.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "content/browser/renderer_host/p2p/socket_host.h"
@@ -101,7 +101,7 @@
 
   std::unique_ptr<net::StreamSocket> socket_;
   scoped_refptr<net::GrowableIOBuffer> read_buffer_;
-  std::queue<SendBuffer> write_queue_;
+  base::queue<SendBuffer> write_queue_;
   SendBuffer write_buffer_;
 
   bool write_pending_;
diff --git a/content/browser/renderer_host/p2p/socket_host_udp.h b/content/browser/renderer_host/p2p/socket_host_udp.h
index 7179369..a54f001 100644
--- a/content/browser/renderer_host/p2p/socket_host_udp.h
+++ b/content/browser/renderer_host/p2p/socket_host_udp.h
@@ -8,13 +8,13 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include <deque>
 #include <memory>
 #include <set>
 #include <vector>
 
 #include "base/callback.h"
 #include "base/compiler_specific.h"
+#include "base/containers/circular_deque.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/message_loop/message_loop.h"
@@ -99,7 +99,7 @@
   scoped_refptr<net::IOBuffer> recv_buffer_;
   net::IPEndPoint recv_address_;
 
-  std::deque<PendingPacket> send_queue_;
+  base::circular_deque<PendingPacket> send_queue_;
   bool send_pending_;
   net::DiffServCodePoint last_dscp_;
 
diff --git a/content/browser/renderer_host/p2p/socket_host_udp_unittest.cc b/content/browser/renderer_host/p2p/socket_host_udp_unittest.cc
index 4b68cd51..2e52da9 100644
--- a/content/browser/renderer_host/p2p/socket_host_udp_unittest.cc
+++ b/content/browser/renderer_host/p2p/socket_host_udp_unittest.cc
@@ -5,10 +5,10 @@
 #include "content/browser/renderer_host/p2p/socket_host_udp.h"
 
 #include <stdint.h>
-#include <deque>
 #include <utility>
 #include <vector>
 
+#include "base/containers/circular_deque.h"
 #include "base/logging.h"
 #include "base/memory/ptr_util.h"
 #include "base/sys_byteorder.h"
@@ -53,7 +53,7 @@
 
   // P2PSocketHostUdp destroys a socket on errors so sent packets
   // need to be stored outside of this object.
-  FakeDatagramServerSocket(std::deque<UDPPacket>* sent_packets,
+  FakeDatagramServerSocket(base::circular_deque<UDPPacket>* sent_packets,
                            std::vector<uint16_t>* used_ports)
       : sent_packets_(sent_packets),
         recv_address_(nullptr),
@@ -179,8 +179,8 @@
 
  private:
   net::IPEndPoint address_;
-  std::deque<UDPPacket>* sent_packets_;
-  std::deque<UDPPacket> incoming_packets_;
+  base::circular_deque<UDPPacket>* sent_packets_;
+  base::circular_deque<UDPPacket> incoming_packets_;
   net::NetLogWithSource net_log_;
 
   scoped_refptr<net::IOBuffer> recv_buffer_;
@@ -191,7 +191,7 @@
 };
 
 std::unique_ptr<net::DatagramServerSocket> CreateFakeDatagramServerSocket(
-    std::deque<FakeDatagramServerSocket::UDPPacket>* sent_packets,
+    base::circular_deque<FakeDatagramServerSocket::UDPPacket>* sent_packets,
     std::vector<uint16_t>* used_ports) {
   return base::MakeUnique<FakeDatagramServerSocket>(sent_packets, used_ports);
 }
@@ -227,7 +227,7 @@
 
   P2PMessageThrottler throttler_;
   ScopedFakeClock fake_clock_;
-  std::deque<FakeDatagramServerSocket::UDPPacket> sent_packets_;
+  base::circular_deque<FakeDatagramServerSocket::UDPPacket> sent_packets_;
   FakeDatagramServerSocket* socket_;  // Owned by |socket_host_|.
   std::unique_ptr<P2PSocketHostUdp> socket_host_;
   MockIPCSender sender_;
@@ -494,7 +494,7 @@
 TEST_F(P2PSocketHostUdpTest, PortRangeImplicitPort) {
   const uint16_t min_port = 10000;
   const uint16_t max_port = 10001;
-  std::deque<FakeDatagramServerSocket::UDPPacket> sent_packets;
+  base::circular_deque<FakeDatagramServerSocket::UDPPacket> sent_packets;
   std::vector<uint16_t> used_ports;
   P2PSocketHostUdp::DatagramServerSocketFactory fake_socket_factory =
       base::Bind(&CreateFakeDatagramServerSocket, &sent_packets, &used_ports);
@@ -537,7 +537,7 @@
   const uint16_t min_port = 10000;
   const uint16_t max_port = 10001;
   const uint16_t valid_port = min_port;
-  std::deque<FakeDatagramServerSocket::UDPPacket> sent_packets;
+  base::circular_deque<FakeDatagramServerSocket::UDPPacket> sent_packets;
   std::vector<uint16_t> used_ports;
   P2PSocketHostUdp::DatagramServerSocketFactory fake_socket_factory =
       base::Bind(&CreateFakeDatagramServerSocket, &sent_packets, &used_ports);
@@ -567,7 +567,7 @@
   const uint16_t min_port = 10000;
   const uint16_t max_port = 10001;
   const uint16_t invalid_port = max_port + 1;
-  std::deque<FakeDatagramServerSocket::UDPPacket> sent_packets;
+  base::circular_deque<FakeDatagramServerSocket::UDPPacket> sent_packets;
   std::vector<uint16_t> used_ports;
   P2PSocketHostUdp::DatagramServerSocketFactory fake_socket_factory =
       base::Bind(&CreateFakeDatagramServerSocket, &sent_packets, &used_ports);
diff --git a/content/browser/renderer_host/pepper/pepper_network_proxy_host.h b/content/browser/renderer_host/pepper/pepper_network_proxy_host.h
index 309e692d..83d15d9 100644
--- a/content/browser/renderer_host/pepper/pepper_network_proxy_host.h
+++ b/content/browser/renderer_host/pepper/pepper_network_proxy_host.h
@@ -11,6 +11,7 @@
 #include <string>
 
 #include "base/compiler_specific.h"
+#include "base/containers/queue.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "content/common/content_export.h"
@@ -92,11 +93,11 @@
     GURL url;
     ppapi::host::ReplyMessageContext reply_context;
   };
-  std::queue<UnsentRequest> unsent_requests_;
+  base::queue<UnsentRequest> unsent_requests_;
 
   // Requests awaiting a response from ProxyService. We need to store these so
   // that we can cancel them if we get destroyed.
-  std::queue<net::ProxyService::PacRequest*> pending_requests_;
+  base::queue<net::ProxyService::PacRequest*> pending_requests_;
 
   base::WeakPtrFactory<PepperNetworkProxyHost> weak_factory_;
 
diff --git a/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.h b/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.h
index 0c5bbca9..3712183 100644
--- a/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.h
+++ b/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.h
@@ -8,11 +8,11 @@
 #include <stddef.h>
 
 #include <memory>
-#include <queue>
 #include <string>
 
 #include "base/callback.h"
 #include "base/compiler_specific.h"
+#include "base/containers/queue.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "build/build_config.h"
@@ -173,7 +173,7 @@
 
   scoped_refptr<net::IOBuffer> recvfrom_buffer_;
 
-  std::queue<PendingSend> pending_sends_;
+  base::queue<PendingSend> pending_sends_;
 
   net::IPEndPoint recvfrom_address_;
 
diff --git a/content/browser/renderer_host/pepper/pepper_vpn_provider_message_filter_chromeos.h b/content/browser/renderer_host/pepper/pepper_vpn_provider_message_filter_chromeos.h
index 2170b33..86c75ba9 100644
--- a/content/browser/renderer_host/pepper/pepper_vpn_provider_message_filter_chromeos.h
+++ b/content/browser/renderer_host/pepper/pepper_vpn_provider_message_filter_chromeos.h
@@ -8,11 +8,11 @@
 #include <stdint.h>
 
 #include <memory>
-#include <queue>
 #include <string>
 #include <vector>
 
 #include "base/callback.h"
+#include "base/containers/queue.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/weak_ptr.h"
@@ -104,7 +104,7 @@
   std::unique_ptr<ppapi::VpnProviderSharedBuffer> send_packet_buffer_;
   std::unique_ptr<ppapi::VpnProviderSharedBuffer> recv_packet_buffer_;
 
-  std::queue<std::vector<char>> received_packets_;
+  base::queue<std::vector<char>> received_packets_;
 
   base::WeakPtrFactory<PepperVpnProviderMessageFilter> weak_factory_;
 
diff --git a/content/browser/renderer_host/render_widget_host_impl.h b/content/browser/renderer_host/render_widget_host_impl.h
index 4391225652..7c5f7d8 100644
--- a/content/browser/renderer_host/render_widget_host_impl.h
+++ b/content/browser/renderer_host/render_widget_host_impl.h
@@ -16,6 +16,7 @@
 #include <vector>
 
 #include "base/callback.h"
+#include "base/containers/queue.h"
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
@@ -1015,7 +1016,7 @@
 
   // List of all swap messages that their corresponding frames have not arrived.
   // Sorted by frame token.
-  std::queue<std::pair<uint32_t, std::vector<IPC::Message>>> queued_messages_;
+  base::queue<std::pair<uint32_t, std::vector<IPC::Message>>> queued_messages_;
 
   // If a CompositorFrame is submitted that references SharedBitmaps that don't
   // exist yet, we keep it here until they are available.
diff --git a/content/browser/renderer_host/render_widget_host_view_android.h b/content/browser/renderer_host/render_widget_host_view_android.h
index 5b99f6d..539f91e 100644
--- a/content/browser/renderer_host/render_widget_host_view_android.h
+++ b/content/browser/renderer_host/render_widget_host_view_android.h
@@ -10,10 +10,10 @@
 
 #include <map>
 #include <memory>
-#include <queue>
 
 #include "base/callback.h"
 #include "base/compiler_specific.h"
+#include "base/containers/queue.h"
 #include "base/i18n/rtl.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
@@ -435,7 +435,7 @@
   // The most recent surface size that was pushed to the surface layer.
   gfx::Size current_surface_size_;
 
-  std::queue<base::Closure> ack_callbacks_;
+  base::queue<base::Closure> ack_callbacks_;
 
   // Used to control and render overscroll-related effects.
   std::unique_ptr<OverscrollControllerAndroid> overscroll_controller_;
diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame.h b/content/browser/renderer_host/render_widget_host_view_child_frame.h
index 154d05b..c32a739 100644
--- a/content/browser/renderer_host/render_widget_host_view_child_frame.h
+++ b/content/browser/renderer_host/render_widget_host_view_child_frame.h
@@ -8,11 +8,11 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include <deque>
 #include <memory>
 #include <vector>
 
 #include "base/callback.h"
+#include "base/containers/circular_deque.h"
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
 #include "build/build_config.h"
@@ -294,9 +294,10 @@
   // using CSS.
   bool CanBecomeVisible();
 
-  using FrameSwappedCallbackList = std::deque<std::unique_ptr<base::Closure>>;
-  // Since frame-drawn callbacks are "fire once", we use std::deque to make
-  // it convenient to swap() when processing the list.
+  using FrameSwappedCallbackList =
+      base::circular_deque<std::unique_ptr<base::Closure>>;
+  // Since frame-drawn callbacks are "fire once", we use base::circular_deque
+  // to make it convenient to swap() when processing the list.
   FrameSwappedCallbackList frame_swapped_callbacks_;
 
   // The surface client ID of the parent RenderWidgetHostView.  0 if none.
diff --git a/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm b/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm
index 640c1ba..0e47a4a 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm
@@ -10,6 +10,7 @@
 #include <tuple>
 
 #include "base/command_line.h"
+#include "base/containers/queue.h"
 #include "base/mac/mac_util.h"
 #include "base/mac/scoped_nsautorelease_pool.h"
 #include "base/mac/sdk_forward_declarations.h"
@@ -280,7 +281,7 @@
   DCHECK(output);
   output->clear();
 
-  std::queue<int> break_point_queue;
+  base::queue<int> break_point_queue;
   for (size_t i = 0; i < break_points.size(); ++i)
     break_point_queue.push(break_points[i]);
   break_point_queue.push(length);
diff --git a/content/browser/resolve_proxy_msg_helper.h b/content/browser/resolve_proxy_msg_helper.h
index f076d97d..f552fd2 100644
--- a/content/browser/resolve_proxy_msg_helper.h
+++ b/content/browser/resolve_proxy_msg_helper.h
@@ -5,9 +5,9 @@
 #ifndef CONTENT_BROWSER_RESOLVE_PROXY_MSG_HELPER_H_
 #define CONTENT_BROWSER_RESOLVE_PROXY_MSG_HELPER_H_
 
-#include <deque>
 #include <string>
 
+#include "base/containers/circular_deque.h"
 #include "base/memory/ref_counted.h"
 #include "content/common/content_export.h"
 #include "content/public/browser/browser_message_filter.h"
@@ -74,7 +74,7 @@
   net::ProxyInfo proxy_info_;
 
   // FIFO queue of pending requests. The first entry is always the current one.
-  typedef std::deque<PendingRequest> PendingRequestList;
+  using PendingRequestList = base::circular_deque<PendingRequest>;
   PendingRequestList pending_requests_;
 
   scoped_refptr<net::URLRequestContextGetter> context_getter_;
diff --git a/content/browser/service_worker/service_worker_cache_writer_unittest.cc b/content/browser/service_worker/service_worker_cache_writer_unittest.cc
index 00d03893..d7789ac8 100644
--- a/content/browser/service_worker/service_worker_cache_writer_unittest.cc
+++ b/content/browser/service_worker/service_worker_cache_writer_unittest.cc
@@ -7,9 +7,9 @@
 #include <stddef.h>
 
 #include <list>
-#include <queue>
 #include <string>
 
+#include "base/containers/queue.h"
 #include "base/macros.h"
 #include "base/memory/ptr_util.h"
 #include "content/browser/service_worker/service_worker_disk_cache.h"
@@ -89,7 +89,7 @@
     int result;
   };
 
-  std::queue<ExpectedRead> expected_reads_;
+  base::queue<ExpectedRead> expected_reads_;
   scoped_refptr<net::IOBuffer> pending_buffer_;
   size_t pending_buffer_len_;
   scoped_refptr<HttpResponseInfoIOBuffer> pending_info_;
@@ -238,7 +238,7 @@
     int result;
   };
 
-  std::queue<ExpectedWrite> expected_writes_;
+  base::queue<ExpectedWrite> expected_writes_;
 
   size_t info_written_;
   size_t data_written_;
diff --git a/content/browser/service_worker/service_worker_fetch_dispatcher.cc b/content/browser/service_worker/service_worker_fetch_dispatcher.cc
index ab29a95d..b2d8103 100644
--- a/content/browser/service_worker/service_worker_fetch_dispatcher.cc
+++ b/content/browser/service_worker/service_worker_fetch_dispatcher.cc
@@ -8,6 +8,7 @@
 #include <utility>
 
 #include "base/bind.h"
+#include "base/containers/queue.h"
 #include "base/feature_list.h"
 #include "base/memory/ptr_util.h"
 #include "base/time/time.h"
@@ -232,7 +233,7 @@
 
   base::Optional<std::pair<int, int>> worker_id_;
   std::string devtools_request_id_;
-  std::queue<base::Callback<void(const WorkerId&, const std::string&)>>
+  base::queue<base::Callback<void(const WorkerId&, const std::string&)>>
       devtools_callbacks;
   DISALLOW_COPY_AND_ASSIGN(DelegatingURLLoaderClient);
 };
diff --git a/content/browser/service_worker/service_worker_job_coordinator.h b/content/browser/service_worker/service_worker_job_coordinator.h
index c86b800..94d133a 100644
--- a/content/browser/service_worker/service_worker_job_coordinator.h
+++ b/content/browser/service_worker/service_worker_job_coordinator.h
@@ -5,10 +5,10 @@
 #ifndef CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_JOB_COORDINATOR_H_
 #define CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_JOB_COORDINATOR_H_
 
-#include <deque>
 #include <map>
 #include <memory>
 
+#include "base/containers/circular_deque.h"
 #include "base/macros.h"
 #include "content/browser/service_worker/service_worker_register_job.h"
 #include "content/browser/service_worker/service_worker_unregister_job.h"
@@ -85,7 +85,7 @@
     void ClearForShutdown();
 
    private:
-    std::deque<std::unique_ptr<ServiceWorkerRegisterJobBase>> jobs_;
+    base::circular_deque<std::unique_ptr<ServiceWorkerRegisterJobBase>> jobs_;
 
     DISALLOW_COPY_AND_ASSIGN(JobQueue);
   };
diff --git a/content/browser/service_worker/service_worker_storage.h b/content/browser/service_worker/service_worker_storage.h
index 6893b55..a681ed4d 100644
--- a/content/browser/service_worker/service_worker_storage.h
+++ b/content/browser/service_worker/service_worker_storage.h
@@ -7,7 +7,6 @@
 
 #include <stdint.h>
 
-#include <deque>
 #include <map>
 #include <set>
 #include <string>
@@ -15,6 +14,7 @@
 #include <vector>
 
 #include "base/bind.h"
+#include "base/containers/circular_deque.h"
 #include "base/files/file_path.h"
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
@@ -569,7 +569,7 @@
 
   std::unique_ptr<ServiceWorkerDiskCache> disk_cache_;
 
-  std::deque<int64_t> purgeable_resource_ids_;
+  base::circular_deque<int64_t> purgeable_resource_ids_;
   bool is_purge_pending_;
   bool has_checked_for_stale_resources_;
   std::set<int64_t> pending_deletions_;
diff --git a/content/browser/speech/audio_buffer.h b/content/browser/speech/audio_buffer.h
index d941543..1231fa4 100644
--- a/content/browser/speech/audio_buffer.h
+++ b/content/browser/speech/audio_buffer.h
@@ -8,9 +8,9 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include <deque>
 #include <string>
 
+#include "base/containers/circular_deque.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "content/common/content_export.h"
@@ -72,7 +72,7 @@
   bool IsEmpty() const;
 
  private:
-  typedef std::deque<scoped_refptr<AudioChunk> > ChunksContainer;
+  using ChunksContainer = base::circular_deque<scoped_refptr<AudioChunk>>;
   ChunksContainer chunks_;
   const int bytes_per_sample_;
 
diff --git a/content/browser/speech/speech_recognition_engine_unittest.cc b/content/browser/speech/speech_recognition_engine_unittest.cc
index f90b7ed..4ea8fc4 100644
--- a/content/browser/speech/speech_recognition_engine_unittest.cc
+++ b/content/browser/speech/speech_recognition_engine_unittest.cc
@@ -8,9 +8,9 @@
 #include <stdint.h>
 
 #include <memory>
-#include <queue>
 
 #include "base/big_endian.h"
+#include "base/containers/queue.h"
 #include "base/message_loop/message_loop.h"
 #include "base/numerics/safe_conversions.h"
 #include "base/strings/utf_string_conversions.h"
@@ -103,7 +103,7 @@
   std::string response_buffer_;
   SpeechRecognitionErrorCode error_;
   int end_of_utterance_counter_;
-  std::queue<SpeechRecognitionResults> results_;
+  base::queue<SpeechRecognitionResults> results_;
 };
 
 TEST_F(SpeechRecognitionEngineTest, SingleDefinitiveResult) {
diff --git a/content/browser/webrtc/webrtc_internals.h b/content/browser/webrtc/webrtc_internals.h
index 45b0dbf..708d5da 100644
--- a/content/browser/webrtc/webrtc_internals.h
+++ b/content/browser/webrtc/webrtc_internals.h
@@ -6,10 +6,10 @@
 #define CONTENT_BROWSER_WEBRTC_WEBRTC_INTERNALS_H_
 
 #include <memory>
-#include <queue>
 #include <string>
 
 #include "base/containers/hash_tables.h"
+#include "base/containers/queue.h"
 #include "base/gtest_prod_util.h"
 #include "base/lazy_instance.h"
 #include "base/memory/weak_ptr.h"
@@ -251,7 +251,7 @@
     DISALLOW_COPY_AND_ASSIGN(PendingUpdate);
   };
 
-  std::queue<PendingUpdate> pending_updates_;
+  base::queue<PendingUpdate> pending_updates_;
   const int aggregate_updates_ms_;
 
   // Weak factory for this object that we use for bulking up updates.
diff --git a/content/child/indexed_db/webidbcursor_impl.h b/content/child/indexed_db/webidbcursor_impl.h
index c870bca7..61cccf2 100644
--- a/content/child/indexed_db/webidbcursor_impl.h
+++ b/content/child/indexed_db/webidbcursor_impl.h
@@ -7,10 +7,10 @@
 
 #include <stdint.h>
 
-#include <deque>
 #include <vector>
 
 #include "base/compiler_specific.h"
+#include "base/containers/circular_deque.h"
 #include "base/gtest_prod_util.h"
 #include "base/memory/ref_counted.h"
 #include "content/common/content_export.h"
@@ -72,9 +72,9 @@
   scoped_refptr<base::SingleThreadTaskRunner> io_runner_;
 
   // Prefetch cache.
-  std::deque<IndexedDBKey> prefetch_keys_;
-  std::deque<IndexedDBKey> prefetch_primary_keys_;
-  std::deque<blink::WebIDBValue> prefetch_values_;
+  base::circular_deque<IndexedDBKey> prefetch_keys_;
+  base::circular_deque<IndexedDBKey> prefetch_primary_keys_;
+  base::circular_deque<blink::WebIDBValue> prefetch_values_;
 
   // Number of continue calls that would qualify for a pre-fetch.
   int continue_count_;
diff --git a/content/child/resource_dispatcher.h b/content/child/resource_dispatcher.h
index 4bda53ec..aea67d9 100644
--- a/content/child/resource_dispatcher.h
+++ b/content/child/resource_dispatcher.h
@@ -9,11 +9,11 @@
 
 #include <stdint.h>
 
-#include <deque>
 #include <map>
 #include <memory>
 #include <string>
 
+#include "base/containers/circular_deque.h"
 #include "base/containers/hash_tables.h"
 #include "base/macros.h"
 #include "base/memory/linked_ptr.h"
@@ -170,7 +170,7 @@
   friend class URLResponseBodyConsumer;
   friend class ResourceDispatcherTest;
 
-  typedef std::deque<IPC::Message*> MessageQueue;
+  using MessageQueue = base::circular_deque<IPC::Message*>;
   struct PendingRequestInfo {
     PendingRequestInfo(std::unique_ptr<RequestPeer> peer,
                        ResourceType resource_type,
diff --git a/content/child/shared_memory_data_consumer_handle.cc b/content/child/shared_memory_data_consumer_handle.cc
index c78ae8e..44c9384 100644
--- a/content/child/shared_memory_data_consumer_handle.cc
+++ b/content/child/shared_memory_data_consumer_handle.cc
@@ -5,10 +5,10 @@
 #include "content/child/shared_memory_data_consumer_handle.h"
 
 #include <algorithm>
-#include <deque>
 #include <utility>
 
 #include "base/bind.h"
+#include "base/containers/circular_deque.h"
 #include "base/macros.h"
 #include "base/memory/ptr_util.h"
 #include "base/message_loop/message_loop.h"
@@ -244,7 +244,8 @@
   // |result_| stores the ultimate state of this handle if it has. Otherwise,
   // |Ok| is set.
   Result result_;
-  std::deque<std::unique_ptr<RequestPeer::ThreadSafeReceivedData>> queue_;
+  base::circular_deque<std::unique_ptr<RequestPeer::ThreadSafeReceivedData>>
+      queue_;
   size_t first_offset_;
   Client* client_;
   scoped_refptr<base::SingleThreadTaskRunner> notification_task_runner_;
diff --git a/content/public/test/browser_test_utils.cc b/content/public/test/browser_test_utils.cc
index 55e6d48c0..dadd8fc9 100644
--- a/content/public/test/browser_test_utils.cc
+++ b/content/public/test/browser_test_utils.cc
@@ -1643,7 +1643,7 @@
 }
 
 void DOMMessageQueue::ClearQueue() {
-  message_queue_ = std::queue<std::string>();
+  message_queue_ = base::queue<std::string>();
 }
 
 bool DOMMessageQueue::WaitForMessage(std::string* message) {
diff --git a/content/public/test/browser_test_utils.h b/content/public/test/browser_test_utils.h
index 41e84d5..d523861 100644
--- a/content/public/test/browser_test_utils.h
+++ b/content/public/test/browser_test_utils.h
@@ -6,12 +6,12 @@
 #define CONTENT_PUBLIC_TEST_BROWSER_TEST_UTILS_H_
 
 #include <memory>
-#include <queue>
 #include <string>
 #include <vector>
 
 #include "base/callback.h"
 #include "base/compiler_specific.h"
+#include "base/containers/queue.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
@@ -593,7 +593,7 @@
 
  private:
   NotificationRegistrar registrar_;
-  std::queue<std::string> message_queue_;
+  base::queue<std::string> message_queue_;
   scoped_refptr<MessageLoopRunner> message_loop_runner_;
   bool renderer_crashed_ = false;
 
diff --git a/content/public/test/test_download_request_handler.cc b/content/public/test/test_download_request_handler.cc
index 2ee6df20..e02033cfa 100644
--- a/content/public/test/test_download_request_handler.cc
+++ b/content/public/test/test_download_request_handler.cc
@@ -9,6 +9,7 @@
 #include <memory>
 #include <utility>
 
+#include "base/containers/queue.h"
 #include "base/location.h"
 #include "base/logging.h"
 #include "base/macros.h"
@@ -616,7 +617,7 @@
 TestDownloadRequestHandler::Parameters::~Parameters() {}
 
 void TestDownloadRequestHandler::Parameters::ClearInjectedErrors() {
-  std::queue<InjectedError> empty_error_list;
+  base::queue<InjectedError> empty_error_list;
   injected_errors.swap(empty_error_list);
 }
 
diff --git a/content/public/test/test_download_request_handler.h b/content/public/test/test_download_request_handler.h
index 440f876..43e2c5b5 100644
--- a/content/public/test/test_download_request_handler.h
+++ b/content/public/test/test_download_request_handler.h
@@ -8,9 +8,9 @@
 #include <stdint.h>
 
 #include <memory>
-#include <queue>
 
 #include "base/callback_forward.h"
+#include "base/containers/queue.h"
 #include "base/files/file.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
@@ -197,7 +197,7 @@
     // * Distinctions about which read requests signal the error is often only
     //   important at the //net layer. From //content, it would appear that 100
     //   bytes were read and then request failed with ERR_CONNECTION_RESET.
-    std::queue<InjectedError> injected_errors;
+    base::queue<InjectedError> injected_errors;
   };
 
   // Details about completed requests returned by GetCompletedRequestInfo().
diff --git a/content/renderer/accessibility/render_accessibility_impl.cc b/content/renderer/accessibility/render_accessibility_impl.cc
index 4b7f52a..94c7227 100644
--- a/content/renderer/accessibility/render_accessibility_impl.cc
+++ b/content/renderer/accessibility/render_accessibility_impl.cc
@@ -7,9 +7,8 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include <queue>
-
 #include "base/bind.h"
+#include "base/containers/queue.h"
 #include "base/location.h"
 #include "base/memory/ptr_util.h"
 #include "base/single_thread_task_runner.h"
@@ -334,7 +333,7 @@
   if (!root.UpdateLayoutAndCheckValidity())
     return;
 
-  std::queue<WebAXObject> objs_to_explore;
+  base::queue<WebAXObject> objs_to_explore;
   objs_to_explore.push(root);
   while (objs_to_explore.size()) {
     WebAXObject obj = objs_to_explore.front();
@@ -464,7 +463,7 @@
 
   // Do a breadth-first explore of the whole blink AX tree.
   base::hash_map<int, ui::AXRelativeBounds> new_locations;
-  std::queue<WebAXObject> objs_to_explore;
+  base::queue<WebAXObject> objs_to_explore;
   objs_to_explore.push(root);
   while (objs_to_explore.size()) {
     WebAXObject obj = objs_to_explore.front();
diff --git a/content/renderer/input/main_thread_event_queue.cc b/content/renderer/input/main_thread_event_queue.cc
index ff164ef2..417021db 100644
--- a/content/renderer/input/main_thread_event_queue.cc
+++ b/content/renderer/input/main_thread_event_queue.cc
@@ -4,6 +4,7 @@
 
 #include "content/renderer/input/main_thread_event_queue.h"
 
+#include "base/containers/circular_deque.h"
 #include "base/metrics/field_trial.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/strings/string_number_conversions.h"
@@ -199,7 +200,7 @@
   }
 
   // Contains the pending callbacks to be called.
-  std::deque<HandledEventCallback> blocking_coalesced_callbacks_;
+  base::circular_deque<HandledEventCallback> blocking_coalesced_callbacks_;
   // Contains the number of non-blocking events coalesced.
   size_t non_blocking_coalesced_count_;
   base::TimeTicks creation_timestamp_;
diff --git a/content/renderer/input/main_thread_event_queue_task_list.h b/content/renderer/input/main_thread_event_queue_task_list.h
index b9a81d2..d058087 100644
--- a/content/renderer/input/main_thread_event_queue_task_list.h
+++ b/content/renderer/input/main_thread_event_queue_task_list.h
@@ -5,9 +5,9 @@
 #ifndef CONTENT_RENDERER_INPUT_MAIN_THREAD_EVENT_QUEUE_TASK_LIST_H_
 #define CONTENT_RENDERER_INPUT_MAIN_THREAD_EVENT_QUEUE_TASK_LIST_H_
 
-#include <deque>
 #include <memory>
 
+#include "base/containers/circular_deque.h"
 #include "content/renderer/input/main_thread_event_queue_task.h"
 
 namespace content {
@@ -36,7 +36,8 @@
   size_t size() const { return queue_.size(); }
 
  private:
-  typedef std::deque<std::unique_ptr<MainThreadEventQueueTask>> EventQueue;
+  using EventQueue =
+      base::circular_deque<std::unique_ptr<MainThreadEventQueueTask>>;
   EventQueue queue_;
 
   DISALLOW_COPY_AND_ASSIGN(MainThreadEventQueueTaskList);
diff --git a/content/renderer/media/gpu/rtc_video_decoder.h b/content/renderer/media/gpu/rtc_video_decoder.h
index cddee8b..b9db17f 100644
--- a/content/renderer/media/gpu/rtc_video_decoder.h
+++ b/content/renderer/media/gpu/rtc_video_decoder.h
@@ -8,13 +8,13 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include <deque>
 #include <list>
 #include <map>
 #include <memory>
 #include <set>
 #include <utility>
 
+#include "base/containers/circular_deque.h"
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
@@ -274,11 +274,13 @@
 
   // A queue storing WebRTC encoding images (and their metadata) that are
   // waiting for the shared memory. Guarded by |lock_|.
-  std::deque<std::pair<webrtc::EncodedImage, BufferData>> pending_buffers_;
+  base::circular_deque<std::pair<webrtc::EncodedImage, BufferData>>
+      pending_buffers_;
 
   // A queue storing buffers (and their metadata) that will be sent to VDA for
   // decode. Guarded by |lock_|.
-  std::deque<std::pair<std::unique_ptr<base::SharedMemory>, BufferData>>
+  base::circular_deque<
+      std::pair<std::unique_ptr<base::SharedMemory>, BufferData>>
       decode_buffers_;
 
   // The id that will be given to the next bitstream buffer. Guarded by |lock_|.
diff --git a/content/renderer/media/gpu/rtc_video_encoder.cc b/content/renderer/media/gpu/rtc_video_encoder.cc
index 9d6b12d1..84da91b 100644
--- a/content/renderer/media/gpu/rtc_video_encoder.cc
+++ b/content/renderer/media/gpu/rtc_video_encoder.cc
@@ -6,11 +6,11 @@
 
 #include <string.h>
 
-#include <deque>
 #include <memory>
 #include <vector>
 
 #include "base/bind.h"
+#include "base/containers/circular_deque.h"
 #include "base/location.h"
 #include "base/logging.h"
 #include "base/macros.h"
@@ -46,9 +46,6 @@
       : media_timestamp_(media_timestamp), rtp_timestamp(rtp_timestamp) {}
   const base::TimeDelta media_timestamp_;
   const int32_t rtp_timestamp;
-
- private:
-  DISALLOW_IMPLICIT_CONSTRUCTORS(RTCTimestamps);
 };
 
 webrtc::VideoCodecType ProfileToWebRtcVideoCodecType(
@@ -235,7 +232,7 @@
 
   // Used to match the encoded frame timestamp with WebRTC's given RTP
   // timestamp.
-  std::deque<RTCTimestamps> pending_timestamps_;
+  base::circular_deque<RTCTimestamps> pending_timestamps_;
 
   // Indicates that timestamp match failed and we should no longer attempt
   // matching.
diff --git a/content/renderer/media/webmediaplayer_ms_unittest.cc b/content/renderer/media/webmediaplayer_ms_unittest.cc
index f81bd23..480d782 100644
--- a/content/renderer/media/webmediaplayer_ms_unittest.cc
+++ b/content/renderer/media/webmediaplayer_ms_unittest.cc
@@ -4,6 +4,7 @@
 
 #include <stddef.h>
 
+#include "base/containers/circular_deque.h"
 #include "base/message_loop/message_loop.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
@@ -198,7 +199,7 @@
   const base::Closure error_cb_;
   const MediaStreamVideoRenderer::RepaintCB repaint_cb_;
 
-  std::deque<TestFrame> frames_;
+  base::circular_deque<TestFrame> frames_;
   base::TimeDelta delay_till_next_generated_frame_;
 };
 
diff --git a/content/renderer/media_recorder/audio_track_recorder.cc b/content/renderer/media_recorder/audio_track_recorder.cc
index 9f968018..397a1114 100644
--- a/content/renderer/media_recorder/audio_track_recorder.cc
+++ b/content/renderer/media_recorder/audio_track_recorder.cc
@@ -237,10 +237,10 @@
 
   if (!is_initialized() || paused_)
     return;
-  // TODO(mcasas): Consider using a std::deque<std::unique_ptr<AudioBus>>
-  // instead of
-  // an AudioFifo, to avoid copying data needlessly since we know the sizes of
-  // both input and output and they are multiples.
+  // TODO(mcasas): Consider using a
+  // base::circular_deque<std::unique_ptr<AudioBus>> instead of an AudioFifo,
+  // to avoid copying data needlessly since we know the sizes of both input and
+  // output and they are multiples.
   fifo_->Push(input_bus.get());
 
   // Wait to have enough |input_bus|s to guarantee a satisfactory conversion.
diff --git a/content/renderer/media_recorder/vea_encoder.cc b/content/renderer/media_recorder/vea_encoder.cc
index 77ccb9e7..f88489c 100644
--- a/content/renderer/media_recorder/vea_encoder.cc
+++ b/content/renderer/media_recorder/vea_encoder.cc
@@ -6,6 +6,7 @@
 
 #include <string>
 
+#include "base/containers/queue.h"
 #include "content/renderer/media/gpu/gpu_video_accelerator_factories_impl.h"
 #include "content/renderer/render_thread_impl.h"
 #include "media/base/bind_to_current_loop.h"
@@ -78,7 +79,7 @@
 
   vea_requested_input_coded_size_ = input_coded_size;
   output_buffers_.clear();
-  std::queue<std::unique_ptr<base::SharedMemory>>().swap(input_buffers_);
+  base::queue<std::unique_ptr<base::SharedMemory>>().swap(input_buffers_);
 
   for (int i = 0; i < kVEAEncoderOutputBufferCount; ++i) {
     std::unique_ptr<base::SharedMemory> shm =
diff --git a/content/renderer/media_recorder/vea_encoder.h b/content/renderer/media_recorder/vea_encoder.h
index 3f27f56..57e5c91 100644
--- a/content/renderer/media_recorder/vea_encoder.h
+++ b/content/renderer/media_recorder/vea_encoder.h
@@ -7,6 +7,7 @@
 
 #include <queue>
 
+#include "base/containers/queue.h"
 #include "content/renderer/media_recorder/video_track_recorder.h"
 #include "media/video/video_encode_accelerator.h"
 #include "ui/gfx/geometry/size.h"
@@ -73,7 +74,7 @@
   std::vector<std::unique_ptr<base::SharedMemory>> output_buffers_;
 
   // Shared memory buffers for output with the VEA as FIFO.
-  std::queue<std::unique_ptr<base::SharedMemory>> input_buffers_;
+  base::queue<std::unique_ptr<base::SharedMemory>> input_buffers_;
 
   // Tracks error status.
   bool error_notified_;
@@ -88,7 +89,7 @@
   gfx::Size vea_requested_input_coded_size_;
 
   // Frames and corresponding timestamps in encode as FIFO.
-  std::queue<VideoParamsAndTimestamp> frames_in_encode_;
+  base::queue<VideoParamsAndTimestamp> frames_in_encode_;
 
   // This callback can be exercised on any thread.
   const VideoTrackRecorder::OnErrorCB on_error_callback_;
diff --git a/content/renderer/pepper/content_decryptor_delegate.h b/content/renderer/pepper/content_decryptor_delegate.h
index 4984963..f8e41e6 100644
--- a/content/renderer/pepper/content_decryptor_delegate.h
+++ b/content/renderer/pepper/content_decryptor_delegate.h
@@ -9,12 +9,12 @@
 #include <stdint.h>
 
 #include <map>
-#include <queue>
 #include <string>
 #include <vector>
 
 #include "base/callback_helpers.h"
 #include "base/compiler_specific.h"
+#include "base/containers/queue.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/weak_ptr.h"
@@ -237,7 +237,7 @@
   scoped_refptr<PPB_Buffer_Impl> audio_input_resource_;
   scoped_refptr<PPB_Buffer_Impl> video_input_resource_;
 
-  std::queue<uint32_t> free_buffers_;
+  base::queue<uint32_t> free_buffers_;
 
   // Keep track of audio parameters.
   int audio_samples_per_second_;
diff --git a/content/renderer/pepper/message_channel.h b/content/renderer/pepper/message_channel.h
index ea35d20..41d6c9e 100644
--- a/content/renderer/pepper/message_channel.h
+++ b/content/renderer/pepper/message_channel.h
@@ -5,10 +5,10 @@
 #ifndef CONTENT_RENDERER_PEPPER_MESSAGE_CHANNEL_H_
 #define CONTENT_RENDERER_PEPPER_MESSAGE_CHANNEL_H_
 
-#include <deque>
 #include <list>
 #include <map>
 
+#include "base/containers/circular_deque.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "content/renderer/pepper/v8_var_converter.h"
@@ -164,7 +164,7 @@
   };
 
   // This queue stores values being posted to JavaScript.
-  std::deque<blink::WebSerializedScriptValue> js_message_queue_;
+  base::circular_deque<blink::WebSerializedScriptValue> js_message_queue_;
   MessageQueueState js_message_queue_state_;
 
   // True if there is already a posted task to drain the JS message queue.
diff --git a/content/renderer/pepper/pepper_media_stream_audio_track_host.h b/content/renderer/pepper/pepper_media_stream_audio_track_host.h
index 8ca1a17..ab380d1 100644
--- a/content/renderer/pepper/pepper_media_stream_audio_track_host.h
+++ b/content/renderer/pepper/pepper_media_stream_audio_track_host.h
@@ -7,10 +7,10 @@
 
 #include <stdint.h>
 
-#include <deque>
 #include <memory>
 
 #include "base/compiler_specific.h"
+#include "base/containers/circular_deque.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "base/synchronization/lock.h"
@@ -109,7 +109,7 @@
     base::Lock lock_;
 
     // A queue for free buffer indices.
-    std::deque<int32_t> buffers_;
+    base::circular_deque<int32_t> buffers_;
 
     // Generation of buffers. It is increased by every |InitBuffers()| call.
     int32_t buffers_generation_;
diff --git a/content/renderer/pepper/video_decoder_shim.cc b/content/renderer/pepper/video_decoder_shim.cc
index 73eb444e..f77e4946b 100644
--- a/content/renderer/pepper/video_decoder_shim.cc
+++ b/content/renderer/pepper/video_decoder_shim.cc
@@ -7,9 +7,11 @@
 #include <GLES2/gl2.h>
 #include <GLES2/gl2ext.h>
 #include <GLES2/gl2extchromium.h>
+
 #include <utility>
 
 #include "base/bind.h"
+#include "base/containers/queue.h"
 #include "base/location.h"
 #include "base/logging.h"
 #include "base/macros.h"
@@ -663,7 +665,7 @@
   bool initialized_ = false;
   scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_;
   // Queue of decodes waiting for the decoder.
-  typedef std::queue<PendingDecode> PendingDecodeQueue;
+  using PendingDecodeQueue = base::queue<PendingDecode>;
   PendingDecodeQueue pending_decodes_;
   bool awaiting_decoder_ = false;
   // VideoDecoder returns pictures without information about the decode buffer
diff --git a/content/renderer/pepper/video_decoder_shim.h b/content/renderer/pepper/video_decoder_shim.h
index 1235cef0..16e93d7 100644
--- a/content/renderer/pepper/video_decoder_shim.h
+++ b/content/renderer/pepper/video_decoder_shim.h
@@ -8,10 +8,10 @@
 #include <stdint.h>
 
 #include <memory>
-#include <queue>
 #include <vector>
 
 #include "base/containers/hash_tables.h"
+#include "base/containers/queue.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "gpu/command_buffer/common/mailbox.h"
@@ -85,10 +85,10 @@
   // The current decoded frame size.
   gfx::Size texture_size_;
   // Map that takes the plugin's GL texture id to the renderer's GL texture id.
-  typedef base::hash_map<uint32_t, uint32_t> TextureIdMap;
+  using TextureIdMap = base::hash_map<uint32_t, uint32_t>;
   TextureIdMap texture_id_map_;
   // Available textures (these are plugin ids.)
-  typedef base::hash_set<uint32_t> TextureIdSet;
+  using TextureIdSet = base::hash_set<uint32_t>;
   TextureIdSet available_textures_;
   // Track textures that are no longer needed (these are plugin ids.)
   TextureIdSet textures_to_dismiss_;
@@ -96,11 +96,11 @@
   std::vector<gpu::Mailbox> pending_texture_mailboxes_;
 
   // Queue of completed decode ids, for notifying the host.
-  typedef std::queue<uint32_t> CompletedDecodeQueue;
+  using CompletedDecodeQueue = base::queue<uint32_t>;
   CompletedDecodeQueue completed_decodes_;
 
   // Queue of decoded frames that await rgb->yuv conversion.
-  typedef std::queue<std::unique_ptr<PendingFrame>> PendingFrameQueue;
+  using PendingFrameQueue = base::queue<std::unique_ptr<PendingFrame>>;
   PendingFrameQueue pending_frames_;
 
   // The optimal number of textures to allocate for decoder_impl_.
diff --git a/content/renderer/pepper/video_encoder_shim.cc b/content/renderer/pepper/video_encoder_shim.cc
index 4ec1d69..58d4391 100644
--- a/content/renderer/pepper/video_encoder_shim.cc
+++ b/content/renderer/pepper/video_encoder_shim.cc
@@ -6,10 +6,9 @@
 
 #include <inttypes.h>
 
-#include <deque>
-
 #include "base/bind.h"
 #include "base/bind_helpers.h"
+#include "base/containers/circular_deque.h"
 #include "base/location.h"
 #include "base/single_thread_task_runner.h"
 #include "base/sys_info.h"
@@ -143,8 +142,8 @@
 
   uint32_t framerate_;
 
-  std::deque<PendingEncode> frames_;
-  std::deque<BitstreamBuffer> buffers_;
+  base::circular_deque<PendingEncode> frames_;
+  base::circular_deque<BitstreamBuffer> buffers_;
 };
 
 VideoEncoderShim::EncoderImpl::EncoderImpl(
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index 2c9f02a..ecc3c4d 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -8,7 +8,6 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include <deque>
 #include <map>
 #include <memory>
 #include <set>
@@ -16,6 +15,7 @@
 #include <vector>
 
 #include "base/callback.h"
+#include "base/containers/circular_deque.h"
 #include "base/containers/id_map.h"
 #include "base/files/file_path.h"
 #include "base/gtest_prod_util.h"
@@ -1394,7 +1394,8 @@
   // callback, and the remaining elements are the other file chooser completion
   // still waiting to be run (in order).
   struct PendingFileChooser;
-  std::deque<std::unique_ptr<PendingFileChooser>> file_chooser_completions_;
+  base::circular_deque<std::unique_ptr<PendingFileChooser>>
+      file_chooser_completions_;
 
 #if BUILDFLAG(USE_EXTERNAL_POPUP_MENU)
   // The external popup for the currently showing select popup.
diff --git a/content/renderer/scheduler/resource_dispatch_throttler.cc b/content/renderer/scheduler/resource_dispatch_throttler.cc
index 661daa8b..6eae599 100644
--- a/content/renderer/scheduler/resource_dispatch_throttler.cc
+++ b/content/renderer/scheduler/resource_dispatch_throttler.cc
@@ -5,6 +5,7 @@
 #include "content/renderer/scheduler/resource_dispatch_throttler.h"
 
 #include "base/auto_reset.h"
+#include "base/containers/circular_deque.h"
 #include "base/trace_event/trace_event.h"
 #include "content/common/resource_messages.h"
 #include "ipc/ipc_message_macros.h"
@@ -130,7 +131,7 @@
 
   TRACE_EVENT1("loader", "ResourceDispatchThrottler::FlushAll",
                "total_throttled_messages", throttled_messages_.size());
-  std::deque<IPC::Message*> throttled_messages;
+  base::circular_deque<IPC::Message*> throttled_messages;
   throttled_messages.swap(throttled_messages_);
   for (auto* message : throttled_messages)
     ForwardMessage(message);
diff --git a/content/renderer/scheduler/resource_dispatch_throttler.h b/content/renderer/scheduler/resource_dispatch_throttler.h
index 3ccc788..6c4c933 100644
--- a/content/renderer/scheduler/resource_dispatch_throttler.h
+++ b/content/renderer/scheduler/resource_dispatch_throttler.h
@@ -7,8 +7,7 @@
 
 #include <stdint.h>
 
-#include <deque>
-
+#include "base/containers/circular_deque.h"
 #include "base/macros.h"
 #include "base/threading/thread_checker.h"
 #include "base/time/time.h"
@@ -68,7 +67,7 @@
   base::Timer flush_timer_;
   base::TimeTicks last_flush_time_;
   uint32_t sent_requests_since_last_flush_;
-  std::deque<IPC::Message*> throttled_messages_;
+  base::circular_deque<IPC::Message*> throttled_messages_;
 
   DISALLOW_COPY_AND_ASSIGN(ResourceDispatchThrottler);
 };
diff --git a/content/shell/renderer/layout_test/blink_test_runner.h b/content/shell/renderer/layout_test/blink_test_runner.h
index 26731d43..2dee80e 100644
--- a/content/shell/renderer/layout_test/blink_test_runner.h
+++ b/content/shell/renderer/layout_test/blink_test_runner.h
@@ -5,11 +5,11 @@
 #ifndef CONTENT_SHELL_RENDERER_LAYOUT_TEST_BLINK_TEST_RUNNER_H_
 #define CONTENT_SHELL_RENDERER_LAYOUT_TEST_BLINK_TEST_RUNNER_H_
 
-#include <deque>
 #include <memory>
 #include <vector>
 
 #include "base/callback.h"
+#include "base/containers/circular_deque.h"
 #include "base/files/file_path.h"
 #include "base/macros.h"
 #include "content/public/common/page_state.h"
@@ -222,7 +222,7 @@
   std::vector<std::vector<PageState> > session_histories_;
   std::vector<unsigned> current_entry_indexes_;
 
-  std::deque<base::Callback<void(const std::vector<std::string>&)>>
+  base::circular_deque<base::Callback<void(const std::vector<std::string>&)>>
       get_bluetooth_events_callbacks_;
 
   bool is_main_window_;
diff --git a/content/shell/test_runner/event_sender.h b/content/shell/test_runner/event_sender.h
index 390128a..b401231f 100644
--- a/content/shell/test_runner/event_sender.h
+++ b/content/shell/test_runner/event_sender.h
@@ -8,11 +8,11 @@
 #include <stdint.h>
 
 #include <memory>
-#include <queue>
 #include <string>
 #include <unordered_map>
 #include <vector>
 
+#include "base/containers/circular_deque.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "build/build_config.h"
@@ -305,7 +305,7 @@
 
   bool replaying_saved_events_;
 
-  std::deque<SavedEvent> mouse_event_queue_;
+  base::circular_deque<SavedEvent> mouse_event_queue_;
 
   blink::WebDragOperationsMask current_drag_effects_allowed_;
 
diff --git a/content/shell/test_runner/mock_web_speech_recognizer.h b/content/shell/test_runner/mock_web_speech_recognizer.h
index b550a6e..72d99b2 100644
--- a/content/shell/test_runner/mock_web_speech_recognizer.h
+++ b/content/shell/test_runner/mock_web_speech_recognizer.h
@@ -5,9 +5,9 @@
 #ifndef CONTENT_SHELL_TEST_RUNNER_MOCK_WEB_SPEECH_RECOGNIZER_H_
 #define CONTENT_SHELL_TEST_RUNNER_MOCK_WEB_SPEECH_RECOGNIZER_H_
 
-#include <deque>
 #include <vector>
 
+#include "base/containers/circular_deque.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "third_party/WebKit/public/web/WebSpeechRecognizer.h"
@@ -80,7 +80,7 @@
   bool was_aborted_;
 
   // Queue of tasks to be run.
-  std::deque<Task*> task_queue_;
+  base::circular_deque<Task*> task_queue_;
   bool task_queue_running_;
 
   WebTestDelegate* delegate_;
diff --git a/content/shell/test_runner/test_runner.h b/content/shell/test_runner/test_runner.h
index 9bfe33989..e7fe912 100644
--- a/content/shell/test_runner/test_runner.h
+++ b/content/shell/test_runner/test_runner.h
@@ -7,12 +7,12 @@
 
 #include <stdint.h>
 
-#include <deque>
 #include <memory>
 #include <set>
 #include <string>
 #include <vector>
 
+#include "base/containers/circular_deque.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "content/shell/test_runner/layout_test_runtime_flags.h"
@@ -210,7 +210,7 @@
    private:
     void ProcessWork();
 
-    std::deque<WorkItem*> queue_;
+    base::circular_deque<WorkItem*> queue_;
     bool frozen_;
     TestRunner* controller_;