blob: fa01b3a8864646d9f08011cce239f6326c42c42b [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.
#ifndef DEVICE_VR_TEST_FAKE_VR_DEVICE_H_
#define DEVICE_VR_TEST_FAKE_VR_DEVICE_H_
#include "base/macros.h"
#include "base/memory/ref_counted.h"
#include "device/vr/vr_device_base.h"
#include "device/vr/vr_device_provider.h"
#include "device/vr/vr_export.h"
namespace device {
// TODO(mthiesse, crbug.com/769373): Remove DEVICE_VR_EXPORT.
class DEVICE_VR_EXPORT FakeVRDevice : public VRDeviceBase,
public mojom::XRSessionController {
public:
explicit FakeVRDevice(mojom::XRDeviceId id);
~FakeVRDevice() override;
void RequestSession(
mojom::XRRuntimeSessionOptionsPtr options,
mojom::XRRuntime::RequestSessionCallback callback) override;
void SetPose(mojom::VRPosePtr pose) { pose_ = std::move(pose); }
void SetFrameDataRestricted(bool restricted) override {}
using VRDeviceBase::IsPresenting; // Make it public for tests.
void StopSession() { OnPresentingControllerMojoConnectionError(); }
private:
void OnPresentingControllerMojoConnectionError();
void OnGetInlineFrameData(
mojom::XRFrameDataProvider::GetFrameDataCallback callback) override;
mojom::VRDisplayInfoPtr InitBasicDevice();
mojom::VREyeParametersPtr InitEye(float fov, float offset, uint32_t size);
mojom::VRPosePtr pose_;
mojo::Binding<mojom::XRSessionController> controller_binding_;
DISALLOW_COPY_AND_ASSIGN(FakeVRDevice);
};
} // namespace device
#endif // DEVICE_VR_TEST_FAKE_VR_DEVICE_H_