Bridge Servo webview resize

This commit is contained in:
2026-05-08 15:22:05 -04:00
parent 0ea43e8b81
commit 660d9f54e2
4 changed files with 67 additions and 10 deletions
+9
View File
@@ -220,6 +220,13 @@ pub struct ScrollRequest {
pub delta_y: i32,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ResizeRequest {
pub webview_id: WebViewId,
pub width: u32,
pub height: u32,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct MouseClickRequest {
pub webview_id: WebViewId,
@@ -275,6 +282,8 @@ pub trait ServoHost {
fn scroll(&mut self, request: ScrollRequest) -> Result<(), ServoHostError>;
fn resize(&mut self, request: ResizeRequest) -> Result<(), ServoHostError>;
fn click(&mut self, request: MouseClickRequest) -> Result<(), ServoHostError>;
fn drag(&mut self, request: MouseDragRequest) -> Result<(), ServoHostError>;
+2 -2
View File
@@ -10,8 +10,8 @@ mod runtime_input;
pub use error::ServoHostError;
pub use host::{
KeyboardTextRequest, MouseClickRequest, MouseDragRequest, NavigationRequest,
PermissionDecision, PermissionRequest, RenderedFrame, RenderedFrameSummary, ScrollRequest,
ServoHost, TouchTapRequest, WebViewSnapshot, WebViewState,
PermissionDecision, PermissionRequest, RenderedFrame, RenderedFrameSummary, ResizeRequest,
ScrollRequest, ServoHost, TouchTapRequest, WebViewSnapshot, WebViewState,
};
#[cfg(feature = "servo-engine")]
pub use runtime::{ServoSurfaceSize, SoftwareServoHost};
+12 -2
View File
@@ -19,8 +19,8 @@ use url::Url;
use crate::{
KeyboardTextRequest, MouseClickRequest, MouseDragRequest, NavigationRequest,
PermissionDecision, PermissionRequest, RenderedFrame, ScrollRequest, ServoHost, ServoHostError,
TouchTapRequest, WebViewSnapshot, WebViewState,
PermissionDecision, PermissionRequest, RenderedFrame, ResizeRequest, ScrollRequest, ServoHost,
ServoHostError, TouchTapRequest, WebViewSnapshot, WebViewState,
runtime_input::{send_keyboard_text, send_mouse_click, send_mouse_drag, send_touch_tap},
};
@@ -165,6 +165,16 @@ impl ServoHost for SoftwareServoHost {
Ok(())
}
fn resize(&mut self, request: ResizeRequest) -> Result<(), ServoHostError> {
let webview = self
.webviews
.get(&request.webview_id)
.ok_or_else(|| ServoHostError::WebViewNotFound { id: request.webview_id.clone() })?;
webview.webview.resize(PhysicalSize::new(request.width, request.height));
Ok(())
}
fn click(&mut self, request: MouseClickRequest) -> Result<(), ServoHostError> {
let webview = self
.webviews