diff --git a/ports/servoshell/Cargo.toml b/ports/servoshell/Cargo.toml index 55d17d92c12..3622d325c6e 100644 --- a/ports/servoshell/Cargo.toml +++ b/ports/servoshell/Cargo.toml @@ -39,7 +39,7 @@ ProductName = "Servo" [features] debugmozjs = ["libservo/debugmozjs"] -default = ["layout_2013", "max_log_level", "webdriver", "libservo/webxr"] +default = ["layout_2013", "max_log_level", "webdriver", "webxr"] jitspew = ["libservo/jitspew"] js_backtrace = ["libservo/js_backtrace"] layout_2013 = ["libservo/layout_2013"] @@ -54,6 +54,7 @@ tracing-hitrace = ["tracing", "dep:hitrace"] tracing-perfetto = ["tracing", "dep:tracing-perfetto"] webdriver = ["libservo/webdriver"] webgl_backtrace = ["libservo/webgl_backtrace"] +webxr = ["dep:webxr", "libservo/webxr"] [dependencies] libc = { workspace = true } @@ -95,7 +96,7 @@ ohos-vsync = "0.1.2" nix = { workspace = true, features = ["fs"] } surfman = { workspace = true, features = ["sm-angle-default"] } serde_json = { workspace = true } -webxr = { workspace = true } +webxr = { workspace = true, optional = true } [target.'cfg(not(any(target_os = "android", target_env = "ohos")))'.dependencies] diff --git a/ports/servoshell/desktop/embedder.rs b/ports/servoshell/desktop/embedder.rs index d8f9548b39c..16164ac199a 100644 --- a/ports/servoshell/desktop/embedder.rs +++ b/ports/servoshell/desktop/embedder.rs @@ -42,6 +42,7 @@ impl EmbedderMethods for EmbedderCallbacks { self.event_loop_waker.clone() } + #[cfg(feature = "webxr")] fn register_webxr( &mut self, xr: &mut webxr::MainThreadRegistry, diff --git a/ports/servoshell/egl/android/simpleservo.rs b/ports/servoshell/egl/android/simpleservo.rs index bf4dffc80bb..d8ea39e8da1 100644 --- a/ports/servoshell/egl/android/simpleservo.rs +++ b/ports/servoshell/egl/android/simpleservo.rs @@ -40,6 +40,7 @@ pub struct InitOptions { pub url: Option, pub coordinates: Coordinates, pub density: f32, + #[cfg(feature = "webxr")] pub xr_discovery: Option, pub surfman_integration: SurfmanIntegration, pub prefs: Option>, @@ -109,6 +110,7 @@ pub fn init( let embedder_callbacks = Box::new(ServoEmbedderCallbacks::new( waker, + #[cfg(feature = "webxr")] init_opts.xr_discovery, gl.clone(), )); diff --git a/ports/servoshell/egl/ohos/simpleservo.rs b/ports/servoshell/egl/ohos/simpleservo.rs index 35ab6028d8b..76796e06c7d 100644 --- a/ports/servoshell/egl/ohos/simpleservo.rs +++ b/ports/servoshell/egl/ohos/simpleservo.rs @@ -141,7 +141,12 @@ pub fn init( rendering_context.clone(), )); - let embedder_callbacks = Box::new(ServoEmbedderCallbacks::new(waker, None, gl.clone())); + let embedder_callbacks = Box::new(ServoEmbedderCallbacks::new( + waker, + #[cfg(feature = "webxr")] + None, + gl.clone(), + )); let servo = Servo::new( embedder_callbacks, diff --git a/ports/servoshell/egl/servo_glue.rs b/ports/servoshell/egl/servo_glue.rs index 9674e357aae..6526b7eba3a 100644 --- a/ports/servoshell/egl/servo_glue.rs +++ b/ports/servoshell/egl/servo_glue.rs @@ -651,6 +651,7 @@ impl ServoGlue { pub(super) struct ServoEmbedderCallbacks { waker: Box, + #[cfg(feature = "webxr")] xr_discovery: Option, #[allow(unused)] gl: Rc, @@ -659,11 +660,12 @@ pub(super) struct ServoEmbedderCallbacks { impl ServoEmbedderCallbacks { pub(super) fn new( waker: Box, - xr_discovery: Option, + #[cfg(feature = "webxr")] xr_discovery: Option, gl: Rc, ) -> Self { Self { waker, + #[cfg(feature = "webxr")] xr_discovery, gl, } @@ -676,6 +678,7 @@ impl EmbedderMethods for ServoEmbedderCallbacks { self.waker.clone() } + #[cfg(feature = "webxr")] fn register_webxr( &mut self, registry: &mut webxr::MainThreadRegistry,