Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1210)

Unified Diff: device/vr/vr_device.cc

Issue 2420743003: mojo VR interface simplified (Closed)
Patch Set: address leon@ comments about name Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698