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