blob: 36bc4d333750405b17275da39c036c0c190bfbc2 [file] [log] [blame]
// Copyright 2018 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 COMPONENTS_MIRRORING_SERVICE_FAKE_NETWORK_SERVICE_H_
#define COMPONENTS_MIRRORING_SERVICE_FAKE_NETWORK_SERVICE_H_
#include "base/callback.h"
#include "media/cast/net/cast_transport_defines.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "services/network/public/mojom/udp_socket.mojom.h"
#include "services/network/test/test_network_context.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace mirroring {
class MockUdpSocket final : public network::mojom::UDPSocket {
public:
MockUdpSocket(network::mojom::UDPSocketRequest request,
network::mojom::UDPSocketReceiverPtr receiver);
~MockUdpSocket() override;
MOCK_METHOD0(OnSend, void());
// network::mojom::UDPSocket implementation.
void Connect(const net::IPEndPoint& remote_addr,
network::mojom::UDPSocketOptionsPtr options,
ConnectCallback callback) override;
void Bind(const net::IPEndPoint& local_addr,
network::mojom::UDPSocketOptionsPtr options,
BindCallback callback) override {}
void SetBroadcast(bool broadcast, SetBroadcastCallback callback) override {}
void SetSendBufferSize(int32_t send_buffer_size,
SetSendBufferSizeCallback callback) override {}
void SetReceiveBufferSize(int32_t receive_buffer_size,
SetReceiveBufferSizeCallback callback) override {}
void JoinGroup(const net::IPAddress& group_address,
JoinGroupCallback callback) override {}
void LeaveGroup(const net::IPAddress& group_address,
LeaveGroupCallback callback) override {}
void ReceiveMore(uint32_t num_additional_datagrams) override;
void ReceiveMoreWithBufferSize(uint32_t num_additional_datagrams,
uint32_t buffer_size) override {}
void SendTo(const net::IPEndPoint& dest_addr,
base::span<const uint8_t> data,
const net::MutableNetworkTrafficAnnotationTag& traffic_annotation,
SendToCallback callback) override {}
void Send(base::span<const uint8_t> data,
const net::MutableNetworkTrafficAnnotationTag& traffic_annotation,
SendCallback callback) override;
void Close() override {}
// Simulate receiving a packet from the network.
void OnReceivedPacket(const media::cast::Packet& packet);
void VerifySendingPacket(const media::cast::Packet& packet);
private:
mojo::Binding<network::mojom::UDPSocket> binding_;
network::mojom::UDPSocketReceiverPtr receiver_;
std::unique_ptr<media::cast::Packet> sending_packet_;
int num_ask_for_receive_ = 0;
DISALLOW_COPY_AND_ASSIGN(MockUdpSocket);
};
class MockNetworkContext final : public network::TestNetworkContext {
public:
explicit MockNetworkContext(network::mojom::NetworkContextRequest request);
~MockNetworkContext() override;
MOCK_METHOD0(OnUDPSocketCreated, void());
// network::mojom::NetworkContext implementation:
void CreateUDPSocket(network::mojom::UDPSocketRequest request,
network::mojom::UDPSocketReceiverPtr receiver) override;
void CreateURLLoaderFactory(
network::mojom::URLLoaderFactoryRequest request,
network::mojom::URLLoaderFactoryParamsPtr params) override;
MockUdpSocket* udp_socket() const { return udp_socket_.get(); }
private:
mojo::Binding<network::mojom::NetworkContext> binding_;
std::unique_ptr<MockUdpSocket> udp_socket_;
DISALLOW_COPY_AND_ASSIGN(MockNetworkContext);
};
} // namespace mirroring
#endif // COMPONENTS_MIRRORING_SERVICE_FAKE_NETWORK_SERVICE_H_