Chromium Code Reviews| Index: device/vr/vr_device.cc |
| diff --git a/device/vr/vr_device.cc b/device/vr/vr_device.cc |
| index 5e3d7fc253d6fa29c2755622baf9241df7ca49b5..130e683722826404649cfc8a1db08ea137695f10 100644 |
| --- a/device/vr/vr_device.cc |
| +++ b/device/vr/vr_device.cc |
| @@ -4,13 +4,14 @@ |
| #include "device/vr/vr_device.h" |
| #include "device/vr/vr_device_provider.h" |
| +#include "device/vr/vr_service_impl.h" |
| namespace device { |
| unsigned int VRDevice::next_id_ = 1; |
| VRDevice::VRDevice(VRDeviceProvider* provider) |
| - : provider_(provider), id_(next_id_) { |
| + : presenting_service_(nullptr), provider_(provider), id_(next_id_) { |
| // Prevent wraparound. Devices with this ID will be treated as invalid. |
| if (next_id_ != VR_DEVICE_LAST_ID) |
| next_id_++; |
| @@ -18,8 +19,44 @@ VRDevice::VRDevice(VRDeviceProvider* provider) |
| VRDevice::~VRDevice() {} |
| -bool VRDevice::RequestPresent(bool secure_origin) { |
| +bool VRDevice::RequestPresent(VRServiceImpl* service, bool secure_origin) { |
| return true; |
| }; |
| +void VRDevice::SetClient(std::vector<VRServiceImpl*>* clients) { |
|
bajones
2016/10/25 22:21:38
Weird mismatch in terminology here and elsewhere w
shaobo.yan
2016/10/26 01:19:22
Sorry about this but a little explain : since the
|
| + for (auto& service : *clients) { |
| + display_clients_.insert( |
| + std::pair<VRServiceImpl*, mojom::VRDisplayClientPtr>( |
| + service, service->GetDisplayClient())); |
| + } |
| +} |
| + |
| +void VRDevice::RemoveService(VRServiceImpl* service) { |
| + ExitPresent(service); |
| + display_clients_.erase(service); |
| +} |
| + |
| +bool VRDevice::CheckAccessAllowed(VRServiceImpl* service) { |
| + return (!presenting_service_ || presenting_service_ == service); |
| +} |
| + |
| +bool VRDevice::IsPresentingService(VRServiceImpl* service) { |
| + return (presenting_service_ && presenting_service_ == service); |
| +} |
| + |
| +void VRDevice::RegisterDeviceClient(VRServiceImpl* service) { |
| + mojom::VRDevicePtr device_client = service->GetDevicePtr(this); |
| + if (device_client) { |
| + DisplayClientMap::iterator it = display_clients_.find(service); |
| + if (it != display_clients_.end()) |
| + it->second->RegisterDevice(std::move(device_client)); |
| + } |
| +} |
| + |
| +void VRDevice::UpdateDisplayInfo(VRServiceImpl* service) { |
| + DisplayClientMap::iterator it = display_clients_.find(service); |
| + if (it != display_clients_.end()) |
| + it->second->UpdateDisplayInfo(GetVRDevice()); |
| +} |
| + |
| } // namespace device |