gfe-relnote: In QUIC v47+, use variable packet number length in long header packet. Protected by DISABLED gfe2_reloadable_flag_quic_enable_version_47.

PiperOrigin-RevId: 253292288
Change-Id: Ife584a4c416dba0d63462b9a9e7f925917af6378
diff --git a/quic/core/quic_packet_creator.cc b/quic/core/quic_packet_creator.cc
index 7ba82e3..eb0596f 100644
--- a/quic/core/quic_packet_creator.cc
+++ b/quic/core/quic_packet_creator.cc
@@ -832,7 +832,8 @@
 }
 
 QuicPacketNumberLength QuicPacketCreator::GetPacketNumberLength() const {
-  if (HasIetfLongHeader() && framer_->transport_version() != QUIC_VERSION_99) {
+  if (HasIetfLongHeader() &&
+      !framer_->version().SendsVariableLengthPacketNumberInLongHeader()) {
     return PACKET_4BYTE_PACKET_NUMBER;
   }
   return packet_.packet_number_length;
diff --git a/quic/core/quic_packet_creator_test.cc b/quic/core/quic_packet_creator_test.cc
index d960342..a661c24 100644
--- a/quic/core/quic_packet_creator_test.cc
+++ b/quic/core/quic_packet_creator_test.cc
@@ -1108,7 +1108,7 @@
 
 TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthLeastAwaiting) {
   if (VersionHasIetfInvariantHeader(GetParam().version.transport_version) &&
-      GetParam().version.transport_version != QUIC_VERSION_99) {
+      !GetParam().version.SendsVariableLengthPacketNumberInLongHeader()) {
     EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER,
               QuicPacketCreatorPeer::GetPacketNumberLength(&creator_));
     creator_.set_encryption_level(ENCRYPTION_FORWARD_SECURE);
@@ -1146,7 +1146,7 @@
 TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthCwnd) {
   QuicPacketCreatorPeer::SetPacketNumber(&creator_, 1);
   if (VersionHasIetfInvariantHeader(GetParam().version.transport_version) &&
-      GetParam().version.transport_version != QUIC_VERSION_99) {
+      !GetParam().version.SendsVariableLengthPacketNumberInLongHeader()) {
     EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER,
               QuicPacketCreatorPeer::GetPacketNumberLength(&creator_));
     creator_.set_encryption_level(ENCRYPTION_FORWARD_SECURE);
diff --git a/quic/core/quic_versions.cc b/quic/core/quic_versions.cc
index ecb6bd5..9c4027d 100644
--- a/quic/core/quic_versions.cc
+++ b/quic/core/quic_versions.cc
@@ -50,6 +50,10 @@
   return transport_version > QUIC_VERSION_46;
 }
 
+bool ParsedQuicVersion::SendsVariableLengthPacketNumberInLongHeader() const {
+  return transport_version > QUIC_VERSION_46;
+}
+
 bool ParsedQuicVersion::SupportsClientConnectionIds() const {
   if (!GetQuicRestartFlag(quic_do_not_override_connection_id)) {
     // Do not enable this feature in a production version until this flag has
diff --git a/quic/core/quic_versions.h b/quic/core/quic_versions.h
index 8a64a12..dd10d96 100644
--- a/quic/core/quic_versions.h
+++ b/quic/core/quic_versions.h
@@ -163,6 +163,10 @@
   // Returns whether this version supports IETF RETRY packets.
   bool SupportsRetry() const;
 
+  // Returns true if this version sends variable length packet number in long
+  // header.
+  bool SendsVariableLengthPacketNumberInLongHeader() const;
+
   // Returns whether this version supports client connection ID.
   bool SupportsClientConnectionIds() const;
 };