Skip to content

Commit

Permalink
Use initialized input sources in getInputSources()
Browse files Browse the repository at this point in the history
  • Loading branch information
Manishearth committed May 3, 2019
1 parent 3a08e91 commit 5c8132c
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 1 deletion.
11 changes: 10 additions & 1 deletion components/script/dom/vrdisplay.rs
Expand Up @@ -926,7 +926,7 @@ impl VRDisplay {
/// Initialize XRInputSources
fn initialize_inputs(&self) {
if self.initialized_inputs.get() {
return
return;
}
self.initialized_inputs.set(true);

Expand Down Expand Up @@ -955,6 +955,15 @@ impl VRDisplay {
Err(_) => {},
}
}

pub fn get_input_sources(&self) -> Vec<DomRoot<XRInputSource>> {
self.initialize_inputs();
self.input_sources
.borrow()
.iter()
.map(|(_, x)| DomRoot::from_ref(&**x))
.collect()
}
}

// WebVR Spec: If the number of values in the leftBounds/rightBounds arrays
Expand Down
3 changes: 3 additions & 0 deletions components/script/dom/webidls/XRSession.webidl
Expand Up @@ -25,7 +25,10 @@ interface XRSession : EventTarget {
// // Methods
Promise<XRReferenceSpace> requestReferenceSpace(XRReferenceSpaceOptions options);

// workaround until we have FrozenArray
// see https://github.com/servo/servo/issues/10427#issuecomment-449593626
// FrozenArray<XRInputSource> getInputSources();
sequence<XRInputSource> getInputSources();

Promise<void> updateRenderState(optional XRRenderStateInit state);
long requestAnimationFrame(XRFrameRequestCallback callback);
Expand Down
6 changes: 6 additions & 0 deletions components/script/dom/xrsession.rs
Expand Up @@ -19,6 +19,7 @@ use crate::dom::eventtarget::EventTarget;
use crate::dom::globalscope::GlobalScope;
use crate::dom::promise::Promise;
use crate::dom::vrdisplay::VRDisplay;
use crate::dom::xrinputsource::XRInputSource;
use crate::dom::xrlayer::XRLayer;
use crate::dom::xrreferencespace::XRReferenceSpace;
use crate::dom::xrrenderstate::XRRenderState;
Expand Down Expand Up @@ -153,4 +154,9 @@ impl XRSessionMethods for XRSession {

p
}

/// https://immersive-web.github.io/webxr/#dom-xrsession-getinputsources
fn GetInputSources(&self) -> Vec<DomRoot<XRInputSource>> {
self.display.get_input_sources()
}
}

0 comments on commit 5c8132c

Please sign in to comment.