blob: e59eb9124af485eb51ab859ea7be1f6cd812b2e8 [file] [log] [blame]
// Copyright (c) 2021 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_TEST_BACKEND_H_
#define QUICHE_QUIC_TEST_TOOLS_QUIC_TEST_BACKEND_H_
#include "quiche/quic/tools/quic_memory_cache_backend.h"
#include "quiche/common/platform/api/quiche_logging.h"
#include "quiche/spdy/core/http2_header_block.h"
namespace quic {
namespace test {
// QuicTestBackend is a QuicSimpleServer backend usable in tests. It has extra
// WebTransport endpoints on top of what QuicMemoryCacheBackend already
// provides.
class QuicTestBackend : public QuicMemoryCacheBackend {
public:
WebTransportResponse ProcessWebTransportRequest(
const spdy::Http2HeaderBlock& request_headers,
WebTransportSession* session) override;
bool SupportsWebTransport() override { return enable_webtransport_; }
void set_enable_webtransport(bool enable_webtransport) {
QUICHE_DCHECK(!enable_webtransport || enable_extended_connect_);
enable_webtransport_ = enable_webtransport;
}
bool SupportsExtendedConnect() override { return enable_extended_connect_; }
void set_enable_extended_connect(bool enable_extended_connect) {
enable_extended_connect_ = enable_extended_connect;
}
private:
bool enable_webtransport_ = false;
bool enable_extended_connect_ = true;
};
} // namespace test
} // namespace quic
#endif // QUICHE_QUIC_TEST_TOOLS_QUIC_TEST_BACKEND_H_