Project import generated by Copybara.
PiperOrigin-RevId: 237361882
Change-Id: I109a68f44db867b20f8c6a7732b0ce657133e52a
diff --git a/quic/test_tools/quic_framer_peer.h b/quic/test_tools/quic_framer_peer.h
new file mode 100644
index 0000000..94509b5
--- /dev/null
+++ b/quic/test_tools/quic_framer_peer.h
@@ -0,0 +1,177 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef QUICHE_QUIC_TEST_TOOLS_QUIC_FRAMER_PEER_H_
+#define QUICHE_QUIC_TEST_TOOLS_QUIC_FRAMER_PEER_H_
+
+#include "base/macros.h"
+#include "net/third_party/quiche/src/quic/core/crypto/quic_encrypter.h"
+#include "net/third_party/quiche/src/quic/core/quic_framer.h"
+#include "net/third_party/quiche/src/quic/core/quic_packets.h"
+
+namespace quic {
+
+namespace test {
+
+class QuicFramerPeer {
+ public:
+ QuicFramerPeer() = delete;
+
+ static uint64_t CalculatePacketNumberFromWire(
+ QuicFramer* framer,
+ QuicPacketNumberLength packet_number_length,
+ QuicPacketNumber last_packet_number,
+ uint64_t packet_number);
+ static void SetLastSerializedConnectionId(QuicFramer* framer,
+ QuicConnectionId connection_id);
+ static void SetLargestPacketNumber(QuicFramer* framer,
+ QuicPacketNumber packet_number);
+ static void SetPerspective(QuicFramer* framer, Perspective perspective);
+
+ // SwapCrypters exchanges the state of the crypters of |framer1| with
+ // |framer2|.
+ static void SwapCrypters(QuicFramer* framer1, QuicFramer* framer2);
+
+ static QuicEncrypter* GetEncrypter(QuicFramer* framer, EncryptionLevel level);
+
+ // IETF defined frame append/process methods.
+ static bool ProcessIetfStreamFrame(QuicFramer* framer,
+ QuicDataReader* reader,
+ uint8_t frame_type,
+ QuicStreamFrame* frame);
+ static bool AppendIetfStreamFrame(QuicFramer* framer,
+ const QuicStreamFrame& frame,
+ bool last_frame_in_packet,
+ QuicDataWriter* writer);
+ static bool ProcessCryptoFrame(QuicFramer* framer,
+ QuicDataReader* reader,
+ QuicCryptoFrame* frame);
+ static bool AppendCryptoFrame(QuicFramer* framer,
+ const QuicCryptoFrame& frame,
+ QuicDataWriter* writer);
+
+ static bool AppendIetfConnectionCloseFrame(
+ QuicFramer* framer,
+ const QuicConnectionCloseFrame& frame,
+ QuicDataWriter* writer);
+ static bool AppendApplicationCloseFrame(
+ QuicFramer* framer,
+ const QuicApplicationCloseFrame& frame,
+ QuicDataWriter* writer);
+ static bool ProcessIetfConnectionCloseFrame(QuicFramer* framer,
+ QuicDataReader* reader,
+ QuicConnectionCloseFrame* frame);
+ static bool ProcessApplicationCloseFrame(QuicFramer* framer,
+ QuicDataReader* reader,
+ QuicApplicationCloseFrame* frame);
+ static bool ProcessIetfAckFrame(QuicFramer* framer,
+ QuicDataReader* reader,
+ uint64_t frame_type,
+ QuicAckFrame* ack_frame);
+ static bool AppendIetfAckFrameAndTypeByte(QuicFramer* framer,
+ const QuicAckFrame& frame,
+ QuicDataWriter* writer);
+ static size_t GetIetfAckFrameSize(QuicFramer* framer,
+ const QuicAckFrame& frame);
+ static bool AppendIetfResetStreamFrame(QuicFramer* framer,
+ const QuicRstStreamFrame& frame,
+ QuicDataWriter* writer);
+ static bool ProcessIetfResetStreamFrame(QuicFramer* framer,
+ QuicDataReader* reader,
+ QuicRstStreamFrame* frame);
+
+ static bool ProcessPathChallengeFrame(QuicFramer* framer,
+ QuicDataReader* reader,
+ QuicPathChallengeFrame* frame);
+ static bool ProcessPathResponseFrame(QuicFramer* framer,
+ QuicDataReader* reader,
+ QuicPathResponseFrame* frame);
+
+ static bool AppendPathChallengeFrame(QuicFramer* framer,
+ const QuicPathChallengeFrame& frame,
+ QuicDataWriter* writer);
+ static bool AppendPathResponseFrame(QuicFramer* framer,
+ const QuicPathResponseFrame& frame,
+ QuicDataWriter* writer);
+
+ static bool ProcessStopSendingFrame(QuicFramer* framer,
+ QuicDataReader* reader,
+ QuicStopSendingFrame* stop_sending_frame);
+ static bool AppendStopSendingFrame(
+ QuicFramer* framer,
+ const QuicStopSendingFrame& stop_sending_frame,
+ QuicDataWriter* writer);
+
+ // Append/consume IETF-Format MAX_DATA and MAX_STREAM_DATA frames
+ static bool AppendMaxDataFrame(QuicFramer* framer,
+ const QuicWindowUpdateFrame& frame,
+ QuicDataWriter* writer);
+ static bool AppendMaxStreamDataFrame(QuicFramer* framer,
+ const QuicWindowUpdateFrame& frame,
+ QuicDataWriter* writer);
+ static bool ProcessMaxDataFrame(QuicFramer* framer,
+ QuicDataReader* reader,
+ QuicWindowUpdateFrame* frame);
+ static bool ProcessMaxStreamDataFrame(QuicFramer* framer,
+ QuicDataReader* reader,
+ QuicWindowUpdateFrame* frame);
+ static bool AppendMaxStreamsFrame(QuicFramer* framer,
+ const QuicMaxStreamIdFrame& frame,
+ QuicDataWriter* writer);
+ static bool ProcessMaxStreamsFrame(QuicFramer* framer,
+ QuicDataReader* reader,
+ QuicMaxStreamIdFrame* frame,
+ uint64_t frame_type);
+ static bool AppendIetfBlockedFrame(QuicFramer* framer,
+ const QuicBlockedFrame& frame,
+ QuicDataWriter* writer);
+ static bool ProcessIetfBlockedFrame(QuicFramer* framer,
+ QuicDataReader* reader,
+ QuicBlockedFrame* frame);
+
+ static bool AppendStreamBlockedFrame(QuicFramer* framer,
+ const QuicBlockedFrame& frame,
+ QuicDataWriter* writer);
+ static bool ProcessStreamBlockedFrame(QuicFramer* framer,
+ QuicDataReader* reader,
+ QuicBlockedFrame* frame);
+
+ static bool AppendStreamsBlockedFrame(QuicFramer* framer,
+ const QuicStreamIdBlockedFrame& frame,
+ QuicDataWriter* writer);
+ static bool ProcessStreamsBlockedFrame(QuicFramer* framer,
+ QuicDataReader* reader,
+ QuicStreamIdBlockedFrame* frame,
+ uint64_t frame_type);
+
+ static bool AppendNewConnectionIdFrame(QuicFramer* framer,
+ const QuicNewConnectionIdFrame& frame,
+ QuicDataWriter* writer);
+ static bool ProcessNewConnectionIdFrame(QuicFramer* framer,
+ QuicDataReader* reader,
+ QuicNewConnectionIdFrame* frame);
+ static bool AppendRetireConnectionIdFrame(
+ QuicFramer* framer,
+ const QuicRetireConnectionIdFrame& frame,
+ QuicDataWriter* writer);
+ static bool ProcessRetireConnectionIdFrame(
+ QuicFramer* framer,
+ QuicDataReader* reader,
+ QuicRetireConnectionIdFrame* frame);
+ static size_t ComputeFrameLength(QuicFramer* framer,
+ const QuicFrame& frame,
+ bool last_frame_in_packet,
+ QuicPacketNumberLength packet_number_length);
+ static void SetFirstSendingPacketNumber(QuicFramer* framer,
+ uint64_t packet_number);
+ static void SetExpectedConnectionIDLength(
+ QuicFramer* framer,
+ uint8_t expected_connection_id_length);
+};
+
+} // namespace test
+
+} // namespace quic
+
+#endif // QUICHE_QUIC_TEST_TOOLS_QUIC_FRAMER_PEER_H_