Change HeaderBlocksForStream from QuicDeque to std::list.

QuicDeque is std::deque in Google3 and base::circular_deque with initial
capacity of 3, neither of which easy on memory compared to std::list when they
only store a single element most of the time.

gfe-relnote: n/a, change to QUIC v99-only code.  Protected by existing disabled gfe2_reloadable_flag_quic_enable_version_99.
PiperOrigin-RevId: 260965695
Change-Id: I9e1ea94c5bd4ed84eb245b85406794a828cb3f39
diff --git a/quic/core/qpack/qpack_blocking_manager.h b/quic/core/qpack/qpack_blocking_manager.h
index 3834d92..00669af 100644
--- a/quic/core/qpack/qpack_blocking_manager.h
+++ b/quic/core/qpack/qpack_blocking_manager.h
@@ -56,7 +56,12 @@
   static uint64_t RequiredInsertCount(const IndexSet& indices);
 
  private:
-  using HeaderBlocksForStream = QuicDeque<IndexSet>;
+  // 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 QuicDeque because it has lower memory
+  // footprint when holding few elements.
+  using HeaderBlocksForStream = std::list<IndexSet>;
   using HeaderBlocks = QuicUnorderedMap<QuicStreamId, HeaderBlocksForStream>;
 
   // Increase or decrease the reference count for each index in |indices|.