fake_network_service.h 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. #ifndef COMPONENTS_MIRRORING_SERVICE_FAKE_NETWORK_SERVICE_H_
  5. #define COMPONENTS_MIRRORING_SERVICE_FAKE_NETWORK_SERVICE_H_
  6. #include "base/callback.h"
  7. #include "media/cast/net/cast_transport_defines.h"
  8. #include "mojo/public/cpp/bindings/pending_receiver.h"
  9. #include "mojo/public/cpp/bindings/pending_remote.h"
  10. #include "mojo/public/cpp/bindings/receiver.h"
  11. #include "mojo/public/cpp/bindings/remote.h"
  12. #include "services/network/public/mojom/udp_socket.mojom.h"
  13. #include "services/network/test/test_network_context.h"
  14. #include "services/network/test/test_udp_socket.h"
  15. #include "testing/gmock/include/gmock/gmock.h"
  16. #include "testing/gtest/include/gtest/gtest.h"
  17. namespace mirroring {
  18. class MockUdpSocket final : public network::TestUDPSocket {
  19. public:
  20. MockUdpSocket(
  21. mojo::PendingReceiver<network::mojom::UDPSocket> receiver,
  22. mojo::PendingRemote<network::mojom::UDPSocketListener> listener);
  23. MockUdpSocket(const MockUdpSocket&) = delete;
  24. MockUdpSocket& operator=(const MockUdpSocket&) = delete;
  25. ~MockUdpSocket() override;
  26. MOCK_METHOD0(OnSend, void());
  27. // network::mojom::UDPSocket implementation.
  28. void Connect(const net::IPEndPoint& remote_addr,
  29. network::mojom::UDPSocketOptionsPtr options,
  30. ConnectCallback callback) override;
  31. void ReceiveMore(uint32_t num_additional_datagrams) override;
  32. void Send(base::span<const uint8_t> data,
  33. const net::MutableNetworkTrafficAnnotationTag& traffic_annotation,
  34. SendCallback callback) override;
  35. // Simulate receiving a packet from the network.
  36. void OnReceivedPacket(const media::cast::Packet& packet);
  37. void VerifySendingPacket(const media::cast::Packet& packet);
  38. private:
  39. mojo::Receiver<network::mojom::UDPSocket> receiver_;
  40. mojo::Remote<network::mojom::UDPSocketListener> listener_;
  41. std::unique_ptr<media::cast::Packet> sending_packet_;
  42. int num_ask_for_receive_ = 0;
  43. };
  44. class MockNetworkContext : public network::TestNetworkContext {
  45. public:
  46. explicit MockNetworkContext(
  47. mojo::PendingReceiver<network::mojom::NetworkContext> receiver);
  48. MockNetworkContext(const MockNetworkContext&) = delete;
  49. MockNetworkContext& operator=(const MockNetworkContext&) = delete;
  50. ~MockNetworkContext() override;
  51. MOCK_METHOD0(OnUDPSocketCreated, void());
  52. // network::mojom::NetworkContext implementation:
  53. void CreateUDPSocket(
  54. mojo::PendingReceiver<network::mojom::UDPSocket> receiver,
  55. mojo::PendingRemote<network::mojom::UDPSocketListener> listener) override;
  56. void CreateURLLoaderFactory(
  57. mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver,
  58. network::mojom::URLLoaderFactoryParamsPtr params) override;
  59. MockUdpSocket* udp_socket() const { return udp_socket_.get(); }
  60. private:
  61. mojo::Receiver<network::mojom::NetworkContext> receiver_;
  62. std::unique_ptr<MockUdpSocket> udp_socket_;
  63. };
  64. } // namespace mirroring
  65. #endif // COMPONENTS_MIRRORING_SERVICE_FAKE_NETWORK_SERVICE_H_