Bridge Servo webview resize
This commit is contained in:
@@ -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>;
|
||||
|
||||
@@ -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};
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user