Cap client suggested initial RTT to 1s instead of 15s.

Protected by FLAGS_quic_reloadable_flag_quic_cap_large_client_initial_rtt.

PiperOrigin-RevId: 332034739
Change-Id: I5453ca54000591a6a0081431c87976a546fbcb0d
diff --git a/quic/core/http/end_to_end_test.cc b/quic/core/http/end_to_end_test.cc
index 637edcf..a36017c 100644
--- a/quic/core/http/end_to_end_test.cc
+++ b/quic/core/http/end_to_end_test.cc
@@ -2166,10 +2166,17 @@
         client_sent_packet_manager->GetRttStats()->smoothed_rtt().IsInfinite());
     const RttStats* server_rtt_stats =
         server_sent_packet_manager->GetRttStats();
-    EXPECT_EQ(static_cast<int64_t>(kMaxInitialRoundTripTimeUs),
-              server_rtt_stats->initial_rtt().ToMicroseconds());
-    EXPECT_GE(static_cast<int64_t>(kMaxInitialRoundTripTimeUs),
-              server_rtt_stats->smoothed_rtt().ToMicroseconds());
+    if (GetQuicReloadableFlag(quic_cap_large_client_initial_rtt)) {
+      EXPECT_EQ(static_cast<int64_t>(1 * kNumMicrosPerSecond),
+                server_rtt_stats->initial_rtt().ToMicroseconds());
+      EXPECT_GE(static_cast<int64_t>(1 * kNumMicrosPerSecond),
+                server_rtt_stats->smoothed_rtt().ToMicroseconds());
+    } else {
+      EXPECT_EQ(static_cast<int64_t>(kMaxInitialRoundTripTimeUs),
+                server_rtt_stats->initial_rtt().ToMicroseconds());
+      EXPECT_GE(static_cast<int64_t>(kMaxInitialRoundTripTimeUs),
+                server_rtt_stats->smoothed_rtt().ToMicroseconds());
+    }
   } else {
     ADD_FAILURE() << "Missing sent packet manager";
   }
diff --git a/quic/core/quic_sent_packet_manager.cc b/quic/core/quic_sent_packet_manager.cc
index 930b4ed..74a91ea 100644
--- a/quic/core/quic_sent_packet_manager.cc
+++ b/quic/core/quic_sent_packet_manager.cc
@@ -1494,8 +1494,13 @@
 void QuicSentPacketManager::SetInitialRtt(QuicTime::Delta rtt) {
   const QuicTime::Delta min_rtt =
       QuicTime::Delta::FromMicroseconds(kMinInitialRoundTripTimeUs);
-  const QuicTime::Delta max_rtt =
+  QuicTime::Delta max_rtt =
       QuicTime::Delta::FromMicroseconds(kMaxInitialRoundTripTimeUs);
+  if (GetQuicReloadableFlag(quic_cap_large_client_initial_rtt)) {
+    // TODO(fayang): change the value of kMaxInitialRoundTripTimeUs when
+    // deprecating quic_cap_large_client_initial_rtt.
+    max_rtt = QuicTime::Delta::FromSeconds(1);
+  }
   rtt_stats_.set_initial_rtt(std::max(min_rtt, std::min(max_rtt, rtt)));
 }
 
diff --git a/quic/core/quic_sent_packet_manager_test.cc b/quic/core/quic_sent_packet_manager_test.cc
index 29ea106..7448ee5 100644
--- a/quic/core/quic_sent_packet_manager_test.cc
+++ b/quic/core/quic_sent_packet_manager_test.cc
@@ -2195,7 +2195,7 @@
 TEST_F(QuicSentPacketManagerTest, ResumeConnectionState) {
   // The sent packet manager should use the RTT from CachedNetworkParameters if
   // it is provided.
-  const QuicTime::Delta kRtt = QuicTime::Delta::FromMilliseconds(1234);
+  const QuicTime::Delta kRtt = QuicTime::Delta::FromMilliseconds(123);
   CachedNetworkParameters cached_network_params;
   cached_network_params.set_min_rtt_ms(kRtt.ToMilliseconds());