// Copyright 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_TEST_TOOLS_DELAYED_VERIFY_STRIKE_REGISTER_CLIENT_H_ #define NET_QUIC_TEST_TOOLS_DELAYED_VERIFY_STRIKE_REGISTER_CLIENT_H_ #include <string> #include <vector> #include "base/strings/string_piece.h" #include "net/quic/crypto/local_strike_register_client.h" namespace net { namespace test { // Test helper that allows delaying execution of nonce verification // callbacks until a later time. class DelayedVerifyStrikeRegisterClient : public LocalStrikeRegisterClient { public: DelayedVerifyStrikeRegisterClient(unsigned max_entries, uint32 current_time_external, uint32 window_secs, const uint8 orbit[8], StrikeRegister::StartupType startup); virtual ~DelayedVerifyStrikeRegisterClient(); virtual void VerifyNonceIsValidAndUnique(base::StringPiece nonce, QuicWallTime now, ResultCallback* cb) OVERRIDE; // Start queueing verifications instead of executing them immediately. void StartDelayingVerification() { delay_verifications_ = true; } // Number of verifications that are queued. int PendingVerifications() const; // Run all pending verifications. void RunPendingVerifications(); private: struct VerifyArgs { VerifyArgs(base::StringPiece in_nonce, QuicWallTime in_now, ResultCallback* in_cb) : nonce(in_nonce.as_string()), now(in_now), cb(in_cb) { } std::string nonce; QuicWallTime now; ResultCallback* cb; }; bool delay_verifications_; std::vector<VerifyArgs> pending_verifications_; DISALLOW_COPY_AND_ASSIGN(DelayedVerifyStrikeRegisterClient); }; } // namespace test } // namespace net #endif // NET_QUIC_TEST_TOOLS_DELAYED_VERIFY_STRIKE_REGISTER_CLIENT_H_