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"
17 class MockCryptoClientStream : public QuicCryptoClientStream {
19 // HandshakeMode enumerates the handshake mode MockCryptoClientStream should
20 // mock in CryptoConnect.
22 // CONFIRM_HANDSHAKE indicates that CryptoConnect will immediately confirm
23 // the handshake and establish encryption. This behavior will never happen
24 // in the field, but is convenient for higher level tests.
27 // ZERO_RTT indicates that CryptoConnect will establish encryption but will
28 // not confirm the handshake.
31 // COLD_START indicates that CryptoConnect will neither establish encryption
32 // nor confirm the handshake
36 MockCryptoClientStream(
37 const string& server_hostname,
39 QuicCryptoClientConfig* crypto_config,
40 HandshakeMode handshake_mode,
41 const SSLInfo* ssl_info);
42 virtual ~MockCryptoClientStream();
44 // CryptoFramerVisitorInterface implementation.
45 virtual void OnHandshakeMessage(
46 const CryptoHandshakeMessage& message) OVERRIDE;
48 // QuicCryptoClientStream implementation.
49 virtual bool CryptoConnect() OVERRIDE;
51 virtual bool GetSSLInfo(SSLInfo* ssl_info) OVERRIDE;
53 // Invokes the sessions's CryptoHandshakeEvent method with the specified
55 void SendOnCryptoHandshakeEvent(QuicSession::CryptoHandshakeEvent event);
57 HandshakeMode handshake_mode_;
60 void SetConfigNegotiated();
62 const SSLInfo* ssl_info_;
67 #endif // NET_QUIC_TEST_TOOLS_MOCK_CRYPTO_CLIENT_STREAM_H_