Chromium Code Reviews| Index: device/vr/vr_display_impl.cc |
| diff --git a/device/vr/vr_display_impl.cc b/device/vr/vr_display_impl.cc |
| index bdbb073136f33bd921948c5902319f0fcd1f44ad..9c4b2c4960e98e5c7be7c2ed8c5515d33eb0f612 100644 |
| --- a/device/vr/vr_display_impl.cc |
| +++ b/device/vr/vr_display_impl.cc |
| @@ -11,7 +11,10 @@ |
| namespace device { |
| VRDisplayImpl::VRDisplayImpl(device::VRDevice* device, VRServiceImpl* service) |
| - : binding_(this), device_(device), service_(service) { |
| + : binding_(this), |
| + device_(device), |
| + service_(service), |
| + weak_ptr_factory_(this) { |
| mojom::VRDisplayInfoPtr display_info = device->GetVRDevice(); |
| // Client might be null in unittest. |
| // TODO: setup a mock client in unittest too? |
| @@ -40,16 +43,24 @@ void VRDisplayImpl::ResetPose() { |
| device_->ResetPose(); |
| } |
| -void VRDisplayImpl::RequestPresent(bool secureOrigin, |
| +void VRDisplayImpl::RequestPresent(bool secure_origin, |
| const RequestPresentCallback& callback) { |
| if (!device_->IsAccessAllowed(service_)) { |
|
bajones
2016/11/16 21:44:17
Realizing now that it's possible that multiple pag
mthiesse
2016/11/16 21:57:53
Probably cleaner if I handle this in vr_shell_dele
|
| callback.Run(false); |
| return; |
| } |
| - bool success = device_->RequestPresent(secureOrigin); |
| + device_->RequestPresent(base::Bind(&VRDisplayImpl::RequestPresentResult, |
| + weak_ptr_factory_.GetWeakPtr(), callback, |
| + secure_origin)); |
| +} |
| + |
| +void VRDisplayImpl::RequestPresentResult(const RequestPresentCallback& callback, |
| + bool secure_origin, |
| + bool success) { |
| if (success) { |
| device_->SetPresentingService(service_); |
| + device_->SetSecureOrigin(secure_origin); |
| } |
| callback.Run(success); |
| } |