Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / net / quic / test_tools / delayed_verify_strike_register_client.h
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   ~DelayedVerifyStrikeRegisterClient() override;
27
28   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_