Home | History | Annotate | Download | only in test_tools
      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.
      4 
      5 #ifndef NET_QUIC_TEST_TOOLS_MOCK_CRYPTO_CLIENT_STREAM_H_
      6 #define NET_QUIC_TEST_TOOLS_MOCK_CRYPTO_CLIENT_STREAM_H_
      7 
      8 #include <string>
      9 
     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"
     14 
     15 namespace net {
     16 
     17 class QuicServerId;
     18 
     19 class MockCryptoClientStream : public QuicCryptoClientStream {
     20  public:
     21   // HandshakeMode enumerates the handshake mode MockCryptoClientStream should
     22   // mock in CryptoConnect.
     23   enum HandshakeMode {
     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.
     27     CONFIRM_HANDSHAKE,
     28 
     29     // ZERO_RTT indicates that CryptoConnect will establish encryption but will
     30     // not confirm the handshake.
     31     ZERO_RTT,
     32 
     33     // COLD_START indicates that CryptoConnect will neither establish encryption
     34     // nor confirm the handshake
     35     COLD_START,
     36   };
     37 
     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   virtual ~MockCryptoClientStream();
     46 
     47   // CryptoFramerVisitorInterface implementation.
     48   virtual void OnHandshakeMessage(
     49       const CryptoHandshakeMessage& message) OVERRIDE;
     50 
     51   // QuicCryptoClientStream implementation.
     52   virtual bool CryptoConnect() OVERRIDE;
     53 
     54   // Invokes the sessions's CryptoHandshakeEvent method with the specified
     55   // event.
     56   void SendOnCryptoHandshakeEvent(QuicSession::CryptoHandshakeEvent event);
     57 
     58   HandshakeMode handshake_mode_;
     59 
     60  private:
     61   void SetConfigNegotiated();
     62   QuicClientSessionBase* client_session();
     63 
     64   const ProofVerifyDetails* proof_verify_details_;
     65 
     66   DISALLOW_COPY_AND_ASSIGN(MockCryptoClientStream);
     67 };
     68 
     69 }  // namespace net
     70 
     71 #endif  // NET_QUIC_TEST_TOOLS_MOCK_CRYPTO_CLIENT_STREAM_H_
     72