blob: 693407f5d7157914b786c8693c85734c28c1fc53 [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.h"
namespace device {
FakeVRDevice::FakeVRDevice(mojom::XRDeviceId id)
: VRDeviceBase(id), controller_binding_(this) {
SetVRDisplayInfo(InitBasicDevice());
}
FakeVRDevice::~FakeVRDevice() {}
mojom::VRDisplayInfoPtr FakeVRDevice::InitBasicDevice() {
mojom::VRDisplayInfoPtr display_info = mojom::VRDisplayInfo::New();
display_info->id = GetId();
display_info->displayName = "FakeVRDevice";
display_info->capabilities = mojom::VRDisplayCapabilities::New();
display_info->capabilities->hasPosition = false;
display_info->capabilities->hasExternalDisplay = false;
display_info->capabilities->canPresent = false;
display_info->leftEye = InitEye(45, -0.03f, 1024);
display_info->rightEye = InitEye(45, 0.03f, 1024);
return display_info;
}
mojom::VREyeParametersPtr FakeVRDevice::InitEye(float fov,
float offset,
uint32_t size) {
mojom::VREyeParametersPtr eye = mojom::VREyeParameters::New();
eye->fieldOfView = mojom::VRFieldOfView::New();
eye->fieldOfView->upDegrees = fov;
eye->fieldOfView->downDegrees = fov;
eye->fieldOfView->leftDegrees = fov;
eye->fieldOfView->rightDegrees = fov;
eye->offset.resize(3);
eye->offset[0] = offset;
eye->offset[1] = 0.0f;
eye->offset[2] = 0.0f;
eye->renderWidth = size;
eye->renderHeight = size;
return eye;
}
void FakeVRDevice::RequestSession(
mojom::XRRuntimeSessionOptionsPtr options,
mojom::XRRuntime::RequestSessionCallback callback) {
OnStartPresenting();
// The current tests never use the return values, so it's fine to return
// invalid data here.
std::move(callback).Run(nullptr, nullptr);
}
void FakeVRDevice::OnPresentingControllerMojoConnectionError() {
OnExitPresent();
controller_binding_.Close();
}
void FakeVRDevice::OnGetInlineFrameData(
mojom::XRFrameDataProvider::GetFrameDataCallback callback) {
mojom::XRFrameDataPtr frame_data = mojom::XRFrameData::New();
frame_data->pose = pose_.Clone();
std::move(callback).Run(std::move(frame_data));
}
} // namespace device