blob: 3c6fde9ecee04febc2a108576609c654e3a3a841 [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_TEST_TOOLS_FRAME_DECODER_STATE_TEST_UTIL_H_
#define QUICHE_HTTP2_TEST_TOOLS_FRAME_DECODER_STATE_TEST_UTIL_H_
#include "quiche/http2/decoder/frame_decoder_state.h"
#include "quiche/http2/http2_structures.h"
#include "quiche/http2/test_tools/random_decoder_test_base.h"
#include "quiche/common/platform/api/quiche_export.h"
namespace http2 {
namespace test {
class QUICHE_NO_EXPORT 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_TEST_TOOLS_FRAME_DECODER_STATE_TEST_UTIL_H_