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_);