Log ping_received_delay in transport_connection_stats. Logging only, not protected.

PiperOrigin-RevId: 326655249
Change-Id: I4285c1d510f16b37843534dd69d3f7f25990a1f2
diff --git a/quic/core/http/end_to_end_test.cc b/quic/core/http/end_to_end_test.cc
index 55bd75b..6a3cc2e 100644
--- a/quic/core/http/end_to_end_test.cc
+++ b/quic/core/http/end_to_end_test.cc
@@ -3860,7 +3860,8 @@
     ++num_window_update_frames_;
   }
 
-  void OnPingFrame(const QuicPingFrame& /*frame*/) override {
+  void OnPingFrame(const QuicPingFrame& /*frame*/,
+                   const QuicTime::Delta /*ping_received_delay*/) override {
     ++num_ping_frames_;
   }
 
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc
index abc0be6..bb0db5c 100644
--- a/quic/core/quic_connection.cc
+++ b/quic/core/quic_connection.cc
@@ -1372,7 +1372,12 @@
   UpdatePacketContent(PING_FRAME);
 
   if (debug_visitor_ != nullptr) {
-    debug_visitor_->OnPingFrame(frame);
+    QuicTime::Delta ping_received_delay = QuicTime::Delta::Zero();
+    const QuicTime now = clock_->ApproximateNow();
+    if (now > stats_.connection_creation_time) {
+      ping_received_delay = now - stats_.connection_creation_time;
+    }
+    debug_visitor_->OnPingFrame(frame, ping_received_delay);
   }
   MaybeUpdateAckTimeout();
   return true;
diff --git a/quic/core/quic_connection.h b/quic/core/quic_connection.h
index 0ac1252..e72fb2c 100644
--- a/quic/core/quic_connection.h
+++ b/quic/core/quic_connection.h
@@ -257,7 +257,8 @@
   virtual void OnPaddingFrame(const QuicPaddingFrame& /*frame*/) {}
 
   // Called when a Ping has been parsed.
-  virtual void OnPingFrame(const QuicPingFrame& /*frame*/) {}
+  virtual void OnPingFrame(const QuicPingFrame& /*frame*/,
+                           QuicTime::Delta /*ping_received_delay*/) {}
 
   // Called when a GoAway has been parsed.
   virtual void OnGoAwayFrame(const QuicGoAwayFrame& /*frame*/) {}