Index: device/vr/vr_display_impl.cc |
diff --git a/device/vr/vr_display_impl.cc b/device/vr/vr_display_impl.cc |
index c074205324a54b1caac4cfe169283a4f61a772d8..1449c55f4b79c579435013905b88db5bfc868518 100644 |
--- a/device/vr/vr_display_impl.cc |
+++ b/device/vr/vr_display_impl.cc |
@@ -21,29 +21,51 @@ VRDisplayImpl::VRDisplayImpl(device::VRDevice* device, VRServiceImpl* service) |
VRDisplayImpl::~VRDisplayImpl() {} |
void VRDisplayImpl::GetPose(const GetPoseCallback& callback) { |
- callback.Run(device_->GetPose(service_.get())); |
+ if (!device_->IsAccessAllowed(service_.get())) { |
+ callback.Run(nullptr); |
+ return; |
+ } |
+ |
+ callback.Run(device_->GetPose()); |
} |
void VRDisplayImpl::ResetPose() { |
- device_->ResetPose(service_.get()); |
+ if (!device_->IsAccessAllowed(service_.get())) |
+ return; |
+ |
+ device_->ResetPose(); |
} |
void VRDisplayImpl::RequestPresent(bool secureOrigin, |
const RequestPresentCallback& callback) { |
- callback.Run(device_->RequestPresent(service_.get(), secureOrigin)); |
+ if (!device_->IsAccessAllowed(service_.get())) { |
+ callback.Run(false); |
+ return; |
+ } |
+ |
+ bool success = device_->RequestPresent(secureOrigin); |
+ if (success) { |
+ device_->SetPresentingService(service_.get()); |
+ } |
+ callback.Run(success); |
} |
void VRDisplayImpl::ExitPresent() { |
- device_->ExitPresent(service_.get()); |
+ if (device_->IsPresentingService(service_.get())) |
+ device_->ExitPresent(); |
} |
void VRDisplayImpl::SubmitFrame(mojom::VRPosePtr pose) { |
- device_->SubmitFrame(service_.get(), std::move(pose)); |
+ if (!device_->IsPresentingService(service_.get())) |
+ return; |
+ device_->SubmitFrame(std::move(pose)); |
} |
void VRDisplayImpl::UpdateLayerBounds(mojom::VRLayerBoundsPtr leftBounds, |
mojom::VRLayerBoundsPtr rightBounds) { |
- device_->UpdateLayerBounds(service_.get(), std::move(leftBounds), |
- std::move(rightBounds)); |
+ if (!device_->IsAccessAllowed(service_.get())) |
+ return; |
+ |
+ device_->UpdateLayerBounds(std::move(leftBounds), std::move(rightBounds)); |
} |
} |