From e9d0a8f95d94ca736d76b4f98365220e29f6e960 Mon Sep 17 00:00:00 2001 From: Martin Robinson Date: Tue, 30 Sep 2025 18:36:05 +0200 Subject: [PATCH] libservo: Re-export types that are used by servoshell (#39586) servoshell should not depend on internal Servo crates. Instead, `libervo` should re-export any types that are used by embedders. This change does that re-export for private types currently used by servoshell. Testing: This just changes the way types are imported, so curent tests should suffice. Signed-off-by: Martin Robinson --- Cargo.lock | 2 -- components/servo/lib.rs | 5 +++-- ports/servoshell/Cargo.toml | 2 -- ports/servoshell/desktop/app.rs | 7 +++---- ports/servoshell/desktop/app_state.rs | 3 +-- ports/servoshell/egl/android/simpleservo.rs | 6 ++++-- ports/servoshell/egl/app_state.rs | 16 ++++++---------- ports/servoshell/egl/ohos/simpleservo.rs | 6 ++++-- 8 files changed, 21 insertions(+), 26 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 499bd8a1fc5..37833e2e88f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7972,7 +7972,6 @@ dependencies = [ "bpaf", "cc", "cfg-if", - "constellation_traits", "crossbeam-channel", "dirs", "dpi", @@ -7980,7 +7979,6 @@ dependencies = [ "egui-file-dialog", "egui-winit", "egui_glow", - "embedder_traits", "env_filter", "euclid", "gilrs", diff --git a/components/servo/lib.rs b/components/servo/lib.rs index e2a6f3bceea..5cade9e9641 100644 --- a/components/servo/lib.rs +++ b/components/servo/lib.rs @@ -63,11 +63,12 @@ use constellation::{ Constellation, FromEmbedderLogger, FromScriptLogger, InitialConstellationState, UnprivilegedContent, }; -use constellation_traits::{EmbedderToConstellationMessage, ScriptToConstellationChan}; +pub use constellation_traits::EmbedderToConstellationMessage; +use constellation_traits::ScriptToConstellationChan; use crossbeam_channel::{Receiver, Sender, unbounded}; use embedder_traits::FormControl as EmbedderFormControl; use embedder_traits::user_content_manager::UserContentManager; -pub use embedder_traits::*; +pub use embedder_traits::{WebDriverSenders, *}; use env_logger::Builder as EnvLoggerBuilder; use fonts::SystemFontService; #[cfg(all( diff --git a/ports/servoshell/Cargo.toml b/ports/servoshell/Cargo.toml index 939c0b3654a..2cc4e4951ea 100644 --- a/ports/servoshell/Cargo.toml +++ b/ports/servoshell/Cargo.toml @@ -57,10 +57,8 @@ webxr = ["libservo/webxr"] [dependencies] bpaf = { version = "0.9.20", features = ["derive"] } cfg-if = { workspace = true } -constellation_traits = { workspace = true } crossbeam-channel = { workspace = true } dpi = { workspace = true } -embedder_traits = { path = "../../components/shared/embedder" } euclid = { workspace = true } hitrace = { workspace = true, optional = true } image = { workspace = true } diff --git a/ports/servoshell/desktop/app.rs b/ports/servoshell/desktop/app.rs index 1cbd6cb8289..fcb5bd1f4b9 100644 --- a/ports/servoshell/desktop/app.rs +++ b/ports/servoshell/desktop/app.rs @@ -12,7 +12,6 @@ use std::time::Instant; use std::{env, fs}; use ::servo::ServoBuilder; -use constellation_traits::EmbedderToConstellationMessage; use crossbeam_channel::unbounded; use euclid::{Point2D, Vector2D}; use ipc_channel::ipc; @@ -24,9 +23,9 @@ use servo::servo_url::ServoUrl; use servo::user_content_manager::{UserContentManager, UserScript}; use servo::webrender_api::ScrollLocation; use servo::{ - EventLoopWaker, ImeEvent, InputEvent, KeyboardEvent, MouseButtonEvent, MouseMoveEvent, - WebDriverCommandMsg, WebDriverScriptCommand, WebDriverUserPromptAction, WheelDelta, WheelEvent, - WheelMode, + EmbedderToConstellationMessage, EventLoopWaker, ImeEvent, InputEvent, KeyboardEvent, + MouseButtonEvent, MouseMoveEvent, WebDriverCommandMsg, WebDriverScriptCommand, + WebDriverUserPromptAction, WheelDelta, WheelEvent, WheelMode, }; use url::Url; use winit::application::ApplicationHandler; diff --git a/ports/servoshell/desktop/app_state.rs b/ports/servoshell/desktop/app_state.rs index 806ee3364df..d46d449b1ac 100644 --- a/ports/servoshell/desktop/app_state.rs +++ b/ports/servoshell/desktop/app_state.rs @@ -10,7 +10,6 @@ use std::path::PathBuf; use std::rc::Rc; use crossbeam_channel::Receiver; -use embedder_traits::webdriver::WebDriverSenders; use image::{DynamicImage, ImageFormat}; use keyboard_types::ShortcutMatcher; use log::{error, info}; @@ -23,7 +22,7 @@ use servo::{ AllowOrDenyRequest, AuthenticationRequest, FilterPattern, FormControl, GamepadHapticEffectType, JSValue, KeyboardEvent, LoadStatus, PermissionRequest, Servo, ServoDelegate, ServoError, SimpleDialog, TraversalId, WebDriverCommandMsg, WebDriverJSResult, WebDriverLoadStatus, - WebDriverUserPrompt, WebView, WebViewBuilder, WebViewDelegate, + WebDriverSenders, WebDriverUserPrompt, WebView, WebViewBuilder, WebViewDelegate, }; use url::Url; diff --git a/ports/servoshell/egl/android/simpleservo.rs b/ports/servoshell/egl/android/simpleservo.rs index 03121c9fdf5..c0c6577b63a 100644 --- a/ports/servoshell/egl/android/simpleservo.rs +++ b/ports/servoshell/egl/android/simpleservo.rs @@ -6,14 +6,16 @@ use std::cell::RefCell; use std::mem; use std::rc::Rc; -use constellation_traits::EmbedderToConstellationMessage; use crossbeam_channel::unbounded; use dpi::PhysicalSize; use raw_window_handle::{DisplayHandle, RawDisplayHandle, RawWindowHandle, WindowHandle}; use servo::ipc_channel::ipc; pub use servo::webrender_api::units::DeviceIntRect; use servo::{self, EventLoopWaker, ServoBuilder, resources}; -pub use servo::{InputMethodType, MediaSessionPlaybackState, WindowRenderingContext}; +pub use servo::{ + EmbedderToConstellationMessage, InputMethodType, MediaSessionPlaybackState, + WindowRenderingContext, +}; use crate::egl::android::resources::ResourceReaderInstance; #[cfg(feature = "webxr")] diff --git a/ports/servoshell/egl/app_state.rs b/ports/servoshell/egl/app_state.rs index 7c3414a3bc5..26443dfe039 100644 --- a/ports/servoshell/egl/app_state.rs +++ b/ports/servoshell/egl/app_state.rs @@ -7,12 +7,6 @@ use std::rc::Rc; use crossbeam_channel::Receiver; use dpi::PhysicalSize; -use embedder_traits::webdriver::WebDriverSenders; -use embedder_traits::{ - ContextMenuResult, InputMethodType, KeyboardEvent, MediaSessionActionType, MediaSessionEvent, - MouseButton, MouseButtonAction, ScreenGeometry, TouchEvent, TouchEventType, TouchId, - WebDriverJSResult, -}; use euclid::{Point2D, Rect, Scale, Size2D, Vector2D}; use image::{DynamicImage, ImageFormat}; use keyboard_types::{CompositionEvent, CompositionState, Key, KeyState, NamedKey}; @@ -25,10 +19,12 @@ use servo::servo_geometry::DeviceIndependentPixel; use servo::webrender_api::ScrollLocation; use servo::webrender_api::units::{DeviceIntRect, DeviceIntSize, DevicePixel}; use servo::{ - AllowOrDenyRequest, ImeEvent, InputEvent, LoadStatus, MouseButtonEvent, MouseMoveEvent, - NavigationRequest, PermissionRequest, Servo, ServoDelegate, ServoError, SimpleDialog, - TraversalId, WebDriverCommandMsg, WebDriverLoadStatus, WebDriverScriptCommand, WebView, - WebViewBuilder, WebViewDelegate, WindowRenderingContext, + AllowOrDenyRequest, ContextMenuResult, ImeEvent, InputEvent, InputMethodType, KeyboardEvent, + LoadStatus, MediaSessionActionType, MediaSessionEvent, MouseButton, MouseButtonAction, + MouseButtonEvent, MouseMoveEvent, NavigationRequest, PermissionRequest, ScreenGeometry, Servo, + ServoDelegate, ServoError, SimpleDialog, TouchEvent, TouchEventType, TouchId, TraversalId, + WebDriverCommandMsg, WebDriverJSResult, WebDriverLoadStatus, WebDriverScriptCommand, + WebDriverSenders, WebView, WebViewBuilder, WebViewDelegate, WindowRenderingContext, }; use url::Url; diff --git a/ports/servoshell/egl/ohos/simpleservo.rs b/ports/servoshell/egl/ohos/simpleservo.rs index 1b65d686fb8..1b19d755ceb 100644 --- a/ports/servoshell/egl/ohos/simpleservo.rs +++ b/ports/servoshell/egl/ohos/simpleservo.rs @@ -8,7 +8,6 @@ use std::path::PathBuf; use std::ptr::NonNull; use std::rc::Rc; -use constellation_traits::EmbedderToConstellationMessage; use crossbeam_channel::unbounded; use dpi::PhysicalSize; use log::{debug, info, warn}; @@ -19,7 +18,10 @@ use raw_window_handle::{ WindowHandle, }; use servo::ipc_channel::ipc; -use servo::{self, EventLoopWaker, ServoBuilder, WindowRenderingContext, resources}; +use servo::{ + self, EmbedderToConstellationMessage, EventLoopWaker, ServoBuilder, WindowRenderingContext, + resources, +}; use xcomponent_sys::OH_NativeXComponent; use crate::egl::app_state::{Coordinates, RunningAppState, ServoWindowCallbacks};