OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "device/vr/vr_display_impl.h" | 5 #include "device/vr/vr_display_impl.h" |
6 | 6 |
7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
8 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
9 #include "device/vr/test/fake_vr_device.h" | 9 #include "device/vr/test/fake_vr_device.h" |
10 #include "device/vr/test/fake_vr_device_provider.h" | 10 #include "device/vr/test/fake_vr_device_provider.h" |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 true, base::Bind(&VRDisplayImplTest::onPresentComplete, | 50 true, base::Bind(&VRDisplayImplTest::onPresentComplete, |
51 base::Unretained(this))); | 51 base::Unretained(this))); |
52 } | 52 } |
53 | 53 |
54 void ExitPresent(VRDisplayImpl* display_impl) { display_impl->ExitPresent(); } | 54 void ExitPresent(VRDisplayImpl* display_impl) { display_impl->ExitPresent(); } |
55 | 55 |
56 void TearDown() override { base::RunLoop().RunUntilIdle(); } | 56 void TearDown() override { base::RunLoop().RunUntilIdle(); } |
57 | 57 |
58 VRDevice* device() { return device_; } | 58 VRDevice* device() { return device_; } |
59 | 59 |
60 bool presenting() { return !!device_->presenting_service_; } | 60 bool presenting() { return !!device_->presenting_display_; } |
61 | 61 |
62 base::MessageLoop message_loop_; | 62 base::MessageLoop message_loop_; |
63 bool is_request_presenting_success_ = false; | 63 bool is_request_presenting_success_ = false; |
64 FakeVRDeviceProvider* provider_; | 64 FakeVRDeviceProvider* provider_; |
65 FakeVRDevice* device_; | 65 FakeVRDevice* device_; |
66 std::vector<FakeVRServiceClient*> clients_; | 66 std::vector<FakeVRServiceClient*> clients_; |
67 std::unique_ptr<VRDeviceManager> device_manager_; | 67 std::unique_ptr<VRDeviceManager> device_manager_; |
68 | 68 |
69 DISALLOW_COPY_AND_ASSIGN(VRDisplayImplTest); | 69 DISALLOW_COPY_AND_ASSIGN(VRDisplayImplTest); |
70 }; | 70 }; |
71 | 71 |
72 TEST_F(VRDisplayImplTest, DevicePresentationIsolation) { | 72 TEST_F(VRDisplayImplTest, DevicePresentationIsolation) { |
73 auto service_1 = BindService(); | 73 auto service_1 = BindService(); |
74 auto service_2 = BindService(); | 74 auto service_2 = BindService(); |
75 | 75 |
76 // When not presenting either service should be able to access the device. | |
77 EXPECT_TRUE(device()->IsAccessAllowed(service_1.get())); | |
78 EXPECT_TRUE(device()->IsAccessAllowed(service_2.get())); | |
79 | |
80 VRDisplayImpl* display_1 = service_1->GetVRDisplayImpl(device()); | 76 VRDisplayImpl* display_1 = service_1->GetVRDisplayImpl(device()); |
81 VRDisplayImpl* display_2 = service_2->GetVRDisplayImpl(device()); | 77 VRDisplayImpl* display_2 = service_2->GetVRDisplayImpl(device()); |
82 | 78 |
| 79 // When not presenting either service should be able to access the device. |
| 80 EXPECT_TRUE(device()->IsAccessAllowed(display_1)); |
| 81 EXPECT_TRUE(device()->IsAccessAllowed(display_2)); |
| 82 |
83 // Begin presenting to the fake device with service 1. | 83 // Begin presenting to the fake device with service 1. |
84 RequestPresent(display_1); | 84 RequestPresent(display_1); |
85 EXPECT_TRUE(is_request_presenting_success_); | 85 EXPECT_TRUE(is_request_presenting_success_); |
86 EXPECT_TRUE(presenting()); | 86 EXPECT_TRUE(presenting()); |
87 | 87 |
88 // Service 2 should not be able to present to the device while service 1 | 88 // Service 2 should not be able to present to the device while service 1 |
89 // is still presenting. | 89 // is still presenting. |
90 RequestPresent(display_2); | 90 RequestPresent(display_2); |
91 EXPECT_FALSE(is_request_presenting_success_); | 91 EXPECT_FALSE(is_request_presenting_success_); |
92 EXPECT_TRUE(device()->IsAccessAllowed(service_1.get())); | 92 EXPECT_TRUE(device()->IsAccessAllowed(display_1)); |
93 EXPECT_FALSE(device()->IsAccessAllowed(service_2.get())); | 93 EXPECT_FALSE(device()->IsAccessAllowed(display_2)); |
94 | 94 |
95 // Service 2 should not be able to exit presentation to the device. | 95 // Service 2 should not be able to exit presentation to the device. |
96 ExitPresent(display_2); | 96 ExitPresent(display_2); |
97 EXPECT_TRUE(presenting()); | 97 EXPECT_TRUE(presenting()); |
98 | 98 |
99 // Service 1 should be able to exit the presentation it initiated. | 99 // Service 1 should be able to exit the presentation it initiated. |
100 ExitPresent(display_1); | 100 ExitPresent(display_1); |
101 EXPECT_FALSE(presenting()); | 101 EXPECT_FALSE(presenting()); |
102 | 102 |
103 // Once presentation had ended both services should be able to access the | 103 // Once presentation had ended both services should be able to access the |
104 // device. | 104 // device. |
105 EXPECT_TRUE(device()->IsAccessAllowed(service_1.get())); | 105 EXPECT_TRUE(device()->IsAccessAllowed(display_1)); |
106 EXPECT_TRUE(device()->IsAccessAllowed(service_2.get())); | 106 EXPECT_TRUE(device()->IsAccessAllowed(display_2)); |
107 } | 107 } |
108 | 108 |
109 // This test case tests VRDevice class default behaviour when it | 109 // This test case tests VRDevice class default behaviour when it |
110 // dispatch "vrdevicechanged" event. The expected behaviour is all | 110 // dispatch "vrdevicechanged" event. The expected behaviour is all |
111 // of the services related with this device will receive "vrdevicechanged" | 111 // of the services related with this device will receive "vrdevicechanged" |
112 // event. | 112 // event. |
113 TEST_F(VRDisplayImplTest, DeviceChangedDispatched) { | 113 TEST_F(VRDisplayImplTest, DeviceChangedDispatched) { |
114 auto service_1 = BindService(); | 114 auto service_1 = BindService(); |
115 auto service_2 = BindService(); | 115 auto service_2 = BindService(); |
116 | 116 |
117 device()->OnChanged(); | 117 device()->OnChanged(); |
118 | 118 |
119 base::RunLoop().RunUntilIdle(); | 119 base::RunLoop().RunUntilIdle(); |
120 | 120 |
121 for (auto client : clients_) | 121 for (auto client : clients_) |
122 EXPECT_TRUE(client->CheckDeviceId(device()->id())); | 122 EXPECT_TRUE(client->CheckDeviceId(device()->id())); |
123 } | 123 } |
124 } | 124 } |
OLD | NEW |