From 7501e3e12fca16d906b88608363db768b29f822d Mon Sep 17 00:00:00 2001 From: Daniel Adams <70986246+msub2@users.noreply.github.com> Date: Wed, 21 Aug 2024 11:26:29 -1000 Subject: [PATCH] webxr: Update XRInputSource interface to latest spec (#33155) * Update XRInputSource interface to latest spec Signed-off-by: Daniel Adams * Bump webxr version Signed-off-by: Daniel Adams * Add missing spec link Signed-off-by: Daniel Adams --------- Signed-off-by: Daniel Adams --- Cargo.lock | 4 ++-- components/script/dom/fakexrdevice.rs | 1 + components/script/dom/fakexrinputcontroller.rs | 1 + components/script/dom/webidls/XRInputSource.webidl | 9 +++++++-- components/script/dom/xrinputsource.rs | 8 ++++++++ .../webxr/idlharness.https.window.js.ini | 3 --- tests/wpt/meta/webxr/idlharness.https.window.js.ini | 3 --- 7 files changed, 19 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 89feda69d75..50276ae485e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7758,7 +7758,7 @@ dependencies = [ [[package]] name = "webxr" version = "0.0.1" -source = "git+https://github.com/servo/webxr#474d53835cec0ad6e054dca3c97c98ae2dcff9f0" +source = "git+https://github.com/servo/webxr#13a0b240d10479180a9e100d7b4e25cfc142db8d" dependencies = [ "crossbeam-channel", "euclid", @@ -7775,7 +7775,7 @@ dependencies = [ [[package]] name = "webxr-api" version = "0.0.1" -source = "git+https://github.com/servo/webxr#474d53835cec0ad6e054dca3c97c98ae2dcff9f0" +source = "git+https://github.com/servo/webxr#13a0b240d10479180a9e100d7b4e25cfc142db8d" dependencies = [ "euclid", "ipc-channel", diff --git a/components/script/dom/fakexrdevice.rs b/components/script/dom/fakexrdevice.rs index 21b533a5120..d4799d2b10a 100644 --- a/components/script/dom/fakexrdevice.rs +++ b/components/script/dom/fakexrdevice.rs @@ -327,6 +327,7 @@ impl From for TargetRayMode { XRTargetRayMode::Gaze => TargetRayMode::Gaze, XRTargetRayMode::Tracked_pointer => TargetRayMode::TrackedPointer, XRTargetRayMode::Screen => TargetRayMode::Screen, + XRTargetRayMode::Transient_pointer => TargetRayMode::TransientPointer, } } } diff --git a/components/script/dom/fakexrinputcontroller.rs b/components/script/dom/fakexrinputcontroller.rs index 66be60f744d..785d6f7debd 100644 --- a/components/script/dom/fakexrinputcontroller.rs +++ b/components/script/dom/fakexrinputcontroller.rs @@ -126,6 +126,7 @@ impl FakeXRInputControllerMethods for FakeXRInputController { XRTargetRayMode::Gaze => TargetRayMode::Gaze, XRTargetRayMode::Tracked_pointer => TargetRayMode::TrackedPointer, XRTargetRayMode::Screen => TargetRayMode::Screen, + XRTargetRayMode::Transient_pointer => TargetRayMode::TransientPointer, }; self.send_message(MockInputMsg::SetTargetRayMode(t)); } diff --git a/components/script/dom/webidls/XRInputSource.webidl b/components/script/dom/webidls/XRInputSource.webidl index da5650eb88a..5e5afa58ae1 100644 --- a/components/script/dom/webidls/XRInputSource.webidl +++ b/components/script/dom/webidls/XRInputSource.webidl @@ -13,7 +13,8 @@ enum XRHandedness { enum XRTargetRayMode { "gaze", "tracked-pointer", - "screen" + "screen", + "transient-pointer" }; [SecureContext, Exposed=Window, Pref="dom.webxr.enabled"] @@ -22,9 +23,13 @@ interface XRInputSource { readonly attribute XRTargetRayMode targetRayMode; [SameObject] readonly attribute XRSpace targetRaySpace; [SameObject] readonly attribute XRSpace? gripSpace; - [SameObject] readonly attribute Gamepad? gamepad; /* [SameObject] */ readonly attribute /* FrozenArray */ any profiles; + readonly attribute boolean skipRendering; + // WebXR Gamepads Module + [SameObject] readonly attribute Gamepad? gamepad; + + // Hand Input [Pref="dom.webxr.hands.enabled"] readonly attribute XRHand? hand; }; diff --git a/components/script/dom/xrinputsource.rs b/components/script/dom/xrinputsource.rs index f0954905e7a..699c861ab11 100644 --- a/components/script/dom/xrinputsource.rs +++ b/components/script/dom/xrinputsource.rs @@ -127,6 +127,7 @@ impl XRInputSourceMethods for XRInputSource { TargetRayMode::Gaze => XRTargetRayMode::Gaze, TargetRayMode::TrackedPointer => XRTargetRayMode::Tracked_pointer, TargetRayMode::Screen => XRTargetRayMode::Screen, + TargetRayMode::TransientPointer => XRTargetRayMode::Transient_pointer, } } @@ -154,6 +155,13 @@ impl XRInputSourceMethods for XRInputSource { self.profiles.get() } + /// + fn SkipRendering(&self) -> bool { + // Servo is not currently supported anywhere that would allow for skipped + // controller rendering. + false + } + /// fn GetGamepad(&self) -> Option> { Some(DomRoot::from_ref(&*self.gamepad)) diff --git a/tests/wpt/meta-legacy-layout/webxr/idlharness.https.window.js.ini b/tests/wpt/meta-legacy-layout/webxr/idlharness.https.window.js.ini index 8dad6cd23d0..4a83da3fb77 100644 --- a/tests/wpt/meta-legacy-layout/webxr/idlharness.https.window.js.ini +++ b/tests/wpt/meta-legacy-layout/webxr/idlharness.https.window.js.ini @@ -340,6 +340,3 @@ [XRSession interface: xrSession must inherit property "isSystemKeyboardSupported" with the proper type] expected: FAIL - - [XRInputSource interface: attribute skipRendering] - expected: FAIL diff --git a/tests/wpt/meta/webxr/idlharness.https.window.js.ini b/tests/wpt/meta/webxr/idlharness.https.window.js.ini index 22d56dddff2..47f46135676 100644 --- a/tests/wpt/meta/webxr/idlharness.https.window.js.ini +++ b/tests/wpt/meta/webxr/idlharness.https.window.js.ini @@ -283,6 +283,3 @@ [XRSession interface: xrSession must inherit property "isSystemKeyboardSupported" with the proper type] expected: FAIL - - [XRInputSource interface: attribute skipRendering] - expected: FAIL