1 // Copyright 2018 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 CHROMEOS_SERVICES_SECURE_CHANNEL_PUBLIC_CPP_CLIENT_FAKE_CLIENT_CHANNEL_H_
6 #define CHROMEOS_SERVICES_SECURE_CHANNEL_PUBLIC_CPP_CLIENT_FAKE_CLIENT_CHANNEL_H_
7 
8 #include <queue>
9 
10 #include "base/callback.h"
11 #include "base/macros.h"
12 #include "chromeos/services/secure_channel/public/cpp/client/client_channel.h"
13 #include "chromeos/services/secure_channel/public/mojom/secure_channel.mojom.h"
14 
15 namespace chromeos {
16 
17 namespace secure_channel {
18 
19 // Test double implementation of ClientChannel.
20 class FakeClientChannel : public ClientChannel {
21  public:
22   FakeClientChannel();
23   ~FakeClientChannel() override;
24 
25   using ClientChannel::NotifyDisconnected;
26   using ClientChannel::NotifyMessageReceived;
27 
28   void InvokePendingGetConnectionMetadataCallback(
29       mojom::ConnectionMetadataPtr connection_metadata);
30 
sent_messages()31   std::vector<std::pair<std::string, base::OnceClosure>>& sent_messages() {
32     return sent_messages_;
33   }
34 
set_destructor_callback(base::OnceClosure callback)35   void set_destructor_callback(base::OnceClosure callback) {
36     destructor_callback_ = std::move(callback);
37   }
38 
39  private:
40   friend class SecureChannelClientChannelImplTest;
41 
42   // ClientChannel:
43   void PerformGetConnectionMetadata(
44       base::OnceCallback<void(mojom::ConnectionMetadataPtr)> callback) override;
45   void PerformSendMessage(const std::string& payload,
46                           base::OnceClosure on_sent_callback) override;
47 
48   // Queues up callbacks passed into PerformGetConnectionMetadata(), to be
49   // invoked later.
50   std::queue<base::OnceCallback<void(mojom::ConnectionMetadataPtr)>>
51       get_connection_metadata_callback_queue_;
52   std::vector<std::pair<std::string, base::OnceClosure>> sent_messages_;
53   base::OnceClosure destructor_callback_;
54 
55   DISALLOW_COPY_AND_ASSIGN(FakeClientChannel);
56 };
57 
58 }  // namespace secure_channel
59 
60 }  // namespace chromeos
61 
62 #endif  // CHROMEOS_SERVICES_SECURE_CHANNEL_PUBLIC_CPP_CLIENT_FAKE_CLIENT_CHANNEL_H_
63