Don't create NullEncrypter/Decrypter in QuicFramer

gfe-relnote: Changes when/where ENCRYPTION_INITIAL crypters are created in QUIC, protected by reloadable flag quic_framer_doesnt_create_initial_encrypter
PiperOrigin-RevId: 270083544
Change-Id: I27db7b0f8fd094215e7385e54456c2eb807610ab
diff --git a/quic/core/quic_framer.cc b/quic/core/quic_framer.cc
index 010d478..e33dc00 100644
--- a/quic/core/quic_framer.cc
+++ b/quic/core/quic_framer.cc
@@ -424,14 +424,22 @@
           expected_server_connection_id_length),
       expected_client_connection_id_length_(0),
       supports_multiple_packet_number_spaces_(false),
+      framer_doesnt_create_initial_encrypter_(
+          GetQuicReloadableFlag(quic_framer_doesnt_create_initial_encrypter)),
       last_written_packet_number_length_(0),
       peer_ack_delay_exponent_(kDefaultAckDelayExponent),
       local_ack_delay_exponent_(kDefaultAckDelayExponent),
       current_received_frame_type_(0) {
   DCHECK(!supported_versions.empty());
   version_ = supported_versions_[0];
-  decrypter_[ENCRYPTION_INITIAL] = std::make_unique<NullDecrypter>(perspective);
-  encrypter_[ENCRYPTION_INITIAL] = std::make_unique<NullEncrypter>(perspective);
+  if (!framer_doesnt_create_initial_encrypter_) {
+    decrypter_[ENCRYPTION_INITIAL] =
+        std::make_unique<NullDecrypter>(perspective);
+    encrypter_[ENCRYPTION_INITIAL] =
+        std::make_unique<NullEncrypter>(perspective);
+  } else {
+    QUIC_RELOADABLE_FLAG_COUNT(quic_framer_doesnt_create_initial_encrypter);
+  }
 }
 
 QuicFramer::~QuicFramer() {}