Commit 36a93aa3 authored by Julie Jeongeun Kim's avatar Julie Jeongeun Kim Committed by Commit Bot

Convert UDPSocketListener to new Mojo types

This CL converts UDPSocketListener from udp_socket.mojom
to new Mojo types using PendingReceiver, Receiver,
PendingRemote, Remote and Receiver.

Bug: 955171
Change-Id: I6ce6be80e58a485ba7674db40fe55b6d95452eef
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1831961Reviewed-by: default avatarColin Blundell <blundell@chromium.org>
Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Reviewed-by: default avatarReilly Grant <reillyg@chromium.org>
Reviewed-by: default avatarKen Rockot <rockot@google.com>
Reviewed-by: default avatarDavid Roger <droger@chromium.org>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Commit-Queue: Julie Kim <jkim@igalia.com>
Cr-Commit-Position: refs/heads/master@{#703668}
parent 26af8a79
......@@ -48,15 +48,12 @@ constexpr net::NetworkTrafficAnnotationTag GetNetworkTrafficAnnotationTag() {
} // namespace
NetBiosClient::NetBiosClient(network::mojom::NetworkContext* network_context)
: bind_address_(net::IPAddress::IPv4AllZeros(), 0 /* port */),
listener_binding_(this) {
: bind_address_(net::IPAddress::IPv4AllZeros(), 0 /* port */) {
DCHECK(network_context);
network::mojom::UDPSocketListenerPtr rec_int_ptr;
listener_binding_.Bind(mojo::MakeRequest(&rec_int_ptr));
network_context->CreateUDPSocket(server_socket_.BindNewPipeAndPassReceiver(),
std::move(rec_int_ptr));
network_context->CreateUDPSocket(
server_socket_.BindNewPipeAndPassReceiver(),
listener_receiver_.BindNewPipeAndPassRemote());
}
NetBiosClient::~NetBiosClient() = default;
......
......@@ -11,7 +11,7 @@
#include "base/memory/weak_ptr.h"
#include "chrome/browser/chromeos/smb_client/discovery/netbios_client_interface.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
#include "services/network/public/mojom/udp_socket.mojom.h"
......@@ -108,7 +108,7 @@ class NetBiosClient : public network::mojom::UDPSocketListener,
NetBiosResponseCallback callback_;
std::unique_ptr<FirewallHole> firewall_hole_;
mojo::Remote<network::mojom::UDPSocket> server_socket_;
mojo::Binding<network::mojom::UDPSocketListener> listener_binding_;
mojo::Receiver<network::mojom::UDPSocketListener> listener_receiver_{this};
DISALLOW_COPY_AND_ASSIGN(NetBiosClient);
};
......
......@@ -19,6 +19,7 @@
#include "chrome/test/base/browser_with_test_window_test.h"
#include "content/public/browser/storage_partition.h"
#include "extensions/browser/api/socket/udp_socket.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "net/base/io_buffer.h"
#include "net/base/ip_address.h"
......@@ -39,13 +40,14 @@ class UDPSocketUnitTest : public extensions::ExtensionServiceTestBase {
content::BrowserContext::GetDefaultStoragePartition(profile())
->GetNetworkContext();
mojo::PendingRemote<network::mojom::UDPSocket> socket;
network::mojom::UDPSocketListenerPtr listener_ptr;
network::mojom::UDPSocketListenerRequest listener_request =
mojo::MakeRequest(&listener_ptr);
mojo::PendingRemote<network::mojom::UDPSocketListener> listener_remote;
mojo::PendingReceiver<network::mojom::UDPSocketListener> listener_receiver =
listener_remote.InitWithNewPipeAndPassReceiver();
network_context->CreateUDPSocket(socket.InitWithNewPipeAndPassReceiver(),
std::move(listener_ptr));
return std::make_unique<UDPSocket>(
std::move(socket), std::move(listener_request), "abcdefghijklmnopqrst");
std::move(listener_remote));
return std::make_unique<UDPSocket>(std::move(socket),
std::move(listener_receiver),
"abcdefghijklmnopqrst");
}
};
......
......@@ -6,16 +6,15 @@
#include <utility>
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "net/base/completion_once_callback.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
#include "mojo/public/cpp/bindings/interface_request.h"
namespace media_router {
NetworkServiceAsyncPacketSender::NetworkServiceAsyncPacketSender(
network::mojom::NetworkContext* network_context) {
network_context->CreateUDPSocket(socket_.BindNewPipeAndPassReceiver(),
nullptr);
mojo::NullRemote());
}
NetworkServiceAsyncPacketSender::NetworkServiceAsyncPacketSender(
......
......@@ -18,6 +18,7 @@
#include "content/public/browser/network_service_instance.h"
#include "content/public/browser/storage_partition.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "net/base/address_family.h"
#include "net/base/ip_address.h"
#include "net/base/network_interfaces.h"
......@@ -65,13 +66,13 @@ void GetNetworkListOnUIThread(
void CreateUDPSocketOnUIThread(
content::BrowserContext* profile,
mojo::PendingReceiver<network::mojom::UDPSocket> receiver,
network::mojom::UDPSocketListenerPtr listener_ptr) {
mojo::PendingRemote<network::mojom::UDPSocketListener> listener_remote) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
network::mojom::NetworkContext* network_context =
content::BrowserContext::GetDefaultStoragePartition(profile)
->GetNetworkContext();
network_context->CreateUDPSocket(std::move(receiver),
std::move(listener_ptr));
std::move(listener_remote));
}
} // namespace
......@@ -110,8 +111,7 @@ PrivetTrafficDetector::Helper::Helper(
base::RepeatingClosure on_traffic_detected)
: profile_(profile),
on_traffic_detected_(on_traffic_detected),
restart_attempts_(kMaxRestartAttempts),
listener_binding_(this) {
restart_attempts_(kMaxRestartAttempts) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
}
......@@ -150,14 +150,10 @@ void PrivetTrafficDetector::Helper::Restart(
void PrivetTrafficDetector::Helper::Bind() {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
network::mojom::UDPSocketListenerPtr listener_ptr;
network::mojom::UDPSocketListenerRequest listener_request =
mojo::MakeRequest(&listener_ptr);
listener_binding_.Bind(std::move(listener_request));
base::PostTask(FROM_HERE, {content::BrowserThread::UI},
base::BindOnce(&CreateUDPSocketOnUIThread, profile_,
socket_.BindNewPipeAndPassReceiver(),
std::move(listener_ptr)));
listener_receiver_.BindNewPipeAndPassRemote()));
network::mojom::UDPSocketOptionsPtr socket_options =
network::mojom::UDPSocketOptions::New();
......@@ -240,7 +236,7 @@ void PrivetTrafficDetector::Helper::OnJoinGroupComplete(int rv) {
void PrivetTrafficDetector::Helper::ResetConnection() {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
socket_.reset();
listener_binding_.Close();
listener_receiver_.reset();
}
void PrivetTrafficDetector::Helper::OnReceived(
......
......@@ -9,7 +9,7 @@
#include "base/callback.h"
#include "base/macros.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "net/base/ip_endpoint.h"
#include "net/base/network_interfaces.h"
......@@ -84,7 +84,7 @@ class PrivetTrafficDetector
// Implementation of socket listener callback.
// Initialized on the UI thread, but only accessed on the IO thread.
mojo::Binding<network::mojom::UDPSocketListener> listener_binding_;
mojo::Receiver<network::mojom::UDPSocketListener> listener_receiver_{this};
base::WeakPtrFactory<Helper> weak_ptr_factory_{this};
......
......@@ -1058,14 +1058,15 @@ class WrappedUDPSocket : public network::mojom::UDPSocket {
FailureType failure_type,
network::mojom::NetworkContext* network_context,
mojo::PendingReceiver<network::mojom::UDPSocket> socket_receiver,
network::mojom::UDPSocketListenerPtr socket_listener)
mojo::PendingRemote<network::mojom::UDPSocketListener> socket_listener)
: failure_type_(failure_type),
receiver_(this, std::move(socket_receiver)) {
if (failure_type == FailureType::kDropListenerPipeOnConstruction)
socket_listener.reset();
socket_listener_ = std::move(socket_listener);
else
socket_listener_.Bind(std::move(socket_listener));
network_context->CreateUDPSocket(
wrapped_socket_.BindNewPipeAndPassReceiver(), nullptr);
wrapped_socket_.BindNewPipeAndPassReceiver(), mojo::NullRemote());
receiver_.set_disconnect_handler(
base::BindOnce(&WrappedUDPSocket::Close, base::Unretained(this)));
wrapped_socket_.set_disconnect_handler(
......@@ -1173,7 +1174,7 @@ class WrappedUDPSocket : public network::mojom::UDPSocket {
mojo::Remote<network::mojom::UDPSocket> wrapped_socket_;
// Only populated on certain read FailureTypes.
network::mojom::UDPSocketListenerPtr socket_listener_;
mojo::Remote<network::mojom::UDPSocketListener> socket_listener_;
DISALLOW_COPY_AND_ASSIGN(WrappedUDPSocket);
};
......@@ -1182,7 +1183,7 @@ void TestCreateUDPSocketCallback(
WrappedUDPSocket::FailureType failure_type,
network::mojom::NetworkContext* network_context,
mojo::PendingReceiver<network::mojom::UDPSocket> socket_receiver,
network::mojom::UDPSocketListenerPtr socket_listener) {
mojo::PendingRemote<network::mojom::UDPSocketListener> socket_listener) {
// This will delete itself when one of its Mojo pipes is closed.
new WrappedUDPSocket(failure_type, network_context,
std::move(socket_receiver), std::move(socket_listener));
......
......@@ -12,7 +12,7 @@ namespace mirroring {
MockUdpSocket::MockUdpSocket(
mojo::PendingReceiver<network::mojom::UDPSocket> receiver,
network::mojom::UDPSocketListenerPtr listener)
mojo::PendingRemote<network::mojom::UDPSocketListener> listener)
: receiver_(this, std::move(receiver)), listener_(std::move(listener)) {}
MockUdpSocket::~MockUdpSocket() {}
......@@ -60,7 +60,7 @@ MockNetworkContext::~MockNetworkContext() {}
void MockNetworkContext::CreateUDPSocket(
mojo::PendingReceiver<network::mojom::UDPSocket> receiver,
network::mojom::UDPSocketListenerPtr listener) {
mojo::PendingRemote<network::mojom::UDPSocketListener> listener) {
udp_socket_ =
std::make_unique<MockUdpSocket>(std::move(receiver), std::move(listener));
OnUDPSocketCreated();
......
......@@ -8,7 +8,9 @@
#include "base/callback.h"
#include "media/cast/net/cast_transport_defines.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.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"
......@@ -18,8 +20,9 @@ namespace mirroring {
class MockUdpSocket final : public network::mojom::UDPSocket {
public:
MockUdpSocket(mojo::PendingReceiver<network::mojom::UDPSocket> receiver,
network::mojom::UDPSocketListenerPtr listener);
MockUdpSocket(
mojo::PendingReceiver<network::mojom::UDPSocket> receiver,
mojo::PendingRemote<network::mojom::UDPSocketListener> listener);
~MockUdpSocket() override;
MOCK_METHOD0(OnSend, void());
......@@ -59,7 +62,7 @@ class MockUdpSocket final : public network::mojom::UDPSocket {
private:
mojo::Receiver<network::mojom::UDPSocket> receiver_;
network::mojom::UDPSocketListenerPtr listener_;
mojo::Remote<network::mojom::UDPSocketListener> listener_;
std::unique_ptr<media::cast::Packet> sending_packet_;
int num_ask_for_receive_ = 0;
......@@ -77,7 +80,7 @@ class MockNetworkContext final : public network::TestNetworkContext {
// network::mojom::NetworkContext implementation:
void CreateUDPSocket(
mojo::PendingReceiver<network::mojom::UDPSocket> receiver,
network::mojom::UDPSocketListenerPtr listener) override;
mojo::PendingRemote<network::mojom::UDPSocketListener> listener) override;
void CreateURLLoaderFactory(
network::mojom::URLLoaderFactoryRequest request,
network::mojom::URLLoaderFactoryParamsPtr params) override;
......
......@@ -53,7 +53,6 @@ UdpSocketClient::UdpSocketClient(const net::IPEndPoint& remote_endpoint,
: remote_endpoint_(remote_endpoint),
network_context_(context),
error_callback_(std::move(error_callback)),
binding_(this),
bytes_sent_(0),
allow_sending_(false),
num_packets_pending_receive_(0) {
......@@ -105,10 +104,8 @@ void UdpSocketClient::StartReceiving(
const media::cast::PacketReceiverCallbackWithStatus& packet_receiver) {
DVLOG(1) << __func__;
packet_receiver_callback_ = packet_receiver;
network::mojom::UDPSocketListenerPtr udp_socket_listener;
binding_.Bind(mojo::MakeRequest(&udp_socket_listener));
network_context_->CreateUDPSocket(udp_socket_.BindNewPipeAndPassReceiver(),
std::move(udp_socket_listener));
receiver_.BindNewPipeAndPassRemote());
network::mojom::UDPSocketOptionsPtr options;
udp_socket_->Connect(remote_endpoint_, std::move(options),
base::BindOnce(&UdpSocketClient::OnSocketConnected,
......@@ -140,8 +137,8 @@ void UdpSocketClient::OnSocketConnected(
void UdpSocketClient::StopReceiving() {
packet_receiver_callback_.Reset();
if (binding_.is_bound())
binding_.Close();
if (receiver_.is_bound())
receiver_.reset();
if (udp_socket_.is_bound())
udp_socket_.reset();
num_packets_pending_receive_ = 0;
......
......@@ -8,7 +8,7 @@
#include "base/callback.h"
#include "base/component_export.h"
#include "media/cast/net/cast_transport_config.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "net/base/ip_endpoint.h"
#include "services/network/public/mojom/network_service.mojom.h"
......@@ -60,7 +60,7 @@ class COMPONENT_EXPORT(MIRRORING_SERVICE) UdpSocketClient final
network::mojom::NetworkContext* const network_context_;
base::OnceClosure error_callback_;
mojo::Binding<network::mojom::UDPSocketListener> binding_;
mojo::Receiver<network::mojom::UDPSocketListener> receiver_{this};
// The callback to deliver the received packets to the packet parser. Set
// when StartReceiving() is called.
......
......@@ -92,12 +92,7 @@ PepperUDPSocketMessageFilter::PepperUDPSocketMessageFilter(
render_process_id_(0),
render_frame_id_(0),
is_potentially_secure_plugin_context_(
host->IsPotentiallySecurePluginContext(instance)),
binding_(this)
#if defined(OS_CHROMEOS)
#endif // defined(OS_CHROMEOS)
{
host->IsPotentiallySecurePluginContext(instance)) {
++g_num_udp_filter_instances;
DCHECK(host);
......@@ -110,7 +105,7 @@ PepperUDPSocketMessageFilter::PepperUDPSocketMessageFilter(
PepperUDPSocketMessageFilter::~PepperUDPSocketMessageFilter() {
DCHECK(closed_);
DCHECK(!socket_);
DCHECK(!binding_);
DCHECK(!receiver_.is_bound());
--g_num_udp_filter_instances;
}
......@@ -384,12 +379,12 @@ int32_t PepperUDPSocketMessageFilter::OnMsgBind(
if (!render_frame_host)
return PP_ERROR_NOACCESS;
network::mojom::UDPSocketListenerPtr udp_socket_listener;
mojo::PendingRemote<network::mojom::UDPSocketListener> udp_socket_listener;
// Avoid binding the listener until the socket has been successfully Bound (in
// a socket sense), to avoid providing read data to the caller until it has
// been told that the socket was bound.
network::mojom::UDPSocketListenerRequest listener_request =
mojo::MakeRequest(&udp_socket_listener);
mojo::PendingReceiver<network::mojom::UDPSocketListener> listener_receiver =
udp_socket_listener.InitWithNewPipeAndPassReceiver();
SiteInstance* site_instance = render_frame_host->GetSiteInstance();
network::mojom::NetworkContext* network_context =
......@@ -416,7 +411,7 @@ int32_t PepperUDPSocketMessageFilter::OnMsgBind(
socket_->Bind(end_point, std::move(udp_socket_options),
base::BindOnce(&PepperUDPSocketMessageFilter::DoBindCallback,
base::Unretained(this),
std::move(listener_request), reply_context));
std::move(listener_receiver), reply_context));
return PP_OK_COMPLETIONPENDING;
}
......@@ -428,9 +423,9 @@ int32_t PepperUDPSocketMessageFilter::OnMsgSendTo(
DCHECK_CURRENTLY_ON(BrowserThread::UI);
DCHECK(context);
// Check |binding_| instead of |socket_| because |binding_| is only set
// Check |receiver_| instead of |socket_| because |receiver_| is only set
// after the Bind() call completes.
if (closed_ || !binding_)
if (closed_ || !receiver_.is_bound())
return PP_ERROR_FAILED;
SocketPermissionRequest request =
......@@ -492,7 +487,7 @@ int32_t PepperUDPSocketMessageFilter::OnMsgRecvSlotAvailable(
UDPSocketResourceConstants::kPluginReceiveBufferSlots) {
// If the pipe was closed, but the consumer has not yet closed the UDP
// socket, keep the read buffer filled with errors.
if (!binding_) {
if (!receiver_.is_bound()) {
PepperUDPSocketMessageFilter::SendRecvFromError(PP_ERROR_FAILED);
return PP_OK;
}
......@@ -555,7 +550,7 @@ int32_t PepperUDPSocketMessageFilter::OnMsgLeaveGroup(
}
void PepperUDPSocketMessageFilter::DoBindCallback(
network::mojom::UDPSocketListenerRequest listener_request,
mojo::PendingReceiver<network::mojom::UDPSocketListener> listener_receiver,
const ppapi::host::ReplyMessageContext& context,
int result,
const base::Optional<net::IPEndPoint>& local_addr_out) {
......@@ -579,15 +574,15 @@ void PepperUDPSocketMessageFilter::DoBindCallback(
*local_addr_out,
base::BindRepeating(&PepperUDPSocketMessageFilter::OnFirewallHoleOpened,
firewall_hole_weak_ptr_factory_.GetWeakPtr(),
base::Passed(std::move(listener_request)), context,
base::Passed(std::move(listener_receiver)), context,
net_address));
#else // !defined(OS_CHROMEOS)
OnBindComplete(std::move(listener_request), context, net_address);
OnBindComplete(std::move(listener_receiver), context, net_address);
#endif // !defined(OS_CHROMEOS)
}
void PepperUDPSocketMessageFilter::OnBindComplete(
network::mojom::UDPSocketListenerRequest listener_request,
mojo::PendingReceiver<network::mojom::UDPSocketListener> listener_receiver,
const ppapi::host::ReplyMessageContext& context,
const PP_NetAddress_Private& net_address) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
......@@ -595,8 +590,8 @@ void PepperUDPSocketMessageFilter::OnBindComplete(
SendBindReply(context, PP_OK, net_address);
binding_.Bind(std::move(listener_request));
binding_.set_connection_error_handler(base::BindOnce(
receiver_.Bind(std::move(listener_receiver));
receiver_.set_disconnect_handler(base::BindOnce(
&PepperUDPSocketMessageFilter::PipeClosed, base::Unretained(this)));
socket_.set_disconnect_handler(base::BindOnce(
&PepperUDPSocketMessageFilter::PipeClosed, base::Unretained(this)));
......@@ -605,7 +600,7 @@ void PepperUDPSocketMessageFilter::OnBindComplete(
#if defined(OS_CHROMEOS)
void PepperUDPSocketMessageFilter::OnFirewallHoleOpened(
network::mojom::UDPSocketListenerRequest listener_request,
mojo::PendingReceiver<network::mojom::UDPSocketListener> listener_receiver,
const ppapi::host::ReplyMessageContext& context,
const PP_NetAddress_Private& net_address,
std::unique_ptr<chromeos::FirewallHole> hole) {
......@@ -614,7 +609,7 @@ void PepperUDPSocketMessageFilter::OnFirewallHoleOpened(
LOG_IF(WARNING, !hole.get()) << "Firewall hole could not be opened.";
firewall_hole_.reset(hole.release());
OnBindComplete(std::move(listener_request), context, net_address);
OnBindComplete(std::move(listener_receiver), context, net_address);
}
#endif // defined(OS_CHROMEOS)
......@@ -636,7 +631,7 @@ void PepperUDPSocketMessageFilter::StartPendingSend() {
void PepperUDPSocketMessageFilter::Close() {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
socket_.reset();
binding_.Close();
receiver_.reset();
closed_ = true;
}
......
......@@ -21,8 +21,9 @@
#include "build/build_config.h"
#include "content/common/content_export.h"
#include "content/public/common/process_type.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "net/base/ip_address.h"
#include "net/base/ip_endpoint.h"
......@@ -69,7 +70,7 @@ class CONTENT_EXPORT PepperUDPSocketMessageFilter
using CreateUDPSocketCallback = base::RepeatingCallback<void(
network::mojom::NetworkContext* network_context,
mojo::PendingReceiver<network::mojom::UDPSocket> socket_receiver,
network::mojom::UDPSocketListenerPtr socket_listener)>;
mojo::PendingRemote<network::mojom::UDPSocketListener> socket_listener)>;
static void SetCreateUDPSocketCallbackForTesting(
const CreateUDPSocketCallback* create_udp_socket_callback);
......@@ -127,16 +128,19 @@ class CONTENT_EXPORT PepperUDPSocketMessageFilter
int32_t OnMsgLeaveGroup(const ppapi::host::HostMessageContext* context,
const PP_NetAddress_Private& addr);
void DoBindCallback(network::mojom::UDPSocketListenerRequest listener_request,
void DoBindCallback(mojo::PendingReceiver<network::mojom::UDPSocketListener>
listener_receiver,
const ppapi::host::ReplyMessageContext& context,
int result,
const base::Optional<net::IPEndPoint>& local_addr_out);
void OnBindComplete(network::mojom::UDPSocketListenerRequest listener_request,
void OnBindComplete(mojo::PendingReceiver<network::mojom::UDPSocketListener>
listener_receiver,
const ppapi::host::ReplyMessageContext& context,
const PP_NetAddress_Private& net_address);
#if defined(OS_CHROMEOS)
void OnFirewallHoleOpened(
network::mojom::UDPSocketListenerRequest listener_request,
mojo::PendingReceiver<network::mojom::UDPSocketListener>
listener_receiver,
const ppapi::host::ReplyMessageContext& context,
const PP_NetAddress_Private& net_address,
std::unique_ptr<chromeos::FirewallHole> hole);
......@@ -217,7 +221,7 @@ class CONTENT_EXPORT PepperUDPSocketMessageFilter
// Binding late avoids receiving data when still setting up the socket. Closed
// in Close() and on Mojo pipe errors. Must only be accessed (and destroyed)
// on UI thread.
mojo::Binding<network::mojom::UDPSocketListener> binding_;
mojo::Receiver<network::mojom::UDPSocketListener> receiver_{this};
#if defined(OS_CHROMEOS)
std::unique_ptr<chromeos::FirewallHole,
......
......@@ -9,6 +9,7 @@
#include "base/compiler_specific.h"
#include "base/files/file_path.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "services/network/public/mojom/udp_socket.mojom.h"
namespace base {
......@@ -50,7 +51,7 @@ bool RegisterBlinkTestPlugin(base::CommandLine* command_line)
using CreateUDPSocketCallback = base::RepeatingCallback<void(
network::mojom::NetworkContext* network_context,
mojo::PendingReceiver<network::mojom::UDPSocket> socket_receiver,
network::mojom::UDPSocketListenerPtr socket_listener)>;
mojo::PendingRemote<network::mojom::UDPSocketListener> socket_listener)>;
// Sets a NetworkContext to be used by the Pepper TCP classes for testing.
// Passed in NetworkContext must remain valid until the method is called again
......
......@@ -241,12 +241,13 @@ bool SocketCreateFunction::Prepare() {
case extensions::api::socket::SOCKET_TYPE_UDP: {
socket_type_ = kSocketTypeUDP;
network::mojom::UDPSocketListenerPtr listener_ptr;
socket_listener_request_ = mojo::MakeRequest(&listener_ptr);
mojo::PendingRemote<network::mojom::UDPSocketListener> listener_remote;
socket_listener_receiver_ =
listener_remote.InitWithNewPipeAndPassReceiver();
content::BrowserContext::GetDefaultStoragePartition(browser_context())
->GetNetworkContext()
->CreateUDPSocket(socket_.InitWithNewPipeAndPassReceiver(),
std::move(listener_ptr));
std::move(listener_remote));
break;
}
case extensions::api::socket::SOCKET_TYPE_NONE:
......@@ -263,7 +264,7 @@ void SocketCreateFunction::Work() {
socket = new TCPSocket(browser_context(), extension_->id());
} else if (socket_type_ == kSocketTypeUDP) {
socket =
new UDPSocket(std::move(socket_), std::move(socket_listener_request_),
new UDPSocket(std::move(socket_), std::move(socket_listener_receiver_),
extension_->id());
}
DCHECK(socket);
......
......@@ -22,6 +22,7 @@
#include "extensions/browser/extension_function.h"
#include "extensions/common/api/socket.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "net/base/address_list.h"
#include "net/base/network_change_notifier.h"
......@@ -197,7 +198,8 @@ class SocketCreateFunction : public SocketAsyncApiFunction {
// These two fields are only applicable if |socket_type_| is UDP.
mojo::PendingRemote<network::mojom::UDPSocket> socket_;
network::mojom::UDPSocketListenerRequest socket_listener_request_;
mojo::PendingReceiver<network::mojom::UDPSocketListener>
socket_listener_receiver_;
std::unique_ptr<api::socket::Create::Params> params_;
SocketType socket_type_;
......
......@@ -96,18 +96,18 @@ bool SocketsUdpCreateFunction::Prepare() {
params_ = sockets_udp::Create::Params::Create(*args_);
EXTENSION_FUNCTION_VALIDATE(params_.get());
network::mojom::UDPSocketListenerPtr listener_ptr;
socket_listener_request_ = mojo::MakeRequest(&listener_ptr);
mojo::PendingRemote<network::mojom::UDPSocketListener> listener_remote;
socket_listener_receiver_ = listener_remote.InitWithNewPipeAndPassReceiver();
content::BrowserContext::GetDefaultStoragePartition(browser_context())
->GetNetworkContext()
->CreateUDPSocket(socket_.InitWithNewPipeAndPassReceiver(),
std::move(listener_ptr));
std::move(listener_remote));
return true;
}
void SocketsUdpCreateFunction::Work() {
ResumableUDPSocket* socket = new ResumableUDPSocket(
std::move(socket_), std::move(socket_listener_request_),
std::move(socket_), std::move(socket_listener_receiver_),
extension_->id());
sockets_udp::SocketProperties* properties = params_->properties.get();
......
......@@ -10,6 +10,7 @@
#include "base/gtest_prod_util.h"
#include "extensions/browser/api/socket/socket_api.h"
#include "extensions/common/api/sockets_udp.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
namespace extensions {
......@@ -59,7 +60,8 @@ class SocketsUdpCreateFunction : public UDPSocketAsyncApiFunction {
FRIEND_TEST_ALL_PREFIXES(SocketsUdpUnitTest, Create);
mojo::PendingRemote<network::mojom::UDPSocket> socket_;
network::mojom::UDPSocketListenerRequest socket_listener_request_;
mojo::PendingReceiver<network::mojom::UDPSocketListener>
socket_listener_receiver_;
std::unique_ptr<sockets_udp::Create::Params> params_;
};
......
......@@ -997,7 +997,7 @@ void NetworkContext::GetExpectCTState(const std::string& domain,
void NetworkContext::CreateUDPSocket(
mojo::PendingReceiver<mojom::UDPSocket> receiver,
mojom::UDPSocketListenerPtr listener) {
mojo::PendingRemote<mojom::UDPSocketListener> listener) {
socket_factory_->CreateUDPSocket(std::move(receiver), std::move(listener));
}
......
......@@ -242,8 +242,9 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
void GetExpectCTState(const std::string& domain,
GetExpectCTStateCallback callback) override;
#endif // BUILDFLAG(IS_CT_SUPPORTED)
void CreateUDPSocket(mojo::PendingReceiver<mojom::UDPSocket> receiver,
mojom::UDPSocketListenerPtr listener) override;
void CreateUDPSocket(
mojo::PendingReceiver<mojom::UDPSocket> receiver,
mojo::PendingRemote<mojom::UDPSocketListener> listener) override;
void CreateTCPServerSocket(
const net::IPEndPoint& local_addr,
uint32_t backlog,
......
......@@ -2384,21 +2384,20 @@ TEST_F(NetworkContextTest, CreateUDPSocket) {
// Create a server socket to listen for incoming datagrams.
test::UDPSocketListenerImpl listener;
mojo::Binding<mojom::UDPSocketListener> listener_binding(&listener);
mojom::UDPSocketListenerPtr listener_interface_ptr;
listener_binding.Bind(mojo::MakeRequest(&listener_interface_ptr));
mojo::Receiver<mojom::UDPSocketListener> listener_receiver(&listener);
net::IPEndPoint server_addr(GetLocalHostWithAnyPort());
mojo::Remote<mojom::UDPSocket> server_socket;
network_context->CreateUDPSocket(server_socket.BindNewPipeAndPassReceiver(),
std::move(listener_interface_ptr));
network_context->CreateUDPSocket(
server_socket.BindNewPipeAndPassReceiver(),
listener_receiver.BindNewPipeAndPassRemote());
test::UDPSocketTestHelper helper(&server_socket);
ASSERT_EQ(net::OK, helper.BindSync(server_addr, nullptr, &server_addr));
// Create a client socket to send datagrams.
mojo::Remote<mojom::UDPSocket> client_socket;
network_context->CreateUDPSocket(client_socket.BindNewPipeAndPassReceiver(),
nullptr);
mojo::NullRemote());
net::IPEndPoint client_addr(GetLocalHostWithAnyPort());
test::UDPSocketTestHelper client_helper(&client_socket);
......
......@@ -939,7 +939,7 @@ interface NetworkContext {
// Any sockets that are created but are yet to be destroyed will be destroyed
// when NetworkContext goes away.
CreateUDPSocket(pending_receiver<UDPSocket> receiver,
UDPSocketListener? listener);
pending_remote<UDPSocketListener>? listener);
// Creates a TCP server socket that listens on |local_addr|. The socket
// created can only be used for the purpose specified in |traffic_annotation|,
......
......@@ -42,7 +42,7 @@ SocketFactory::~SocketFactory() {}
void SocketFactory::CreateUDPSocket(
mojo::PendingReceiver<mojom::UDPSocket> receiver,
mojom::UDPSocketListenerPtr listener) {
mojo::PendingRemote<mojom::UDPSocketListener> listener) {
udp_socket_receivers_.Add(
std::make_unique<UDPSocket>(std::move(listener), net_log_),
std::move(receiver));
......
......@@ -11,6 +11,7 @@
#include "base/component_export.h"
#include "base/macros.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/strong_binding_set.h"
#include "mojo/public/cpp/bindings/unique_receiver_set.h"
#include "net/socket/ssl_client_socket.h"
......@@ -45,7 +46,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) SocketFactory
// These all correspond to the NetworkContext methods of the same name.
void CreateUDPSocket(mojo::PendingReceiver<mojom::UDPSocket> receiver,
mojom::UDPSocketListenerPtr listener);
mojo::PendingRemote<mojom::UDPSocketListener> listener);
void CreateTCPServerSocket(
const net::IPEndPoint& local_addr,
int backlog,
......
......@@ -13,6 +13,7 @@
#include "base/optional.h"
#include "base/time/time.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "net/base/address_list.h"
#include "net/base/ip_endpoint.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
......@@ -120,8 +121,9 @@ class TestNetworkContext : public mojom::NetworkContext {
void GetExpectCTState(const std::string& domain,
GetExpectCTStateCallback callback) override {}
#endif // BUILDFLAG(IS_CT_SUPPORTED)
void CreateUDPSocket(mojo::PendingReceiver<mojom::UDPSocket> receiver,
mojom::UDPSocketListenerPtr listener) override {}
void CreateUDPSocket(
mojo::PendingReceiver<mojom::UDPSocket> receiver,
mojo::PendingRemote<mojom::UDPSocketListener> listener) override {}
void CreateTCPServerSocket(
const net::IPEndPoint& local_addr,
uint32_t backlog,
......
......@@ -153,7 +153,8 @@ UDPSocket::PendingSendRequest::PendingSendRequest() {}
UDPSocket::PendingSendRequest::~PendingSendRequest() {}
UDPSocket::UDPSocket(mojom::UDPSocketListenerPtr listener, net::NetLog* net_log)
UDPSocket::UDPSocket(mojo::PendingRemote<mojom::UDPSocketListener> listener,
net::NetLog* net_log)
: net_log_(net_log),
is_bound_(false),
is_connected_(false),
......
......@@ -13,6 +13,8 @@
#include "base/containers/span.h"
#include "base/macros.h"
#include "base/memory/ref_counted.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "net/base/address_family.h"
#include "net/base/completion_once_callback.h"
#include "net/base/ip_endpoint.h"
......@@ -71,7 +73,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) UDPSocket : public mojom::UDPSocket {
net::CompletionOnceCallback callback) = 0;
};
UDPSocket(mojom::UDPSocketListenerPtr listener, net::NetLog* net_log);
UDPSocket(mojo::PendingRemote<mojom::UDPSocketListener> listener,
net::NetLog* net_log);
~UDPSocket() override;
// UDPSocket implementation.
......@@ -147,7 +150,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) UDPSocket : public mojom::UDPSocket {
bool is_connected_;
// The interface which gets data from fulfilled receive requests.
mojom::UDPSocketListenerPtr listener_;
mojo::Remote<mojom::UDPSocketListener> listener_;
std::unique_ptr<SocketWrapper> wrapped_socket_;
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment