blob: 567775bf2394ec61fd24ad213e145716b11d1b25 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "device/vr/test/fake_vr_device_provider.h"
#include "device/vr/vr_device_base.h"
namespace device {
FakeVRDeviceProvider::FakeVRDeviceProvider() : VRDeviceProvider() {
initialized_ = false;
}
FakeVRDeviceProvider::~FakeVRDeviceProvider() {}
void FakeVRDeviceProvider::AddDevice(std::unique_ptr<VRDeviceBase> device) {
VRDeviceBase* device_base = static_cast<VRDeviceBase*>(device.get());
devices_.push_back(std::move(device));
if (initialized_)
add_device_callback_.Run(device_base->GetId(),
device_base->GetVRDisplayInfo(),
device_base->BindXRRuntimePtr());
}
void FakeVRDeviceProvider::RemoveDevice(mojom::XRDeviceId device_id) {
auto it = std::find_if(
devices_.begin(), devices_.end(),
[device_id](const std::unique_ptr<VRDeviceBase>& device) {
return static_cast<VRDeviceBase*>(device.get())->GetId() == device_id;
});
if (initialized_)
remove_device_callback_.Run(device_id);
devices_.erase(it);
}
void FakeVRDeviceProvider::Initialize(
base::RepeatingCallback<void(mojom::XRDeviceId,
mojom::VRDisplayInfoPtr,
mojom::XRRuntimePtr)> add_device_callback,
base::RepeatingCallback<void(mojom::XRDeviceId)> remove_device_callback,
base::OnceClosure initialization_complete) {
add_device_callback_ = std::move(add_device_callback);
remove_device_callback_ = std::move(remove_device_callback);
for (std::unique_ptr<VRDeviceBase>& device : devices_) {
auto* device_base = static_cast<VRDeviceBase*>(device.get());
add_device_callback_.Run(device_base->GetId(),
device_base->GetVRDisplayInfo(),
device_base->BindXRRuntimePtr());
}
initialized_ = true;
std::move(initialization_complete).Run();
}
bool FakeVRDeviceProvider::Initialized() {
return initialized_;
}
} // namespace device