| // Copyright (c) 2013 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 NET_QUIC_MOCK_CRYPTO_CLIENT_STREAM_FACTORY_H_ |
| #define NET_QUIC_MOCK_CRYPTO_CLIENT_STREAM_FACTORY_H_ |
| |
| #include <memory> |
| #include <string> |
| |
| #include "base/containers/queue.h" |
| #include "base/macros.h" |
| #include "net/quic/crypto/proof_verifier_chromium.h" |
| #include "net/quic/mock_crypto_client_stream.h" |
| #include "net/quic/quic_crypto_client_stream_factory.h" |
| #include "net/third_party/quic/core/quic_server_id.h" |
| |
| namespace quic { |
| class QuicCryptoClientStream; |
| } // namespace quic |
| namespace net { |
| |
| class MockCryptoClientStreamFactory : public QuicCryptoClientStreamFactory { |
| public: |
| MockCryptoClientStreamFactory(); |
| ~MockCryptoClientStreamFactory() override; |
| |
| quic::QuicCryptoClientStream* CreateQuicCryptoClientStream( |
| const quic::QuicServerId& server_id, |
| QuicChromiumClientSession* session, |
| std::unique_ptr<quic::ProofVerifyContext> proof_verify_context, |
| quic::QuicCryptoClientConfig* crypto_config) override; |
| |
| void set_handshake_mode( |
| MockCryptoClientStream::HandshakeMode handshake_mode) { |
| handshake_mode_ = handshake_mode; |
| } |
| |
| void set_use_mock_crypter(bool use_mock_crypter) { |
| use_mock_crypter_ = use_mock_crypter; |
| } |
| |
| // The caller keeps ownership of |proof_verify_details|. |
| void AddProofVerifyDetails( |
| const ProofVerifyDetailsChromium* proof_verify_details) { |
| proof_verify_details_queue_.push(proof_verify_details); |
| } |
| |
| MockCryptoClientStream* last_stream() const { return last_stream_; } |
| |
| // Sets initial config for new sessions. |
| void SetConfig(const quic::QuicConfig& config); |
| |
| private: |
| MockCryptoClientStream::HandshakeMode handshake_mode_; |
| MockCryptoClientStream* last_stream_; |
| base::queue<const ProofVerifyDetailsChromium*> proof_verify_details_queue_; |
| std::unique_ptr<quic::QuicConfig> config_; |
| bool use_mock_crypter_; |
| |
| DISALLOW_COPY_AND_ASSIGN(MockCryptoClientStreamFactory); |
| }; |
| |
| } // namespace net |
| |
| #endif // NET_QUIC_MOCK_CRYPTO_CLIENT_STREAM_FACTORY_H_ |