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

Side by Side Diff: content/browser/vr/vr_service.cc

Issue 829803003: Adding Chrome-side WebVR interface (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updates/cleanups before pulling in reviewers. Created 5 years, 9 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/browser/vr/vr_service.h"
6
7 #include "base/memory/singleton.h"
8 #include "third_party/WebKit/public/platform/WebVR.h"
9
10 #if defined(OS_ANDROID)
11 #include "content/browser/vr/cardboard/cardboard_vr_device_provider.h"
12 #endif
13
14 namespace content {
15
16 void DeleteVRDeviceProvider(VRDeviceProvider* provider) {
no sievers 2015/03/19 01:24:52 nit: anonymous namespace around this Or better: y
17 delete provider;
18 }
19
20 VRService::VRService() :
21 vr_initialized_(false) {
22 #if defined(OS_ANDROID)
23 RegisterProvider(new CardboardVRDeviceProvider());
24 #endif
25 }
26
27 VRService::VRService(VRDeviceProvider* provider) :
28 vr_initialized_(false) {
29 RegisterProvider(provider);
30 }
31
32 VRService::~VRService() {
33 std::for_each(providers_.begin(), providers_.end(), DeleteVRDeviceProvider);
34 }
35
36 void VRService::Initialize() {
37 if(vr_initialized_ == true) {
38 return;
39 }
40
41 ProviderList::iterator iter;
42 for (iter = providers_.begin(); iter != providers_.end(); ++iter) {
43 (*iter)->Initialize();
44 }
45
46 vr_initialized_ = true;
47 }
48
49 void VRService::Shutdown() {
50 if(vr_initialized_ == false) {
51 return;
52 }
53
54 ProviderList::iterator iter;
55 for (iter = providers_.begin(); iter != providers_.end(); ++iter) {
56 (*iter)->Shutdown();
57 }
58
59 vr_initialized_ = false;
60 }
61
62 VRService* VRService::GetInstance() {
63 return Singleton<VRService,
64 LeakySingletonTraits<VRService> >::get();
no sievers 2015/03/19 01:24:51 Ah wait, so why even bother... VRDeviceProviders n
65 }
66
67 void VRService::GetVRDevices(
68 std::vector<blink::WebVRDevice>* webvr_devices) {
69 Initialize();
70
71 if(webvr_devices == NULL)
72 return;
73
74 webvr_devices->clear();
75
76 ProviderList::iterator iter;
77
78 std::vector<VRDevice*> devices;
79
80 for (iter = providers_.begin(); iter != providers_.end(); ++iter) {
81 (*iter)->GetDevices(devices);
82 }
83
84 std::vector<VRDevice*>::iterator diter;
85 for (diter = devices.begin(); diter != devices.end(); ++diter) {
86 VRDevice* device = *diter;
87 if (devices_.find(device->id()) == devices_.end()) {
88 devices_[device->id()] = device;
89 }
90
91 blink::WebVRDevice webvr_device;
92 device->GetVRDevice(&webvr_device);
93 webvr_device.index = device->id();
94 webvr_devices->push_back(webvr_device);
95 }
96 }
97
98 VRDevice* VRService::GetDevice(unsigned int index) {
99 DeviceMap::iterator iter = devices_.find(index);
100 if (iter == devices_.end()) {
101 return NULL;
102 }
103 return iter->second;
104 }
105
106 void VRService::RegisterProvider(VRDeviceProvider* provider) {
107 providers_.push_back(provider);
108 }
109
110 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698