Remove QUIC draft-28

This flag never got deployed, and we're getting rid of draft-28 in favor of draft-29, so we're deprecating it now.

Deprecate gfe2_reloadable_flag_quic_enable_version_draft_28

Startblock:
after 2020-06-23 in US/Pacific
PiperOrigin-RevId: 317813701
Change-Id: Id651cf7fc28fa7f5e830bb2d5c75dc2d4ef0ac88
diff --git a/quic/core/crypto/crypto_utils.cc b/quic/core/crypto/crypto_utils.cc
index 3cdfeae..3127ede 100644
--- a/quic/core/crypto/crypto_utils.cc
+++ b/quic/core/crypto/crypto_utils.cc
@@ -141,7 +141,7 @@
 
 const uint8_t* InitialSaltForVersion(const ParsedQuicVersion& version,
                                      size_t* out_len) {
-  static_assert(SupportedVersions().size() == 10u,
+  static_assert(SupportedVersions().size() == 9u,
                 "Supported versions out of sync with initial encryption salts");
   switch (version.handshake_protocol) {
     case PROTOCOL_QUIC_CRYPTO:
@@ -172,10 +172,6 @@
           // draft-27 uses the same salt as draft-25.
           *out_len = QUICHE_ARRAYSIZE(kDraft25InitialSalt);
           return kDraft25InitialSalt;
-        case QUIC_VERSION_IETF_DRAFT_28:
-          // draft-28 uses the same salt as draft-25.
-          *out_len = QUICHE_ARRAYSIZE(kDraft25InitialSalt);
-          return kDraft25InitialSalt;
         case QUIC_VERSION_IETF_DRAFT_29:
           *out_len = QUICHE_ARRAYSIZE(kDraft29InitialSalt);
           return kDraft29InitialSalt;
@@ -240,9 +236,7 @@
   if (version ==
           ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_25) ||
       version ==
-          ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_27) ||
-      version ==
-          ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_28)) {
+          ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_27)) {
     *key = quiche::QuicheStringPiece(
         reinterpret_cast<const char*>(kDraft25RetryIntegrityKey),
         QUICHE_ARRAYSIZE(kDraft25RetryIntegrityKey));
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc
index d0f38a5..f416ae6 100644
--- a/quic/core/quic_connection_test.cc
+++ b/quic/core/quic_connection_test.cc
@@ -10496,10 +10496,6 @@
       0xff, 0xff, 0x00, 0x00, 0x1b, 0x00, 0x08, 0xf0, 0x67, 0xa5, 0x50, 0x2a,
       0x42, 0x62, 0xb5, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0xa5, 0x23, 0xcb, 0x5b,
       0xa5, 0x24, 0x69, 0x5f, 0x65, 0x69, 0xf2, 0x93, 0xa1, 0x35, 0x9d, 0x8e};
-  char retry_packet28[] = {
-      0xff, 0xff, 0x00, 0x00, 0x1c, 0x00, 0x08, 0xf0, 0x67, 0xa5, 0x50, 0x2a,
-      0x42, 0x62, 0xb5, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0xf7, 0x1a, 0x5f, 0x12,
-      0xaf, 0xe3, 0xec, 0xf8, 0x00, 0x1a, 0x92, 0x0e, 0x6f, 0xdf, 0x1d, 0x63};
   char retry_packet29[] = {
       0xff, 0xff, 0x00, 0x00, 0x1d, 0x00, 0x08, 0xf0, 0x67, 0xa5, 0x50, 0x2a,
       0x42, 0x62, 0xb5, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0xd1, 0x69, 0x26, 0xd8,
@@ -10510,9 +10506,6 @@
   if (version() == ParsedQuicVersion::Draft29()) {
     retry_packet = retry_packet29;
     retry_packet_length = QUICHE_ARRAYSIZE(retry_packet29);
-  } else if (version() == ParsedQuicVersion::Draft28()) {
-    retry_packet = retry_packet28;
-    retry_packet_length = QUICHE_ARRAYSIZE(retry_packet28);
   } else if (version() == ParsedQuicVersion::Draft27()) {
     retry_packet = retry_packet27;
     retry_packet_length = QUICHE_ARRAYSIZE(retry_packet27);
diff --git a/quic/core/quic_dispatcher_test.cc b/quic/core/quic_dispatcher_test.cc
index fc8fd4a..ae084ec 100644
--- a/quic/core/quic_dispatcher_test.cc
+++ b/quic/core/quic_dispatcher_test.cc
@@ -1023,7 +1023,7 @@
 
 TEST_P(QuicDispatcherTestOneVersion,
        RejectDeprecatedVersionsWithVersionNegotiation) {
-  static_assert(quic::SupportedVersions().size() == 10u,
+  static_assert(quic::SupportedVersions().size() == 9u,
                 "Please add deprecated versions to this test");
   QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1);
   CreateTimeWaitListManager();
diff --git a/quic/core/quic_version_manager.cc b/quic/core/quic_version_manager.cc
index 951b7cb..90c4982 100644
--- a/quic/core/quic_version_manager.cc
+++ b/quic/core/quic_version_manager.cc
@@ -17,8 +17,6 @@
     ParsedQuicVersionVector supported_versions)
     : enable_version_draft_29_(
           GetQuicReloadableFlag(quic_enable_version_draft_29)),
-      enable_version_draft_28_(
-          GetQuicReloadableFlag(quic_enable_version_draft_28)),
       disable_version_draft_27_(
           GetQuicReloadableFlag(quic_disable_version_draft_27)),
       disable_version_draft_25_(
@@ -30,7 +28,7 @@
       disable_version_q046_(GetQuicReloadableFlag(quic_disable_version_q046)),
       disable_version_q043_(GetQuicReloadableFlag(quic_disable_version_q043)),
       allowed_supported_versions_(std::move(supported_versions)) {
-  static_assert(SupportedVersions().size() == 10u,
+  static_assert(SupportedVersions().size() == 9u,
                 "Supported versions out of sync");
   RefilterSupportedVersions();
 }
@@ -60,12 +58,10 @@
 }
 
 void QuicVersionManager::MaybeRefilterSupportedVersions() {
-  static_assert(SupportedVersions().size() == 10u,
+  static_assert(SupportedVersions().size() == 9u,
                 "Supported versions out of sync");
   if (enable_version_draft_29_ !=
           GetQuicReloadableFlag(quic_enable_version_draft_29) ||
-      enable_version_draft_28_ !=
-          GetQuicReloadableFlag(quic_enable_version_draft_28) ||
       disable_version_draft_27_ !=
           GetQuicReloadableFlag(quic_disable_version_draft_27) ||
       disable_version_draft_25_ !=
@@ -84,8 +80,6 @@
           GetQuicReloadableFlag(quic_disable_version_q043)) {
     enable_version_draft_29_ =
         GetQuicReloadableFlag(quic_enable_version_draft_29);
-    enable_version_draft_28_ =
-        GetQuicReloadableFlag(quic_enable_version_draft_28);
     disable_version_draft_27_ =
         GetQuicReloadableFlag(quic_disable_version_draft_27);
     disable_version_draft_25_ =
diff --git a/quic/core/quic_version_manager.h b/quic/core/quic_version_manager.h
index 6bdf2d3..e6bb8f6 100644
--- a/quic/core/quic_version_manager.h
+++ b/quic/core/quic_version_manager.h
@@ -54,8 +54,6 @@
   // Cached value of reloadable flags.
   // quic_enable_version_draft_29 flag
   bool enable_version_draft_29_;
-  // quic_enable_version_draft_28 flag
-  bool enable_version_draft_28_;
   // quic_disable_version_draft_27 flag
   bool disable_version_draft_27_;
   // quic_disable_version_draft_25 flag
diff --git a/quic/core/quic_version_manager_test.cc b/quic/core/quic_version_manager_test.cc
index 89d1d12..4687b79 100644
--- a/quic/core/quic_version_manager_test.cc
+++ b/quic/core/quic_version_manager_test.cc
@@ -18,10 +18,9 @@
 class QuicVersionManagerTest : public QuicTest {};
 
 TEST_F(QuicVersionManagerTest, QuicVersionManager) {
-  static_assert(SupportedVersions().size() == 10u,
+  static_assert(SupportedVersions().size() == 9u,
                 "Supported versions out of sync");
   SetQuicReloadableFlag(quic_enable_version_draft_29, false);
-  SetQuicReloadableFlag(quic_enable_version_draft_28, false);
   SetQuicReloadableFlag(quic_disable_version_draft_27, true);
   SetQuicReloadableFlag(quic_disable_version_draft_25, true);
   SetQuicReloadableFlag(quic_disable_version_t050, false);
@@ -70,10 +69,10 @@
               ElementsAre("h3-29", "h3-T050", "h3-Q050", "h3-Q049", "h3-Q048",
                           "h3-Q046", "h3-Q043"));
 
-  SetQuicReloadableFlag(quic_enable_version_draft_28, true);
+  SetQuicReloadableFlag(quic_disable_version_draft_27, false);
   expected_parsed_versions.insert(
       expected_parsed_versions.begin() + 1,
-      ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_28));
+      ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_27));
   EXPECT_EQ(expected_parsed_versions, manager.GetSupportedVersions());
   EXPECT_EQ(expected_parsed_versions.size() - 3,
             manager.GetSupportedVersionsWithQuicCrypto().size());
@@ -82,37 +81,21 @@
   EXPECT_EQ(CurrentSupportedVersionsWithQuicCrypto(),
             manager.GetSupportedVersionsWithQuicCrypto());
   EXPECT_THAT(manager.GetSupportedAlpns(),
-              ElementsAre("h3-29", "h3-28", "h3-T050", "h3-Q050", "h3-Q049",
+              ElementsAre("h3-29", "h3-27", "h3-T050", "h3-Q050", "h3-Q049",
                           "h3-Q048", "h3-Q046", "h3-Q043"));
 
-  SetQuicReloadableFlag(quic_disable_version_draft_27, false);
-  expected_parsed_versions.insert(
-      expected_parsed_versions.begin() + 2,
-      ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_27));
-  EXPECT_EQ(expected_parsed_versions, manager.GetSupportedVersions());
-  EXPECT_EQ(expected_parsed_versions.size() - 4,
-            manager.GetSupportedVersionsWithQuicCrypto().size());
-  EXPECT_EQ(FilterSupportedVersions(AllSupportedVersions()),
-            manager.GetSupportedVersions());
-  EXPECT_EQ(CurrentSupportedVersionsWithQuicCrypto(),
-            manager.GetSupportedVersionsWithQuicCrypto());
-  EXPECT_THAT(manager.GetSupportedAlpns(),
-              ElementsAre("h3-29", "h3-28", "h3-27", "h3-T050", "h3-Q050",
-                          "h3-Q049", "h3-Q048", "h3-Q046", "h3-Q043"));
-
   SetQuicReloadableFlag(quic_disable_version_draft_25, false);
   expected_parsed_versions.insert(
-      expected_parsed_versions.begin() + 3,
+      expected_parsed_versions.begin() + 2,
       ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_25));
   EXPECT_EQ(expected_parsed_versions, manager.GetSupportedVersions());
-  EXPECT_EQ(expected_parsed_versions.size() - 5,
+  EXPECT_EQ(expected_parsed_versions.size() - 4,
             manager.GetSupportedVersionsWithQuicCrypto().size());
   EXPECT_EQ(CurrentSupportedVersionsWithQuicCrypto(),
             manager.GetSupportedVersionsWithQuicCrypto());
-  EXPECT_THAT(
-      manager.GetSupportedAlpns(),
-      ElementsAre("h3-29", "h3-28", "h3-27", "h3-25", "h3-T050", "h3-Q050",
-                  "h3-Q049", "h3-Q048", "h3-Q046", "h3-Q043"));
+  EXPECT_THAT(manager.GetSupportedAlpns(),
+              ElementsAre("h3-29", "h3-27", "h3-25", "h3-T050", "h3-Q050",
+                          "h3-Q049", "h3-Q048", "h3-Q046", "h3-Q043"));
 }
 
 }  // namespace
diff --git a/quic/core/quic_versions.cc b/quic/core/quic_versions.cc
index 1a1ddc7..925993f 100644
--- a/quic/core/quic_versions.cc
+++ b/quic/core/quic_versions.cc
@@ -40,14 +40,12 @@
 }
 
 void SetVersionFlag(const ParsedQuicVersion& version, bool should_enable) {
-  static_assert(SupportedVersions().size() == 10u,
+  static_assert(SupportedVersions().size() == 9u,
                 "Supported versions out of sync");
   const bool enable = should_enable;
   const bool disable = !should_enable;
   if (version == ParsedQuicVersion::Draft29()) {
     SetQuicReloadableFlag(quic_enable_version_draft_29, enable);
-  } else if (version == ParsedQuicVersion::Draft28()) {
-    SetQuicReloadableFlag(quic_enable_version_draft_28, enable);
   } else if (version == ParsedQuicVersion::Draft27()) {
     SetQuicReloadableFlag(quic_disable_version_draft_27, disable);
   } else if (version == ParsedQuicVersion::Draft25()) {
@@ -191,7 +189,7 @@
 
 bool ParsedQuicVersion::AuthenticatesHandshakeConnectionIds() const {
   DCHECK(IsKnown());
-  return transport_version >= QUIC_VERSION_IETF_DRAFT_28;
+  return transport_version > QUIC_VERSION_IETF_DRAFT_27;
 }
 
 bool ParsedQuicVersion::UsesTls() const {
@@ -247,7 +245,7 @@
                << parsed_version.handshake_protocol;
       return 0;
   }
-  static_assert(SupportedVersions().size() == 10u,
+  static_assert(SupportedVersions().size() == 9u,
                 "Supported versions out of sync");
   switch (parsed_version.transport_version) {
     case QUIC_VERSION_43:
@@ -272,12 +270,6 @@
       }
       QUIC_BUG << "QUIC_VERSION_IETF_DRAFT_27 requires TLS";
       return 0;
-    case QUIC_VERSION_IETF_DRAFT_28:
-      if (parsed_version.handshake_protocol == PROTOCOL_TLS1_3) {
-        return MakeVersionLabel(0xff, 0x00, 0x00, 28);
-      }
-      QUIC_BUG << "QUIC_VERSION_IETF_DRAFT_28 requires TLS";
-      return 0;
     case QUIC_VERSION_IETF_DRAFT_29:
       if (parsed_version.handshake_protocol == PROTOCOL_TLS1_3) {
         return MakeVersionLabel(0xff, 0x00, 0x00, 29);
@@ -445,11 +437,6 @@
       if (GetQuicReloadableFlag(quic_enable_version_draft_29)) {
         filtered_versions.push_back(version);
       }
-    } else if (version.transport_version == QUIC_VERSION_IETF_DRAFT_28) {
-      QUIC_BUG_IF(version.handshake_protocol != PROTOCOL_TLS1_3);
-      if (GetQuicReloadableFlag(quic_enable_version_draft_28)) {
-        filtered_versions.push_back(version);
-      }
     } else if (version.transport_version == QUIC_VERSION_IETF_DRAFT_27) {
       QUIC_BUG_IF(version.handshake_protocol != PROTOCOL_TLS1_3);
       if (!GetQuicReloadableFlag(quic_disable_version_draft_27)) {
@@ -576,7 +563,7 @@
     return #x
 
 std::string QuicVersionToString(QuicTransportVersion transport_version) {
-  static_assert(SupportedTransportVersions().size() == 9u,
+  static_assert(SupportedTransportVersions().size() == 8u,
                 "Supported versions out of sync");
   switch (transport_version) {
     RETURN_STRING_LITERAL(QUIC_VERSION_43);
@@ -586,7 +573,6 @@
     RETURN_STRING_LITERAL(QUIC_VERSION_50);
     RETURN_STRING_LITERAL(QUIC_VERSION_IETF_DRAFT_25);
     RETURN_STRING_LITERAL(QUIC_VERSION_IETF_DRAFT_27);
-    RETURN_STRING_LITERAL(QUIC_VERSION_IETF_DRAFT_28);
     RETURN_STRING_LITERAL(QUIC_VERSION_IETF_DRAFT_29);
     RETURN_STRING_LITERAL(QUIC_VERSION_UNSUPPORTED);
     RETURN_STRING_LITERAL(QUIC_VERSION_RESERVED_FOR_NEGOTIATION);
@@ -692,8 +678,6 @@
   if (parsed_version.handshake_protocol == PROTOCOL_TLS1_3) {
     if (parsed_version.transport_version == QUIC_VERSION_IETF_DRAFT_29) {
       return "h3-29";
-    } else if (parsed_version.transport_version == QUIC_VERSION_IETF_DRAFT_28) {
-      return "h3-28";
     } else if (parsed_version.transport_version == QUIC_VERSION_IETF_DRAFT_27) {
       return "h3-27";
     } else if (parsed_version.transport_version == QUIC_VERSION_IETF_DRAFT_25) {
diff --git a/quic/core/quic_versions.h b/quic/core/quic_versions.h
index d42c13f..9c7288a 100644
--- a/quic/core/quic_versions.h
+++ b/quic/core/quic_versions.h
@@ -119,7 +119,7 @@
   QUIC_VERSION_50 = 50,  // Header protection and initial obfuscators.
   QUIC_VERSION_IETF_DRAFT_25 = 70,  // draft-ietf-quic-transport-25.
   QUIC_VERSION_IETF_DRAFT_27 = 71,  // draft-ietf-quic-transport-27.
-  QUIC_VERSION_IETF_DRAFT_28 = 72,  // draft-ietf-quic-transport-28.
+  // Number 72 used to represent draft-ietf-quic-transport-28.
   QUIC_VERSION_IETF_DRAFT_29 = 73,  // draft-ietf-quic-transport-29.
   // Version 99 was a dumping ground for IETF QUIC changes which were not yet
   // yet ready for production between 2018-02 and 2020-02.
@@ -135,9 +135,8 @@
 
 // This array contains QUIC transport versions which we currently support.
 // DEPRECATED. Use SupportedVersions() instead.
-constexpr std::array<QuicTransportVersion, 9> SupportedTransportVersions() {
+constexpr std::array<QuicTransportVersion, 8> SupportedTransportVersions() {
   return {QUIC_VERSION_IETF_DRAFT_29,
-          QUIC_VERSION_IETF_DRAFT_28,
           QUIC_VERSION_IETF_DRAFT_27,
           QUIC_VERSION_IETF_DRAFT_25,
           QUIC_VERSION_50,
@@ -201,7 +200,6 @@
       return transport_version != QUIC_VERSION_UNSUPPORTED &&
              transport_version != QUIC_VERSION_IETF_DRAFT_25 &&
              transport_version != QUIC_VERSION_IETF_DRAFT_27 &&
-             transport_version != QUIC_VERSION_IETF_DRAFT_28 &&
              transport_version != QUIC_VERSION_IETF_DRAFT_29;
     case PROTOCOL_TLS1_3:
       // The TLS handshake is only deployable if CRYPTO frames are also used.
@@ -257,10 +255,6 @@
     return ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_29);
   }
 
-  static constexpr ParsedQuicVersion Draft28() {
-    return ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_28);
-  }
-
   static constexpr ParsedQuicVersion Draft27() {
     return ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_27);
   }
@@ -429,13 +423,13 @@
   return {PROTOCOL_TLS1_3, PROTOCOL_QUIC_CRYPTO};
 }
 
-constexpr std::array<ParsedQuicVersion, 10> SupportedVersions() {
+constexpr std::array<ParsedQuicVersion, 9> SupportedVersions() {
   return {
-      ParsedQuicVersion::Draft29(), ParsedQuicVersion::Draft28(),
-      ParsedQuicVersion::Draft27(), ParsedQuicVersion::Draft25(),
-      ParsedQuicVersion::T050(),    ParsedQuicVersion::Q050(),
-      ParsedQuicVersion::Q049(),    ParsedQuicVersion::Q048(),
-      ParsedQuicVersion::Q046(),    ParsedQuicVersion::Q043(),
+      ParsedQuicVersion::Draft29(), ParsedQuicVersion::Draft27(),
+      ParsedQuicVersion::Draft25(), ParsedQuicVersion::T050(),
+      ParsedQuicVersion::Q050(),    ParsedQuicVersion::Q049(),
+      ParsedQuicVersion::Q048(),    ParsedQuicVersion::Q046(),
+      ParsedQuicVersion::Q043(),
   };
 }
 
diff --git a/quic/core/quic_versions_test.cc b/quic/core/quic_versions_test.cc
index 14c5793..c7ebb82 100644
--- a/quic/core/quic_versions_test.cc
+++ b/quic/core/quic_versions_test.cc
@@ -239,8 +239,6 @@
   EXPECT_EQ(ParsedQuicVersion::T050(), ParseQuicVersionString("h3-T050"));
   EXPECT_EQ(ParsedQuicVersion::Draft29(), ParseQuicVersionString("ff00001d"));
   EXPECT_EQ(ParsedQuicVersion::Draft29(), ParseQuicVersionString("h3-29"));
-  EXPECT_EQ(ParsedQuicVersion::Draft28(), ParseQuicVersionString("ff00001c"));
-  EXPECT_EQ(ParsedQuicVersion::Draft28(), ParseQuicVersionString("h3-28"));
   EXPECT_EQ(ParsedQuicVersion::Draft27(), ParseQuicVersionString("ff00001b"));
   EXPECT_EQ(ParsedQuicVersion::Draft27(), ParseQuicVersionString("h3-27"));
   EXPECT_EQ(ParsedQuicVersion::Draft25(), ParseQuicVersionString("ff000019"));
@@ -255,8 +253,6 @@
                                      QUIC_VERSION_IETF_DRAFT_25);
   ParsedQuicVersion version_draft_27(PROTOCOL_TLS1_3,
                                      QUIC_VERSION_IETF_DRAFT_27);
-  ParsedQuicVersion version_draft_28(PROTOCOL_TLS1_3,
-                                     QUIC_VERSION_IETF_DRAFT_28);
   ParsedQuicVersion version_draft_29 = ParsedQuicVersion::Draft29();
 
   EXPECT_THAT(ParseQuicVersionVectorString(""), IsEmpty());
@@ -278,8 +274,6 @@
               ElementsAre(version_draft_25, version_draft_27));
   EXPECT_THAT(ParseQuicVersionVectorString("h3-27,h3-25"),
               ElementsAre(version_draft_27, version_draft_25));
-  EXPECT_THAT(ParseQuicVersionVectorString("h3-28,h3-27"),
-              ElementsAre(version_draft_28, version_draft_27));
   EXPECT_THAT(ParseQuicVersionVectorString("h3-29,h3-27"),
               ElementsAre(version_draft_29, version_draft_27));
 
@@ -499,7 +493,7 @@
 // yet a typo was made in doing the #defines and it was caught
 // only in some test far removed from here... Better safe than sorry.
 TEST_F(QuicVersionsTest, CheckTransportVersionNumbersForTypos) {
-  static_assert(SupportedTransportVersions().size() == 9u,
+  static_assert(SupportedTransportVersions().size() == 8u,
                 "Supported versions out of sync");
   EXPECT_EQ(QUIC_VERSION_43, 43);
   EXPECT_EQ(QUIC_VERSION_46, 46);
@@ -508,12 +502,11 @@
   EXPECT_EQ(QUIC_VERSION_50, 50);
   EXPECT_EQ(QUIC_VERSION_IETF_DRAFT_25, 70);
   EXPECT_EQ(QUIC_VERSION_IETF_DRAFT_27, 71);
-  EXPECT_EQ(QUIC_VERSION_IETF_DRAFT_28, 72);
   EXPECT_EQ(QUIC_VERSION_IETF_DRAFT_29, 73);
 }
 
 TEST_F(QuicVersionsTest, AlpnForVersion) {
-  static_assert(SupportedVersions().size() == 10u,
+  static_assert(SupportedVersions().size() == 9u,
                 "Supported versions out of sync");
   ParsedQuicVersion parsed_version_q048 = ParsedQuicVersion::Q048();
   ParsedQuicVersion parsed_version_q049 = ParsedQuicVersion::Q049();
@@ -521,7 +514,6 @@
   ParsedQuicVersion parsed_version_t050 = ParsedQuicVersion::T050();
   ParsedQuicVersion parsed_version_draft_25 = ParsedQuicVersion::Draft25();
   ParsedQuicVersion parsed_version_draft_27 = ParsedQuicVersion::Draft27();
-  ParsedQuicVersion parsed_version_draft_28 = ParsedQuicVersion::Draft28();
 
   EXPECT_EQ("h3-Q048", AlpnForVersion(parsed_version_q048));
   EXPECT_EQ("h3-Q049", AlpnForVersion(parsed_version_q049));
@@ -529,7 +521,6 @@
   EXPECT_EQ("h3-T050", AlpnForVersion(parsed_version_t050));
   EXPECT_EQ("h3-25", AlpnForVersion(parsed_version_draft_25));
   EXPECT_EQ("h3-27", AlpnForVersion(parsed_version_draft_27));
-  EXPECT_EQ("h3-28", AlpnForVersion(parsed_version_draft_28));
   EXPECT_EQ("h3-29", AlpnForVersion(ParsedQuicVersion::Draft29()));
 }