aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2024-11-24 13:01:35 -0500
committerGitHub <noreply@github.com>2024-11-24 18:01:35 +0000
commit3faed9b9212fee1f0ff9be5f7cfb5e24c5b84b91 (patch)
treef59efff26edc58b9cd32c08da070a6e27655ae82 /components/script/dom
parente956f3124c230549c6ef4a63e2c27e56d0965453 (diff)
downloadservo-3faed9b9212fee1f0ff9be5f7cfb5e24c5b84b91.tar.gz
servo-3faed9b9212fee1f0ff9be5f7cfb5e24c5b84b91.zip
Filter out webidl files based on special comments, and feature-gate webxr interfaces. (#34348)
* Filter out webidl files based on skip-if directives. Signed-off-by: Josh Matthews <josh@joshmatthews.net> * script: Don't build XR functionality without webxr feature. Signed-off-by: Josh Matthews <josh@joshmatthews.net> * Fix tidy. Signed-off-by: Josh Matthews <josh@joshmatthews.net> * script: Adjust imports for file movement. Signed-off-by: Josh Matthews <josh@joshmatthews.net> * Fix clippy. Signed-off-by: Josh Matthews <josh@joshmatthews.net> * Formatting. Signed-off-by: Josh Matthews <josh@joshmatthews.net> * Clean up webxr module import. Co-authored-by: Samson <16504129+sagudev@users.noreply.github.com> Signed-off-by: Josh Matthews <josh@joshmatthews.net> --------- Signed-off-by: Josh Matthews <josh@joshmatthews.net> Co-authored-by: Samson <16504129+sagudev@users.noreply.github.com>
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/bindings/codegen/run.py12
-rw-r--r--components/script/dom/bindings/trace.rs3
-rw-r--r--components/script/dom/document.rs1
-rw-r--r--components/script/dom/mod.rs44
-rw-r--r--components/script/dom/navigator.rs5
-rw-r--r--components/script/dom/webgl2renderingcontext.rs1
-rw-r--r--components/script/dom/webglframebuffer.rs23
-rw-r--r--components/script/dom/webglrenderingcontext.rs1
-rw-r--r--components/script/dom/webgltexture.rs19
-rw-r--r--components/script/dom/webidls/FakeXRDevice.webidl2
-rw-r--r--components/script/dom/webidls/FakeXRInputController.webidl2
-rw-r--r--components/script/dom/webidls/XRBoundedReferenceSpace.webidl2
-rw-r--r--components/script/dom/webidls/XRCompositionLayer.webidl2
-rw-r--r--components/script/dom/webidls/XRCubeLayer.webidl2
-rw-r--r--components/script/dom/webidls/XRCylinderLayer.webidl2
-rw-r--r--components/script/dom/webidls/XREquirectLayer.webidl2
-rw-r--r--components/script/dom/webidls/XRFrame.webidl2
-rw-r--r--components/script/dom/webidls/XRHand.webidl2
-rw-r--r--components/script/dom/webidls/XRHitTestResult.webidl2
-rw-r--r--components/script/dom/webidls/XRHitTestSource.webidl2
-rw-r--r--components/script/dom/webidls/XRInputSource.webidl2
-rw-r--r--components/script/dom/webidls/XRInputSourceArray.webidl2
-rw-r--r--components/script/dom/webidls/XRInputSourceEvent.webidl2
-rw-r--r--components/script/dom/webidls/XRInputSourcesChangeEvent.webidl2
-rw-r--r--components/script/dom/webidls/XRJointPose.webidl2
-rw-r--r--components/script/dom/webidls/XRJointSpace.webidl2
-rw-r--r--components/script/dom/webidls/XRLayer.webidl2
-rw-r--r--components/script/dom/webidls/XRLayerEvent.webidl2
-rw-r--r--components/script/dom/webidls/XRMediaBinding.webidl2
-rw-r--r--components/script/dom/webidls/XRPose.webidl2
-rw-r--r--components/script/dom/webidls/XRProjectionLayer.webidl2
-rw-r--r--components/script/dom/webidls/XRQuadLayer.webidl2
-rw-r--r--components/script/dom/webidls/XRRay.webidl2
-rw-r--r--components/script/dom/webidls/XRReferenceSpace.webidl2
-rw-r--r--components/script/dom/webidls/XRReferenceSpaceEvent.webidl2
-rw-r--r--components/script/dom/webidls/XRRenderState.webidl2
-rw-r--r--components/script/dom/webidls/XRRigidTransform.webidl2
-rw-r--r--components/script/dom/webidls/XRSession.webidl2
-rw-r--r--components/script/dom/webidls/XRSessionEvent.webidl2
-rw-r--r--components/script/dom/webidls/XRSpace.webidl2
-rw-r--r--components/script/dom/webidls/XRSubImage.webidl2
-rw-r--r--components/script/dom/webidls/XRSystem.webidl2
-rw-r--r--components/script/dom/webidls/XRTest.webidl2
-rw-r--r--components/script/dom/webidls/XRView.webidl2
-rw-r--r--components/script/dom/webidls/XRViewerPose.webidl2
-rw-r--r--components/script/dom/webidls/XRViewport.webidl2
-rw-r--r--components/script/dom/webidls/XRWebGLBinding.webidl2
-rw-r--r--components/script/dom/webidls/XRWebGLLayer.webidl2
-rw-r--r--components/script/dom/webidls/XRWebGLSubImage.webidl2
-rw-r--r--components/script/dom/webxr/fakexrdevice.rs (renamed from components/script/dom/fakexrdevice.rs)0
-rw-r--r--components/script/dom/webxr/fakexrinputcontroller.rs (renamed from components/script/dom/fakexrinputcontroller.rs)0
-rw-r--r--components/script/dom/webxr/mod.rs44
-rw-r--r--components/script/dom/webxr/xrboundedreferencespace.rs (renamed from components/script/dom/xrboundedreferencespace.rs)0
-rw-r--r--components/script/dom/webxr/xrcompositionlayer.rs (renamed from components/script/dom/xrcompositionlayer.rs)0
-rw-r--r--components/script/dom/webxr/xrcubelayer.rs (renamed from components/script/dom/xrcubelayer.rs)0
-rw-r--r--components/script/dom/webxr/xrcylinderlayer.rs (renamed from components/script/dom/xrcylinderlayer.rs)0
-rw-r--r--components/script/dom/webxr/xrequirectlayer.rs (renamed from components/script/dom/xrequirectlayer.rs)0
-rw-r--r--components/script/dom/webxr/xrframe.rs (renamed from components/script/dom/xrframe.rs)0
-rw-r--r--components/script/dom/webxr/xrhand.rs (renamed from components/script/dom/xrhand.rs)0
-rw-r--r--components/script/dom/webxr/xrhittestresult.rs (renamed from components/script/dom/xrhittestresult.rs)0
-rw-r--r--components/script/dom/webxr/xrhittestsource.rs (renamed from components/script/dom/xrhittestsource.rs)0
-rw-r--r--components/script/dom/webxr/xrinputsource.rs (renamed from components/script/dom/xrinputsource.rs)0
-rw-r--r--components/script/dom/webxr/xrinputsourcearray.rs (renamed from components/script/dom/xrinputsourcearray.rs)0
-rw-r--r--components/script/dom/webxr/xrinputsourceevent.rs (renamed from components/script/dom/xrinputsourceevent.rs)0
-rw-r--r--components/script/dom/webxr/xrinputsourceschangeevent.rs (renamed from components/script/dom/xrinputsourceschangeevent.rs)0
-rw-r--r--components/script/dom/webxr/xrjointpose.rs (renamed from components/script/dom/xrjointpose.rs)0
-rw-r--r--components/script/dom/webxr/xrjointspace.rs (renamed from components/script/dom/xrjointspace.rs)0
-rw-r--r--components/script/dom/webxr/xrlayer.rs (renamed from components/script/dom/xrlayer.rs)0
-rw-r--r--components/script/dom/webxr/xrlayerevent.rs (renamed from components/script/dom/xrlayerevent.rs)0
-rw-r--r--components/script/dom/webxr/xrmediabinding.rs (renamed from components/script/dom/xrmediabinding.rs)0
-rw-r--r--components/script/dom/webxr/xrpose.rs (renamed from components/script/dom/xrpose.rs)0
-rw-r--r--components/script/dom/webxr/xrprojectionlayer.rs (renamed from components/script/dom/xrprojectionlayer.rs)0
-rw-r--r--components/script/dom/webxr/xrquadlayer.rs (renamed from components/script/dom/xrquadlayer.rs)0
-rw-r--r--components/script/dom/webxr/xrray.rs (renamed from components/script/dom/xrray.rs)2
-rw-r--r--components/script/dom/webxr/xrreferencespace.rs (renamed from components/script/dom/xrreferencespace.rs)0
-rw-r--r--components/script/dom/webxr/xrreferencespaceevent.rs (renamed from components/script/dom/xrreferencespaceevent.rs)0
-rw-r--r--components/script/dom/webxr/xrrenderstate.rs (renamed from components/script/dom/xrrenderstate.rs)0
-rw-r--r--components/script/dom/webxr/xrrigidtransform.rs (renamed from components/script/dom/xrrigidtransform.rs)2
-rw-r--r--components/script/dom/webxr/xrsession.rs (renamed from components/script/dom/xrsession.rs)2
-rw-r--r--components/script/dom/webxr/xrsessionevent.rs (renamed from components/script/dom/xrsessionevent.rs)0
-rw-r--r--components/script/dom/webxr/xrspace.rs (renamed from components/script/dom/xrspace.rs)0
-rw-r--r--components/script/dom/webxr/xrsubimage.rs (renamed from components/script/dom/xrsubimage.rs)0
-rw-r--r--components/script/dom/webxr/xrsystem.rs (renamed from components/script/dom/xrsystem.rs)0
-rw-r--r--components/script/dom/webxr/xrtest.rs (renamed from components/script/dom/xrtest.rs)0
-rw-r--r--components/script/dom/webxr/xrview.rs (renamed from components/script/dom/xrview.rs)2
-rw-r--r--components/script/dom/webxr/xrviewerpose.rs (renamed from components/script/dom/xrviewerpose.rs)0
-rw-r--r--components/script/dom/webxr/xrviewport.rs (renamed from components/script/dom/xrviewport.rs)0
-rw-r--r--components/script/dom/webxr/xrwebglbinding.rs (renamed from components/script/dom/xrwebglbinding.rs)0
-rw-r--r--components/script/dom/webxr/xrwebgllayer.rs (renamed from components/script/dom/xrwebgllayer.rs)0
-rw-r--r--components/script/dom/webxr/xrwebglsubimage.rs (renamed from components/script/dom/xrwebglsubimage.rs)0
-rw-r--r--components/script/dom/window.rs11
91 files changed, 200 insertions, 52 deletions
diff --git a/components/script/dom/bindings/codegen/run.py b/components/script/dom/bindings/codegen/run.py
index 52840b1b1d3..2dee39814b2 100644
--- a/components/script/dom/bindings/codegen/run.py
+++ b/components/script/dom/bindings/codegen/run.py
@@ -5,10 +5,13 @@
import os
import sys
import json
+import re
SCRIPT_PATH = os.path.abspath(os.path.dirname(__file__))
SERVO_ROOT = os.path.abspath(os.path.join(SCRIPT_PATH, "..", "..", "..", "..", ".."))
+FILTER_PATTERN = re.compile("// skip-unless ([A-Z_]+)\n")
+
def main():
os.chdir(os.path.join(os.path.dirname(__file__)))
@@ -32,7 +35,14 @@ def main():
for webidl in webidls:
filename = os.path.join(webidls_dir, webidl)
with open(filename, "r", encoding="utf-8") as f:
- parser.parse(f.read(), filename)
+ contents = f.read()
+ filter_match = FILTER_PATTERN.search(contents)
+ if filter_match:
+ env_var = filter_match.group(1)
+ if not os.environ.get(env_var):
+ continue
+
+ parser.parse(contents, filename)
add_css_properties_attributes(css_properties_json, parser)
parser_results = parser.finish()
diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs
index 06ec5b92d89..9e1373279ab 100644
--- a/components/script/dom/bindings/trace.rs
+++ b/components/script/dom/bindings/trace.rs
@@ -53,6 +53,7 @@ use style::stylesheet_set::{AuthorStylesheetSet, DocumentStylesheetSet};
use tendril::fmt::UTF8;
use tendril::stream::LossyDecoder;
use tendril::TendrilSink;
+#[cfg(feature = "webxr")]
use webxr_api::{Finger, Hand};
use crate::dom::bindings::cell::DomRefCell;
@@ -424,6 +425,7 @@ where
}
}
+#[cfg(feature = "webxr")]
unsafe impl<J> CustomTraceable for Hand<J>
where
J: JSTraceable,
@@ -454,6 +456,7 @@ where
}
}
+#[cfg(feature = "webxr")]
unsafe impl<J> CustomTraceable for Finger<J>
where
J: JSTraceable,
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index dc228788b94..ed66eff6a47 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -2538,6 +2538,7 @@ impl Document {
// TODO: should this only happen on the first document loaded?
// https://immersive-web.github.io/webxr/#user-intention
// https://github.com/immersive-web/navigation/issues/10
+ #[cfg(feature = "webxr")]
if pref!(dom.webxr.sessionavailable) && self.window.is_top_level() {
self.window.Navigator().Xr().dispatch_sessionavailable();
}
diff --git a/components/script/dom/mod.rs b/components/script/dom/mod.rs
index 02e441476f6..3deecb1cb0d 100644
--- a/components/script/dom/mod.rs
+++ b/components/script/dom/mod.rs
@@ -308,8 +308,6 @@ pub mod eventsource;
pub mod eventtarget;
pub mod extendableevent;
pub mod extendablemessageevent;
-pub mod fakexrdevice;
-pub mod fakexrinputcontroller;
pub mod file;
pub mod filelist;
pub mod filereader;
@@ -614,6 +612,10 @@ pub mod webgluniformlocation;
pub mod webglvertexarrayobject;
pub mod webglvertexarrayobjectoes;
pub mod websocket;
+#[cfg(feature = "webxr")]
+mod webxr;
+#[cfg(feature = "webxr")]
+pub use self::webxr::*;
pub mod wheelevent;
pub mod window;
pub mod windowproxy;
@@ -628,42 +630,4 @@ pub mod xmlhttprequest;
pub mod xmlhttprequesteventtarget;
pub mod xmlhttprequestupload;
pub mod xmlserializer;
-pub mod xrboundedreferencespace;
-pub mod xrcompositionlayer;
-pub mod xrcubelayer;
-pub mod xrcylinderlayer;
-pub mod xrequirectlayer;
-pub mod xrframe;
-pub mod xrhand;
-pub mod xrhittestresult;
-pub mod xrhittestsource;
-pub mod xrinputsource;
-pub mod xrinputsourcearray;
-pub mod xrinputsourceevent;
-pub mod xrinputsourceschangeevent;
-pub mod xrjointpose;
-pub mod xrjointspace;
-pub mod xrlayer;
-pub mod xrlayerevent;
-pub mod xrmediabinding;
-pub mod xrpose;
-pub mod xrprojectionlayer;
-pub mod xrquadlayer;
-pub mod xrray;
-pub mod xrreferencespace;
-pub mod xrreferencespaceevent;
-pub mod xrrenderstate;
-pub mod xrrigidtransform;
-pub mod xrsession;
-pub mod xrsessionevent;
-pub mod xrspace;
-pub mod xrsubimage;
-pub mod xrsystem;
-pub mod xrtest;
-pub mod xrview;
-pub mod xrviewerpose;
-pub mod xrviewport;
-pub mod xrwebglbinding;
-pub mod xrwebgllayer;
-pub mod xrwebglsubimage;
pub use self::webgl_extensions::ext::*;
diff --git a/components/script/dom/navigator.rs b/components/script/dom/navigator.rs
index 10b9732ddb6..16325907f32 100644
--- a/components/script/dom/navigator.rs
+++ b/components/script/dom/navigator.rs
@@ -28,6 +28,7 @@ use crate::dom::permissions::Permissions;
use crate::dom::pluginarray::PluginArray;
use crate::dom::serviceworkercontainer::ServiceWorkerContainer;
use crate::dom::window::Window;
+#[cfg(feature = "webxr")]
use crate::dom::xrsystem::XRSystem;
use crate::script_runtime::{CanGc, JSContext};
@@ -44,6 +45,7 @@ pub struct Navigator {
plugins: MutNullableDom<PluginArray>,
mime_types: MutNullableDom<MimeTypeArray>,
service_worker: MutNullableDom<ServiceWorkerContainer>,
+ #[cfg(feature = "webxr")]
xr: MutNullableDom<XRSystem>,
mediadevices: MutNullableDom<MediaDevices>,
/// <https://www.w3.org/TR/gamepad/#dfn-gamepads>
@@ -63,6 +65,7 @@ impl Navigator {
plugins: Default::default(),
mime_types: Default::default(),
service_worker: Default::default(),
+ #[cfg(feature = "webxr")]
xr: Default::default(),
mediadevices: Default::default(),
gamepads: Default::default(),
@@ -77,6 +80,7 @@ impl Navigator {
reflect_dom_object(Box::new(Navigator::new_inherited()), window)
}
+ #[cfg(feature = "webxr")]
pub fn xr(&self) -> Option<DomRoot<XRSystem>> {
self.xr.get()
}
@@ -250,6 +254,7 @@ impl NavigatorMethods<crate::DomTypeHolder> for Navigator {
}
/// <https://immersive-web.github.io/webxr/#dom-navigator-xr>
+ #[cfg(feature = "webxr")]
fn Xr(&self) -> DomRoot<XRSystem> {
self.xr.or_init(|| XRSystem::new(self.global().as_window()))
}
diff --git a/components/script/dom/webgl2renderingcontext.rs b/components/script/dom/webgl2renderingcontext.rs
index 80a73014ebc..acafcf04bc6 100644
--- a/components/script/dom/webgl2renderingcontext.rs
+++ b/components/script/dom/webgl2renderingcontext.rs
@@ -4569,6 +4569,7 @@ impl WebGL2RenderingContextMethods<crate::DomTypeHolder> for WebGL2RenderingCont
}
/// <https://immersive-web.github.io/webxr/#dom-webglrenderingcontextbase-makexrcompatible>
+ #[cfg(feature = "webxr")]
fn MakeXRCompatible(&self, can_gc: CanGc) -> Rc<Promise> {
// XXXManishearth Fill in with compatibility checks when rust-webxr supports this
let p = Promise::new(&self.global(), can_gc);
diff --git a/components/script/dom/webglframebuffer.rs b/components/script/dom/webglframebuffer.rs
index f2b6c24dfac..5fb4f2efa7a 100644
--- a/components/script/dom/webglframebuffer.rs
+++ b/components/script/dom/webglframebuffer.rs
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+#![allow(unused_imports)]
+
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
use std::cell::Cell;
@@ -11,6 +13,7 @@ use canvas_traits::webgl::{
};
use dom_struct::dom_struct;
use euclid::Size2D;
+#[cfg(feature = "webxr")]
use webxr_api::Viewport;
use crate::dom::bindings::cell::DomRefCell;
@@ -22,6 +25,7 @@ use crate::dom::webglobject::WebGLObject;
use crate::dom::webglrenderbuffer::WebGLRenderbuffer;
use crate::dom::webglrenderingcontext::{Operation, WebGLRenderingContext};
use crate::dom::webgltexture::WebGLTexture;
+#[cfg(feature = "webxr")]
use crate::dom::xrsession::XRSession;
pub enum CompleteForRendering {
@@ -108,6 +112,7 @@ pub struct WebGLFramebuffer {
is_initialized: Cell<bool>,
// Framebuffers for XR keep a reference to the XR session.
// https://github.com/immersive-web/webxr/issues/856
+ #[cfg(feature = "webxr")]
xr_session: MutNullableDom<XRSession>,
}
@@ -128,6 +133,7 @@ impl WebGLFramebuffer {
color_read_buffer: DomRefCell::new(constants::COLOR_ATTACHMENT0),
color_draw_buffers: DomRefCell::new(vec![constants::COLOR_ATTACHMENT0]),
is_initialized: Cell::new(false),
+ #[cfg(feature = "webxr")]
xr_session: Default::default(),
}
}
@@ -142,6 +148,7 @@ impl WebGLFramebuffer {
// TODO: depth, stencil and alpha
// https://github.com/servo/servo/issues/24498
+ #[cfg(feature = "webxr")]
pub fn maybe_new_webxr(
session: &XRSession,
context: &WebGLRenderingContext,
@@ -167,10 +174,16 @@ impl WebGLFramebuffer {
self.id
}
+ #[cfg(feature = "webxr")]
fn is_in_xr_session(&self) -> bool {
self.xr_session.get().is_some()
}
+ #[cfg(not(feature = "webxr"))]
+ fn is_in_xr_session(&self) -> bool {
+ false
+ }
+
pub fn validate_transparent(&self) -> WebGLResult<()> {
if self.is_in_xr_session() {
Err(WebGLError::InvalidOperation)
@@ -445,15 +458,16 @@ impl WebGLFramebuffer {
pub fn check_status(&self) -> u32 {
// For opaque framebuffers, check to see if the XR session is currently processing an rAF
// https://immersive-web.github.io/webxr/#opaque-framebuffer
+ #[cfg(feature = "webxr")]
if let Some(xr_session) = self.xr_session.get() {
- if xr_session.is_outside_raf() {
+ return if xr_session.is_outside_raf() {
constants::FRAMEBUFFER_UNSUPPORTED
} else {
constants::FRAMEBUFFER_COMPLETE
- }
- } else {
- self.status.get()
+ };
}
+
+ self.status.get()
// TODO: if a framebuffer has an attachment which is invalid due to
// being outside a webxr rAF, should this make the framebuffer incomplete?
// https://github.com/immersive-web/layers/issues/196
@@ -467,6 +481,7 @@ impl WebGLFramebuffer {
// XR framebuffers are complete inside an rAF
// https://github.com/immersive-web/webxr/issues/854
+ #[cfg(feature = "webxr")]
if self.xr_session.get().is_some() {
return CompleteForRendering::Complete;
}
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs
index 215f076c229..7e8a3a01b1e 100644
--- a/components/script/dom/webglrenderingcontext.rs
+++ b/components/script/dom/webglrenderingcontext.rs
@@ -4796,6 +4796,7 @@ impl WebGLRenderingContextMethods<crate::DomTypeHolder> for WebGLRenderingContex
}
/// <https://immersive-web.github.io/webxr/#dom-webglrenderingcontextbase-makexrcompatible>
+ #[cfg(feature = "webxr")]
fn MakeXRCompatible(&self, can_gc: CanGc) -> Rc<Promise> {
// XXXManishearth Fill in with compatibility checks when rust-webxr supports this
let p = Promise::new(&self.global(), can_gc);
diff --git a/components/script/dom/webgltexture.rs b/components/script/dom/webgltexture.rs
index 7f26e822233..c3653bec6ab 100644
--- a/components/script/dom/webgltexture.rs
+++ b/components/script/dom/webgltexture.rs
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+#![allow(unused_imports)]
+
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
use std::cell::Cell;
@@ -23,6 +25,7 @@ use crate::dom::webgl_validations::types::TexImageTarget;
use crate::dom::webglframebuffer::WebGLFramebuffer;
use crate::dom::webglobject::WebGLObject;
use crate::dom::webglrenderingcontext::{Operation, WebGLRenderingContext};
+#[cfg(feature = "webxr")]
use crate::dom::xrsession::XRSession;
pub enum TexParameterValue {
@@ -37,6 +40,7 @@ pub enum TexParameterValue {
#[derive(JSTraceable, MallocSizeOf)]
enum WebGLTextureOwner {
WebGL,
+ #[cfg(feature = "webxr")]
WebXR(Dom<XRSession>),
}
@@ -71,16 +75,19 @@ impl WebGLTexture {
fn new_inherited(
context: &WebGLRenderingContext,
id: WebGLTextureId,
- owner: Option<&XRSession>,
+ #[cfg(feature = "webxr")] owner: Option<&XRSession>,
) -> Self {
Self {
webgl_object: WebGLObject::new_inherited(context),
id,
target: Cell::new(None),
is_deleted: Cell::new(false),
+ #[cfg(feature = "webxr")]
owner: owner
.map(|session| WebGLTextureOwner::WebXR(Dom::from_ref(session)))
.unwrap_or(WebGLTextureOwner::WebGL),
+ #[cfg(not(feature = "webxr"))]
+ owner: WebGLTextureOwner::WebGL,
immutable_levels: Cell::new(None),
face_count: Cell::new(0),
base_mipmap_level: 0,
@@ -102,11 +109,17 @@ impl WebGLTexture {
pub fn new(context: &WebGLRenderingContext, id: WebGLTextureId) -> DomRoot<Self> {
reflect_dom_object(
- Box::new(WebGLTexture::new_inherited(context, id, None)),
+ Box::new(WebGLTexture::new_inherited(
+ context,
+ id,
+ #[cfg(feature = "webxr")]
+ None,
+ )),
&*context.global(),
)
}
+ #[cfg(feature = "webxr")]
pub fn new_webxr(
context: &WebGLRenderingContext,
id: WebGLTextureId,
@@ -238,6 +251,7 @@ impl WebGLTexture {
}
// We don't delete textures owned by WebXR
+ #[cfg(feature = "webxr")]
if let WebGLTextureOwner::WebXR(_) = self.owner {
return;
}
@@ -252,6 +266,7 @@ impl WebGLTexture {
pub fn is_invalid(&self) -> bool {
// https://immersive-web.github.io/layers/#xrwebglsubimagetype
+ #[cfg(feature = "webxr")]
if let WebGLTextureOwner::WebXR(ref session) = self.owner {
if session.is_outside_raf() {
return true;
diff --git a/components/script/dom/webidls/FakeXRDevice.webidl b/components/script/dom/webidls/FakeXRDevice.webidl
index 66027d8627c..22a2ddbbd27 100644
--- a/components/script/dom/webidls/FakeXRDevice.webidl
+++ b/components/script/dom/webidls/FakeXRDevice.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://github.com/immersive-web/webxr-test-api/
[Exposed=Window, Pref="dom.webxr.test"]
diff --git a/components/script/dom/webidls/FakeXRInputController.webidl b/components/script/dom/webidls/FakeXRInputController.webidl
index 94f5e5666f8..42230c980bb 100644
--- a/components/script/dom/webidls/FakeXRInputController.webidl
+++ b/components/script/dom/webidls/FakeXRInputController.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/webxr-test-api/#fakexrinputcontroller
[Exposed=Window, Pref="dom.webxr.test"]
diff --git a/components/script/dom/webidls/XRBoundedReferenceSpace.webidl b/components/script/dom/webidls/XRBoundedReferenceSpace.webidl
index ee7f59085ba..c028f740c87 100644
--- a/components/script/dom/webidls/XRBoundedReferenceSpace.webidl
+++ b/components/script/dom/webidls/XRBoundedReferenceSpace.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/webxr/#xrboundedreferencespace-interface
[SecureContext, Exposed=Window, Pref="dom.webxr.enabled"]
diff --git a/components/script/dom/webidls/XRCompositionLayer.webidl b/components/script/dom/webidls/XRCompositionLayer.webidl
index bde8aed6cdf..e8cedf71240 100644
--- a/components/script/dom/webidls/XRCompositionLayer.webidl
+++ b/components/script/dom/webidls/XRCompositionLayer.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// TODO: Implement the layer types
// https://github.com/servo/servo/issues/27493
diff --git a/components/script/dom/webidls/XRCubeLayer.webidl b/components/script/dom/webidls/XRCubeLayer.webidl
index 66e8eb18130..1b213f34be3 100644
--- a/components/script/dom/webidls/XRCubeLayer.webidl
+++ b/components/script/dom/webidls/XRCubeLayer.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// TODO: Implement the layer types
// https://github.com/servo/servo/issues/27493
diff --git a/components/script/dom/webidls/XRCylinderLayer.webidl b/components/script/dom/webidls/XRCylinderLayer.webidl
index 9a3e2d051c6..e290aecdee4 100644
--- a/components/script/dom/webidls/XRCylinderLayer.webidl
+++ b/components/script/dom/webidls/XRCylinderLayer.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// TODO: Implement the layer types
// https://github.com/servo/servo/issues/27493
diff --git a/components/script/dom/webidls/XREquirectLayer.webidl b/components/script/dom/webidls/XREquirectLayer.webidl
index 98a82bc80dd..f7eeb327b9a 100644
--- a/components/script/dom/webidls/XREquirectLayer.webidl
+++ b/components/script/dom/webidls/XREquirectLayer.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// TODO: Implement the layer types
// https://github.com/servo/servo/issues/27493
diff --git a/components/script/dom/webidls/XRFrame.webidl b/components/script/dom/webidls/XRFrame.webidl
index 8279b380efb..2e05028ec0c 100644
--- a/components/script/dom/webidls/XRFrame.webidl
+++ b/components/script/dom/webidls/XRFrame.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/webxr/#xrframe-interface
[SecureContext, Exposed=Window, Pref="dom.webxr.enabled"]
diff --git a/components/script/dom/webidls/XRHand.webidl b/components/script/dom/webidls/XRHand.webidl
index 5ca30c2eaf1..ad46e719f2b 100644
--- a/components/script/dom/webidls/XRHand.webidl
+++ b/components/script/dom/webidls/XRHand.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://github.com/immersive-web/webxr-hands-input/blob/master/explainer.md
enum XRHandJoint {
diff --git a/components/script/dom/webidls/XRHitTestResult.webidl b/components/script/dom/webidls/XRHitTestResult.webidl
index 08bf4bf5389..cdbac19d504 100644
--- a/components/script/dom/webidls/XRHitTestResult.webidl
+++ b/components/script/dom/webidls/XRHitTestResult.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/hit-test/#xrhittestresult-interface
[SecureContext, Exposed=Window]
diff --git a/components/script/dom/webidls/XRHitTestSource.webidl b/components/script/dom/webidls/XRHitTestSource.webidl
index e2a11768158..4db03b437a1 100644
--- a/components/script/dom/webidls/XRHitTestSource.webidl
+++ b/components/script/dom/webidls/XRHitTestSource.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/hit-test/#xrhittestsource-interface
enum XRHitTestTrackableType {
diff --git a/components/script/dom/webidls/XRInputSource.webidl b/components/script/dom/webidls/XRInputSource.webidl
index 5e5afa58ae1..820f24c363f 100644
--- a/components/script/dom/webidls/XRInputSource.webidl
+++ b/components/script/dom/webidls/XRInputSource.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/webxr/#xrinputsource-interface
enum XRHandedness {
diff --git a/components/script/dom/webidls/XRInputSourceArray.webidl b/components/script/dom/webidls/XRInputSourceArray.webidl
index f8a0eb4308d..5987c0039d3 100644
--- a/components/script/dom/webidls/XRInputSourceArray.webidl
+++ b/components/script/dom/webidls/XRInputSourceArray.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/webxr/#xrinputsourcearray-interface
[SecureContext, Exposed=Window, Pref="dom.webxr.enabled"]
diff --git a/components/script/dom/webidls/XRInputSourceEvent.webidl b/components/script/dom/webidls/XRInputSourceEvent.webidl
index f1ffbf2a799..e2cb1b394c9 100644
--- a/components/script/dom/webidls/XRInputSourceEvent.webidl
+++ b/components/script/dom/webidls/XRInputSourceEvent.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/webxr/#xrinputsourceevent-interface
[SecureContext, Exposed=Window, Pref="dom.webxr.enabled"]
diff --git a/components/script/dom/webidls/XRInputSourcesChangeEvent.webidl b/components/script/dom/webidls/XRInputSourcesChangeEvent.webidl
index aba56f8b0a6..25a4885cca3 100644
--- a/components/script/dom/webidls/XRInputSourcesChangeEvent.webidl
+++ b/components/script/dom/webidls/XRInputSourcesChangeEvent.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/webxr/#xrinputsourceschangedevent-interface
[SecureContext, Exposed=Window, Pref="dom.webxr.test"]
diff --git a/components/script/dom/webidls/XRJointPose.webidl b/components/script/dom/webidls/XRJointPose.webidl
index 70750b66cc4..e824745588e 100644
--- a/components/script/dom/webidls/XRJointPose.webidl
+++ b/components/script/dom/webidls/XRJointPose.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://github.com/immersive-web/webxr-hands-input/blob/master/explainer.md
[SecureContext, Exposed=Window, Pref="dom.webxr.hands.enabled"]
diff --git a/components/script/dom/webidls/XRJointSpace.webidl b/components/script/dom/webidls/XRJointSpace.webidl
index fe347f6a84c..7326e9990a1 100644
--- a/components/script/dom/webidls/XRJointSpace.webidl
+++ b/components/script/dom/webidls/XRJointSpace.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://github.com/immersive-web/webxr-hands-input/blob/master/explainer.md
[SecureContext, Exposed=Window, Pref="dom.webxr.hands.enabled"]
diff --git a/components/script/dom/webidls/XRLayer.webidl b/components/script/dom/webidls/XRLayer.webidl
index 5f719db7bdb..122946defb9 100644
--- a/components/script/dom/webidls/XRLayer.webidl
+++ b/components/script/dom/webidls/XRLayer.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/webxr/#xrlayer
[SecureContext, Exposed=Window, Pref="dom.webxr.enabled"]
interface XRLayer : EventTarget {};
diff --git a/components/script/dom/webidls/XRLayerEvent.webidl b/components/script/dom/webidls/XRLayerEvent.webidl
index 9a05272138e..e45f116da34 100644
--- a/components/script/dom/webidls/XRLayerEvent.webidl
+++ b/components/script/dom/webidls/XRLayerEvent.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/layers/#xrlayerevent-interface
[SecureContext, Exposed=Window, Pref="dom.webxr.layers.enabled"]
interface XRLayerEvent : Event {
diff --git a/components/script/dom/webidls/XRMediaBinding.webidl b/components/script/dom/webidls/XRMediaBinding.webidl
index 87a858f098e..4c3bfc91e80 100644
--- a/components/script/dom/webidls/XRMediaBinding.webidl
+++ b/components/script/dom/webidls/XRMediaBinding.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/layers/#xrmediabindingtype
[SecureContext, Exposed=Window, Pref="dom.webxr.layers.enabled"]
interface XRMediaBinding {
diff --git a/components/script/dom/webidls/XRPose.webidl b/components/script/dom/webidls/XRPose.webidl
index 14a6c1289d0..dab2d9e7af9 100644
--- a/components/script/dom/webidls/XRPose.webidl
+++ b/components/script/dom/webidls/XRPose.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/webxr/#xrpose-interface
[SecureContext, Exposed=Window, Pref="dom.webxr.enabled"]
diff --git a/components/script/dom/webidls/XRProjectionLayer.webidl b/components/script/dom/webidls/XRProjectionLayer.webidl
index c96afe4c28d..0c812948795 100644
--- a/components/script/dom/webidls/XRProjectionLayer.webidl
+++ b/components/script/dom/webidls/XRProjectionLayer.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// TODO: Implement the layer types
// https://github.com/servo/servo/issues/27493
diff --git a/components/script/dom/webidls/XRQuadLayer.webidl b/components/script/dom/webidls/XRQuadLayer.webidl
index 78c513ecdb9..a4c43b0b62e 100644
--- a/components/script/dom/webidls/XRQuadLayer.webidl
+++ b/components/script/dom/webidls/XRQuadLayer.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// TODO: Implement the layer types
// https://github.com/servo/servo/issues/27493
diff --git a/components/script/dom/webidls/XRRay.webidl b/components/script/dom/webidls/XRRay.webidl
index f578436685d..748bd085147 100644
--- a/components/script/dom/webidls/XRRay.webidl
+++ b/components/script/dom/webidls/XRRay.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/hit-test/#xrray-interface
dictionary XRRayDirectionInit {
diff --git a/components/script/dom/webidls/XRReferenceSpace.webidl b/components/script/dom/webidls/XRReferenceSpace.webidl
index 21814883e18..ad9bd41659c 100644
--- a/components/script/dom/webidls/XRReferenceSpace.webidl
+++ b/components/script/dom/webidls/XRReferenceSpace.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/webxr/#xrreferencespace-interface
enum XRReferenceSpaceType {
diff --git a/components/script/dom/webidls/XRReferenceSpaceEvent.webidl b/components/script/dom/webidls/XRReferenceSpaceEvent.webidl
index af3a646ec1a..a15e7aba316 100644
--- a/components/script/dom/webidls/XRReferenceSpaceEvent.webidl
+++ b/components/script/dom/webidls/XRReferenceSpaceEvent.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/webxr/#xrreferencespaceevent-interface
[SecureContext, Exposed=Window, Pref="dom.webxr.enabled"]
diff --git a/components/script/dom/webidls/XRRenderState.webidl b/components/script/dom/webidls/XRRenderState.webidl
index 52c72511923..d02ab20646a 100644
--- a/components/script/dom/webidls/XRRenderState.webidl
+++ b/components/script/dom/webidls/XRRenderState.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/webxr/#xrrenderstate-interface
dictionary XRRenderStateInit {
diff --git a/components/script/dom/webidls/XRRigidTransform.webidl b/components/script/dom/webidls/XRRigidTransform.webidl
index 91505a96285..85fb73509fe 100644
--- a/components/script/dom/webidls/XRRigidTransform.webidl
+++ b/components/script/dom/webidls/XRRigidTransform.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/webxr/#xrrigidtransform-interface
[SecureContext, Exposed=Window, Pref="dom.webxr.enabled"]
diff --git a/components/script/dom/webidls/XRSession.webidl b/components/script/dom/webidls/XRSession.webidl
index d974babb3b9..a214d6aa133 100644
--- a/components/script/dom/webidls/XRSession.webidl
+++ b/components/script/dom/webidls/XRSession.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/webxr/#xrsession-interface
enum XREnvironmentBlendMode {
diff --git a/components/script/dom/webidls/XRSessionEvent.webidl b/components/script/dom/webidls/XRSessionEvent.webidl
index 19506af613d..19ddd9e1b95 100644
--- a/components/script/dom/webidls/XRSessionEvent.webidl
+++ b/components/script/dom/webidls/XRSessionEvent.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/webxr/#xrsessionevent-interface
[SecureContext, Exposed=Window, Pref="dom.webxr.enabled"]
diff --git a/components/script/dom/webidls/XRSpace.webidl b/components/script/dom/webidls/XRSpace.webidl
index 54401b051c8..3f85f4e4a52 100644
--- a/components/script/dom/webidls/XRSpace.webidl
+++ b/components/script/dom/webidls/XRSpace.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/webxr/#xrspace-interface
[SecureContext, Exposed=Window, Pref="dom.webxr.enabled"]
diff --git a/components/script/dom/webidls/XRSubImage.webidl b/components/script/dom/webidls/XRSubImage.webidl
index c96067fab17..109ee39513b 100644
--- a/components/script/dom/webidls/XRSubImage.webidl
+++ b/components/script/dom/webidls/XRSubImage.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/layers/#xrsubimagetype
[SecureContext, Exposed=Window, Pref="dom.webxr.layers.enabled"]
interface XRSubImage {
diff --git a/components/script/dom/webidls/XRSystem.webidl b/components/script/dom/webidls/XRSystem.webidl
index b7eeed756bb..41682865cd4 100644
--- a/components/script/dom/webidls/XRSystem.webidl
+++ b/components/script/dom/webidls/XRSystem.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/webxr/#xrsystem-interface
[SecureContext, Exposed=Window, Pref="dom.webxr.enabled"]
interface XRSystem: EventTarget {
diff --git a/components/script/dom/webidls/XRTest.webidl b/components/script/dom/webidls/XRTest.webidl
index b65fb1c7485..2421f873976 100644
--- a/components/script/dom/webidls/XRTest.webidl
+++ b/components/script/dom/webidls/XRTest.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://github.com/immersive-web/webxr-test-api/
[Exposed=Window, Pref="dom.webxr.test"]
diff --git a/components/script/dom/webidls/XRView.webidl b/components/script/dom/webidls/XRView.webidl
index ac58caa8144..2050afe028a 100644
--- a/components/script/dom/webidls/XRView.webidl
+++ b/components/script/dom/webidls/XRView.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/webxr/#xrview-interface
enum XREye {
diff --git a/components/script/dom/webidls/XRViewerPose.webidl b/components/script/dom/webidls/XRViewerPose.webidl
index 6a2663067ca..06274c3dfeb 100644
--- a/components/script/dom/webidls/XRViewerPose.webidl
+++ b/components/script/dom/webidls/XRViewerPose.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/webxr/#xrviewerpose-interface
[SecureContext, Exposed=Window, Pref="dom.webxr.enabled"]
diff --git a/components/script/dom/webidls/XRViewport.webidl b/components/script/dom/webidls/XRViewport.webidl
index 325b52c9f8f..079c2d11e2d 100644
--- a/components/script/dom/webidls/XRViewport.webidl
+++ b/components/script/dom/webidls/XRViewport.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/webxr/#xrviewport-interface
[SecureContext, Exposed=Window, Pref="dom.webxr.enabled"]
diff --git a/components/script/dom/webidls/XRWebGLBinding.webidl b/components/script/dom/webidls/XRWebGLBinding.webidl
index f4ee859eeaf..5bcb4b381fa 100644
--- a/components/script/dom/webidls/XRWebGLBinding.webidl
+++ b/components/script/dom/webidls/XRWebGLBinding.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/layers/#XRWebGLBindingtype
[SecureContext, Exposed=Window, Pref="dom.webxr.layers.enabled"]
interface XRWebGLBinding {
diff --git a/components/script/dom/webidls/XRWebGLLayer.webidl b/components/script/dom/webidls/XRWebGLLayer.webidl
index 5b26716ebd2..c3bd54b3d03 100644
--- a/components/script/dom/webidls/XRWebGLLayer.webidl
+++ b/components/script/dom/webidls/XRWebGLLayer.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/webxr/#xrwebgllayer-interface
typedef (WebGLRenderingContext or
diff --git a/components/script/dom/webidls/XRWebGLSubImage.webidl b/components/script/dom/webidls/XRWebGLSubImage.webidl
index 2682206cc0a..d93f12ff4c5 100644
--- a/components/script/dom/webidls/XRWebGLSubImage.webidl
+++ b/components/script/dom/webidls/XRWebGLSubImage.webidl
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+// skip-unless CARGO_FEATURE_WEBXR
+
// https://immersive-web.github.io/layers/#xrwebglsubimagetype
[SecureContext, Exposed=Window, Pref="dom.webxr.layers.enabled"]
interface XRWebGLSubImage : XRSubImage {
diff --git a/components/script/dom/fakexrdevice.rs b/components/script/dom/webxr/fakexrdevice.rs
index 7024aa9dc65..7024aa9dc65 100644
--- a/components/script/dom/fakexrdevice.rs
+++ b/components/script/dom/webxr/fakexrdevice.rs
diff --git a/components/script/dom/fakexrinputcontroller.rs b/components/script/dom/webxr/fakexrinputcontroller.rs
index a9bf8038f5e..a9bf8038f5e 100644
--- a/components/script/dom/fakexrinputcontroller.rs
+++ b/components/script/dom/webxr/fakexrinputcontroller.rs
diff --git a/components/script/dom/webxr/mod.rs b/components/script/dom/webxr/mod.rs
new file mode 100644
index 00000000000..6faee016890
--- /dev/null
+++ b/components/script/dom/webxr/mod.rs
@@ -0,0 +1,44 @@
+/* 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 https://mozilla.org/MPL/2.0/. */
+
+pub mod fakexrdevice;
+pub mod fakexrinputcontroller;
+pub mod xrboundedreferencespace;
+pub mod xrcompositionlayer;
+pub mod xrcubelayer;
+pub mod xrcylinderlayer;
+pub mod xrequirectlayer;
+pub mod xrframe;
+pub mod xrhand;
+pub mod xrhittestresult;
+pub mod xrhittestsource;
+pub mod xrinputsource;
+pub mod xrinputsourcearray;
+pub mod xrinputsourceevent;
+pub mod xrinputsourceschangeevent;
+pub mod xrjointpose;
+pub mod xrjointspace;
+pub mod xrlayer;
+pub mod xrlayerevent;
+pub mod xrmediabinding;
+pub mod xrpose;
+pub mod xrprojectionlayer;
+pub mod xrquadlayer;
+pub mod xrray;
+pub mod xrreferencespace;
+pub mod xrreferencespaceevent;
+pub mod xrrenderstate;
+pub mod xrrigidtransform;
+pub mod xrsession;
+pub mod xrsessionevent;
+pub mod xrspace;
+pub mod xrsubimage;
+pub mod xrsystem;
+pub mod xrtest;
+pub mod xrview;
+pub mod xrviewerpose;
+pub mod xrviewport;
+pub mod xrwebglbinding;
+pub mod xrwebgllayer;
+pub mod xrwebglsubimage;
diff --git a/components/script/dom/xrboundedreferencespace.rs b/components/script/dom/webxr/xrboundedreferencespace.rs
index 1434e23e6e1..1434e23e6e1 100644
--- a/components/script/dom/xrboundedreferencespace.rs
+++ b/components/script/dom/webxr/xrboundedreferencespace.rs
diff --git a/components/script/dom/xrcompositionlayer.rs b/components/script/dom/webxr/xrcompositionlayer.rs
index fbb71149716..fbb71149716 100644
--- a/components/script/dom/xrcompositionlayer.rs
+++ b/components/script/dom/webxr/xrcompositionlayer.rs
diff --git a/components/script/dom/xrcubelayer.rs b/components/script/dom/webxr/xrcubelayer.rs
index 587d088e88b..587d088e88b 100644
--- a/components/script/dom/xrcubelayer.rs
+++ b/components/script/dom/webxr/xrcubelayer.rs
diff --git a/components/script/dom/xrcylinderlayer.rs b/components/script/dom/webxr/xrcylinderlayer.rs
index f468380bb36..f468380bb36 100644
--- a/components/script/dom/xrcylinderlayer.rs
+++ b/components/script/dom/webxr/xrcylinderlayer.rs
diff --git a/components/script/dom/xrequirectlayer.rs b/components/script/dom/webxr/xrequirectlayer.rs
index 25cc04595ef..25cc04595ef 100644
--- a/components/script/dom/xrequirectlayer.rs
+++ b/components/script/dom/webxr/xrequirectlayer.rs
diff --git a/components/script/dom/xrframe.rs b/components/script/dom/webxr/xrframe.rs
index f3a8a263fd3..f3a8a263fd3 100644
--- a/components/script/dom/xrframe.rs
+++ b/components/script/dom/webxr/xrframe.rs
diff --git a/components/script/dom/xrhand.rs b/components/script/dom/webxr/xrhand.rs
index b73e9cddb35..b73e9cddb35 100644
--- a/components/script/dom/xrhand.rs
+++ b/components/script/dom/webxr/xrhand.rs
diff --git a/components/script/dom/xrhittestresult.rs b/components/script/dom/webxr/xrhittestresult.rs
index faca7dad3a3..faca7dad3a3 100644
--- a/components/script/dom/xrhittestresult.rs
+++ b/components/script/dom/webxr/xrhittestresult.rs
diff --git a/components/script/dom/xrhittestsource.rs b/components/script/dom/webxr/xrhittestsource.rs
index 5210bfa84a9..5210bfa84a9 100644
--- a/components/script/dom/xrhittestsource.rs
+++ b/components/script/dom/webxr/xrhittestsource.rs
diff --git a/components/script/dom/xrinputsource.rs b/components/script/dom/webxr/xrinputsource.rs
index c7155d343d2..c7155d343d2 100644
--- a/components/script/dom/xrinputsource.rs
+++ b/components/script/dom/webxr/xrinputsource.rs
diff --git a/components/script/dom/xrinputsourcearray.rs b/components/script/dom/webxr/xrinputsourcearray.rs
index 18059db822a..18059db822a 100644
--- a/components/script/dom/xrinputsourcearray.rs
+++ b/components/script/dom/webxr/xrinputsourcearray.rs
diff --git a/components/script/dom/xrinputsourceevent.rs b/components/script/dom/webxr/xrinputsourceevent.rs
index cc694f8f99c..cc694f8f99c 100644
--- a/components/script/dom/xrinputsourceevent.rs
+++ b/components/script/dom/webxr/xrinputsourceevent.rs
diff --git a/components/script/dom/xrinputsourceschangeevent.rs b/components/script/dom/webxr/xrinputsourceschangeevent.rs
index 4429f7d545e..4429f7d545e 100644
--- a/components/script/dom/xrinputsourceschangeevent.rs
+++ b/components/script/dom/webxr/xrinputsourceschangeevent.rs
diff --git a/components/script/dom/xrjointpose.rs b/components/script/dom/webxr/xrjointpose.rs
index 9d1ed301486..9d1ed301486 100644
--- a/components/script/dom/xrjointpose.rs
+++ b/components/script/dom/webxr/xrjointpose.rs
diff --git a/components/script/dom/xrjointspace.rs b/components/script/dom/webxr/xrjointspace.rs
index 8d8dc9309f7..8d8dc9309f7 100644
--- a/components/script/dom/xrjointspace.rs
+++ b/components/script/dom/webxr/xrjointspace.rs
diff --git a/components/script/dom/xrlayer.rs b/components/script/dom/webxr/xrlayer.rs
index 3dc3b4dfeea..3dc3b4dfeea 100644
--- a/components/script/dom/xrlayer.rs
+++ b/components/script/dom/webxr/xrlayer.rs
diff --git a/components/script/dom/xrlayerevent.rs b/components/script/dom/webxr/xrlayerevent.rs
index 136aac87450..136aac87450 100644
--- a/components/script/dom/xrlayerevent.rs
+++ b/components/script/dom/webxr/xrlayerevent.rs
diff --git a/components/script/dom/xrmediabinding.rs b/components/script/dom/webxr/xrmediabinding.rs
index 14eec1fb354..14eec1fb354 100644
--- a/components/script/dom/xrmediabinding.rs
+++ b/components/script/dom/webxr/xrmediabinding.rs
diff --git a/components/script/dom/xrpose.rs b/components/script/dom/webxr/xrpose.rs
index dea8aa62dc4..dea8aa62dc4 100644
--- a/components/script/dom/xrpose.rs
+++ b/components/script/dom/webxr/xrpose.rs
diff --git a/components/script/dom/xrprojectionlayer.rs b/components/script/dom/webxr/xrprojectionlayer.rs
index 489c3a9e706..489c3a9e706 100644
--- a/components/script/dom/xrprojectionlayer.rs
+++ b/components/script/dom/webxr/xrprojectionlayer.rs
diff --git a/components/script/dom/xrquadlayer.rs b/components/script/dom/webxr/xrquadlayer.rs
index dd93aea9c0a..dd93aea9c0a 100644
--- a/components/script/dom/xrquadlayer.rs
+++ b/components/script/dom/webxr/xrquadlayer.rs
diff --git a/components/script/dom/xrray.rs b/components/script/dom/webxr/xrray.rs
index d80a4c00d61..4936edd0acb 100644
--- a/components/script/dom/xrray.rs
+++ b/components/script/dom/webxr/xrray.rs
@@ -8,7 +8,7 @@ use js::rust::HandleObject;
use js::typedarray::{Float32, Float32Array};
use webxr_api::{ApiSpace, Ray};
-use super::bindings::buffer_source::HeapBufferSource;
+use crate::dom::bindings::buffer_source::HeapBufferSource;
use crate::dom::bindings::codegen::Bindings::DOMPointBinding::DOMPointInit;
use crate::dom::bindings::codegen::Bindings::XRRayBinding::{XRRayDirectionInit, XRRayMethods};
use crate::dom::bindings::error::{Error, Fallible};
diff --git a/components/script/dom/xrreferencespace.rs b/components/script/dom/webxr/xrreferencespace.rs
index 6f8c409edbc..6f8c409edbc 100644
--- a/components/script/dom/xrreferencespace.rs
+++ b/components/script/dom/webxr/xrreferencespace.rs
diff --git a/components/script/dom/xrreferencespaceevent.rs b/components/script/dom/webxr/xrreferencespaceevent.rs
index e75aabe14a1..e75aabe14a1 100644
--- a/components/script/dom/xrreferencespaceevent.rs
+++ b/components/script/dom/webxr/xrreferencespaceevent.rs
diff --git a/components/script/dom/xrrenderstate.rs b/components/script/dom/webxr/xrrenderstate.rs
index cf6976404d6..cf6976404d6 100644
--- a/components/script/dom/xrrenderstate.rs
+++ b/components/script/dom/webxr/xrrenderstate.rs
diff --git a/components/script/dom/xrrigidtransform.rs b/components/script/dom/webxr/xrrigidtransform.rs
index fda4332eb0b..e215c17cf4e 100644
--- a/components/script/dom/xrrigidtransform.rs
+++ b/components/script/dom/webxr/xrrigidtransform.rs
@@ -7,7 +7,7 @@ use euclid::{RigidTransform3D, Rotation3D, Vector3D};
use js::rust::HandleObject;
use js::typedarray::{Float32, Float32Array};
-use super::bindings::buffer_source::HeapBufferSource;
+use crate::dom::bindings::buffer_source::HeapBufferSource;
use crate::dom::bindings::codegen::Bindings::DOMPointBinding::DOMPointInit;
use crate::dom::bindings::codegen::Bindings::XRRigidTransformBinding::XRRigidTransformMethods;
use crate::dom::bindings::error::{Error, Fallible};
diff --git a/components/script/dom/xrsession.rs b/components/script/dom/webxr/xrsession.rs
index 3bbe6537bb9..920c94aaada 100644
--- a/components/script/dom/xrsession.rs
+++ b/components/script/dom/webxr/xrsession.rs
@@ -24,7 +24,7 @@ use webxr_api::{
SelectEvent, SelectKind, Session, SessionId, View, Viewer, Visibility,
};
-use super::bindings::trace::HashMapTracedValues;
+use crate::dom::bindings::trace::HashMapTracedValues;
use crate::dom::bindings::buffer_source::create_buffer_source;
use crate::dom::bindings::callback::ExceptionHandling;
use crate::dom::bindings::cell::DomRefCell;
diff --git a/components/script/dom/xrsessionevent.rs b/components/script/dom/webxr/xrsessionevent.rs
index fda299a9f2a..fda299a9f2a 100644
--- a/components/script/dom/xrsessionevent.rs
+++ b/components/script/dom/webxr/xrsessionevent.rs
diff --git a/components/script/dom/xrspace.rs b/components/script/dom/webxr/xrspace.rs
index d810d5c07f0..d810d5c07f0 100644
--- a/components/script/dom/xrspace.rs
+++ b/components/script/dom/webxr/xrspace.rs
diff --git a/components/script/dom/xrsubimage.rs b/components/script/dom/webxr/xrsubimage.rs
index 53d2e3ca697..53d2e3ca697 100644
--- a/components/script/dom/xrsubimage.rs
+++ b/components/script/dom/webxr/xrsubimage.rs
diff --git a/components/script/dom/xrsystem.rs b/components/script/dom/webxr/xrsystem.rs
index 21705357e0b..21705357e0b 100644
--- a/components/script/dom/xrsystem.rs
+++ b/components/script/dom/webxr/xrsystem.rs
diff --git a/components/script/dom/xrtest.rs b/components/script/dom/webxr/xrtest.rs
index 0117ab5c3ce..0117ab5c3ce 100644
--- a/components/script/dom/xrtest.rs
+++ b/components/script/dom/webxr/xrtest.rs
diff --git a/components/script/dom/xrview.rs b/components/script/dom/webxr/xrview.rs
index b1ef9596401..89c5f7d7868 100644
--- a/components/script/dom/xrview.rs
+++ b/components/script/dom/webxr/xrview.rs
@@ -9,7 +9,7 @@ use euclid::RigidTransform3D;
use js::typedarray::{Float32, Float32Array};
use webxr_api::{ApiSpace, View};
-use super::bindings::buffer_source::HeapBufferSource;
+use crate::dom::bindings::buffer_source::HeapBufferSource;
use crate::dom::bindings::codegen::Bindings::XRViewBinding::{XREye, XRViewMethods};
use crate::dom::bindings::num::Finite;
use crate::dom::bindings::reflector::{reflect_dom_object, Reflector};
diff --git a/components/script/dom/xrviewerpose.rs b/components/script/dom/webxr/xrviewerpose.rs
index 47b166ab375..47b166ab375 100644
--- a/components/script/dom/xrviewerpose.rs
+++ b/components/script/dom/webxr/xrviewerpose.rs
diff --git a/components/script/dom/xrviewport.rs b/components/script/dom/webxr/xrviewport.rs
index 8ac28519620..8ac28519620 100644
--- a/components/script/dom/xrviewport.rs
+++ b/components/script/dom/webxr/xrviewport.rs
diff --git a/components/script/dom/xrwebglbinding.rs b/components/script/dom/webxr/xrwebglbinding.rs
index c2d652bb81d..c2d652bb81d 100644
--- a/components/script/dom/xrwebglbinding.rs
+++ b/components/script/dom/webxr/xrwebglbinding.rs
diff --git a/components/script/dom/xrwebgllayer.rs b/components/script/dom/webxr/xrwebgllayer.rs
index 031bd4b2f4d..031bd4b2f4d 100644
--- a/components/script/dom/xrwebgllayer.rs
+++ b/components/script/dom/webxr/xrwebgllayer.rs
diff --git a/components/script/dom/xrwebglsubimage.rs b/components/script/dom/webxr/xrwebglsubimage.rs
index acdcd22f4a9..acdcd22f4a9 100644
--- a/components/script/dom/xrwebglsubimage.rs
+++ b/components/script/dom/webxr/xrwebglsubimage.rs
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs
index d7ac58667f0..d5504436708 100644
--- a/components/script/dom/window.rs
+++ b/components/script/dom/window.rs
@@ -287,6 +287,7 @@ pub struct Window {
#[ignore_malloc_size_of = "defined in webxr"]
#[no_trace]
+ #[cfg(feature = "webxr")]
webxr_registry: Option<webxr_api::Registry>,
/// All of the elements that have an outstanding image request that was
@@ -495,6 +496,7 @@ impl Window {
.map(|chan| WebGLCommandSender::new(chan.clone()))
}
+ #[cfg(feature = "webxr")]
pub fn webxr_registry(&self) -> Option<webxr_api::Registry> {
self.webxr_registry.clone()
}
@@ -2545,6 +2547,7 @@ impl Window {
self.webrender_document
}
+ #[cfg(feature = "webxr")]
pub fn in_immersive_xr_session(&self) -> bool {
self.navigator
.get()
@@ -2552,6 +2555,11 @@ impl Window {
.and_then(|nav| nav.xr())
.is_some_and(|xr| xr.pending_or_active_session())
}
+
+ #[cfg(not(feature = "webxr"))]
+ pub fn in_immersive_xr_session(&self) -> bool {
+ false
+ }
}
impl Window {
@@ -2579,7 +2587,7 @@ impl Window {
creator_url: ServoUrl,
navigation_start: CrossProcessInstant,
webgl_chan: Option<WebGLChan>,
- webxr_registry: Option<webxr_api::Registry>,
+ #[cfg(feature = "webxr")] webxr_registry: Option<webxr_api::Registry>,
microtask_queue: Rc<MicrotaskQueue>,
webrender_document: DocumentId,
compositor_api: CrossProcessCompositorApi,
@@ -2661,6 +2669,7 @@ impl Window {
media_query_lists: DOMTracker::new(),
test_runner: Default::default(),
webgl_chan,
+ #[cfg(feature = "webxr")]
webxr_registry,
pending_layout_images: Default::default(),
unminified_css_dir: Default::default(),