blob: 8955cb7b3aa38acdc683f9ef976ae6e45f31d156 [file] [log] [blame]
// 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 QUICHE_HTTP2_DECODER_FRAME_DECODER_STATE_TEST_UTIL_H_
#define QUICHE_HTTP2_DECODER_FRAME_DECODER_STATE_TEST_UTIL_H_
#include "http2/decoder/frame_decoder_state.h"
#include "http2/http2_structures.h"
#include "http2/tools/random_decoder_test.h"
namespace http2 {
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, Http2Random* 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 http2
#endif // QUICHE_HTTP2_DECODER_FRAME_DECODER_STATE_TEST_UTIL_H_