aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/vrdisplaycapabilities.rs
diff options
context:
space:
mode:
authorImanol Fernandez <mortimergoro@gmail.com>2016-12-16 18:39:35 +0100
committerImanol Fernandez <mortimergoro@gmail.com>2017-01-09 12:44:39 +0100
commitc5705bff5003675d6d266c698653834027a78227 (patch)
tree8e2b4e6a91933ba147885210d9a360d46414189b /components/script/dom/vrdisplaycapabilities.rs
parent13826970c4d9fbbd67cdf9dfb39e8a847cf06541 (diff)
downloadservo-c5705bff5003675d6d266c698653834027a78227.tar.gz
servo-c5705bff5003675d6d266c698653834027a78227.zip
WebVR API Implementation, r=larsbergstrom
Diffstat (limited to 'components/script/dom/vrdisplaycapabilities.rs')
-rw-r--r--components/script/dom/vrdisplaycapabilities.rs62
1 files changed, 62 insertions, 0 deletions
diff --git a/components/script/dom/vrdisplaycapabilities.rs b/components/script/dom/vrdisplaycapabilities.rs
new file mode 100644
index 00000000000..0b131f8ffd3
--- /dev/null
+++ b/components/script/dom/vrdisplaycapabilities.rs
@@ -0,0 +1,62 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+use dom::bindings::cell::DOMRefCell;
+use dom::bindings::codegen::Bindings::VRDisplayCapabilitiesBinding;
+use dom::bindings::codegen::Bindings::VRDisplayCapabilitiesBinding::VRDisplayCapabilitiesMethods;
+use dom::bindings::js::Root;
+use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::globalscope::GlobalScope;
+use webvr_traits::WebVRDisplayCapabilities;
+
+#[dom_struct]
+pub struct VRDisplayCapabilities {
+ reflector_: Reflector,
+ #[ignore_heap_size_of = "Defined in rust-webvr"]
+ capabilities: DOMRefCell<WebVRDisplayCapabilities>
+}
+
+unsafe_no_jsmanaged_fields!(WebVRDisplayCapabilities);
+
+impl VRDisplayCapabilities {
+ fn new_inherited(capabilities: WebVRDisplayCapabilities) -> VRDisplayCapabilities {
+ VRDisplayCapabilities {
+ reflector_: Reflector::new(),
+ capabilities: DOMRefCell::new(capabilities)
+ }
+ }
+
+ pub fn new(capabilities: WebVRDisplayCapabilities, global: &GlobalScope) -> Root<VRDisplayCapabilities> {
+ reflect_dom_object(box VRDisplayCapabilities::new_inherited(capabilities),
+ global,
+ VRDisplayCapabilitiesBinding::Wrap)
+ }
+}
+
+impl VRDisplayCapabilitiesMethods for VRDisplayCapabilities {
+ // https://w3c.github.io/webvr/#dom-vrdisplaycapabilities-hasposition
+ fn HasPosition(&self) -> bool {
+ self.capabilities.borrow().has_position
+ }
+
+ // https://w3c.github.io/webvr/#dom-vrdisplaycapabilities-hasorientation
+ fn HasOrientation(&self) -> bool {
+ self.capabilities.borrow().has_orientation
+ }
+
+ // https://w3c.github.io/webvr/#dom-vrdisplaycapabilities-hasexternaldisplay
+ fn HasExternalDisplay(&self) -> bool {
+ self.capabilities.borrow().has_external_display
+ }
+
+ // https://w3c.github.io/webvr/#dom-vrdisplaycapabilities-canpresent
+ fn CanPresent(&self) -> bool {
+ self.capabilities.borrow().can_present
+ }
+
+ // https://w3c.github.io/webvr/#dom-vrdisplaycapabilities-maxlayers
+ fn MaxLayers(&self) -> u32 {
+ if self.CanPresent() { 1 } else { 0 }
+ }
+}