Replace QuicTransportVersion with ParsedQuicVersion in parts of net

Change-Id: I82fabb3c8ba9b91d7970cd01a8103645a8607828
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1586577
Commit-Queue: Nick Harper <[email protected]>
Reviewed-by: Misha Efimov <[email protected]>
Reviewed-by: Ryan Hamilton <[email protected]>
Cr-Commit-Position: refs/heads/master@{#655837}
diff --git a/net/quic/quic_network_transaction_unittest.cc b/net/quic/quic_network_transaction_unittest.cc
index 17f9ac87..ccffb73 100644
--- a/net/quic/quic_network_transaction_unittest.cc
+++ b/net/quic/quic_network_transaction_unittest.cc
@@ -119,7 +119,7 @@
 struct PoolingTestParams {
   friend std::ostream& operator<<(std::ostream& os,
                                   const PoolingTestParams& p) {
-    os << "{ version: " << QuicVersionToString(p.version)
+    os << "{ version: " << ParsedQuicVersionToString(p.version)
        << ", destination_type: ";
     switch (p.destination_type) {
       case SAME_AS_FIRST:
@@ -138,27 +138,27 @@
     return os;
   }
 
-  quic::QuicTransportVersion version;
+  quic::ParsedQuicVersion version;
   DestinationType destination_type;
   bool client_headers_include_h2_stream_dependency;
 };
 
 std::string GenerateQuicVersionsListForAltSvcHeader(
-    const quic::QuicTransportVersionVector& versions) {
+    const quic::ParsedQuicVersionVector& versions) {
   std::string result = "";
-  for (const quic::QuicTransportVersion& version : versions) {
+  for (const quic::ParsedQuicVersion& version : versions) {
     if (!result.empty())
       result.append(",");
-    result.append(base::NumberToString(version));
+    result.append(base::NumberToString(version.transport_version));
   }
   return result;
 }
 
 std::vector<PoolingTestParams> GetPoolingTestParams() {
   std::vector<PoolingTestParams> params;
-  quic::QuicTransportVersionVector all_supported_versions =
-      quic::AllSupportedTransportVersions();
-  for (const quic::QuicTransportVersion version : all_supported_versions) {
+  quic::ParsedQuicVersionVector all_supported_versions =
+      quic::AllSupportedVersions();
+  for (const quic::ParsedQuicVersion version : all_supported_versions) {
     params.push_back(PoolingTestParams{version, SAME_AS_FIRST, false});
     params.push_back(PoolingTestParams{version, SAME_AS_FIRST, true});
     params.push_back(PoolingTestParams{version, SAME_AS_SECOND, false});
@@ -256,13 +256,13 @@
 class QuicNetworkTransactionTest
     : public PlatformTest,
       public ::testing::WithParamInterface<
-          std::tuple<quic::QuicTransportVersion, bool>>,
+          std::tuple<quic::ParsedQuicVersion, bool>>,
       public WithScopedTaskEnvironment {
  protected:
   QuicNetworkTransactionTest()
       : version_(std::get<0>(GetParam())),
         client_headers_include_h2_stream_dependency_(std::get<1>(GetParam())),
-        supported_versions_(quic::test::SupportedTransportVersions(version_)),
+        supported_versions_(quic::test::SupportedVersions(version_)),
         random_generator_(0),
         client_maker_(
             version_,
@@ -675,7 +675,7 @@
   }
 
   std::string ConstructDataHeader(size_t body_len) {
-    if (version_ != quic::QUIC_VERSION_99) {
+    if (version_.transport_version != quic::QUIC_VERSION_99) {
       return "";
     }
     quic::HttpEncoder encoder;
@@ -684,8 +684,7 @@
     return std::string(buffer.get(), header_length);
   }
 
-  void CreateSession(
-      const quic::QuicTransportVersionVector& supported_versions) {
+  void CreateSession(const quic::ParsedQuicVersionVector& supported_versions) {
     session_params_.enable_quic = true;
     session_params_.quic_supported_versions = supported_versions;
     session_params_.quic_headers_include_h2_stream_dependency =
@@ -725,7 +724,8 @@
     EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
     EXPECT_TRUE(response->was_fetched_via_spdy);
     EXPECT_TRUE(response->was_alpn_negotiated);
-    EXPECT_EQ(QuicHttpStream::ConnectionInfoFromQuicVersion(version_),
+    EXPECT_EQ(QuicHttpStream::ConnectionInfoFromQuicVersion(
+                  version_.transport_version),
               response->connection_info);
   }
 
@@ -935,11 +935,13 @@
   }
 
   quic::QuicStreamId GetNthClientInitiatedBidirectionalStreamId(int n) {
-    return quic::test::GetNthClientInitiatedBidirectionalStreamId(version_, n);
+    return quic::test::GetNthClientInitiatedBidirectionalStreamId(
+        version_.transport_version, n);
   }
 
   quic::QuicStreamId GetNthServerInitiatedUnidirectionalStreamId(int n) {
-    return quic::test::GetNthServerInitiatedUnidirectionalStreamId(version_, n);
+    return quic::test::GetNthServerInitiatedUnidirectionalStreamId(
+        version_.transport_version, n);
   }
 
   static void AddCertificate(SSLSocketDataProvider* ssl_data) {
@@ -948,9 +950,9 @@
     ASSERT_TRUE(ssl_data->ssl_info.cert);
   }
 
-  const quic::QuicTransportVersion version_;
+  const quic::ParsedQuicVersion version_;
   const bool client_headers_include_h2_stream_dependency_;
-  quic::QuicTransportVersionVector supported_versions_;
+  quic::ParsedQuicVersionVector supported_versions_;
   QuicFlagSaver flags_;  // Save/restore all QUIC flag values.
   quic::MockClock clock_;
   quic::test::MockRandom random_generator_;
@@ -1004,9 +1006,8 @@
 INSTANTIATE_TEST_SUITE_P(
     VersionIncludeStreamDependencySequence,
     QuicNetworkTransactionTest,
-    ::testing::Combine(
-        ::testing::ValuesIn(quic::AllSupportedTransportVersions()),
-        ::testing::Bool()));
+    ::testing::Combine(::testing::ValuesIn(quic::AllSupportedVersions()),
+                       ::testing::Bool()));
 
 TEST_P(QuicNetworkTransactionTest, WriteErrorHandshakeConfirmed) {
   session_params_.retry_without_alt_svc_on_quic_errors = false;
@@ -1213,7 +1214,7 @@
 
   int log_stream_id;
   ASSERT_TRUE(entries[pos].GetIntegerValue("stream_id", &log_stream_id));
-  EXPECT_EQ(quic::QuicUtils::GetHeadersStreamId(version_),
+  EXPECT_EQ(quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
             static_cast<quic::QuicStreamId>(log_stream_id));
 }
 
@@ -1251,10 +1252,12 @@
   for (size_t offset = 0; offset < spdy_frame.size(); offset += chunk_size) {
     size_t len = std::min(chunk_size, spdy_frame.size() - offset);
     mock_quic_data.AddRead(
-        ASYNC, ConstructServerDataPacket(
-                   packet_number++,
-                   quic::QuicUtils::GetHeadersStreamId(version_), false, false,
-                   offset, base::StringPiece(spdy_frame.data() + offset, len)));
+        ASYNC,
+        ConstructServerDataPacket(
+            packet_number++,
+            quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+            false, false, offset,
+            base::StringPiece(spdy_frame.data() + offset, len)));
   }
 
   std::string header = ConstructDataHeader(6);
@@ -1310,10 +1313,12 @@
   for (size_t offset = 0; offset < spdy_frame.size(); offset += chunk_size) {
     size_t len = std::min(chunk_size, spdy_frame.size() - offset);
     mock_quic_data.AddRead(
-        ASYNC, ConstructServerDataPacket(
-                   packet_number++,
-                   quic::QuicUtils::GetHeadersStreamId(version_), false, false,
-                   offset, base::StringPiece(spdy_frame.data() + offset, len)));
+        ASYNC,
+        ConstructServerDataPacket(
+            packet_number++,
+            quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+            false, false, offset,
+            base::StringPiece(spdy_frame.data() + offset, len)));
   }
 
   std::string header = ConstructDataHeader(6);
@@ -1523,12 +1528,10 @@
 }
 
 TEST_P(QuicNetworkTransactionTest, DoNotUseQuicForUnsupportedVersion) {
-  quic::QuicTransportVersion unsupported_version =
-      quic::QUIC_VERSION_UNSUPPORTED;
+  quic::ParsedQuicVersion unsupported_version = quic::UnsupportedQuicVersion();
   // Add support for another QUIC version besides |version_|. Also find a
   // unsupported version.
-  for (const quic::QuicTransportVersion& version :
-       quic::AllSupportedTransportVersions()) {
+  for (const quic::ParsedQuicVersion& version : quic::AllSupportedVersions()) {
     if (version == version_)
       continue;
     if (supported_versions_.size() != 2) {
@@ -1538,7 +1541,7 @@
     unsupported_version = version;
     break;
   }
-  DCHECK_NE(unsupported_version, quic::QUIC_VERSION_UNSUPPORTED);
+  DCHECK_NE(unsupported_version, quic::UnsupportedQuicVersion());
 
   // Set up alternative service to use QUIC with a version that is not
   // supported.
@@ -1562,8 +1565,7 @@
   // the response from the server will advertise new Alt-Svc with supported
   // versions.
   std::string advertised_versions_list_str =
-      GenerateQuicVersionsListForAltSvcHeader(
-          quic::AllSupportedTransportVersions());
+      GenerateQuicVersionsListForAltSvcHeader(quic::AllSupportedVersions());
   std::string altsvc_header =
       base::StringPrintf("Alt-Svc: quic=\":443\"; v=\"%s\"\r\n\r\n",
                          advertised_versions_list_str.c_str());
@@ -1618,7 +1620,11 @@
   EXPECT_EQ(kProtoQUIC, alt_svc_info_vector[0].alternative_service().protocol);
   EXPECT_EQ(2u, alt_svc_info_vector[0].advertised_versions().size());
   // Advertised versions will be lised in a sorted order.
-  std::sort(supported_versions_.begin(), supported_versions_.end());
+  std::sort(
+      supported_versions_.begin(), supported_versions_.end(),
+      [](const quic::ParsedQuicVersion& a, const quic::ParsedQuicVersion& b) {
+        return a.transport_version < b.transport_version;
+      });
   EXPECT_EQ(supported_versions_[0],
             alt_svc_info_vector[0].advertised_versions()[0]);
   EXPECT_EQ(supported_versions_[1],
@@ -1813,10 +1819,8 @@
 
   // Add support for another QUIC version besides |version_| on the client side.
   // Also find a different version advertised by the server.
-  quic::QuicTransportVersion advertised_version_2 =
-      quic::QUIC_VERSION_UNSUPPORTED;
-  for (const quic::QuicTransportVersion& version :
-       quic::AllSupportedTransportVersions()) {
+  quic::ParsedQuicVersion advertised_version_2 = quic::UnsupportedQuicVersion();
+  for (const quic::ParsedQuicVersion& version : quic::AllSupportedVersions()) {
     if (version == version_)
       continue;
     if (supported_versions_.size() != 2) {
@@ -1826,11 +1830,11 @@
     advertised_version_2 = version;
     break;
   }
-  DCHECK_NE(advertised_version_2, quic::QUIC_VERSION_UNSUPPORTED);
+  DCHECK_NE(advertised_version_2, quic::UnsupportedQuicVersion());
 
-  std::string QuicAltSvcWithVersionHeader =
-      base::StringPrintf("Alt-Svc: quic=\":443\";v=\"%d,%d\"\r\n\r\n",
-                         advertised_version_2, version_);
+  std::string QuicAltSvcWithVersionHeader = base::StringPrintf(
+      "Alt-Svc: quic=\":443\";v=\"%d,%d\"\r\n\r\n",
+      advertised_version_2.transport_version, version_.transport_version);
 
   MockRead http_reads[] = {
       MockRead("HTTP/1.1 200 OK\r\n"),
@@ -1879,21 +1883,21 @@
   // The QuicStreamFactoy will pick the preferred QUIC_VERSION: |version_|,
   // which is verified as the PacketMakers are using |version_|.
 
-  quic::QuicTransportVersion common_version_2 = quic::QUIC_VERSION_UNSUPPORTED;
-  for (const quic::QuicTransportVersion& version :
-       quic::AllSupportedTransportVersions()) {
+  quic::ParsedQuicVersion common_version_2 = quic::UnsupportedQuicVersion();
+  for (const quic::ParsedQuicVersion& version : quic::AllSupportedVersions()) {
     if (version == version_)
       continue;
     common_version_2 = version;
     break;
   }
-  DCHECK_NE(common_version_2, quic::QUIC_VERSION_UNSUPPORTED);
+  DCHECK_NE(common_version_2, quic::UnsupportedQuicVersion());
 
   supported_versions_.push_back(
       common_version_2);  // Supported but unpreferred.
 
   std::string QuicAltSvcWithVersionHeader = base::StringPrintf(
-      "Alt-Svc: quic=\":443\";v=\"%d,%d\"\r\n\r\n", common_version_2, version_);
+      "Alt-Svc: quic=\":443\";v=\"%d,%d\"\r\n\r\n",
+      common_version_2.transport_version, version_.transport_version);
 
   MockRead http_reads[] = {
       MockRead("HTTP/1.1 200 OK\r\n"),
@@ -2051,8 +2055,7 @@
 TEST_P(QuicNetworkTransactionTest,
        StoreMutuallySupportedVersionsWhenProcessAltSvc) {
   // Add support for another QUIC version besides |version_|.
-  for (const quic::QuicTransportVersion& version :
-       quic::AllSupportedTransportVersions()) {
+  for (const quic::ParsedQuicVersion& version : quic::AllSupportedVersions()) {
     if (version == version_)
       continue;
     supported_versions_.push_back(version);
@@ -2060,8 +2063,7 @@
   }
 
   std::string advertised_versions_list_str =
-      GenerateQuicVersionsListForAltSvcHeader(
-          quic::AllSupportedTransportVersions());
+      GenerateQuicVersionsListForAltSvcHeader(quic::AllSupportedVersions());
   std::string altsvc_header =
       base::StringPrintf("Alt-Svc: quic=\":443\"; v=\"%s\"\r\n\r\n",
                          advertised_versions_list_str.c_str());
@@ -2116,7 +2118,11 @@
   EXPECT_EQ(kProtoQUIC, alt_svc_info_vector[0].alternative_service().protocol);
   EXPECT_EQ(2u, alt_svc_info_vector[0].advertised_versions().size());
   // Advertised versions will be lised in a sorted order.
-  std::sort(supported_versions_.begin(), supported_versions_.end());
+  std::sort(
+      supported_versions_.begin(), supported_versions_.end(),
+      [](const quic::ParsedQuicVersion& a, const quic::ParsedQuicVersion& b) {
+        return a.transport_version < b.transport_version;
+      });
   EXPECT_EQ(supported_versions_[0],
             alt_svc_info_vector[0].advertised_versions()[0]);
   EXPECT_EQ(supported_versions_[1],
@@ -2124,8 +2130,8 @@
 }
 
 TEST_P(QuicNetworkTransactionTest, UseAlternativeServiceAllSupportedVersion) {
-  std::string altsvc_header =
-      base::StringPrintf("Alt-Svc: quic=\":443\"; v=\"%u\"\r\n\r\n", version_);
+  std::string altsvc_header = base::StringPrintf(
+      "Alt-Svc: quic=\":443\"; v=\"%u\"\r\n\r\n", version_.transport_version);
   MockRead http_reads[] = {
       MockRead("HTTP/1.1 200 OK\r\n"), MockRead(altsvc_header.c_str()),
       MockRead("hello world"),
@@ -2169,7 +2175,7 @@
 }
 
 TEST_P(QuicNetworkTransactionTest, GoAwayWithConnectionMigrationOnPortsOnly) {
-  if (version_ == quic::QUIC_VERSION_99) {
+  if (version_.transport_version == quic::QUIC_VERSION_99) {
     // Not available under version 99
     return;
   }
@@ -2247,7 +2253,7 @@
 // alternate network as well, QUIC is marked as broken and the brokenness will
 // not expire when default network changes.
 TEST_P(QuicNetworkTransactionTest, QuicFailsOnBothNetworksWhileTCPSucceeds) {
-  if (version_ >= quic::QUIC_VERSION_47) {
+  if (version_.transport_version >= quic::QUIC_VERSION_47) {
     // TODO(nharper): reenable once MakeDummyCHLOPacket() fixed
     return;
   }
@@ -2272,7 +2278,7 @@
   quic_data.AddWrite(SYNCHRONOUS,
                      client_maker_.MakeDummyCHLOPacket(packet_num++));
   // TODO(zhongyi): remove condition check once b/115926584 is fixed.
-  if (version_ <= quic::QUIC_VERSION_39) {
+  if (version_.transport_version <= quic::QUIC_VERSION_39) {
     quic_data.AddWrite(SYNCHRONOUS,
                        client_maker_.MakeDummyCHLOPacket(packet_num++));
   }
@@ -2367,7 +2373,7 @@
 // alternate network, QUIC is marked as broken. The brokenness will expire when
 // the default network changes.
 TEST_P(QuicNetworkTransactionTest, RetryOnAlternateNetworkWhileTCPSucceeds) {
-  if (version_ >= quic::QUIC_VERSION_47) {
+  if (version_.transport_version >= quic::QUIC_VERSION_47) {
     // TODO(nharper): reenable once MakeDummyCHLOPacket() fixed
     return;
   }
@@ -2392,7 +2398,7 @@
   quic_data.AddWrite(SYNCHRONOUS,
                      client_maker_.MakeDummyCHLOPacket(packet_num++));
   // TODO(zhongyi): remove condition check once b/115926584 is fixed.
-  if (version_ <= quic::QUIC_VERSION_39) {
+  if (version_.transport_version <= quic::QUIC_VERSION_39) {
     quic_data.AddWrite(SYNCHRONOUS,
                        client_maker_.MakeDummyCHLOPacket(packet_num++));
   }
@@ -2501,7 +2507,7 @@
 // before handshake is confirmed. If TCP doesn't succeed but QUIC on the
 // alternative network succeeds, QUIC is not marked as broken.
 TEST_P(QuicNetworkTransactionTest, RetryOnAlternateNetworkWhileTCPHanging) {
-  if (version_ >= quic::QUIC_VERSION_47) {
+  if (version_.transport_version >= quic::QUIC_VERSION_47) {
     // TODO(nharper): reenable once MakeDummyCHLOPacket() fixed
     return;
   }
@@ -2527,7 +2533,7 @@
                      client_maker_.MakeDummyCHLOPacket(packet_num++));
   // TODO(zhongyi): remove condition check once b/115926584 is fixed, i.e.,
   // quic_fix_has_pending_crypto_data is introduced and enabled.
-  if (version_ <= quic::QUIC_VERSION_39) {
+  if (version_.transport_version <= quic::QUIC_VERSION_39) {
     quic_data.AddWrite(SYNCHRONOUS,
                        client_maker_.MakeDummyCHLOPacket(packet_num++));
   }
@@ -2654,42 +2660,50 @@
                      client_maker_.MakeInitialSettingsPacketAndSaveData(
                          2, &header_stream_offset, &settings_data));
   // TLP 1
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         3, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
-  // TLP 2
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         4, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, settings_offset, settings_data));
-  // RTO 1
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         5, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         6, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, settings_offset, settings_data));
-  // RTO 2
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         7, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         8, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, settings_offset, settings_data));
-  // RTO 3
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         9, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       10, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                       false, settings_offset, settings_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          3, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
+  // TLP 2
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          4, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
+  // RTO 1
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          5, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          6, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
+  // RTO 2
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          7, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          8, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
+  // RTO 3
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          9, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          10, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
 
   quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeConnectionClosePacket(
                                       11, true, quic::QUIC_NETWORK_IDLE_TIMEOUT,
@@ -2764,51 +2778,61 @@
                      client_maker_.MakeInitialSettingsPacketAndSaveData(
                          2, &header_stream_offset, &settings_data));
   // TLP 1
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         3, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
-  // TLP 2
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         4, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, settings_offset, settings_data));
-  // RTO 1
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         5, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         6, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, settings_offset, settings_data));
-  // RTO 2
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         7, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         8, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, settings_offset, settings_data));
-  // RTO 3
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         9, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       10, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                       false, settings_offset, settings_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          3, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
+  // TLP 2
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          4, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
+  // RTO 1
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          5, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          6, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
+  // RTO 2
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          7, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          8, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
+  // RTO 3
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          9, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          10, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
   // RTO 4
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       11, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                       false, 0, request_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          11, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       12, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                       false, settings_offset, settings_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          12, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
   // RTO 5
   quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeConnectionClosePacket(
                                       13, true, quic::QUIC_TOO_MANY_RTOS,
@@ -2887,51 +2911,58 @@
                          3, true, GetNthClientInitiatedBidirectionalStreamId(0),
                          quic::QUIC_STREAM_CANCELLED));
   // TLP 1
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         4, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          4, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
   // TLP 2
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         5, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, settings_offset, settings_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          5, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
   // RTO 1
   quic_data.AddWrite(SYNCHRONOUS,
                      client_maker_.MakeRstPacket(
                          6, true, GetNthClientInitiatedBidirectionalStreamId(0),
                          quic::QUIC_STREAM_CANCELLED));
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         7, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          7, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
   // RTO 2
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         8, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, settings_offset, settings_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          8, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
   quic_data.AddWrite(SYNCHRONOUS,
                      client_maker_.MakeRstPacket(
                          9, true, GetNthClientInitiatedBidirectionalStreamId(0),
                          quic::QUIC_STREAM_CANCELLED));
   // RTO 3
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       10, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                       false, 0, request_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          10, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       11, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                       false, settings_offset, settings_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          11, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
   // RTO 4
   quic_data.AddWrite(
       SYNCHRONOUS, client_maker_.MakeRstPacket(
                        12, true, GetNthClientInitiatedBidirectionalStreamId(0),
                        quic::QUIC_STREAM_CANCELLED));
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       13, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                       false, 0, request_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          13, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
   // RTO 5
   quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeConnectionClosePacket(
                                       14, true, quic::QUIC_TOO_MANY_RTOS,
@@ -3075,42 +3106,50 @@
                      client_maker_.MakeInitialSettingsPacketAndSaveData(
                          2, &header_stream_offset, &settings_data));
   // TLP 1
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         3, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
-  // TLP 2
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         4, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, settings_offset, settings_data));
-  // RTO 1
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         5, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         6, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, settings_offset, settings_data));
-  // RTO 2
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         7, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         8, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, settings_offset, settings_data));
-  // RTO 3
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         9, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       10, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                       false, settings_offset, settings_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          3, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
+  // TLP 2
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          4, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
+  // RTO 1
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          5, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          6, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
+  // RTO 2
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          7, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          8, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
+  // RTO 3
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          9, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          10, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
 
   quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeConnectionClosePacket(
                                       11, true, quic::QUIC_NETWORK_IDLE_TIMEOUT,
@@ -3209,42 +3248,50 @@
                      client_maker_.MakeInitialSettingsPacketAndSaveData(
                          2, &header_stream_offset, &settings_data));
   // TLP 1
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         3, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
-  // TLP 2
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         4, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, settings_offset, settings_data));
-  // RTO 1
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         5, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         6, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, settings_offset, settings_data));
-  // RTO 2
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         7, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         8, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, settings_offset, settings_data));
-  // RTO 3
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         9, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       10, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                       false, settings_offset, settings_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          3, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
+  // TLP 2
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          4, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
+  // RTO 1
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          5, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          6, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
+  // RTO 2
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          7, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          8, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
+  // RTO 3
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          9, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          10, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
 
   quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeConnectionClosePacket(
                                       11, true, quic::QUIC_NETWORK_IDLE_TIMEOUT,
@@ -3358,41 +3405,49 @@
 
   // TLP 1
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       4, quic::QuicUtils::GetHeadersStreamId(version_), false,
-                       false, 0, request_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          4, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          false, false, 0, request_data));
   // TLP 2
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       5, quic::QuicUtils::GetHeadersStreamId(version_), false,
-                       false, settings_offset, settings_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          5, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          false, false, settings_offset, settings_data));
   // RTO 1
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       6, quic::QuicUtils::GetHeadersStreamId(version_), false,
-                       false, 0, request_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          6, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          false, false, 0, request_data));
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       7, quic::QuicUtils::GetHeadersStreamId(version_), false,
-                       false, settings_offset, settings_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          7, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          false, false, settings_offset, settings_data));
   // RTO 2
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       8, quic::QuicUtils::GetHeadersStreamId(version_), false,
-                       false, 0, request_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          8, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          false, false, 0, request_data));
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       9, quic::QuicUtils::GetHeadersStreamId(version_), false,
-                       false, settings_offset, settings_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          9, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          false, false, settings_offset, settings_data));
   // RTO 3
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       10, quic::QuicUtils::GetHeadersStreamId(version_), false,
-                       false, 0, request_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          10, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          false, false, 0, request_data));
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       11, quic::QuicUtils::GetHeadersStreamId(version_), false,
-                       false, settings_offset, settings_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          11, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          false, false, settings_offset, settings_data));
 
   if (GetQuicReloadableFlag(
           quic_fix_time_of_first_packet_sent_after_receiving)) {
@@ -3492,51 +3547,61 @@
                      client_maker_.MakeInitialSettingsPacketAndSaveData(
                          2, &header_stream_offset, &settings_data));
   // TLP 1
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         3, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
-  // TLP 2
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         4, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, settings_offset, settings_data));
-  // RTO 1
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         5, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         6, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, settings_offset, settings_data));
-  // RTO 2
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         7, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         8, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, settings_offset, settings_data));
-  // RTO 3
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         9, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       10, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                       false, settings_offset, settings_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          3, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
+  // TLP 2
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          4, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
+  // RTO 1
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          5, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          6, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
+  // RTO 2
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          7, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          8, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
+  // RTO 3
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          9, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          10, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
   // RTO 4
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       11, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                       false, 0, request_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          11, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       12, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                       false, settings_offset, settings_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          12, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
 
   quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeConnectionClosePacket(
                                       13, true, quic::QUIC_TOO_MANY_RTOS,
@@ -3640,51 +3705,58 @@
                          3, true, GetNthClientInitiatedBidirectionalStreamId(0),
                          quic::QUIC_STREAM_CANCELLED));
   // TLP 1
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         4, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          4, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
   // TLP 2
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         5, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, settings_offset, settings_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          5, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
   // RTO 1
   quic_data.AddWrite(SYNCHRONOUS,
                      client_maker_.MakeRstPacket(
                          6, true, GetNthClientInitiatedBidirectionalStreamId(0),
                          quic::QUIC_STREAM_CANCELLED));
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         7, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, 0, request_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          7, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
   // RTO 2
-  quic_data.AddWrite(SYNCHRONOUS,
-                     client_maker_.MakeDataPacket(
-                         8, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                         false, settings_offset, settings_data));
+  quic_data.AddWrite(
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          8, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
   quic_data.AddWrite(SYNCHRONOUS,
                      client_maker_.MakeRstPacket(
                          9, true, GetNthClientInitiatedBidirectionalStreamId(0),
                          quic::QUIC_STREAM_CANCELLED));
   // RTO 3
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       10, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                       false, 0, request_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          10, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       11, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                       false, settings_offset, settings_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          11, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, settings_offset, settings_data));
   // RTO 4
   quic_data.AddWrite(
       SYNCHRONOUS, client_maker_.MakeRstPacket(
                        12, true, GetNthClientInitiatedBidirectionalStreamId(0),
                        quic::QUIC_STREAM_CANCELLED));
   quic_data.AddWrite(
-      SYNCHRONOUS, client_maker_.MakeDataPacket(
-                       13, quic::QuicUtils::GetHeadersStreamId(version_), true,
-                       false, 0, request_data));
+      SYNCHRONOUS,
+      client_maker_.MakeDataPacket(
+          13, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          true, false, 0, request_data));
   // RTO 5
   quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeConnectionClosePacket(
                                       14, true, quic::QUIC_TOO_MANY_RTOS,
@@ -4117,8 +4189,9 @@
 
 TEST_P(QuicNetworkTransactionTest,
        DoNotUseAlternativeServiceQuicUnsupportedVersion) {
-  std::string altsvc_header = base::StringPrintf(
-      "Alt-Svc: quic=\":443\"; v=\"%u\"\r\n\r\n", version_ - 1);
+  std::string altsvc_header =
+      base::StringPrintf("Alt-Svc: quic=\":443\"; v=\"%u\"\r\n\r\n",
+                         version_.transport_version - 1);
   MockRead http_reads[] = {
       MockRead("HTTP/1.1 200 OK\r\n"), MockRead(altsvc_header.c_str()),
       MockRead("hello world"),
@@ -5032,8 +5105,8 @@
   mock_quic_data.AddWrite(
       SYNCHRONOUS,
       client_maker_.MakeDataPacket(
-          3, quic::QuicUtils::GetHeadersStreamId(version_), false, false,
-          client_header_stream_offset,
+          3, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          false, false, client_header_stream_offset,
           quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())));
   client_header_stream_offset += spdy_frame.size();
 
@@ -5125,8 +5198,8 @@
   mock_quic_data.AddWrite(
       SYNCHRONOUS,
       client_maker_.MakeDataPacket(
-          3, quic::QuicUtils::GetHeadersStreamId(version_), false, false,
-          client_header_stream_offset,
+          3, quic::QuicUtils::GetHeadersStreamId(version_.transport_version),
+          false, false, client_header_stream_offset,
           quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())));
   client_header_stream_offset += spdy_frame.size();
 
@@ -5188,8 +5261,9 @@
   EXPECT_EQ("HTTP/1.1 425 TOO_EARLY", response->headers->GetStatusLine());
   EXPECT_TRUE(response->was_fetched_via_spdy);
   EXPECT_TRUE(response->was_alpn_negotiated);
-  EXPECT_EQ(QuicHttpStream::ConnectionInfoFromQuicVersion(version_),
-            response->connection_info);
+  EXPECT_EQ(
+      QuicHttpStream::ConnectionInfoFromQuicVersion(version_.transport_version),
+      response->connection_info);
 }
 
 TEST_P(QuicNetworkTransactionTest,
@@ -5357,8 +5431,9 @@
   EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
   EXPECT_TRUE(response->was_fetched_via_spdy);
   EXPECT_TRUE(response->was_alpn_negotiated);
-  EXPECT_EQ(QuicHttpStream::ConnectionInfoFromQuicVersion(version_),
-            response->connection_info);
+  EXPECT_EQ(
+      QuicHttpStream::ConnectionInfoFromQuicVersion(version_.transport_version),
+      response->connection_info);
 
   std::string response_data;
   ASSERT_EQ(ERR_QUIC_PROTOCOL_ERROR, ReadTransaction(&trans, &response_data));
@@ -5739,7 +5814,7 @@
 }
 
 TEST_P(QuicNetworkTransactionTest, ConnectionCloseDuringConnect) {
-  if (version_ >= quic::QUIC_VERSION_47) {
+  if (version_.transport_version >= quic::QUIC_VERSION_47) {
     // TODO(nharper): reenable once MakeDummyCHLOPacket() fixed
     return;
   }
@@ -6218,7 +6293,7 @@
                  GetRequestHeaders("GET", "https", "/pushed.jpg"),
                  &server_header_offset, &server_maker_));
   if (client_headers_include_h2_stream_dependency_ &&
-      version_ >= quic::QUIC_VERSION_43) {
+      version_.transport_version >= quic::QUIC_VERSION_43) {
     mock_quic_data.AddWrite(SYNCHRONOUS,
                             ConstructClientPriorityPacket(
                                 client_packet_number++, false,
@@ -6312,7 +6387,7 @@
                  GetRequestHeaders("GET", "https", "/pushed.jpg"),
                  &server_header_offset, &server_maker_));
   if (client_headers_include_h2_stream_dependency_ &&
-      version_ >= quic::QUIC_VERSION_43) {
+      version_.transport_version >= quic::QUIC_VERSION_43) {
     mock_quic_data.AddWrite(SYNCHRONOUS,
                             ConstructClientPriorityPacket(
                                 client_packet_number++, false,
@@ -6388,7 +6463,7 @@
                                            write_packet_index++, &offset));
 
   std::string header = ConstructDataHeader(1);
-  if (version_ != quic::QUIC_VERSION_99) {
+  if (version_.transport_version != quic::QUIC_VERSION_99) {
     mock_quic_data.AddWrite(
         SYNCHRONOUS,
         ConstructClientRequestHeadersAndDataFramesPacket(
@@ -6570,7 +6645,7 @@
                  &server_header_offset, &server_maker_));
 
   if (client_headers_include_h2_stream_dependency_ &&
-      version_ >= quic::QUIC_VERSION_43) {
+      version_.transport_version >= quic::QUIC_VERSION_43) {
     mock_quic_data.AddWrite(SYNCHRONOUS,
                             ConstructClientPriorityPacket(
                                 client_packet_number++, false,
@@ -6724,7 +6799,7 @@
       : version_(GetParam().version),
         client_headers_include_h2_stream_dependency_(
             GetParam().client_headers_include_h2_stream_dependency),
-        supported_versions_(quic::test::SupportedTransportVersions(version_)),
+        supported_versions_(quic::test::SupportedVersions(version_)),
         destination_type_(GetParam().destination_type),
         cert_transparency_verifier_(new MultiLogCTVerifier()),
         ssl_config_service_(new SSLConfigServiceDefaults),
@@ -6860,7 +6935,7 @@
       quic::QuicStreamId stream_id,
       QuicTestPacketMaker* maker) {
     std::string header = "";
-    if (version_ == quic::QUIC_VERSION_99) {
+    if (version_.transport_version == quic::QUIC_VERSION_99) {
       quic::HttpEncoder encoder;
       std::unique_ptr<char[]> buffer;
       auto header_length = encoder.SerializeDataFrameHeader(5, &buffer);
@@ -6940,19 +7015,21 @@
     EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
     EXPECT_TRUE(response->was_fetched_via_spdy);
     EXPECT_TRUE(response->was_alpn_negotiated);
-    EXPECT_EQ(QuicHttpStream::ConnectionInfoFromQuicVersion(version_),
+    EXPECT_EQ(QuicHttpStream::ConnectionInfoFromQuicVersion(
+                  version_.transport_version),
               response->connection_info);
     EXPECT_EQ(443, response->remote_endpoint.port());
   }
 
   quic::QuicStreamId GetNthClientInitiatedBidirectionalStreamId(int n) {
-    return quic::test::GetNthClientInitiatedBidirectionalStreamId(version_, n);
+    return quic::test::GetNthClientInitiatedBidirectionalStreamId(
+        version_.transport_version, n);
   }
 
   quic::MockClock clock_;
-  const quic::QuicTransportVersion version_;
+  const quic::ParsedQuicVersion version_;
   const bool client_headers_include_h2_stream_dependency_;
-  quic::QuicTransportVersionVector supported_versions_;
+  quic::ParsedQuicVersionVector supported_versions_;
   DestinationType destination_type_;
   std::string origin1_;
   std::string origin2_;
@@ -7244,7 +7321,7 @@
                  GetRequestHeaders("GET", "https", "/pushed.jpg"),
                  &server_header_offset, &server_maker_));
   if (client_headers_include_h2_stream_dependency_ &&
-      version_ >= quic::QUIC_VERSION_43) {
+      version_.transport_version >= quic::QUIC_VERSION_43) {
     mock_quic_data.AddWrite(SYNCHRONOUS,
                             ConstructClientPriorityPacket(
                                 client_packet_number++, false,
@@ -7286,7 +7363,7 @@
                               quic::QUIC_STREAM_CANCELLED, 5, 5, 1));
   const char kBody[] = "1";
   std::string header3 = ConstructDataHeader(1);
-  if (version_ != quic::QUIC_VERSION_99) {
+  if (version_.transport_version != quic::QUIC_VERSION_99) {
     mock_quic_data.AddWrite(
         SYNCHRONOUS,
         ConstructClientRequestHeadersAndDataFramesPacket(
@@ -7435,7 +7512,7 @@
       "Host: mail.example.org\r\n"
       "Connection: keep-alive\r\n\r\n";
   std::string header = ConstructDataHeader(strlen(get_request));
-  if (version_ != quic::QUIC_VERSION_99) {
+  if (version_.transport_version != quic::QUIC_VERSION_99) {
     mock_quic_data.AddWrite(
         SYNCHRONOUS,
         ConstructClientAckAndDataPacket(
@@ -7528,7 +7605,7 @@
   spdy::SpdySerializedFrame get_frame =
       spdy_util.ConstructSpdyGet("https://mail.example.org/", 1, LOWEST);
   std::string header = ConstructDataHeader(get_frame.size());
-  if (version_ != quic::QUIC_VERSION_99) {
+  if (version_.transport_version != quic::QUIC_VERSION_99) {
     mock_quic_data.AddWrite(
         SYNCHRONOUS,
         ConstructClientAckAndDataPacket(
@@ -7633,7 +7710,7 @@
       "Host: mail.example.org\r\n"
       "Connection: keep-alive\r\n\r\n";
   std::string header = ConstructDataHeader(strlen(get_request_1));
-  if (version_ != quic::QUIC_VERSION_99) {
+  if (version_.transport_version != quic::QUIC_VERSION_99) {
     mock_quic_data.AddWrite(
         SYNCHRONOUS,
         ConstructClientAckAndDataPacket(
@@ -7677,7 +7754,7 @@
       "Host: mail.example.org\r\n"
       "Connection: keep-alive\r\n\r\n";
   std::string header4 = ConstructDataHeader(strlen(get_request_2));
-  if (version_ == quic::QUIC_VERSION_99) {
+  if (version_.transport_version == quic::QUIC_VERSION_99) {
     mock_quic_data.AddWrite(
         SYNCHRONOUS,
         ConstructClientMultipleDataFramesPacket(
@@ -7797,7 +7874,7 @@
       "Host: mail.example.org\r\n"
       "Connection: keep-alive\r\n\r\n";
   std::string header = ConstructDataHeader(strlen(get_request));
-  if (version_ != quic::QUIC_VERSION_99) {
+  if (version_.transport_version != quic::QUIC_VERSION_99) {
     mock_quic_data.AddWrite(
         SYNCHRONOUS,
         ConstructClientAckAndDataPacket(
@@ -7845,7 +7922,7 @@
   spdy::SpdySerializedFrame get_frame =
       spdy_util.ConstructSpdyGet("https://different.example.org/", 1, LOWEST);
   std::string header4 = ConstructDataHeader(get_frame.size());
-  if (version_ != quic::QUIC_VERSION_99) {
+  if (version_.transport_version != quic::QUIC_VERSION_99) {
     mock_quic_data.AddWrite(
         SYNCHRONOUS,
         ConstructClientAckAndDataPacket(
@@ -8070,7 +8147,7 @@
       "Host: mail.example.org\r\n"
       "Connection: keep-alive\r\n\r\n";
   std::string header = ConstructDataHeader(strlen(get_request));
-  if (version_ != quic::QUIC_VERSION_99) {
+  if (version_.transport_version != quic::QUIC_VERSION_99) {
     mock_quic_data.AddWrite(
         SYNCHRONOUS,
         ConstructClientAckAndDataPacket(
@@ -8478,7 +8555,7 @@
 TEST_P(QuicNetworkTransactionTest, QuicServerPushUpdatesPriority) {
   // Only run this test if HTTP/2 stream dependency info is sent by client (sent
   // in HEADERS frames for requests and PRIORITY frames).
-  if (version_ < quic::QUIC_VERSION_43 ||
+  if (version_.transport_version < quic::QUIC_VERSION_43 ||
       !client_headers_include_h2_stream_dependency_) {
     return;
   }