gfe-relnote: In QUIC, populate nonretransmittable_frames in SerializedPacket. Protected by gfe2_reloadable_flag_quic_populate_nonretransmittable_frames.

PiperOrigin-RevId: 275833395
Change-Id: I96d8663e89354a777cabb9e636eede9e61002d26
diff --git a/quic/core/quic_packet_creator.cc b/quic/core/quic_packet_creator.cc
index ee2dc02..f2e9789 100644
--- a/quic/core/quic_packet_creator.cc
+++ b/quic/core/quic_packet_creator.cc
@@ -94,11 +94,16 @@
       flusher_attached_(false),
       fully_pad_crypto_handshake_packets_(true),
       combine_generator_and_creator_(
-          GetQuicReloadableFlag(quic_combine_generator_and_creator)) {
+          GetQuicReloadableFlag(quic_combine_generator_and_creator)),
+      populate_nonretransmittable_frames_(
+          GetQuicReloadableFlag(quic_populate_nonretransmittable_frames)) {
   SetMaxPacketLength(kDefaultMaxPacketSize);
   if (combine_generator_and_creator_) {
     QUIC_RELOADABLE_FLAG_COUNT(quic_combine_generator_and_creator);
   }
+  if (populate_nonretransmittable_frames_) {
+    QUIC_RELOADABLE_FLAG_COUNT(quic_populate_nonretransmittable_frames);
+  }
 }
 
 QuicPacketCreator::~QuicPacketCreator() {
@@ -445,6 +450,7 @@
   packet_.encrypted_buffer = nullptr;
   packet_.encrypted_length = 0;
   DCHECK(packet_.retransmittable_frames.empty());
+  DCHECK(packet_.nonretransmittable_frames.empty());
   packet_.largest_acked.Clear();
   needs_full_padding_ = false;
 }
@@ -1399,6 +1405,10 @@
       packet_.has_crypto_handshake = IS_HANDSHAKE;
     }
   } else {
+    if (populate_nonretransmittable_frames_ &&
+        !QuicUtils::IsRetransmittableFrame(frame.type)) {
+      packet_.nonretransmittable_frames.push_back(frame);
+    }
     queued_frames_.push_back(frame);
   }