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. 4 5 #ifndef NET_QUIC_QUIC_CRYPTO_CLIENT_STREAM_FACTORY_H_ 6 #define NET_QUIC_QUIC_CRYPTO_CLIENT_STREAM_FACTORY_H_ 7 8 #include <memory> 9 10 #include "net/base/net_export.h" 11 #include "net/third_party/quiche/src/quiche/quic/core/quic_server_id.h" 12 13 namespace quic { 14 class ProofVerifyContext; 15 } // namespace quic 16 namespace net { 17 class QuicChromiumClientSession; 18 } // namespace net 19 namespace quic { 20 class QuicCryptoClientConfig; 21 22 class QuicCryptoClientStream; 23 } // namespace quic 24 namespace net { 25 26 // An interface used to instantiate quic::QuicCryptoClientStream objects. Used 27 // to facilitate testing code with mock implementations. 28 class NET_EXPORT QuicCryptoClientStreamFactory { 29 public: 30 virtual ~QuicCryptoClientStreamFactory() = default; 31 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; 38 39 static QuicCryptoClientStreamFactory* GetDefaultFactory(); 40 }; 41 42 } // namespace net 43 44 #endif // NET_QUIC_QUIC_CRYPTO_CLIENT_STREAM_FACTORY_H_ 45