Migrate local-references to old mojo types declared in //components/arc
Convert remaining references to old mojo types in //components/arc and
other paths referencing the ARC-related types (i.e. //ash, //chrome), but
without touching the signature of the method implementing the actual mojo
interfaces as defined in the .mojom files in //compoments/arc/mojom, which
are being handled separately, as part of crbug.com/1035484.
TBR=jam@chromium.org
Bug: 955171
Change-Id: I452c7cfa2d1fc783eb4e629c4504c040c1f82908
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1975875
Commit-Queue: Mario Sanchez Prada <mario@igalia.com>
Reviewed-by: Yusuke Sato <yusukes@chromium.org>
Reviewed-by: Steven Bennetts <stevenjb@chromium.org>
Reviewed-by: Oksana Zhuravlova <oksamyt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#726892}
diff --git a/ash/public/cpp/arc_notifications_host_initializer.h b/ash/public/cpp/arc_notifications_host_initializer.h
index 3238ad58..4006d6b1 100644
--- a/ash/public/cpp/arc_notifications_host_initializer.h
+++ b/ash/public/cpp/arc_notifications_host_initializer.h
@@ -7,6 +7,7 @@
#include "ash/public/cpp/ash_public_export.h"
#include "components/arc/mojom/notifications.mojom.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
namespace ash {
@@ -15,7 +16,8 @@
static ArcNotificationsHostInitializer* Get();
virtual void SetArcNotificationsInstance(
- arc::mojom::NotificationsInstancePtr arc_notification_instance) = 0;
+ mojo::PendingRemote<arc::mojom::NotificationsInstance>
+ arc_notification_instance) = 0;
protected:
ArcNotificationsHostInitializer();
diff --git a/ash/system/message_center/arc/arc_notification_manager.cc b/ash/system/message_center/arc/arc_notification_manager.cc
index 511d6491..c45cb7ed 100644
--- a/ash/system/message_center/arc/arc_notification_manager.cc
+++ b/ash/system/message_center/arc/arc_notification_manager.cc
@@ -74,15 +74,16 @@
InstanceOwner() = default;
~InstanceOwner() = default;
- void SetInstancePtr(NotificationsInstancePtr instance_ptr) {
+ void SetInstanceRemote(
+ mojo::PendingRemote<arc::mojom::NotificationsInstance> instance_remote) {
DCHECK(!channel_);
channel_ =
std::make_unique<MojoChannel<NotificationsInstance, NotificationsHost>>(
- &holder_, std::move(instance_ptr));
+ &holder_, std::move(instance_remote));
// Using base::Unretained because |this| owns |channel_|.
- channel_->set_connection_error_handler(
+ channel_->set_disconnect_handler(
base::BindOnce(&InstanceOwner::OnDisconnected, base::Unretained(this)));
channel_->QueryVersion();
}
@@ -139,8 +140,9 @@
instance_owner_.reset();
}
-void ArcNotificationManager::SetInstance(NotificationsInstancePtr instance) {
- instance_owner_->SetInstancePtr(std::move(instance));
+void ArcNotificationManager::SetInstance(
+ mojo::PendingRemote<arc::mojom::NotificationsInstance> instance_remote) {
+ instance_owner_->SetInstanceRemote(std::move(instance_remote));
}
ConnectionHolder<NotificationsInstance, NotificationsHost>*
diff --git a/ash/system/message_center/arc/arc_notification_manager.h b/ash/system/message_center/arc/arc_notification_manager.h
index 84e61eda..c324fbfb 100644
--- a/ash/system/message_center/arc/arc_notification_manager.h
+++ b/ash/system/message_center/arc/arc_notification_manager.h
@@ -14,6 +14,7 @@
#include "components/arc/mojom/notifications.mojom.h"
#include "components/arc/session/connection_holder.h"
#include "components/arc/session/connection_observer.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
#include "ui/message_center/message_center.h"
namespace ash {
@@ -36,7 +37,8 @@
~ArcNotificationManager() override;
- void SetInstance(arc::mojom::NotificationsInstancePtr instance);
+ void SetInstance(
+ mojo::PendingRemote<arc::mojom::NotificationsInstance> instance_remote);
arc::ConnectionHolder<arc::mojom::NotificationsInstance,
arc::mojom::NotificationsHost>*
diff --git a/ash/system/message_center/arc/arc_notification_manager_unittest.cc b/ash/system/message_center/arc/arc_notification_manager_unittest.cc
index b467602c..9125a4a 100644
--- a/ash/system/message_center/arc/arc_notification_manager_unittest.cc
+++ b/ash/system/message_center/arc/arc_notification_manager_unittest.cc
@@ -16,7 +16,7 @@
#include "components/arc/session/connection_holder.h"
#include "components/arc/test/connection_holder_util.h"
#include "components/arc/test/fake_notifications_instance.h"
-#include "mojo/public/cpp/bindings/interface_ptr.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/message_center/fake_message_center.h"
@@ -140,10 +140,10 @@
receiver_ =
std::make_unique<mojo::Receiver<arc::mojom::NotificationsInstance>>(
arc_notifications_instance_.get());
- arc::mojom::NotificationsInstancePtr instance_ptr;
- receiver_->Bind(mojo::MakeRequest(&instance_ptr));
+ mojo::PendingRemote<arc::mojom::NotificationsInstance> remote;
+ receiver_->Bind(remote.InitWithNewPipeAndPassReceiver());
- arc_notification_manager_->SetInstance(std::move(instance_ptr));
+ arc_notification_manager_->SetInstance(std::move(remote));
WaitForInstanceReady(
arc_notification_manager_->GetConnectionHolderForTest());
}
diff --git a/ash/system/message_center/message_center_controller.cc b/ash/system/message_center/message_center_controller.cc
index 13738ab..1d7dba9 100644
--- a/ash/system/message_center/message_center_controller.cc
+++ b/ash/system/message_center/message_center_controller.cc
@@ -97,7 +97,8 @@
}
void MessageCenterController::SetArcNotificationsInstance(
- arc::mojom::NotificationsInstancePtr arc_notification_instance) {
+ mojo::PendingRemote<arc::mojom::NotificationsInstance>
+ arc_notification_instance) {
if (!arc_notification_manager_) {
arc_notification_manager_ = std::make_unique<ArcNotificationManager>(
std::make_unique<ArcNotificationManagerDelegateImpl>(),
diff --git a/ash/system/message_center/message_center_controller.h b/ash/system/message_center/message_center_controller.h
index 88bbc1e9..203cc36 100644
--- a/ash/system/message_center/message_center_controller.h
+++ b/ash/system/message_center/message_center_controller.h
@@ -10,6 +10,7 @@
#include "ash/ash_export.h"
#include "ash/public/cpp/arc_notifications_host_initializer.h"
#include "base/macros.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
class PrefRegistrySimple;
@@ -36,7 +37,8 @@
// ArcNotificationsHostInitializer:
void SetArcNotificationsInstance(
- arc::mojom::NotificationsInstancePtr arc_notification_instance) override;
+ mojo::PendingRemote<arc::mojom::NotificationsInstance>
+ arc_notification_instance) override;
InactiveUserNotificationBlocker*
inactive_user_notification_blocker_for_testing() {
diff --git a/chrome/browser/chromeos/arc/bluetooth/arc_bluetooth_bridge.cc b/chrome/browser/chromeos/arc/bluetooth/arc_bluetooth_bridge.cc
index f71d7117..2c36bdde 100644
--- a/chrome/browser/chromeos/arc/bluetooth/arc_bluetooth_bridge.cc
+++ b/chrome/browser/chromeos/arc/bluetooth/arc_bluetooth_bridge.cc
@@ -2774,9 +2774,9 @@
return;
}
std::move(callback).Run(mojom::BluetoothStatus::SUCCESS, listen_channel,
- mojo::MakeRequest(&sock_wrapper->remote));
+ sock_wrapper->remote.BindNewPipeAndPassReceiver());
- sock_wrapper->remote.set_connection_error_handler(
+ sock_wrapper->remote.set_disconnect_handler(
base::BindOnce(&ArcBluetoothBridge::RfcommCloseListeningSocket,
weak_factory_.GetWeakPtr(), sock_wrapper.get()));
listening_sockets_.insert(std::move(sock_wrapper));
@@ -2808,8 +2808,8 @@
}
std::move(callback).Run(mojom::BluetoothStatus::SUCCESS,
- mojo::MakeRequest(&sock_wrapper->remote));
- sock_wrapper->remote.set_connection_error_handler(
+ sock_wrapper->remote.BindNewPipeAndPassReceiver());
+ sock_wrapper->remote.set_disconnect_handler(
base::BindOnce(&ArcBluetoothBridge::RfcommCloseConnectingSocket,
weak_factory_.GetWeakPtr(), sock_wrapper.get()));
connecting_sockets_.insert(std::move(sock_wrapper));
diff --git a/chrome/browser/chromeos/arc/bluetooth/arc_bluetooth_bridge.h b/chrome/browser/chromeos/arc/bluetooth/arc_bluetooth_bridge.h
index ec3485d..27ef6b3 100644
--- a/chrome/browser/chromeos/arc/bluetooth/arc_bluetooth_bridge.h
+++ b/chrome/browser/chromeos/arc/bluetooth/arc_bluetooth_bridge.h
@@ -37,6 +37,7 @@
#include "device/bluetooth/bluetooth_remote_gatt_descriptor.h"
#include "device/bluetooth/bluetooth_remote_gatt_service.h"
#include "device/bluetooth/bluez/bluetooth_adapter_bluez.h"
+#include "mojo/public/cpp/bindings/remote.h"
namespace content {
class BrowserContext;
@@ -521,14 +522,14 @@
// Data structures for RFCOMM listening/connecting sockets that live in
// Chrome.
struct RfcommListeningSocket {
- mojom::RfcommListeningSocketClientPtr remote;
+ mojo::Remote<mojom::RfcommListeningSocketClient> remote;
base::ScopedFD file;
std::unique_ptr<base::FileDescriptorWatcher::Controller> controller;
RfcommListeningSocket();
~RfcommListeningSocket();
};
struct RfcommConnectingSocket {
- mojom::RfcommConnectingSocketClientPtr remote;
+ mojo::Remote<mojom::RfcommConnectingSocketClient> remote;
base::ScopedFD file;
std::unique_ptr<base::FileDescriptorWatcher::Controller> controller;
RfcommConnectingSocket();
diff --git a/chrome/browser/chromeos/arc/oemcrypto/arc_oemcrypto_bridge.cc b/chrome/browser/chromeos/arc/oemcrypto/arc_oemcrypto_bridge.cc
index 8e39aa8..4a8402b 100644
--- a/chrome/browser/chromeos/arc/oemcrypto/arc_oemcrypto_bridge.cc
+++ b/chrome/browser/chromeos/arc/oemcrypto/arc_oemcrypto_bridge.cc
@@ -80,7 +80,7 @@
// it as an error.
DVLOG(1) << "ArcOemCryptoBridge had a failure in D-Bus with the daemon";
// Reset this so we don't think it is bound on future calls to Connect.
- oemcrypto_host_daemon_ptr_.reset();
+ oemcrypto_host_daemon_remote_.reset();
return;
}
DVLOG(1) << "ArcOemCryptoBridge succeeded with Mojo bootstrapping.";
@@ -107,7 +107,7 @@
return;
}
- if (oemcrypto_host_daemon_ptr_.is_bound()) {
+ if (oemcrypto_host_daemon_remote_.is_bound()) {
DVLOG(1) << "Re-using bootstrap connection for OemCryptoService Connect";
ConnectToDaemon(std::move(request));
return;
@@ -126,12 +126,13 @@
// Bind the Mojo pipe to the interface before we send the D-Bus message
// to avoid any kind of race condition with detecting it's been bound.
// It's safe to do this before the other end binds anyways.
- oemcrypto_host_daemon_ptr_.Bind(
- mojo::InterfacePtrInfo<arc_oemcrypto::mojom::OemCryptoHostDaemon>(
+ oemcrypto_host_daemon_remote_.reset();
+ oemcrypto_host_daemon_remote_.Bind(
+ mojo::PendingRemote<arc_oemcrypto::mojom::OemCryptoHostDaemon>(
std::move(server_pipe), 0u));
DVLOG(1) << "Bound remote OemCryptoHostDaemon interface to pipe";
- oemcrypto_host_daemon_ptr_.set_connection_error_handler(base::BindOnce(
+ oemcrypto_host_daemon_remote_.set_disconnect_handler(base::BindOnce(
&ArcOemCryptoBridge::OnMojoConnectionError, weak_factory_.GetWeakPtr()));
chromeos::DBusThreadManager::Get()
->GetArcOemCryptoClient()
@@ -143,7 +144,7 @@
void ArcOemCryptoBridge::ConnectToDaemon(
mojom::OemCryptoServiceRequest request) {
- if (!oemcrypto_host_daemon_ptr_) {
+ if (!oemcrypto_host_daemon_remote_) {
VLOG(1) << "Mojo connection is already lost.";
return;
}
@@ -160,18 +161,18 @@
void ArcOemCryptoBridge::FinishConnectingToDaemon(
mojom::OemCryptoServiceRequest request,
mojo::PendingRemote<mojom::ProtectedBufferManager> gpu_buffer_manager) {
- if (!oemcrypto_host_daemon_ptr_) {
+ if (!oemcrypto_host_daemon_remote_) {
VLOG(1) << "Mojo connection is already lost.";
return;
}
- oemcrypto_host_daemon_ptr_->Connect(std::move(request),
- std::move(gpu_buffer_manager));
+ oemcrypto_host_daemon_remote_->Connect(std::move(request),
+ std::move(gpu_buffer_manager));
}
void ArcOemCryptoBridge::OnMojoConnectionError() {
LOG(ERROR) << "ArcOemCryptoBridge Mojo connection lost.";
- oemcrypto_host_daemon_ptr_.reset();
+ oemcrypto_host_daemon_remote_.reset();
}
} // namespace arc
diff --git a/chrome/browser/chromeos/arc/oemcrypto/arc_oemcrypto_bridge.h b/chrome/browser/chromeos/arc/oemcrypto/arc_oemcrypto_bridge.h
index 8ed5f06..d280fc2 100644
--- a/chrome/browser/chromeos/arc/oemcrypto/arc_oemcrypto_bridge.h
+++ b/chrome/browser/chromeos/arc/oemcrypto/arc_oemcrypto_bridge.h
@@ -14,6 +14,7 @@
#include "components/arc/mojom/oemcrypto_daemon.mojom.h"
#include "components/keyed_service/core/keyed_service.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
+#include "mojo/public/cpp/bindings/remote.h"
namespace content {
class BrowserContext;
@@ -48,7 +49,8 @@
void OnMojoConnectionError();
ArcBridgeService* const arc_bridge_service_; // Owned by ArcServiceManager.
- arc_oemcrypto::mojom::OemCryptoHostDaemonPtr oemcrypto_host_daemon_ptr_;
+ mojo::Remote<arc_oemcrypto::mojom::OemCryptoHostDaemon>
+ oemcrypto_host_daemon_remote_;
// WeakPtrFactory to use for callbacks.
base::WeakPtrFactory<ArcOemCryptoBridge> weak_factory_{this};
diff --git a/components/arc/midis/arc_midis_bridge.cc b/components/arc/midis/arc_midis_bridge.cc
index 4972701..a0edd30 100644
--- a/components/arc/midis/arc_midis_bridge.cc
+++ b/components/arc/midis/arc_midis_bridge.cc
@@ -12,6 +12,7 @@
#include "chromeos/dbus/dbus_thread_manager.h"
#include "components/arc/arc_browser_context_keyed_service_factory_base.h"
#include "components/arc/session/arc_bridge_service.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/platform/platform_channel.h"
#include "mojo/public/cpp/system/invitation.h"
@@ -61,22 +62,22 @@
bool result) {
if (!result) {
LOG(ERROR) << "ArcMidisBridge had a failure in D-Bus with the daemon.";
- midis_host_ptr_.reset();
+ midis_host_remote_.reset();
return;
}
- if (!midis_host_ptr_) {
+ if (!midis_host_remote_) {
VLOG(1) << "ArcMidisBridge was already lost.";
return;
}
DVLOG(1) << "ArcMidisBridge succeeded with Mojo bootstrapping.";
- midis_host_ptr_->Connect(std::move(request), std::move(client_ptr));
+ midis_host_remote_->Connect(std::move(request), std::move(client_ptr));
}
void ArcMidisBridge::Connect(mojom::MidisServerRequest request,
mojom::MidisClientPtr client_ptr) {
- if (midis_host_ptr_.is_bound()) {
+ if (midis_host_remote_.is_bound()) {
DVLOG(1) << "Re-using bootstrap connection for MidisServer Connect.";
- midis_host_ptr_->Connect(std::move(request), std::move(client_ptr));
+ midis_host_remote_->Connect(std::move(request), std::move(client_ptr));
return;
}
DVLOG(1) << "Bootstrapping the Midis connection via D-Bus.";
@@ -88,11 +89,12 @@
base::kNullProcessHandle,
channel.TakeLocalEndpoint());
- midis_host_ptr_.Bind(
- mojo::InterfacePtrInfo<mojom::MidisHost>(std::move(server_pipe), 0u));
+ midis_host_remote_.reset();
+ midis_host_remote_.Bind(
+ mojo::PendingRemote<mojom::MidisHost>(std::move(server_pipe), 0u));
DVLOG(1) << "Bound remote MidisHost interface to pipe.";
- midis_host_ptr_.set_connection_error_handler(base::BindOnce(
+ midis_host_remote_.set_disconnect_handler(base::BindOnce(
&ArcMidisBridge::OnMojoConnectionError, weak_factory_.GetWeakPtr()));
chromeos::DBusThreadManager::Get()
->GetArcMidisClient()
@@ -105,7 +107,7 @@
void ArcMidisBridge::OnMojoConnectionError() {
LOG(ERROR) << "ArcMidisBridge Mojo connection lost.";
- midis_host_ptr_.reset();
+ midis_host_remote_.reset();
}
} // namespace arc
diff --git a/components/arc/midis/arc_midis_bridge.h b/components/arc/midis/arc_midis_bridge.h
index 2e49a602..6bfcf7b 100644
--- a/components/arc/midis/arc_midis_bridge.h
+++ b/components/arc/midis/arc_midis_bridge.h
@@ -12,6 +12,7 @@
#include "base/macros.h"
#include "components/arc/mojom/midis.mojom.h"
#include "components/keyed_service/core/keyed_service.h"
+#include "mojo/public/cpp/bindings/remote.h"
namespace content {
class BrowserContext;
@@ -43,7 +44,7 @@
void OnMojoConnectionError();
ArcBridgeService* const arc_bridge_service_; // Owned by ArcServiceManager.
- mojom::MidisHostPtr midis_host_ptr_;
+ mojo::Remote<mojom::MidisHost> midis_host_remote_;
// WeakPtrFactory to use for callbacks.
base::WeakPtrFactory<ArcMidisBridge> weak_factory_{this};
diff --git a/components/arc/session/arc_bridge_host_impl.cc b/components/arc/session/arc_bridge_host_impl.cc
index 01c42b1..82097b7c 100644
--- a/components/arc/session/arc_bridge_host_impl.cc
+++ b/components/arc/session/arc_bridge_host_impl.cc
@@ -67,14 +67,15 @@
namespace arc {
-ArcBridgeHostImpl::ArcBridgeHostImpl(ArcBridgeService* arc_bridge_service,
- mojom::ArcBridgeInstancePtr instance)
+ArcBridgeHostImpl::ArcBridgeHostImpl(
+ ArcBridgeService* arc_bridge_service,
+ mojo::PendingRemote<mojom::ArcBridgeInstance> instance)
: arc_bridge_service_(arc_bridge_service),
receiver_(this),
instance_(std::move(instance)) {
DCHECK(arc_bridge_service_);
DCHECK(instance_.is_bound());
- instance_.set_connection_error_handler(
+ instance_.set_disconnect_handler(
base::BindOnce(&ArcBridgeHostImpl::OnClosed, base::Unretained(this)));
mojom::ArcBridgeHostPtr host_proxy;
receiver_.Bind(mojo::MakeRequest(&host_proxy));
@@ -232,7 +233,7 @@
mojom::NotificationsInstancePtr notifications_ptr) {
// Forward notification instance to ash.
ash::ArcNotificationsHostInitializer::Get()->SetArcNotificationsInstance(
- std::move(notifications_ptr));
+ notifications_ptr.PassInterface());
}
void ArcBridgeHostImpl::OnObbMounterInstanceReady(
@@ -382,13 +383,13 @@
// closed on ArcBridgeHost/Instance closing or the ArcBridgeHostImpl's
// destruction.
auto* channel =
- new MojoChannel<InstanceType, HostType>(holder, std::move(ptr));
+ new MojoChannel<InstanceType, HostType>(holder, ptr.PassInterface());
mojo_channels_.emplace_back(channel);
// Since |channel| is managed by |mojo_channels_|, its lifetime is shorter
// than |this|. Thus, the connection error handler will be invoked only
// when |this| is alive and base::Unretained is safe here.
- channel->set_connection_error_handler(base::BindOnce(
+ channel->set_disconnect_handler(base::BindOnce(
&ArcBridgeHostImpl::OnChannelClosed, base::Unretained(this), channel));
// Call QueryVersion so that the version info is properly stored in the
diff --git a/components/arc/session/arc_bridge_host_impl.h b/components/arc/session/arc_bridge_host_impl.h
index cf16bea..d0c78d4 100644
--- a/components/arc/session/arc_bridge_host_impl.h
+++ b/components/arc/session/arc_bridge_host_impl.h
@@ -13,7 +13,9 @@
#include "components/arc/mojom/arc_bridge.mojom.h"
#include "components/arc/session/connection_holder.h"
#include "mojo/public/cpp/bindings/interface_ptr.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/receiver.h"
+#include "mojo/public/cpp/bindings/remote.h"
namespace arc {
@@ -32,7 +34,7 @@
class ArcBridgeHostImpl : public mojom::ArcBridgeHost {
public:
ArcBridgeHostImpl(ArcBridgeService* arc_bridge_service,
- mojom::ArcBridgeInstancePtr instance);
+ mojo::PendingRemote<mojom::ArcBridgeInstance> instance);
~ArcBridgeHostImpl() override;
// ArcBridgeHost overrides.
@@ -139,7 +141,7 @@
ArcBridgeService* const arc_bridge_service_;
mojo::Receiver<mojom::ArcBridgeHost> receiver_;
- mojom::ArcBridgeInstancePtr instance_;
+ mojo::Remote<mojom::ArcBridgeInstance> instance_;
// Put as a last member to ensure that any callback tied to the elements
// is not invoked.
diff --git a/components/arc/session/arc_session_impl.cc b/components/arc/session/arc_session_impl.cc
index 19398fd..9ed591be 100644
--- a/components/arc/session/arc_session_impl.cc
+++ b/components/arc/session/arc_session_impl.cc
@@ -33,7 +33,8 @@
#include "components/arc/session/arc_bridge_host_impl.h"
#include "components/user_manager/user_manager.h"
#include "components/version_info/channel.h"
-#include "mojo/public/cpp/bindings/binding.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
+#include "mojo/public/cpp/bindings/remote.h"
#include "mojo/public/cpp/platform/named_platform_channel.h"
#include "mojo/public/cpp/platform/platform_channel.h"
#include "mojo/public/cpp/platform/platform_handle.h"
@@ -294,11 +295,9 @@
return;
}
- mojom::ArcBridgeInstancePtr instance;
- instance.Bind(mojo::InterfacePtrInfo<mojom::ArcBridgeInstance>(
- std::move(server_pipe), 0u));
std::move(callback).Run(std::make_unique<ArcBridgeHostImpl>(
- arc_bridge_service_, std::move(instance)));
+ arc_bridge_service_, mojo::PendingRemote<mojom::ArcBridgeInstance>(
+ std::move(server_pipe), 0u)));
}
} // namespace
diff --git a/components/arc/session/mojo_channel.h b/components/arc/session/mojo_channel.h
index 55eb8db..f8b8ce5 100644
--- a/components/arc/session/mojo_channel.h
+++ b/components/arc/session/mojo_channel.h
@@ -10,10 +10,12 @@
#include "base/bind.h"
#include "base/macros.h"
#include "components/arc/session/connection_holder.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
+#include "mojo/public/cpp/bindings/remote.h"
namespace arc {
-// Thin interface to wrap InterfacePtr<T> with type erasure.
+// Thin interface to wrap Remote<T> with type erasure.
class MojoChannelBase {
public:
virtual ~MojoChannelBase() = default;
@@ -25,39 +27,39 @@
DISALLOW_COPY_AND_ASSIGN(MojoChannelBase);
};
-// Thin wrapper for InterfacePtr<T>, where T is one of ARC mojo Instance class.
+// Thin wrapper for Remote<T>, where T is one of ARC mojo Instance class.
template <typename InstanceType, typename HostType>
class MojoChannel : public MojoChannelBase {
public:
MojoChannel(ConnectionHolder<InstanceType, HostType>* holder,
- mojo::InterfacePtr<InstanceType> ptr)
- : holder_(holder), ptr_(std::move(ptr)) {
+ mojo::PendingRemote<InstanceType> remote)
+ : holder_(holder), remote_(std::move(remote)) {
// Delay registration to the ConnectionHolder until the version is ready.
}
- ~MojoChannel() override { holder_->CloseInstance(ptr_.get()); }
+ ~MojoChannel() override { holder_->CloseInstance(remote_.get()); }
- void set_connection_error_handler(base::OnceClosure error_handler) {
- ptr_.set_connection_error_handler(std::move(error_handler));
+ void set_disconnect_handler(base::OnceClosure error_handler) {
+ remote_.set_disconnect_handler(std::move(error_handler));
}
void QueryVersion() {
- // Note: the callback will not be called if |ptr_| is destroyed.
- ptr_.QueryVersion(
+ // Note: the callback will not be called if |remote_| is destroyed.
+ remote_.QueryVersion(
base::Bind(&MojoChannel::OnVersionReady, base::Unretained(this)));
}
private:
void OnVersionReady(uint32_t unused_version) {
- holder_->SetInstance(ptr_.get(), ptr_.version());
+ holder_->SetInstance(remote_.get(), remote_.version());
}
// Externally owned ConnectionHolder instance.
ConnectionHolder<InstanceType, HostType>* const holder_;
- // Put as a last member to ensure that any callback tied to the |ptr_|
+ // Put as a last member to ensure that any callback tied to the |remote_|
// is not invoked.
- mojo::InterfacePtr<InstanceType> ptr_;
+ mojo::Remote<InstanceType> remote_;
DISALLOW_COPY_AND_ASSIGN(MojoChannel);
};