Simplify the usage of ack_frequency and ack_delay in quic_received_packet_manager. flag protected by gfe2_reloadable_flag_quic_simplify_received_packet_manager_ack.

A few other no-op changes:
1) Renamed ack_frequency_before_decimation to ack_frequency_.
2) Removed a few unused getters in uber_received_packet_manager and quic_connection.

PiperOrigin-RevId: 323473745
Change-Id: I51f119d048271543b5a7ae000d3d4bcffc3679ab
diff --git a/quic/core/quic_received_packet_manager.cc b/quic/core/quic_received_packet_manager.cc
index 324767c..9cc6c29 100644
--- a/quic/core/quic_received_packet_manager.cc
+++ b/quic/core/quic_received_packet_manager.cc
@@ -44,8 +44,7 @@
       ack_mode_(ACK_DECIMATION),
       num_retransmittable_packets_received_since_last_ack_sent_(0),
       min_received_before_ack_decimation_(kMinReceivedBeforeAckDecimation),
-      ack_frequency_before_ack_decimation_(
-          kDefaultRetransmittablePacketsBeforeAck),
+      ack_frequency_(kDefaultRetransmittablePacketsBeforeAck),
       ack_decimation_delay_(kAckDecimationDelay),
       unlimited_ack_decimation_(false),
       fast_ack_after_quiescence_(false),
@@ -216,6 +215,38 @@
          ack_frame_.packets.Min() >= peer_least_packet_awaiting_ack_);
 }
 
+QuicTime::Delta QuicReceivedPacketManager::GetMaxAckDelay(
+    QuicPacketNumber last_received_packet_number,
+    const RttStats& rtt_stats) const {
+  DCHECK(simplify_received_packet_manager_ack_);
+  if (last_received_packet_number <
+      PeerFirstSendingPacketNumber() + min_received_before_ack_decimation_) {
+    return local_max_ack_delay_;
+  }
+
+  // Wait for the minimum of the ack decimation delay or the delayed ack time
+  // before sending an ack.
+  QuicTime::Delta ack_delay = std::min(
+      local_max_ack_delay_, rtt_stats.min_rtt() * ack_decimation_delay_);
+  if (GetQuicReloadableFlag(quic_ack_delay_alarm_granularity)) {
+    QUIC_RELOADABLE_FLAG_COUNT(quic_ack_delay_alarm_granularity);
+    ack_delay = std::max(ack_delay, kAlarmGranularity);
+  }
+  return ack_delay;
+}
+
+void QuicReceivedPacketManager::MaybeUpdateAckFrequency(
+    QuicPacketNumber last_received_packet_number) {
+  DCHECK(simplify_received_packet_manager_ack_);
+  if (last_received_packet_number <
+      PeerFirstSendingPacketNumber() + min_received_before_ack_decimation_) {
+    return;
+  }
+  ack_frequency_ = unlimited_ack_decimation_
+                       ? std::numeric_limits<size_t>::max()
+                       : kMaxRetransmittablePacketsBeforeAck;
+}
+
 void QuicReceivedPacketManager::MaybeUpdateAckTimeout(
     bool should_last_packet_instigate_acks,
     QuicPacketNumber last_received_packet_number,
@@ -240,6 +271,26 @@
   }
 
   ++num_retransmittable_packets_received_since_last_ack_sent_;
+
+  if (simplify_received_packet_manager_ack_) {
+    QUIC_RELOADABLE_FLAG_COUNT(quic_simplify_received_packet_manager_ack);
+    MaybeUpdateAckFrequency(last_received_packet_number);
+    if (num_retransmittable_packets_received_since_last_ack_sent_ >=
+        ack_frequency_) {
+      ack_timeout_ = now;
+      return;
+    }
+
+    if (HasNewMissingPackets()) {
+      ack_timeout_ = now;
+      return;
+    }
+
+    MaybeUpdateAckTimeoutTo(
+        now + GetMaxAckDelay(last_received_packet_number, *rtt_stats));
+    return;
+  }
+
   if (ack_mode_ != TCP_ACKING &&
       last_received_packet_number >= PeerFirstSendingPacketNumber() +
                                          min_received_before_ack_decimation_) {
@@ -269,7 +320,7 @@
   } else {
     // Ack with a timer or every 2 packets by default.
     if (num_retransmittable_packets_received_since_last_ack_sent_ >=
-        ack_frequency_before_ack_decimation_) {
+        ack_frequency_) {
       ack_timeout_ = now;
     } else if (fast_ack_after_quiescence_ &&
                (now - time_of_previous_received_packet_) >