mirror of
https://github.com/servo/servo.git
synced 2025-08-12 08:55:32 +01:00
webdriver: Implement maximize window for both headless&headed window (#38271)
- Implement [Maximize Window](https://w3c.github.io/webdriver/#maximize-window) - Previously, headless window screen size is same as inner size if not specified in preference. We make it double as required by the test to not have max window initially. - Some other random cleanup. Testing: webdriver Stress test for maximize window (headed + headless). --------- Signed-off-by: Euclid Ye <euclid.ye@huawei.com>
This commit is contained in:
parent
9ef4d0c9d7
commit
a3de3ffa75
11 changed files with 76 additions and 91 deletions
|
@ -13,7 +13,7 @@ use servo::servo_geometry::{
|
|||
DeviceIndependentIntRect, DeviceIndependentPixel, convert_rect_to_css_pixel,
|
||||
};
|
||||
use servo::webrender_api::units::{DeviceIntPoint, DeviceIntRect, DeviceIntSize, DevicePixel};
|
||||
use servo::{RenderingContext, ScreenGeometry, SoftwareRenderingContext};
|
||||
use servo::{RenderingContext, ScreenGeometry, SoftwareRenderingContext, WebView};
|
||||
use winit::dpi::PhysicalSize;
|
||||
|
||||
use super::app_state::RunningAppState;
|
||||
|
@ -47,7 +47,7 @@ impl Window {
|
|||
|
||||
let screen_size = servoshell_preferences
|
||||
.screen_size_override
|
||||
.map_or(inner_size, |screen_size_override| {
|
||||
.map_or(inner_size * 2, |screen_size_override| {
|
||||
(screen_size_override.to_f32() * hidpi_factor).to_i32()
|
||||
});
|
||||
|
||||
|
@ -86,7 +86,7 @@ impl WindowPortsMethods for Window {
|
|||
|
||||
fn request_resize(
|
||||
&self,
|
||||
webview: &::servo::WebView,
|
||||
webview: &WebView,
|
||||
outer_size: DeviceIntSize,
|
||||
) -> Option<DeviceIntSize> {
|
||||
let new_size = DeviceIntSize::new(
|
||||
|
@ -167,4 +167,17 @@ impl WindowPortsMethods for Window {
|
|||
fn rendering_context(&self) -> Rc<dyn RenderingContext> {
|
||||
self.rendering_context.clone()
|
||||
}
|
||||
|
||||
fn maximize(&self, webview: &WebView) {
|
||||
self.window_position.set(Point2D::zero());
|
||||
self.inner_size.set(self.screen_size);
|
||||
// Because we are managing the rendering surface ourselves, there will be no other
|
||||
// notification (such as from the display manager) that it has changed size, so we
|
||||
// must notify the compositor here.
|
||||
webview.move_resize(self.screen_size.to_f32().into());
|
||||
webview.resize(PhysicalSize::new(
|
||||
self.screen_size.width as u32,
|
||||
self.screen_size.height as u32,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue