Make QuicTransportClientSession implement QuicCryptoClientStream::ProofHandler.

This way, we can listen to OnProofVerifyDetailsAvailable() in Chrome, and provide more detailed logging for certificate verification events.

PiperOrigin-RevId: 325461898
Change-Id: I5e4dbcc5e058f2bbe8deda79c6d24d985d535ff8
diff --git a/quic/quic_transport/quic_transport_client_session.cc b/quic/quic_transport/quic_transport_client_session.cc
index 3a8eba1..f41b403 100644
--- a/quic/quic_transport/quic_transport_client_session.cc
+++ b/quic/quic_transport/quic_transport_client_session.cc
@@ -26,20 +26,6 @@
 
 namespace quic {
 
-namespace {
-// ProofHandler is primarily used by QUIC crypto to persist QUIC server configs
-// and perform some of related debug logging.  QuicTransport does not support
-// QUIC crypto, so those methods are not called.
-class DummyProofHandler : public QuicCryptoClientStream::ProofHandler {
- public:
-  void OnProofValid(
-      const QuicCryptoClientConfig::CachedState& /*cached*/) override {}
-  void OnProofVerifyDetailsAvailable(
-      const ProofVerifyDetails& /*verify_details*/) override {}
-};
-
-}  // namespace
-
 QuicTransportClientSession::QuicTransportClientSession(
     QuicConnection* connection,
     Visitor* owner,
@@ -61,12 +47,10 @@
     QUIC_BUG_IF(version.handshake_protocol != PROTOCOL_TLS1_3)
         << "QuicTransport requires TLS 1.3 handshake";
   }
-  // ProofHandler API is not used by TLS 1.3.
-  static DummyProofHandler* proof_handler = new DummyProofHandler();
   crypto_stream_ = std::make_unique<QuicCryptoClientStream>(
       QuicServerId(url.host(), url.EffectiveIntPort()), this,
       crypto_config->proof_verifier()->CreateDefaultContext(), crypto_config,
-      proof_handler, /*has_application_state = */ true);
+      /*proof_handler=*/this, /*has_application_state = */ true);
 }
 
 void QuicTransportClientSession::OnAlpnSelected(
@@ -267,4 +251,10 @@
   }
 }
 
+void QuicTransportClientSession::OnProofValid(
+    const QuicCryptoClientConfig::CachedState& /*cached*/) {}
+
+void QuicTransportClientSession::OnProofVerifyDetailsAvailable(
+    const ProofVerifyDetails& /*verify_details*/) {}
+
 }  // namespace quic
diff --git a/quic/quic_transport/quic_transport_client_session.h b/quic/quic_transport/quic_transport_client_session.h
index 56b29e4..a519d04 100644
--- a/quic/quic_transport/quic_transport_client_session.h
+++ b/quic/quic_transport/quic_transport_client_session.h
@@ -31,7 +31,8 @@
 // A client session for the QuicTransport protocol.
 class QUIC_EXPORT_PRIVATE QuicTransportClientSession
     : public QuicSession,
-      public QuicTransportSessionInterface {
+      public QuicTransportSessionInterface,
+      public QuicCryptoClientStream::ProofHandler {
  public:
   class QUIC_EXPORT_PRIVATE ClientVisitor {
    public:
@@ -111,6 +112,11 @@
 
   using QuicSession::datagram_queue;
 
+  // QuicCryptoClientStream::ProofHandler implementation.
+  void OnProofValid(const QuicCryptoClientConfig::CachedState& cached) override;
+  void OnProofVerifyDetailsAvailable(
+      const ProofVerifyDetails& verify_details) override;
+
  protected:
   class QUIC_EXPORT_PRIVATE ClientIndication : public QuicStream {
    public: