Index: net/http2/decoder/frame_decoder_state_test_util.h |
diff --git a/net/http2/decoder/frame_decoder_state_test_util.h b/net/http2/decoder/frame_decoder_state_test_util.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e32a401101c19324266fdd88091ffe658295b4a0 |
--- /dev/null |
+++ b/net/http2/decoder/frame_decoder_state_test_util.h |
@@ -0,0 +1,36 @@ |
+// Copyright 2016 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 NET_HTTP2_DECODER_FRAME_DECODER_STATE_TEST_UTIL_H_ |
+#define NET_HTTP2_DECODER_FRAME_DECODER_STATE_TEST_UTIL_H_ |
+ |
+#include "net/http2/decoder/frame_decoder_state.h" |
+#include "net/http2/http2_structures.h" |
+#include "net/http2/tools/random_decoder_test.h" |
+ |
+namespace net { |
+namespace test { |
+ |
+class FrameDecoderStatePeer { |
+ public: |
+ // Randomizes (i.e. corrupts) the fields of the FrameDecoderState. |
+ // PayloadDecoderBaseTest::StartDecoding calls this before passing the first |
+ // decode buffer to the payload decoder, which increases the likelihood of |
+ // detecting any use of prior states of the decoder on the decoding of |
+ // future payloads. |
+ static void Randomize(FrameDecoderState* p, RandomBase* rng); |
+ |
+ // Inject a frame header into the FrameDecoderState. |
+ // PayloadDecoderBaseTest::StartDecoding calls this just after calling |
+ // Randomize (above), to simulate a full frame decoder having just finished |
+ // decoding the common frame header and then calling the appropriate payload |
+ // decoder based on the frame type in that frame header. |
+ static void set_frame_header(const Http2FrameHeader& header, |
+ FrameDecoderState* p); |
+}; |
+ |
+} // namespace test |
+} // namespace net |
+ |
+#endif // NET_HTTP2_DECODER_FRAME_DECODER_STATE_TEST_UTIL_H_ |