1 // Copyright (c) 2021 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef QUICHE_QUIC_TEST_TOOLS_QUIC_TEST_BACKEND_H_ 6 #define QUICHE_QUIC_TEST_TOOLS_QUIC_TEST_BACKEND_H_ 7 8 #include "quiche/quic/tools/quic_memory_cache_backend.h" 9 #include "quiche/common/platform/api/quiche_logging.h" 10 #include "quiche/spdy/core/http2_header_block.h" 11 12 namespace quic { 13 namespace test { 14 15 // QuicTestBackend is a QuicSimpleServer backend usable in tests. It has extra 16 // WebTransport endpoints on top of what QuicMemoryCacheBackend already 17 // provides. 18 class QuicTestBackend : public QuicMemoryCacheBackend { 19 public: 20 WebTransportResponse ProcessWebTransportRequest( 21 const spdy::Http2HeaderBlock& request_headers, 22 WebTransportSession* session) override; SupportsWebTransport()23 bool SupportsWebTransport() override { return enable_webtransport_; } 24 set_enable_webtransport(bool enable_webtransport)25 void set_enable_webtransport(bool enable_webtransport) { 26 QUICHE_DCHECK(!enable_webtransport || enable_extended_connect_); 27 enable_webtransport_ = enable_webtransport; 28 } 29 SupportsExtendedConnect()30 bool SupportsExtendedConnect() override { return enable_extended_connect_; } 31 set_enable_extended_connect(bool enable_extended_connect)32 void set_enable_extended_connect(bool enable_extended_connect) { 33 enable_extended_connect_ = enable_extended_connect; 34 } 35 36 private: 37 bool enable_webtransport_ = false; 38 bool enable_extended_connect_ = true; 39 }; 40 41 } // namespace test 42 } // namespace quic 43 44 #endif // QUICHE_QUIC_TEST_TOOLS_QUIC_TEST_BACKEND_H_ 45