gfe-relnote: In QUIC, add largest_packets_peer_knows_is_acked_ and largest_sent_packets_ which are necessary to sent_packet_manager and unacked_packet_map, respectively, for multiple packet number support. Not used yet. Not protected.

PiperOrigin-RevId: 239787104
Change-Id: I9955881f09eb4b70a740a913fcd4ad7bc8fe863d
diff --git a/quic/core/quic_unacked_packet_map_test.cc b/quic/core/quic_unacked_packet_map_test.cc
index cf725fa..331a0e8 100644
--- a/quic/core/quic_unacked_packet_map_test.cc
+++ b/quic/core/quic_unacked_packet_map_test.cc
@@ -674,6 +674,85 @@
   unacked_packets_.NotifyAggregatedStreamFrameAcked(QuicTime::Delta::Zero());
 }
 
+TEST_P(QuicUnackedPacketMapTest, LargestSentPacketMultiplePacketNumberSpaces) {
+  if (!GetQuicReloadableFlag(quic_use_uber_loss_algorithm)) {
+    return;
+  }
+  unacked_packets_.EnableMultiplePacketNumberSpacesSupport();
+  EXPECT_FALSE(unacked_packets_
+                   .GetLargestSentPacketOfPacketNumberSpace(ENCRYPTION_INITIAL)
+                   .IsInitialized());
+  // Send packet 1.
+  SerializedPacket packet1(CreateRetransmittablePacket(1));
+  packet1.encryption_level = ENCRYPTION_INITIAL;
+  unacked_packets_.AddSentPacket(&packet1, QuicPacketNumber(),
+                                 NOT_RETRANSMISSION, now_, true);
+  EXPECT_EQ(QuicPacketNumber(1u), unacked_packets_.largest_sent_packet());
+  EXPECT_EQ(QuicPacketNumber(1),
+            unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
+                ENCRYPTION_INITIAL));
+  EXPECT_FALSE(
+      unacked_packets_
+          .GetLargestSentPacketOfPacketNumberSpace(ENCRYPTION_HANDSHAKE)
+          .IsInitialized());
+  // Send packet 2.
+  SerializedPacket packet2(CreateRetransmittablePacket(2));
+  packet2.encryption_level = ENCRYPTION_HANDSHAKE;
+  unacked_packets_.AddSentPacket(&packet2, QuicPacketNumber(),
+                                 NOT_RETRANSMISSION, now_, true);
+  EXPECT_EQ(QuicPacketNumber(2u), unacked_packets_.largest_sent_packet());
+  EXPECT_EQ(QuicPacketNumber(1),
+            unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
+                ENCRYPTION_INITIAL));
+  EXPECT_EQ(QuicPacketNumber(2),
+            unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
+                ENCRYPTION_HANDSHAKE));
+  EXPECT_FALSE(unacked_packets_
+                   .GetLargestSentPacketOfPacketNumberSpace(ENCRYPTION_ZERO_RTT)
+                   .IsInitialized());
+  // Send packet 3.
+  SerializedPacket packet3(CreateRetransmittablePacket(3));
+  packet3.encryption_level = ENCRYPTION_ZERO_RTT;
+  unacked_packets_.AddSentPacket(&packet3, QuicPacketNumber(),
+                                 NOT_RETRANSMISSION, now_, true);
+  EXPECT_EQ(QuicPacketNumber(3u), unacked_packets_.largest_sent_packet());
+  EXPECT_EQ(QuicPacketNumber(1),
+            unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
+                ENCRYPTION_INITIAL));
+  EXPECT_EQ(QuicPacketNumber(2),
+            unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
+                ENCRYPTION_HANDSHAKE));
+  EXPECT_EQ(QuicPacketNumber(3),
+            unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
+                ENCRYPTION_ZERO_RTT));
+  // Verify forward secure belongs to the same packet number space as encryption
+  // zero rtt.
+  EXPECT_EQ(QuicPacketNumber(3),
+            unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
+                ENCRYPTION_FORWARD_SECURE));
+
+  // Send packet 4.
+  SerializedPacket packet4(CreateRetransmittablePacket(4));
+  packet4.encryption_level = ENCRYPTION_FORWARD_SECURE;
+  unacked_packets_.AddSentPacket(&packet4, QuicPacketNumber(),
+                                 NOT_RETRANSMISSION, now_, true);
+  EXPECT_EQ(QuicPacketNumber(4u), unacked_packets_.largest_sent_packet());
+  EXPECT_EQ(QuicPacketNumber(1),
+            unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
+                ENCRYPTION_INITIAL));
+  EXPECT_EQ(QuicPacketNumber(2),
+            unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
+                ENCRYPTION_HANDSHAKE));
+  EXPECT_EQ(QuicPacketNumber(4),
+            unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
+                ENCRYPTION_ZERO_RTT));
+  // Verify forward secure belongs to the same packet number space as encryption
+  // zero rtt.
+  EXPECT_EQ(QuicPacketNumber(4),
+            unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
+                ENCRYPTION_FORWARD_SECURE));
+}
+
 }  // namespace
 }  // namespace test
 }  // namespace quic