Commit 9e87675e authored by Miyoung Shin's avatar Miyoung Shin Committed by Commit Bot

Convert IsolatedXRRuntimeProviderClient to new Mojo types

This CL converts IsolatedXRRuntimeProviderClientPtr and
mojo::Binding<T> in chrome to the new Mojo type, and use
pending_remote<T> in isolated_xr_service.mojom.

Bug: 955171
Change-Id: I2c186d27cb3c3c346504a61ec70839346a21b033
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1847706
Commit-Queue: Miyoung Shin <myid.shin@igalia.com>
Reviewed-by: default avatarSam McNally <sammc@chromium.org>
Reviewed-by: default avatarKen Rockot <rockot@google.com>
Reviewed-by: default avatarKlaus Weidner <klausw@chromium.org>
Cr-Commit-Position: refs/heads/master@{#704466}
parent 401587cc
......@@ -77,7 +77,7 @@ void IsolatedVRDeviceProvider::OnServerError() {
OnDevicesEnumerated();
} else {
device_provider_.reset();
binding_.Close();
receiver_.reset();
retry_count_++;
SetupDeviceProvider();
}
......@@ -102,12 +102,10 @@ void IsolatedVRDeviceProvider::SetupDeviceProvider() {
device_provider_.set_disconnect_handler(base::BindOnce(
&IsolatedVRDeviceProvider::OnServerError, base::Unretained(this)));
device::mojom::IsolatedXRRuntimeProviderClientPtr client;
binding_.Bind(mojo::MakeRequest(&client));
device_provider_->RequestDevices(std::move(client));
device_provider_->RequestDevices(receiver_.BindNewPipeAndPassRemote());
}
IsolatedVRDeviceProvider::IsolatedVRDeviceProvider() : binding_(this) {}
IsolatedVRDeviceProvider::IsolatedVRDeviceProvider() = default;
IsolatedVRDeviceProvider::~IsolatedVRDeviceProvider() {
for (auto& entry : ui_host_map_) {
......
......@@ -9,7 +9,7 @@
#include "device/vr/public/mojom/isolated_xr_service.mojom.h"
#include "device/vr/vr_device.h"
#include "device/vr/vr_device_provider.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.h"
namespace vr {
......@@ -58,7 +58,8 @@ class IsolatedVRDeviceProvider
base::RepeatingCallback<void(device::mojom::XRDeviceId)>
remove_device_callback_;
base::OnceClosure initialization_complete_;
mojo::Binding<device::mojom::IsolatedXRRuntimeProviderClient> binding_;
mojo::Receiver<device::mojom::IsolatedXRRuntimeProviderClient> receiver_{
this};
using UiHostMap =
base::flat_map<device::mojom::XRDeviceId, std::unique_ptr<VRUiHost>>;
......
......@@ -39,7 +39,7 @@ constexpr base::TimeDelta kTimeBetweenPollingEvents =
template <typename VrDeviceT>
std::unique_ptr<VrDeviceT> EnableRuntime(
device::mojom::IsolatedXRRuntimeProviderClientPtr& client) {
device::mojom::IsolatedXRRuntimeProviderClient* client) {
auto device = std::make_unique<VrDeviceT>();
TRACE_EVENT_INSTANT1("xr", "HardwareAdded", TRACE_EVENT_SCOPE_THREAD, "id",
static_cast<int>(device->GetId()));
......@@ -52,7 +52,7 @@ std::unique_ptr<VrDeviceT> EnableRuntime(
}
template <typename VrDeviceT>
void DisableRuntime(device::mojom::IsolatedXRRuntimeProviderClientPtr& client,
void DisableRuntime(device::mojom::IsolatedXRRuntimeProviderClient* client,
std::unique_ptr<VrDeviceT> device) {
TRACE_EVENT_INSTANT1("xr", "HardwareRemoved", TRACE_EVENT_SCOPE_THREAD, "id",
static_cast<int>(device->GetId()));
......@@ -62,7 +62,7 @@ void DisableRuntime(device::mojom::IsolatedXRRuntimeProviderClientPtr& client,
}
template <typename VrHardwareT>
void SetRuntimeStatus(device::mojom::IsolatedXRRuntimeProviderClientPtr& client,
void SetRuntimeStatus(device::mojom::IsolatedXRRuntimeProviderClient* client,
IsolatedXRRuntimeProvider::RuntimeStatus status,
std::unique_ptr<VrHardwareT>* out_device) {
if (status == IsolatedXRRuntimeProvider::RuntimeStatus::kEnable &&
......@@ -171,9 +171,10 @@ void IsolatedXRRuntimeProvider::SetupPollingForDeviceChanges() {
}
void IsolatedXRRuntimeProvider::RequestDevices(
device::mojom::IsolatedXRRuntimeProviderClientPtr client) {
mojo::PendingRemote<device::mojom::IsolatedXRRuntimeProviderClient>
client) {
// Start polling to detect devices being added/removed.
client_ = std::move(client);
client_.Bind(std::move(client));
SetupPollingForDeviceChanges();
client_->OnDevicesEnumerated();
}
......@@ -186,7 +187,7 @@ bool IsolatedXRRuntimeProvider::IsOculusVrHardwareAvailable() {
}
void IsolatedXRRuntimeProvider::SetOculusVrRuntimeStatus(RuntimeStatus status) {
SetRuntimeStatus(client_, status, &oculus_device_);
SetRuntimeStatus(client_.get(), status, &oculus_device_);
}
#endif // BUILDFLAG(ENABLE_OCULUS_VR)
......@@ -198,7 +199,7 @@ bool IsolatedXRRuntimeProvider::IsOpenVrHardwareAvailable() {
}
void IsolatedXRRuntimeProvider::SetOpenVrRuntimeStatus(RuntimeStatus status) {
SetRuntimeStatus(client_, status, &openvr_device_);
SetRuntimeStatus(client_.get(), status, &openvr_device_);
}
#endif // BUILDFLAG(ENABLE_OPENVR)
......@@ -208,7 +209,7 @@ bool IsolatedXRRuntimeProvider::IsWMRHardwareAvailable() {
}
void IsolatedXRRuntimeProvider::SetWMRRuntimeStatus(RuntimeStatus status) {
SetRuntimeStatus(client_, status, &wmr_device_);
SetRuntimeStatus(client_.get(), status, &wmr_device_);
}
#endif // BUILDFLAG(ENABLE_WINDOWS_MR)
......@@ -218,7 +219,7 @@ bool IsolatedXRRuntimeProvider::IsOpenXrHardwareAvailable() {
}
void IsolatedXRRuntimeProvider::SetOpenXrRuntimeStatus(RuntimeStatus status) {
SetRuntimeStatus(client_, status, &openxr_device_);
SetRuntimeStatus(client_.get(), status, &openxr_device_);
}
#endif // BUILDFLAG(ENABLE_OPENXR)
......
......@@ -9,6 +9,8 @@
#include "device/vr/buildflags/buildflags.h"
#include "device/vr/public/mojom/isolated_xr_service.mojom.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/remote.h"
namespace device {
class OculusDevice;
......@@ -25,7 +27,8 @@ class IsolatedXRRuntimeProvider
~IsolatedXRRuntimeProvider() final;
void RequestDevices(
device::mojom::IsolatedXRRuntimeProviderClientPtr client) override;
mojo::PendingRemote<device::mojom::IsolatedXRRuntimeProviderClient>
client) override;
enum class RuntimeStatus;
......@@ -62,7 +65,7 @@ class IsolatedXRRuntimeProvider
std::unique_ptr<device::OpenXrDevice> openxr_device_;
#endif
device::mojom::IsolatedXRRuntimeProviderClientPtr client_;
mojo::Remote<device::mojom::IsolatedXRRuntimeProviderClient> client_;
base::WeakPtrFactory<IsolatedXRRuntimeProvider> weak_ptr_factory_{this};
};
......
......@@ -220,7 +220,7 @@ interface IsolatedXRRuntimeProvider {
// Register a client, and triggers OnDeviceAdded for all available runtimes,
// followed by OnDevicesEnumerated.
// Should only be called once.
RequestDevices(IsolatedXRRuntimeProviderClient client);
RequestDevices(pending_remote<IsolatedXRRuntimeProviderClient> client);
};
// The main interface for the XR Device Service.
......
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