1 // Copyright (c) 2013 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.
5 #ifndef NET_QUIC_TEST_TOOLS_MOCK_CRYPTO_CLIENT_STREAM_H_
6 #define NET_QUIC_TEST_TOOLS_MOCK_CRYPTO_CLIENT_STREAM_H_
10 #include "net/quic/crypto/crypto_handshake.h"
11 #include "net/quic/crypto/crypto_protocol.h"
12 #include "net/quic/quic_crypto_client_stream.h"
13 #include "net/quic/quic_session.h"
19 class MockCryptoClientStream
: public QuicCryptoClientStream
{
21 // HandshakeMode enumerates the handshake mode MockCryptoClientStream should
22 // mock in CryptoConnect.
24 // CONFIRM_HANDSHAKE indicates that CryptoConnect will immediately confirm
25 // the handshake and establish encryption. This behavior will never happen
26 // in the field, but is convenient for higher level tests.
29 // ZERO_RTT indicates that CryptoConnect will establish encryption but will
30 // not confirm the handshake.
33 // COLD_START indicates that CryptoConnect will neither establish encryption
34 // nor confirm the handshake
38 MockCryptoClientStream(
39 const QuicServerId
& server_id
,
40 QuicClientSessionBase
* session
,
41 ProofVerifyContext
* verify_context
,
42 QuicCryptoClientConfig
* crypto_config
,
43 HandshakeMode handshake_mode
,
44 const ProofVerifyDetails
* proof_verify_details_
);
45 ~MockCryptoClientStream() override
;
47 // CryptoFramerVisitorInterface implementation.
48 void OnHandshakeMessage(const CryptoHandshakeMessage
& message
) override
;
50 // QuicCryptoClientStream implementation.
51 void CryptoConnect() override
;
53 // Invokes the sessions's CryptoHandshakeEvent method with the specified
55 void SendOnCryptoHandshakeEvent(QuicSession::CryptoHandshakeEvent event
);
57 HandshakeMode handshake_mode_
;
60 void SetConfigNegotiated();
61 QuicClientSessionBase
* client_session();
63 const ProofVerifyDetails
* proof_verify_details_
;
65 DISALLOW_COPY_AND_ASSIGN(MockCryptoClientStream
);
70 #endif // NET_QUIC_TEST_TOOLS_MOCK_CRYPTO_CLIENT_STREAM_H_