Add default version for QuicTransport and use it in all unit tests.

This currently uses draft25, as draft27 doesn't yet has a quic_verions codepoint.

gfe-relnote: n/a (not used in production)
PiperOrigin-RevId: 298468043
Change-Id: I5dfd78a05717f166c56092b0ca3d868afb257072
diff --git a/quic/quic_transport/quic_transport_client_session_test.cc b/quic/quic_transport/quic_transport_client_session_test.cc
index 312b132..ba65ce2 100644
--- a/quic/quic_transport/quic_transport_client_session_test.cc
+++ b/quic/quic_transport/quic_transport_client_session_test.cc
@@ -36,15 +36,7 @@
 }
 
 ParsedQuicVersionVector GetVersions() {
-  for (const ParsedQuicVersion& version : AllSupportedVersions()) {
-    // Find the first version that supports IETF QUIC.
-    if (version.HasIetfQuicFrames() &&
-        version.handshake_protocol == quic::PROTOCOL_TLS1_3) {
-      return {version};
-    }
-  }
-  CHECK(false);
-  return {};
+  return {DefaultVersionForQuicTransport()};
 }
 
 std::string DataInStream(QuicStream* stream) {
@@ -65,6 +57,7 @@
                     Perspective::IS_CLIENT,
                     GetVersions()),
         crypto_config_(crypto_test_utils::ProofVerifierForTesting()) {
+    QuicEnableVersion(DefaultVersionForQuicTransport());
     CreateSession(GetTestOrigin(), "");
   }
 
diff --git a/quic/quic_transport/quic_transport_integration_test.cc b/quic/quic_transport/quic_transport_integration_test.cc
index 2da47fa..355f6cc 100644
--- a/quic/quic_transport/quic_transport_integration_test.cc
+++ b/quic/quic_transport/quic_transport_integration_test.cc
@@ -49,15 +49,7 @@
 }
 
 ParsedQuicVersionVector GetVersions() {
-  for (const ParsedQuicVersion& version : AllSupportedVersions()) {
-    // Find the first version that supports IETF QUIC.
-    if (version.HasIetfQuicFrames() &&
-        version.handshake_protocol == quic::PROTOCOL_TLS1_3) {
-      return {version};
-    }
-  }
-  CHECK(false);
-  return {};
+  return {DefaultVersionForQuicTransport()};
 }
 
 class QuicTransportEndpointBase : public QuicEndpointBase {
@@ -67,6 +59,7 @@
                             const std::string& peer_name,
                             Perspective perspective)
       : QuicEndpointBase(simulator, name, peer_name) {
+    QuicEnableVersion(DefaultVersionForQuicTransport());
     connection_ = std::make_unique<QuicConnection>(
         TestConnectionId(0x10), simulator::GetAddressFromName(peer_name),
         simulator, simulator->GetAlarmFactory(), &writer_,
diff --git a/quic/quic_transport/quic_transport_protocol.h b/quic/quic_transport/quic_transport_protocol.h
index 23f0d8d..6d95acc 100644
--- a/quic/quic_transport/quic_transport_protocol.h
+++ b/quic/quic_transport/quic_transport_protocol.h
@@ -6,7 +6,9 @@
 #define QUICHE_QUIC_QUIC_TRANSPORT_QUIC_TRANSPORT_PROTOCOL_H_
 
 #include "net/third_party/quiche/src/quic/core/quic_types.h"
+#include "net/third_party/quiche/src/quic/core/quic_versions.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_export.h"
+#include "net/third_party/quiche/src/quic/platform/api/quic_logging.h"
 
 namespace quic {
 
@@ -31,6 +33,23 @@
   kPath = 0x0001,
 };
 
+// Returns if the specified QUIC version can be used by QuicTransport.
+QUIC_EXPORT_PRIVATE constexpr bool IsVersionValidForQuicTransport(
+    const ParsedQuicVersion& version) {
+  return VersionSupportsMessageFrames(version.transport_version) &&
+         VersionHasIetfQuicFrames(version.transport_version) &&
+         version.handshake_protocol == PROTOCOL_TLS1_3;
+}
+
+// Returns default QUIC version used for QuicTransport.
+QUIC_EXPORT_PRIVATE inline ParsedQuicVersion DefaultVersionForQuicTransport() {
+  constexpr ParsedQuicVersion version(PROTOCOL_TLS1_3,
+                                      QUIC_VERSION_IETF_DRAFT_25);
+  static_assert(IsVersionValidForQuicTransport(version),
+                "Default QUIC version used by QuicTransport is invalid");
+  return version;
+}
+
 }  // namespace quic
 
 #endif  // QUICHE_QUIC_QUIC_TRANSPORT_QUIC_TRANSPORT_PROTOCOL_H_
diff --git a/quic/quic_transport/quic_transport_server_session_test.cc b/quic/quic_transport/quic_transport_server_session_test.cc
index c8ef5c7..8176b03 100644
--- a/quic/quic_transport/quic_transport_server_session_test.cc
+++ b/quic/quic_transport/quic_transport_server_session_test.cc
@@ -51,15 +51,7 @@
 }
 
 ParsedQuicVersionVector GetVersions() {
-  for (const ParsedQuicVersion& version : AllSupportedVersions()) {
-    // Find the first version that supports IETF QUIC.
-    if (version.HasIetfQuicFrames() &&
-        version.handshake_protocol == quic::PROTOCOL_TLS1_3) {
-      return {version};
-    }
-  }
-  CHECK(false);
-  return {};
+  return {DefaultVersionForQuicTransport()};
 }
 
 class QuicTransportServerSessionTest : public QuicTest {
@@ -75,6 +67,7 @@
                        KeyExchangeSource::Default()),
         compressed_certs_cache_(
             QuicCompressedCertsCache::kQuicCompressedCertsCacheSize) {
+    QuicEnableVersion(DefaultVersionForQuicTransport());
     connection_.AdvanceTime(QuicTime::Delta::FromSeconds(100000));
     crypto_test_utils::SetupCryptoServerConfigForTest(
         helper_.GetClock(), helper_.GetRandomGenerator(), &crypto_config_);
diff --git a/quic/quic_transport/quic_transport_stream_test.cc b/quic/quic_transport/quic_transport_stream_test.cc
index 3c92101..6a91702 100644
--- a/quic/quic_transport/quic_transport_stream_test.cc
+++ b/quic/quic_transport/quic_transport_stream_test.cc
@@ -24,15 +24,7 @@
 using testing::Return;
 
 ParsedQuicVersionVector GetVersions() {
-  for (const ParsedQuicVersion& version : AllSupportedVersions()) {
-    // Find the first version that supports IETF QUIC.
-    if (version.HasIetfQuicFrames() &&
-        version.handshake_protocol == quic::PROTOCOL_TLS1_3) {
-      return {version};
-    }
-  }
-  CHECK(false);
-  return {};
+  return {DefaultVersionForQuicTransport()};
 }
 
 class MockQuicTransportSessionInterface : public QuicTransportSessionInterface {
@@ -48,6 +40,7 @@
                                            Perspective::IS_CLIENT,
                                            GetVersions())),
         session_(connection_) {
+    QuicEnableVersion(DefaultVersionForQuicTransport());
     session_.Initialize();
 
     stream_ = new QuicTransportStream(0, &session_, &interface_);