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