Only record timestamps for 1-RTT packets.

PiperOrigin-RevId: 994023664
diff --git a/quiche/quic/core/uber_received_packet_manager.cc b/quiche/quic/core/uber_received_packet_manager.cc
index b109a6f..13c6b6c 100644
--- a/quiche/quic/core/uber_received_packet_manager.cc
+++ b/quiche/quic/core/uber_received_packet_manager.cc
@@ -237,9 +237,8 @@
         << "Trying to enable QUIC receive timestamps for non-IETF QUIC";
     return;
   }
-  for (auto& received_packet_manager : received_packet_managers_) {
-    received_packet_manager.set_save_timestamps(save_timestamps);
-  }
+  received_packet_managers_[APPLICATION_DATA].set_save_timestamps(
+      save_timestamps);
 }
 
 void UberReceivedPacketManager::OnAckFrequencyFrame(
diff --git a/quiche/quic/core/uber_received_packet_manager.h b/quiche/quic/core/uber_received_packet_manager.h
index 4d60ce0..4ccda48 100644
--- a/quiche/quic/core/uber_received_packet_manager.h
+++ b/quiche/quic/core/uber_received_packet_manager.h
@@ -7,6 +7,7 @@
 
 #include "quiche/quic/core/frames/quic_ack_frequency_frame.h"
 #include "quiche/quic/core/quic_received_packet_manager.h"
+#include "quiche/quic/core/quic_types.h"
 
 namespace quic {
 
diff --git a/quiche/quic/core/uber_received_packet_manager_test.cc b/quiche/quic/core/uber_received_packet_manager_test.cc
index 831612b..cfa8677 100644
--- a/quiche/quic/core/uber_received_packet_manager_test.cc
+++ b/quiche/quic/core/uber_received_packet_manager_test.cc
@@ -11,6 +11,7 @@
 #include "quiche/quic/core/crypto/crypto_protocol.h"
 #include "quiche/quic/core/quic_connection_stats.h"
 #include "quiche/quic/core/quic_packet_number.h"
+#include "quiche/quic/core/quic_time.h"
 #include "quiche/quic/core/quic_types.h"
 #include "quiche/quic/platform/api/quic_expect_bug.h"
 #include "quiche/quic/platform/api/quic_test.h"
@@ -31,6 +32,10 @@
 
 namespace {
 
+using ::testing::ElementsAre;
+using ::testing::IsEmpty;
+using ::testing::Pair;
+
 const bool kInstigateAck = true;
 const QuicTime::Delta kMinRttMs = QuicTime::Delta::FromMilliseconds(40);
 const QuicTime::Delta kDelayedAckTime =
@@ -595,6 +600,35 @@
   CheckAckTimeout(clock_.ApproximateNow() + kDelayedAckTime);
 }
 
+TEST_F(UberReceivedPacketManagerTest,
+       SaveTimestampsOnlyForApplicationDataPacketNumberSpace) {
+  manager_->EnableMultiplePacketNumberSpacesSupport(Perspective::IS_SERVER);
+  manager_->set_save_timestamps(true);
+
+  const QuicTime initial_time =
+      QuicTime::Zero() + QuicTime::Delta::FromMilliseconds(1);
+  const QuicTime handshake_time =
+      QuicTime::Zero() + QuicTime::Delta::FromMilliseconds(2);
+  const QuicTime zero_rtt_time =
+      QuicTime::Zero() + QuicTime::Delta::FromMilliseconds(3);
+  const QuicTime one_rtt_time =
+      QuicTime::Zero() + QuicTime::Delta::FromMilliseconds(4);
+  RecordPacketReceipt(ENCRYPTION_INITIAL, 1, initial_time);
+  RecordPacketReceipt(ENCRYPTION_HANDSHAKE, 1, handshake_time);
+  // 0-RTT packets are still recorded, since the ACKs for 0-RTT packets are sent
+  // in 1-RTT.
+  RecordPacketReceipt(ENCRYPTION_ZERO_RTT, 1, zero_rtt_time);
+  RecordPacketReceipt(ENCRYPTION_FORWARD_SECURE, 2, one_rtt_time);
+
+  EXPECT_THAT(manager_->GetAckFrame(INITIAL_DATA).received_packet_times,
+              IsEmpty());
+  EXPECT_THAT(manager_->GetAckFrame(HANDSHAKE_DATA).received_packet_times,
+              IsEmpty());
+  EXPECT_THAT(manager_->GetAckFrame(APPLICATION_DATA).received_packet_times,
+              ElementsAre(Pair(QuicPacketNumber(1), zero_rtt_time),
+                          Pair(QuicPacketNumber(2), one_rtt_time)));
+}
+
 }  // namespace
 }  // namespace test
 }  // namespace quic