Use WriteOrBufferDataAtLevel to send crypto data. Such that existing WriteOrBufferData is used to send application data.

Change SendHandshakeMessage to take encryption level instead of using current default encryption level.

Protected by FLAGS_quic_reloadable_flag_quic_use_write_or_buffer_data_at_level.

PiperOrigin-RevId: 339927045
Change-Id: Ifa17962e5f70e6d4ed2d5aa8627150872f5dd69d
diff --git a/quic/core/quic_framer.h b/quic/core/quic_framer.h
index 86c8882..e6936e0 100644
--- a/quic/core/quic_framer.h
+++ b/quic/core/quic_framer.h
@@ -621,6 +621,10 @@
   // Returns true if an encrypter of |space| is available.
   bool HasAnEncrypterForSpace(PacketNumberSpace space) const;
 
+  // Returns the encryption level to send application data. This should be only
+  // called with available encrypter for application data.
+  EncryptionLevel GetEncryptionLevelToSendApplicationData() const;
+
   void set_validate_flags(bool value) { validate_flags_ = value; }
 
   Perspective perspective() const { return perspective_; }