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 #include "components/mirroring/service/fake_network_service.h"
6
7 #include "media/cast/test/utility/net_utility.h"
8 #include "mojo/public/cpp/bindings/self_owned_receiver.h"
9 #include "services/network/test/test_url_loader_factory.h"
10
11 namespace mirroring {
12
MockUdpSocket(mojo::PendingReceiver<network::mojom::UDPSocket> receiver,mojo::PendingRemote<network::mojom::UDPSocketListener> listener)13 MockUdpSocket::MockUdpSocket(
14 mojo::PendingReceiver<network::mojom::UDPSocket> receiver,
15 mojo::PendingRemote<network::mojom::UDPSocketListener> listener)
16 : receiver_(this, std::move(receiver)), listener_(std::move(listener)) {}
17
~MockUdpSocket()18 MockUdpSocket::~MockUdpSocket() {}
19
Connect(const net::IPEndPoint & remote_addr,network::mojom::UDPSocketOptionsPtr options,ConnectCallback callback)20 void MockUdpSocket::Connect(const net::IPEndPoint& remote_addr,
21 network::mojom::UDPSocketOptionsPtr options,
22 ConnectCallback callback) {
23 std::move(callback).Run(net::OK, media::cast::test::GetFreeLocalPort());
24 }
25
ReceiveMore(uint32_t num_additional_datagrams)26 void MockUdpSocket::ReceiveMore(uint32_t num_additional_datagrams) {
27 num_ask_for_receive_ += num_additional_datagrams;
28 }
29
Send(base::span<const uint8_t> data,const net::MutableNetworkTrafficAnnotationTag & traffic_annotation,SendCallback callback)30 void MockUdpSocket::Send(
31 base::span<const uint8_t> data,
32 const net::MutableNetworkTrafficAnnotationTag& traffic_annotation,
33 SendCallback callback) {
34 sending_packet_ =
35 std::make_unique<media::cast::Packet>(data.begin(), data.end());
36 std::move(callback).Run(net::OK);
37 OnSend();
38 }
39
OnReceivedPacket(const media::cast::Packet & packet)40 void MockUdpSocket::OnReceivedPacket(const media::cast::Packet& packet) {
41 if (num_ask_for_receive_) {
42 listener_->OnReceived(
43 net::OK, base::nullopt,
44 base::span<const uint8_t>(
45 reinterpret_cast<const uint8_t*>(packet.data()), packet.size()));
46 ASSERT_LT(0, num_ask_for_receive_);
47 --num_ask_for_receive_;
48 }
49 }
50
VerifySendingPacket(const media::cast::Packet & packet)51 void MockUdpSocket::VerifySendingPacket(const media::cast::Packet& packet) {
52 EXPECT_TRUE(
53 std::equal(packet.begin(), packet.end(), sending_packet_->begin()));
54 }
55
MockNetworkContext(mojo::PendingReceiver<network::mojom::NetworkContext> receiver)56 MockNetworkContext::MockNetworkContext(
57 mojo::PendingReceiver<network::mojom::NetworkContext> receiver)
58 : receiver_(this, std::move(receiver)) {}
~MockNetworkContext()59 MockNetworkContext::~MockNetworkContext() {}
60
CreateUDPSocket(mojo::PendingReceiver<network::mojom::UDPSocket> receiver,mojo::PendingRemote<network::mojom::UDPSocketListener> listener)61 void MockNetworkContext::CreateUDPSocket(
62 mojo::PendingReceiver<network::mojom::UDPSocket> receiver,
63 mojo::PendingRemote<network::mojom::UDPSocketListener> listener) {
64 udp_socket_ =
65 std::make_unique<MockUdpSocket>(std::move(receiver), std::move(listener));
66 OnUDPSocketCreated();
67 }
68
CreateURLLoaderFactory(mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver,network::mojom::URLLoaderFactoryParamsPtr params)69 void MockNetworkContext::CreateURLLoaderFactory(
70 mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver,
71 network::mojom::URLLoaderFactoryParamsPtr params) {
72 ASSERT_TRUE(params);
73 mojo::MakeSelfOwnedReceiver(std::make_unique<network::TestURLLoaderFactory>(),
74 std::move(receiver));
75 }
76
77 } // namespace mirroring
78