Default enable PTO with configuration:
1) Send 1 packet per PTO with skipped packet number.
2) Arm the 1st PTO based on the earliest in flight sent time while making sure at least 1.5 * srtt has passed since the last in flight packet.
3) PTO delay = srtt + 2 * rttvar + ack_delay.

Please note, this should only affect gQUIC while IETF QUIC has been using PTO with this configuration.

Also cleanup experiment connection options: 2PTO, 1PTO, PTOS, PTOA, PEB1, PEB2, PVS1, PAG1, PAG2, PLE1, PLE2, APTO, PSDA.

Protected by FLAGS_quic_restart_flag_quic_default_on_pto2.

PiperOrigin-RevId: 431699930
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc
index f55138b..1162de1 100644
--- a/quic/core/quic_connection_test.cc
+++ b/quic/core/quic_connection_test.cc
@@ -493,10 +493,9 @@
 
   bool PtoEnabled() {
     if (QuicConnectionPeer::GetSentPacketManager(this)->pto_enabled()) {
-      // PTO mode is default enabled for T099. And TLP/RTO related tests are
-      // stale.
+      // TLP/RTO related tests are stale when PTO is enabled.
       QUICHE_DCHECK(PROTOCOL_TLS1_3 == version().handshake_protocol ||
-                    GetQuicReloadableFlag(quic_default_on_pto));
+                    GetQuicRestartFlag(quic_default_on_pto2));
       return true;
     }
     return false;
@@ -4025,8 +4024,7 @@
 
   // Fire the RTO and verify that the RST_STREAM is resent, the stream data
   // is sent.
-  const size_t num_retransmissions =
-      connection_.SupportsMultiplePacketNumberSpaces() ? 1 : 2;
+  const size_t num_retransmissions = connection_.PtoEnabled() ? 1 : 2;
   EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _))
       .Times(AtLeast(num_retransmissions));
   clock_.AdvanceTime(DefaultRetransmissionTime());
@@ -4255,10 +4253,7 @@
   writer_->SetWritable();
   connection_.OnCanWrite();
   EXPECT_TRUE(connection_.GetRetransmissionAlarm()->IsSet());
-  uint64_t retransmission = connection_.SupportsMultiplePacketNumberSpaces() &&
-                                    !GetQuicReloadableFlag(quic_default_on_pto)
-                                ? 3
-                                : 2;
+  uint64_t retransmission = connection_.PtoEnabled() ? 3 : 2;
   EXPECT_FALSE(QuicConnectionPeer::HasRetransmittableFrames(&connection_,
                                                             retransmission));
 }
@@ -9918,12 +9913,7 @@
   EXPECT_EQ(0u, connection_.GetStats().crypto_retransmit_count);
 
   // PTO fires, verify a PING packet gets sent because there is no data to send.
-  EXPECT_CALL(*send_algorithm_,
-              OnPacketSent(_, _,
-                           GetQuicReloadableFlag(quic_default_on_pto)
-                               ? QuicPacketNumber(2)
-                               : QuicPacketNumber(3),
-                           _, _));
+  EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, QuicPacketNumber(3), _, _));
   connection_.GetRetransmissionAlarm()->Fire();
   EXPECT_EQ(1u, connection_.GetStats().pto_count);
   EXPECT_EQ(1u, connection_.GetStats().crypto_retransmit_count);
@@ -10397,12 +10387,7 @@
 
   // Retransmit handshake data.
   clock_.AdvanceTime(retransmission_time - clock_.Now());
-  EXPECT_CALL(*send_algorithm_,
-              OnPacketSent(_, _,
-                           GetQuicReloadableFlag(quic_default_on_pto)
-                               ? QuicPacketNumber(3)
-                               : QuicPacketNumber(4),
-                           _, _));
+  EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, QuicPacketNumber(4), _, _));
   connection_.GetRetransmissionAlarm()->Fire();
   // Verify 1-RTT packet gets coalesced with handshake retransmission.
   EXPECT_EQ(0x01010101u, writer_->final_bytes_of_last_packet());
@@ -10416,14 +10401,8 @@
 
   // Retransmit handshake data again.
   clock_.AdvanceTime(retransmission_time - clock_.Now());
-  QuicPacketNumber handshake_retransmission =
-      GetQuicReloadableFlag(quic_default_on_pto) ? QuicPacketNumber(5)
-                                                 : QuicPacketNumber(7);
-  handshake_retransmission += 1;
-  EXPECT_CALL(*send_algorithm_,
-              OnPacketSent(_, _, handshake_retransmission + 1, _, _));
-  EXPECT_CALL(*send_algorithm_,
-              OnPacketSent(_, _, handshake_retransmission, _, _));
+  EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, QuicPacketNumber(9), _, _));
+  EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, QuicPacketNumber(8), _, _));
   connection_.GetRetransmissionAlarm()->Fire();
   // Verify 1-RTT packet gets coalesced with handshake retransmission.
   EXPECT_EQ(0x01010101u, writer_->final_bytes_of_last_packet());
@@ -10435,12 +10414,7 @@
 
   // Retransmit application data.
   clock_.AdvanceTime(retransmission_time - clock_.Now());
-  QuicPacketNumber application_retransmission =
-      GetQuicReloadableFlag(quic_default_on_pto) ? QuicPacketNumber(6)
-                                                 : QuicPacketNumber(9);
-  application_retransmission += 2;
-  EXPECT_CALL(*send_algorithm_,
-              OnPacketSent(_, _, application_retransmission, _, _));
+  EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, QuicPacketNumber(11), _, _));
   connection_.GetRetransmissionAlarm()->Fire();
   EXPECT_EQ(0x01010101u, writer_->final_bytes_of_last_packet());
 }
@@ -11436,11 +11410,7 @@
   clock_.AdvanceTime(kTestRTT);
   // Assume retransmitted INITIAL gets received.
   QuicFrames frames;
-  QuicPacketNumber initial_retransmission =
-      GetQuicReloadableFlag(quic_default_on_pto) ? QuicPacketNumber(3)
-                                                 : QuicPacketNumber(4);
-  auto ack_frame =
-      InitAckFrame({{initial_retransmission, initial_retransmission + 1}});
+  auto ack_frame = InitAckFrame({{QuicPacketNumber(4), QuicPacketNumber(5)}});
   frames.push_back(QuicFrame(&ack_frame));
   EXPECT_CALL(*send_algorithm_, OnCongestionEvent(_, _, _, _, _))
       .Times(AnyNumber());
@@ -11451,7 +11421,7 @@
   // HANDSHAKE 5 is also processed.
   QuicAckFrame ack_frame2 =
       InitAckFrame({{QuicPacketNumber(2), QuicPacketNumber(3)},
-                    {initial_retransmission + 1, initial_retransmission + 2}});
+                    {QuicPacketNumber(5), QuicPacketNumber(6)}});
   ack_frame2.ack_delay_time = QuicTime::Delta::Zero();
   frames.push_back(QuicFrame(&ack_frame2));
   ProcessFramesPacketAtLevel(1, frames, ENCRYPTION_HANDSHAKE);
diff --git a/quic/core/quic_flags_list.h b/quic/core/quic_flags_list.h
index 3399f1b..a3605fe 100644
--- a/quic/core/quic_flags_list.h
+++ b/quic/core/quic_flags_list.h
@@ -42,7 +42,7 @@
 // If true, close read side but not write side in QuicSpdyStream::OnStreamReset().
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_fix_on_stream_reset, true)
 // If true, default on PTO which unifies TLP + RTO loss recovery.
-QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_default_on_pto, false)
+QUIC_FLAG(FLAGS_quic_restart_flag_quic_default_on_pto2, true)
 // If true, default-enable 5RTO blachole detection.
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_default_enable_5rto_blackhole_detection2, true)
 // If true, delay block allocation in QuicStreamSequencerBuffer until there is actually new data available.
diff --git a/quic/core/quic_sent_packet_manager.cc b/quic/core/quic_sent_packet_manager.cc
index ff40ba4..588c3ef 100644
--- a/quic/core/quic_sent_packet_manager.cc
+++ b/quic/core/quic_sent_packet_manager.cc
@@ -68,11 +68,8 @@
                                                             : "Client: ")
 
 QuicSentPacketManager::QuicSentPacketManager(
-    Perspective perspective,
-    const QuicClock* clock,
-    QuicRandom* random,
-    QuicConnectionStats* stats,
-    CongestionControlType congestion_control_type)
+    Perspective perspective, const QuicClock* clock, QuicRandom* random,
+    QuicConnectionStats* stats, CongestionControlType congestion_control_type)
     : unacked_packets_(perspective),
       clock_(clock),
       random_(random),
@@ -100,7 +97,7 @@
           QuicTime::Delta::FromMilliseconds(kDefaultDelayedAckTimeMs)),
       rtt_updated_(false),
       acked_packets_iter_(last_ack_frame_.packets.rbegin()),
-      pto_enabled_(GetQuicReloadableFlag(quic_default_on_pto)),
+      pto_enabled_(GetQuicRestartFlag(quic_default_on_pto2)),
       max_probe_packets_per_pto_(2),
       consecutive_pto_count_(0),
       handshake_mode_disabled_(false),
@@ -120,9 +117,14 @@
       ignore_ack_delay_(false) {
   SetSendAlgorithm(congestion_control_type);
   if (pto_enabled_) {
-    QUIC_RELOADABLE_FLAG_COUNT_N(quic_default_on_pto, 1, 2);
+    QUIC_RESTART_FLAG_COUNT_N(quic_default_on_pto2, 1, 2);
     // TODO(fayang): change the default values when deprecating
-    // quic_default_on_pto.
+    // quic_default_on_pto2.
+    // Default to 1 packet per PTO and skip a packet number. Arm the 1st PTO
+    // with max of earliest in flight sent time + PTO delay and 1.5 * srtt from
+    // last in flight packet.
+    max_probe_packets_per_pto_ = 1;
+    skip_packet_number_for_pto_ = true;
     first_pto_srtt_multiplier_ = 1.5;
     pto_rttvar_multiplier_ = 2;
   }
@@ -169,57 +171,61 @@
     min_rto_timeout_ = kAlarmGranularity;
   }
 
-  if (config.HasClientSentConnectionOption(k2PTO, perspective)) {
-    pto_enabled_ = true;
-  }
-  if (config.HasClientSentConnectionOption(k1PTO, perspective)) {
-    pto_enabled_ = true;
-    max_probe_packets_per_pto_ = 1;
-  }
-
-  if (config.HasClientSentConnectionOption(kPTOS, perspective)) {
-    if (!pto_enabled_) {
-      QUIC_PEER_BUG(quic_peer_bug_12552_1)
-          << "PTO is not enabled when receiving PTOS connection option.";
+  if (!GetQuicRestartFlag(quic_default_on_pto2)) {
+    if (config.HasClientSentConnectionOption(k2PTO, perspective)) {
+      pto_enabled_ = true;
+    }
+    if (config.HasClientSentConnectionOption(k1PTO, perspective)) {
       pto_enabled_ = true;
       max_probe_packets_per_pto_ = 1;
     }
-    skip_packet_number_for_pto_ = true;
+
+    if (config.HasClientSentConnectionOption(kPTOS, perspective)) {
+      if (!pto_enabled_) {
+        QUIC_PEER_BUG(quic_peer_bug_12552_1)
+            << "PTO is not enabled when receiving PTOS connection option.";
+        pto_enabled_ = true;
+        max_probe_packets_per_pto_ = 1;
+      }
+      skip_packet_number_for_pto_ = true;
+    }
+    if (pto_enabled_) {
+      if (config.HasClientSentConnectionOption(kPTOA, perspective)) {
+        always_include_max_ack_delay_for_pto_timeout_ = false;
+      }
+      if (config.HasClientSentConnectionOption(kPEB1, perspective)) {
+        StartExponentialBackoffAfterNthPto(1);
+      }
+      if (config.HasClientSentConnectionOption(kPEB2, perspective)) {
+        StartExponentialBackoffAfterNthPto(2);
+      }
+      if (config.HasClientSentConnectionOption(kPVS1, perspective)) {
+        pto_rttvar_multiplier_ = 2;
+      }
+      if (config.HasClientSentConnectionOption(kPAG1, perspective)) {
+        QUIC_CODE_COUNT(one_aggressive_pto);
+        num_tlp_timeout_ptos_ = 1;
+      }
+      if (config.HasClientSentConnectionOption(kPAG2, perspective)) {
+        QUIC_CODE_COUNT(two_aggressive_ptos);
+        num_tlp_timeout_ptos_ = 2;
+      }
+      if (config.HasClientSentConnectionOption(kPLE1, perspective)) {
+        first_pto_srtt_multiplier_ = 0.5;
+      } else if (config.HasClientSentConnectionOption(kPLE2, perspective)) {
+        first_pto_srtt_multiplier_ = 1.5;
+      }
+      if (config.HasClientSentConnectionOption(kAPTO, perspective)) {
+        pto_multiplier_without_rtt_samples_ = 1.5;
+      }
+      if (config.HasClientSentConnectionOption(kPSDA, perspective)) {
+        use_standard_deviation_for_pto_ = true;
+        rtt_stats_.EnableStandardDeviationCalculation();
+      }
+    }
   }
 
   if (pto_enabled_) {
-    if (config.HasClientSentConnectionOption(kPTOA, perspective)) {
-      always_include_max_ack_delay_for_pto_timeout_ = false;
-    }
-    if (config.HasClientSentConnectionOption(kPEB1, perspective)) {
-      StartExponentialBackoffAfterNthPto(1);
-    }
-    if (config.HasClientSentConnectionOption(kPEB2, perspective)) {
-      StartExponentialBackoffAfterNthPto(2);
-    }
-    if (config.HasClientSentConnectionOption(kPVS1, perspective)) {
-      pto_rttvar_multiplier_ = 2;
-    }
-    if (config.HasClientSentConnectionOption(kPAG1, perspective)) {
-      QUIC_CODE_COUNT(one_aggressive_pto);
-      num_tlp_timeout_ptos_ = 1;
-    }
-    if (config.HasClientSentConnectionOption(kPAG2, perspective)) {
-      QUIC_CODE_COUNT(two_aggressive_ptos);
-      num_tlp_timeout_ptos_ = 2;
-    }
-    if (config.HasClientSentConnectionOption(kPLE1, perspective)) {
-      first_pto_srtt_multiplier_ = 0.5;
-    } else if (config.HasClientSentConnectionOption(kPLE2, perspective)) {
-      first_pto_srtt_multiplier_ = 1.5;
-    }
-    if (config.HasClientSentConnectionOption(kAPTO, perspective)) {
-      pto_multiplier_without_rtt_samples_ = 1.5;
-    }
-    if (config.HasClientSentConnectionOption(kPSDA, perspective)) {
-      use_standard_deviation_for_pto_ = true;
-      rtt_stats_.EnableStandardDeviationCalculation();
-    }
     if (config.HasClientRequestedIndependentOption(kPDP1, perspective)) {
       num_ptos_for_path_degrading_ = 1;
     }
@@ -1085,15 +1091,20 @@
 
 void QuicSentPacketManager::EnableIetfPtoAndLossDetection() {
   if (pto_enabled_) {
-    QUIC_RELOADABLE_FLAG_COUNT_N(quic_default_on_pto, 2, 2);
+    QUIC_RESTART_FLAG_COUNT_N(quic_default_on_pto2, 2, 2);
     // Disable handshake mode.
     handshake_mode_disabled_ = true;
     return;
   }
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
+    QUIC_BUG(pto_not_enabled)
+        << "PTO is not enabled while quic_default_on_pto2 is true";
+    return;
+  }
   pto_enabled_ = true;
   handshake_mode_disabled_ = true;
-  // Default to 1 packet per PTO and skip a packet number. Arm the 1st PTO with
-  // max of earliest in flight sent time + PTO delay and 1.5 * srtt from
+  // Default to 1 packet per PTO and skip a packet number. Arm the 1st PTO
+  // with max of earliest in flight sent time + PTO delay and 1.5 * srtt from
   // last in flight packet.
   max_probe_packets_per_pto_ = 1;
   skip_packet_number_for_pto_ = true;
diff --git a/quic/core/quic_sent_packet_manager_test.cc b/quic/core/quic_sent_packet_manager_test.cc
index e561731..d038f4f 100644
--- a/quic/core/quic_sent_packet_manager_test.cc
+++ b/quic/core/quic_sent_packet_manager_test.cc
@@ -328,7 +328,7 @@
   }
 
   int GetPtoRttvarMultiplier() {
-    if (GetQuicReloadableFlag(quic_default_on_pto) ||
+    if (GetQuicRestartFlag(quic_default_on_pto2) ||
         manager_.handshake_mode_disabled()) {
       return 2;
     }
@@ -832,7 +832,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, TailLossProbeTimeout) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2);
@@ -897,7 +897,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, TailLossProbeThenRTO) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2);
@@ -1138,7 +1138,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, RetransmissionTimeout) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   StrictMock<MockDebugDelegate> debug_delegate;
@@ -1190,7 +1190,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, RetransmissionTimeoutOnePacket) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   // Set the 1RTO connection option.
@@ -1228,7 +1228,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, NewRetransmissionTimeout) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   QuicConfig client_config;
@@ -1285,7 +1285,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, TwoRetransmissionTimeoutsAckSecond) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   // Send 1 packet.
@@ -1321,7 +1321,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, TwoRetransmissionTimeoutsAckFirst) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   // Send 1 packet.
@@ -1449,7 +1449,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeTailLossProbe) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2);
@@ -1486,7 +1486,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeSpuriousRTO) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   RttStats* rtt_stats = const_cast<RttStats*>(manager_.GetRttStats());
@@ -1546,7 +1546,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, GetTransmissionDelayMin) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   SendDataPacket(1);
@@ -1571,7 +1571,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, GetTransmissionDelayMax) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   SendDataPacket(1);
@@ -1585,7 +1585,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, GetTransmissionDelayExponentialBackoff) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   SendDataPacket(1);
@@ -1605,7 +1605,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, RetransmissionDelay) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   RttStats* rtt_stats = const_cast<RttStats*>(manager_.GetRttStats());
@@ -1869,7 +1869,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, NegotiateNoMinTLPFromOptionsAtServer) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   QuicConfig config;
@@ -1900,7 +1900,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, NegotiateNoMinTLPFromOptionsAtClient) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   QuicConfig client_config;
@@ -1931,7 +1931,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, NegotiateNoMinRTOFromOptionsAtServer) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   QuicConfig config;
@@ -1956,7 +1956,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, NegotiateNoMinRTOFromOptionsAtClient) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   QuicConfig client_config;
@@ -1982,7 +1982,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, NegotiateNoTLPFromOptionsAtServer) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   QuicConfig config;
@@ -1997,7 +1997,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, NegotiateNoTLPFromOptionsAtClient) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   QuicConfig client_config;
@@ -2013,7 +2013,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, Negotiate1TLPFromOptionsAtServer) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   QuicConfig config;
@@ -2028,7 +2028,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, Negotiate1TLPFromOptionsAtClient) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   QuicConfig client_config;
@@ -2044,7 +2044,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, NegotiateNewRTOFromOptionsAtServer) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   EXPECT_FALSE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_));
@@ -2060,7 +2060,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, NegotiateNewRTOFromOptionsAtClient) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   EXPECT_FALSE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_));
@@ -2623,7 +2623,7 @@
 
 // Regression test for b/133771183.
 TEST_F(QuicSentPacketManagerTest, PacketInLimbo) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2);
@@ -2679,7 +2679,7 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, RtoFiresNoPacketToRetransmit) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   // Send 10 packets.
@@ -2731,7 +2731,7 @@
   SendDataPacket(2, ENCRYPTION_FORWARD_SECURE);
   // Verify PTO is correctly set based on sent time of packet 2.
   QuicTime deadline = clock_.Now() + expected_pto_delay;
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     // Verify PTO is set based on left edge.
     deadline = packet1_sent_time + expected_pto_delay;
   }
@@ -2745,15 +2745,22 @@
   EXPECT_EQ(1u, stats_.pto_count);
   EXPECT_EQ(0u, stats_.max_consecutive_rto_with_forward_progress);
 
-  // Verify two probe packets get sent.
-  EXPECT_CALL(notifier_, RetransmitFrames(_, _))
-      .Times(2)
-      .WillOnce(WithArgs<1>(Invoke([this](TransmissionType type) {
-        return RetransmitDataPacket(3, type, ENCRYPTION_FORWARD_SECURE);
-      })))
-      .WillOnce(WithArgs<1>(Invoke([this](TransmissionType type) {
-        return RetransmitDataPacket(4, type, ENCRYPTION_FORWARD_SECURE);
-      })));
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
+    EXPECT_CALL(notifier_, RetransmitFrames(_, _))
+        .WillOnce(WithArgs<1>(Invoke([this](TransmissionType type) {
+          return RetransmitDataPacket(3, type, ENCRYPTION_FORWARD_SECURE);
+        })));
+  } else {
+    // Verify two probe packets get sent.
+    EXPECT_CALL(notifier_, RetransmitFrames(_, _))
+        .Times(2)
+        .WillOnce(WithArgs<1>(Invoke([this](TransmissionType type) {
+          return RetransmitDataPacket(3, type, ENCRYPTION_FORWARD_SECURE);
+        })))
+        .WillOnce(WithArgs<1>(Invoke([this](TransmissionType type) {
+          return RetransmitDataPacket(4, type, ENCRYPTION_FORWARD_SECURE);
+        })));
+  }
   manager_.MaybeSendProbePackets();
   // Verify PTO period gets set to twice the current value.
   QuicTime sent_time = clock_.Now();
@@ -2801,7 +2808,7 @@
       srtt + GetPtoRttvarMultiplier() * rtt_stats->mean_deviation() +
       QuicTime::Delta::FromMilliseconds(kDefaultDelayedAckTimeMs);
   QuicTime deadline = clock_.Now() + expected_pto_delay;
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     // Verify PTO is set based on left edge.
     deadline = packet1_sent_time + expected_pto_delay;
   }
@@ -2876,6 +2883,9 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, PtoTimeoutIncludesMaxAckDelay) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
+    return;
+  }
   EnablePto(k1PTO);
   // Use PTOS and PTOA.
   QuicConfig config;
@@ -2914,7 +2924,7 @@
   expected_pto_delay = expected_pto_delay - QuicTime::Delta::FromMilliseconds(
                                                 kDefaultDelayedAckTimeMs);
   QuicTime deadline = clock_.Now() + expected_pto_delay;
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     deadline = packet1_sent_time + expected_pto_delay;
   }
   EXPECT_EQ(deadline, manager_.GetRetransmissionTime());
@@ -3002,6 +3012,9 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, StartExponentialBackoffSince2ndPto) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
+    return;
+  }
   EnablePto(k2PTO);
   QuicConfig config;
   QuicTagVector options;
@@ -3033,7 +3046,7 @@
   SendDataPacket(2, ENCRYPTION_FORWARD_SECURE);
   // Verify PTO is correctly set based on sent time of packet 2.
   QuicTime deadline = clock_.Now() + expected_pto_delay;
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     // Verify PTO is set based on left edge.
     deadline = packet1_sent_time + expected_pto_delay;
   }
@@ -3152,7 +3165,7 @@
 
 // Regression test for b/143962153
 TEST_F(QuicSentPacketManagerTest, RtoNotInFlightPacket) {
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     return;
   }
   QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2);
@@ -3193,6 +3206,9 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, Aggressive1Pto) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
+    return;
+  }
   EnablePto(k1PTO);
   // Let the first PTO be aggressive.
   QuicConfig config;
@@ -3241,6 +3257,9 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, Aggressive2Ptos) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
+    return;
+  }
   EnablePto(k1PTO);
   // Let the first PTO be aggressive.
   QuicConfig config;
@@ -3630,6 +3649,9 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, ComputingProbeTimeoutUsingStandardDeviation) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
+    return;
+  }
   EnablePto(k1PTO);
   // Use PTOS and PSDA.
   QuicConfig config;
@@ -4034,7 +4056,7 @@
       .WillOnce(
           WithArgs<1>(Invoke([this]() { return RetransmitCryptoPacket(3); })));
   manager_.MaybeSendProbePackets();
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     manager_.AdjustPendingTimerTransmissions();
   }
   // Verify exponential backoff of the PTO timeout.
@@ -4064,7 +4086,7 @@
       .WillOnce(
           WithArgs<1>(Invoke([this]() { return RetransmitCryptoPacket(3); })));
   manager_.MaybeSendProbePackets();
-  if (GetQuicReloadableFlag(quic_default_on_pto)) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
     manager_.AdjustPendingTimerTransmissions();
   }
   // Verify exponential backoff of the PTO timeout.
@@ -4238,6 +4260,9 @@
 
 TEST_F(QuicSentPacketManagerTest,
        AggressivePtoBeforeAnyRttSamplesAreAvailable) {
+  if (GetQuicRestartFlag(quic_default_on_pto2)) {
+    return;
+  }
   manager_.EnableMultiplePacketNumberSpacesSupport();
   EXPECT_CALL(*send_algorithm_, PacingRate(_))
       .WillRepeatedly(Return(QuicBandwidth::Zero()));