blob: 6ae7ba1ee2acd6be90d005872392cbc2f44e8d5d [file] [log] [blame]
// 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_