From 0b8986c8da69ff85b8eb8a5fa70f20c7b7427ea9 Mon Sep 17 00:00:00 2001 From: Euclid Ye Date: Thu, 24 Jul 2025 13:42:04 +0800 Subject: [PATCH] servoshell: Consider window decorations when handling resize requests from web content (#38174) Also fix some docs. This is used by JS `resizeTo`, `resizeBy` and webdriver [set window rect](https://w3c.github.io/webdriver/#set-window-rect). Testing: Can now pass more tests for headed window. Fixes: Well.. Originally the attempt is to address https://github.com/servo/servo/issues/38093#issuecomment-3092284104. But it turns out as a more general problem to be fixed in another PR. --------- Signed-off-by: Euclid Ye --- components/servo/webview.rs | 14 ++++----- components/servo/webview_delegate.rs | 6 ++-- ports/servoshell/desktop/app_state.rs | 10 +++--- ports/servoshell/desktop/headed_window.rs | 35 ++++++++++++++------- ports/servoshell/desktop/headless_window.rs | 10 ++++-- ports/servoshell/prefs.rs | 2 +- 6 files changed, 47 insertions(+), 30 deletions(-) diff --git a/components/servo/webview.rs b/components/servo/webview.rs index 51b0d1d5b8a..6d190f89e97 100644 --- a/components/servo/webview.rs +++ b/components/servo/webview.rs @@ -361,6 +361,13 @@ impl WebView { .move_resize_webview(self.id(), rect); } + pub fn resize(&self, new_size: PhysicalSize) { + self.inner() + .compositor + .borrow_mut() + .resize_rendering_context(new_size); + } + pub fn hidpi_scale_factor(&self) -> Scale { self.inner().hidpi_scale_factor } @@ -490,13 +497,6 @@ impl WebView { self.inner().compositor.borrow_mut().on_vsync(self.id()); } - pub fn resize(&self, new_size: PhysicalSize) { - self.inner() - .compositor - .borrow_mut() - .resize_rendering_context(new_size); - } - pub fn set_zoom(&self, new_zoom: f32) { self.inner() .compositor diff --git a/components/servo/webview_delegate.rs b/components/servo/webview_delegate.rs index 2b9b9bae677..6e2290dec06 100644 --- a/components/servo/webview_delegate.rs +++ b/components/servo/webview_delegate.rs @@ -468,10 +468,10 @@ pub trait WebViewDelegate { /// Whether or not to allow a [`WebView`] to unload a `Document` in its main frame or one /// of its nested `