mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
webxr: Add missing IDL members from AR Module (#33007)
* Add missing IDL members from AR module Signed-off-by: Daniel Adams <msub2official@gmail.com> * Update test expectations Signed-off-by: Daniel Adams <msub2official@gmail.com> * ./mach fmt Signed-off-by: Daniel Adams <msub2official@gmail.com> --------- Signed-off-by: Daniel Adams <msub2official@gmail.com>
This commit is contained in:
parent
4744debdfd
commit
0d137d276a
7 changed files with 35 additions and 29 deletions
|
@ -16,18 +16,21 @@ enum XRVisibilityState {
|
|||
"hidden",
|
||||
};
|
||||
|
||||
enum XRInteractionMode {
|
||||
"screen-space",
|
||||
"world-space",
|
||||
};
|
||||
|
||||
callback XRFrameRequestCallback = undefined (DOMHighResTimeStamp time, XRFrame frame);
|
||||
|
||||
[SecureContext, Exposed=Window, Pref="dom.webxr.enabled"]
|
||||
interface XRSession : EventTarget {
|
||||
// // Attributes
|
||||
readonly attribute XREnvironmentBlendMode environmentBlendMode;
|
||||
|
||||
// Attributes
|
||||
readonly attribute XRVisibilityState visibilityState;
|
||||
[SameObject] readonly attribute XRRenderState renderState;
|
||||
[SameObject] readonly attribute XRInputSourceArray inputSources;
|
||||
|
||||
// // Methods
|
||||
// Methods
|
||||
[Throws] undefined updateRenderState(optional XRRenderStateInit state = {});
|
||||
Promise<XRReferenceSpace> requestReferenceSpace(XRReferenceSpaceType type);
|
||||
|
||||
|
@ -36,10 +39,7 @@ interface XRSession : EventTarget {
|
|||
|
||||
Promise<undefined> end();
|
||||
|
||||
// hit test module
|
||||
Promise<XRHitTestSource> requestHitTestSource(XRHitTestOptionsInit options);
|
||||
|
||||
// // Events
|
||||
// Events
|
||||
attribute EventHandler onend;
|
||||
attribute EventHandler onselect;
|
||||
attribute EventHandler onsqueeze;
|
||||
|
@ -49,4 +49,13 @@ interface XRSession : EventTarget {
|
|||
attribute EventHandler onsqueezestart;
|
||||
attribute EventHandler onsqueezeend;
|
||||
attribute EventHandler onvisibilitychange;
|
||||
|
||||
// AR Module
|
||||
// Attributes
|
||||
readonly attribute XREnvironmentBlendMode environmentBlendMode;
|
||||
readonly attribute XRInteractionMode interactionMode;
|
||||
|
||||
// Hit Test Module
|
||||
// Methods
|
||||
Promise<XRHitTestSource> requestHitTestSource(XRHitTestOptionsInit options);
|
||||
};
|
||||
|
|
|
@ -15,4 +15,7 @@ interface XRView {
|
|||
readonly attribute XREye eye;
|
||||
readonly attribute Float32Array projectionMatrix;
|
||||
readonly attribute XRRigidTransform transform;
|
||||
|
||||
// AR Module
|
||||
readonly attribute boolean isFirstPersonObserver;
|
||||
};
|
||||
|
|
|
@ -33,7 +33,8 @@ use crate::dom::bindings::codegen::Bindings::XRRenderStateBinding::{
|
|||
XRRenderStateInit, XRRenderStateMethods,
|
||||
};
|
||||
use crate::dom::bindings::codegen::Bindings::XRSessionBinding::{
|
||||
XREnvironmentBlendMode, XRFrameRequestCallback, XRSessionMethods, XRVisibilityState,
|
||||
XREnvironmentBlendMode, XRFrameRequestCallback, XRInteractionMode, XRSessionMethods,
|
||||
XRVisibilityState,
|
||||
};
|
||||
use crate::dom::bindings::codegen::Bindings::XRSystemBinding::XRSessionMode;
|
||||
use crate::dom::bindings::error::{Error, ErrorResult};
|
||||
|
@ -873,6 +874,13 @@ impl XRSessionMethods for XRSession {
|
|||
|
||||
p
|
||||
}
|
||||
|
||||
/// <https://www.w3.org/TR/webxr-ar-module-1/#dom-xrsession-interactionmode>
|
||||
fn InteractionMode(&self) -> XRInteractionMode {
|
||||
// Until Servo supports WebXR sessions on mobile phones or similar non-XR devices,
|
||||
// this should always be world space
|
||||
XRInteractionMode::World_space
|
||||
}
|
||||
}
|
||||
|
||||
// The pose of an object in native-space. Should never be exposed.
|
||||
|
|
|
@ -106,4 +106,10 @@ impl XRViewMethods for XRView {
|
|||
fn Transform(&self) -> DomRoot<XRRigidTransform> {
|
||||
DomRoot::from_ref(&self.transform)
|
||||
}
|
||||
|
||||
/// <https://www.w3.org/TR/webxr-ar-module-1/#dom-xrview-isfirstpersonobserver>
|
||||
fn IsFirstPersonObserver(&self) -> bool {
|
||||
// Servo is not currently supported anywhere that supports this, so return false
|
||||
false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,4 @@
|
|||
[idlharness.https.window.html]
|
||||
[XRSession interface: attribute interactionMode]
|
||||
expected: FAIL
|
||||
|
||||
[idl_test setup]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -10,7 +7,3 @@
|
|||
|
||||
[XRSession interface: xrSession must inherit property "interactionMode" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[XRView interface: attribute isFirstPersonObserver]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -8,12 +8,6 @@
|
|||
[Tests interactionMode for an AR_SCREEN_DEVICE]
|
||||
expected: FAIL
|
||||
|
||||
[Tests interactionMode for an AR_HMD_DEVICE]
|
||||
expected: FAIL
|
||||
|
||||
[Tests interactionMode for an VR_HMD_DEVICE]
|
||||
expected: FAIL
|
||||
|
||||
[Tests interactionMode for an AR_HMD_DEVICE - webgl]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,7 +1,4 @@
|
|||
[idlharness.https.window.html]
|
||||
[XRSession interface: attribute interactionMode]
|
||||
expected: FAIL
|
||||
|
||||
[idl_test setup]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -10,7 +7,3 @@
|
|||
|
||||
[XRSession interface: xrSession must inherit property "interactionMode" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[XRView interface: attribute isFirstPersonObserver]
|
||||
expected: FAIL
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue