1 // Copyright 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_DELAYED_VERIFY_STRIKE_REGISTER_CLIENT_H_ 6 #define NET_QUIC_TEST_TOOLS_DELAYED_VERIFY_STRIKE_REGISTER_CLIENT_H_ 7 8 #include <string> 9 #include <vector> 10 11 #include "base/strings/string_piece.h" 12 #include "net/quic/crypto/local_strike_register_client.h" 13 14 namespace net { 15 namespace test { 16 17 // Test helper that allows delaying execution of nonce verification 18 // callbacks until a later time. 19 class DelayedVerifyStrikeRegisterClient : public LocalStrikeRegisterClient { 20 public: 21 DelayedVerifyStrikeRegisterClient(unsigned max_entries, 22 uint32 current_time_external, 23 uint32 window_secs, 24 const uint8 orbit[8], 25 StrikeRegister::StartupType startup); 26 virtual ~DelayedVerifyStrikeRegisterClient(); 27 28 virtual void VerifyNonceIsValidAndUnique(base::StringPiece nonce, 29 QuicWallTime now, 30 ResultCallback* cb) OVERRIDE; 31 32 // Start queueing verifications instead of executing them immediately. 33 void StartDelayingVerification() { 34 delay_verifications_ = true; 35 } 36 // Number of verifications that are queued. 37 int PendingVerifications() const; 38 // Run all pending verifications. 39 void RunPendingVerifications(); 40 41 private: 42 struct VerifyArgs { 43 VerifyArgs(base::StringPiece in_nonce, 44 QuicWallTime in_now, 45 ResultCallback* in_cb) 46 : nonce(in_nonce.as_string()), 47 now(in_now), 48 cb(in_cb) { 49 } 50 51 std::string nonce; 52 QuicWallTime now; 53 ResultCallback* cb; 54 }; 55 56 bool delay_verifications_; 57 std::vector<VerifyArgs> pending_verifications_; 58 59 DISALLOW_COPY_AND_ASSIGN(DelayedVerifyStrikeRegisterClient); 60 }; 61 62 } // namespace test 63 } // namespace net 64 65 #endif // NET_QUIC_TEST_TOOLS_DELAYED_VERIFY_STRIKE_REGISTER_CLIENT_H_ 66