vr_device_base_unittest.cc 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. // Copyright 2017 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "device/vr/vr_device.h"
  5. #include <memory>
  6. #include "base/bind.h"
  7. #include "base/callback_helpers.h"
  8. #include "base/run_loop.h"
  9. #include "base/test/task_environment.h"
  10. #include "device/vr/public/mojom/vr_service.mojom.h"
  11. #include "device/vr/test/fake_vr_device.h"
  12. #include "device/vr/vr_device_base.h"
  13. #include "mojo/public/cpp/bindings/associated_receiver.h"
  14. #include "mojo/public/cpp/bindings/remote.h"
  15. #include "testing/gmock/include/gmock/gmock.h"
  16. #include "testing/gtest/include/gtest/gtest.h"
  17. namespace device {
  18. namespace {
  19. class VRDeviceBaseForTesting : public VRDeviceBase {
  20. public:
  21. VRDeviceBaseForTesting() : VRDeviceBase(mojom::XRDeviceId::FAKE_DEVICE_ID) {}
  22. VRDeviceBaseForTesting(const VRDeviceBaseForTesting&) = delete;
  23. VRDeviceBaseForTesting& operator=(const VRDeviceBaseForTesting&) = delete;
  24. ~VRDeviceBaseForTesting() override = default;
  25. void RequestSession(
  26. mojom::XRRuntimeSessionOptionsPtr options,
  27. mojom::XRRuntime::RequestSessionCallback callback) override {}
  28. };
  29. class StubVRDeviceEventListener : public mojom::XRRuntimeEventListener {
  30. public:
  31. StubVRDeviceEventListener() = default;
  32. ~StubVRDeviceEventListener() override = default;
  33. MOCK_METHOD0(OnExitPresent, void());
  34. MOCK_METHOD1(OnVisibilityStateChanged, void(mojom::XRVisibilityState));
  35. mojo::PendingAssociatedRemote<mojom::XRRuntimeEventListener>
  36. BindPendingRemote() {
  37. return receiver_.BindNewEndpointAndPassRemote();
  38. }
  39. mojo::AssociatedReceiver<mojom::XRRuntimeEventListener> receiver_{this};
  40. };
  41. } // namespace
  42. class VRDeviceTest : public testing::Test {
  43. public:
  44. VRDeviceTest() {}
  45. VRDeviceTest(const VRDeviceTest&) = delete;
  46. VRDeviceTest& operator=(const VRDeviceTest&) = delete;
  47. ~VRDeviceTest() override {}
  48. protected:
  49. std::unique_ptr<VRDeviceBaseForTesting> MakeVRDevice() {
  50. std::unique_ptr<VRDeviceBaseForTesting> device =
  51. std::make_unique<VRDeviceBaseForTesting>();
  52. return device;
  53. }
  54. base::test::SingleThreadTaskEnvironment task_environment_;
  55. };
  56. // Tests VRDevice class default behaviour when it dispatches "vrdevicechanged"
  57. // event. The expected behaviour is all of the services related with this device
  58. // will receive the "vrdevicechanged" event.
  59. TEST_F(VRDeviceTest, DeviceChangedDispatched) {
  60. auto device = MakeVRDevice();
  61. mojo::Remote<mojom::XRRuntime> device_remote(device->BindXRRuntime());
  62. StubVRDeviceEventListener listener;
  63. device_remote->ListenToDeviceChanges(listener.BindPendingRemote());
  64. base::RunLoop().RunUntilIdle();
  65. base::RunLoop().RunUntilIdle();
  66. }
  67. } // namespace device