Internal change

PiperOrigin-RevId: 406134264
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc
index 939208b..fdecddc 100644
--- a/quic/core/quic_connection.cc
+++ b/quic/core/quic_connection.cc
@@ -1142,6 +1142,10 @@
   return ack_alarm_->IsSet();
 }
 
+void QuicConnection::OnUserAgentIdKnown(const std::string& /*user_agent_id*/) {
+  sent_packet_manager_.OnUserAgentIdKnown();
+}
+
 void QuicConnection::OnDecryptedPacket(size_t /*length*/,
                                        EncryptionLevel level) {
   last_decrypted_packet_level_ = level;
diff --git a/quic/core/quic_connection.h b/quic/core/quic_connection.h
index 4f7f2b6..e27b6cf 100644
--- a/quic/core/quic_connection.h
+++ b/quic/core/quic_connection.h
@@ -1151,7 +1151,7 @@
   // Returns true if ack_alarm_ is set.
   bool HasPendingAcks() const;
 
-  void OnUserAgentIdKnown() { sent_packet_manager_.OnUserAgentIdKnown(); }
+  virtual void OnUserAgentIdKnown(const std::string& user_agent_id);
 
   // Enables Legacy Version Encapsulation using |server_name| as SNI.
   // Can only be set if this is a client connection.
@@ -1346,6 +1346,10 @@
     default_path_.bytes_received_before_address_validation += length;
   }
 
+  void set_validate_client_addresses(bool value) {
+    validate_client_addresses_ = value;
+  }
+
  private:
   friend class test::QuicConnectionPeer;
 
diff --git a/quic/core/quic_flags_list.h b/quic/core/quic_flags_list.h
index 7f030a3..73fdf83 100644
--- a/quic/core/quic_flags_list.h
+++ b/quic/core/quic_flags_list.h
@@ -63,6 +63,8 @@
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_disable_version_t051, true)
 // If true, disable blackhole detection on server side.
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_disable_server_blackhole_detection, false)
+// If true, disable reverse path validation for Apple mobile clients.
+QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_disable_reverse_path_validation_for_apple_mobile, false)
 // If true, discard INITIAL packet if the key has been dropped.
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_discard_initial_packet_with_key_dropped, true)
 // If true, do not bundle 2nd ACK with connection close if there is an ACK queued.
diff --git a/quic/core/quic_session.h b/quic/core/quic_session.h
index bacb4c1..1486a4f 100644
--- a/quic/core/quic_session.h
+++ b/quic/core/quic_session.h
@@ -596,9 +596,10 @@
     return user_agent_id_;
   }
 
+  // TODO(wub): remove saving user-agent to QuicSession.
   void SetUserAgentId(std::string user_agent_id) {
     user_agent_id_ = std::move(user_agent_id);
-    connection()->OnUserAgentIdKnown();
+    connection()->OnUserAgentIdKnown(user_agent_id_.value());
   }
 
   void SetSourceAddressTokenToSend(absl::string_view token) {