| // 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_ |