1 // Copyright 2013 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef NET_QUIC_QUIC_CRYPTO_CLIENT_STREAM_FACTORY_H_
6 #define NET_QUIC_QUIC_CRYPTO_CLIENT_STREAM_FACTORY_H_
10 #include "net/base/net_export.h"
11 #include "net/third_party/quiche/src/quiche/quic/core/quic_server_id.h"
14 class ProofVerifyContext;
17 class QuicChromiumClientSession;
20 class QuicCryptoClientConfig;
22 class QuicCryptoClientStream;
26 // An interface used to instantiate quic::QuicCryptoClientStream objects. Used
27 // to facilitate testing code with mock implementations.
28 class NET_EXPORT QuicCryptoClientStreamFactory {
30 virtual ~QuicCryptoClientStreamFactory() = default;
32 virtual std::unique_ptr<quic::QuicCryptoClientStream>
33 CreateQuicCryptoClientStream(
34 const quic::QuicServerId& server_id,
35 QuicChromiumClientSession* session,
36 std::unique_ptr<quic::ProofVerifyContext> proof_verify_context,
37 quic::QuicCryptoClientConfig* crypto_config) = 0;
39 static QuicCryptoClientStreamFactory* GetDefaultFactory();
44 #endif // NET_QUIC_QUIC_CRYPTO_CLIENT_STREAM_FACTORY_H_