mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
constellation: Stop assuming that the viewport is shared by all WebViews (#36312)
The `Constellation` previously held a `window_size` member, but this assumes that all `WebView`s have the same size. This change removes that assumption as well as making sure that all `WebView`s pass their size and HiDIP scaling to the `Constellation` when they are created. In addition - `WindowSizeData` is renamed to `ViewportDetails`, as it was holding more than just the size and it didn't necessarily correspond to a "window." It's used for tracking viewport data, whether for an `<iframe>` or the main `WebView` viewport. - `ViewportDetails` is stored more consistently so that conceptually an `<iframe>` can also have its own HiDPI scaling. This isn't something we necessarily want, but it makes everything conceptually simpler. The goal with this change is to work toward allowing per-`WebView` HiDPI scaling and sizing. There are still some corresponding changes in the compositor to make that happen, but they will in a subsequent change. Testing: This is covered by existing tests. There should be no behavior changes. Fixes: This is part of #36232. Signed-off-by: Martin Robinson <mrobinson@igalia.com> Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
parent
7c89e24f34
commit
fb344ba4e9
26 changed files with 272 additions and 256 deletions
|
@ -13,8 +13,9 @@ use base::id::{
|
|||
use canvas_traits::canvas::{CanvasId, CanvasMsg};
|
||||
use constellation_traits::{LogEntry, TraversalDirection};
|
||||
use devtools_traits::{ScriptToDevtoolsControlMsg, WorkerId};
|
||||
use embedder_traits::{EmbedderMsg, MediaSessionEvent, TouchEventType, TouchSequenceId};
|
||||
use euclid::Size2D;
|
||||
use embedder_traits::{
|
||||
EmbedderMsg, MediaSessionEvent, TouchEventType, TouchSequenceId, ViewportDetails,
|
||||
};
|
||||
use euclid::default::Size2D as UntypedSize2D;
|
||||
use ipc_channel::ipc::{IpcReceiver, IpcSender};
|
||||
use net_traits::CoreResourceMsg;
|
||||
|
@ -22,7 +23,6 @@ use net_traits::storage_thread::StorageType;
|
|||
use serde::{Deserialize, Serialize};
|
||||
use servo_url::{ImmutableOrigin, ServoUrl};
|
||||
use strum_macros::IntoStaticStr;
|
||||
use style_traits::CSSPixel;
|
||||
#[cfg(feature = "webgpu")]
|
||||
use webgpu_traits::{WebGPU, WebGPUAdapterResponse};
|
||||
use webrender_api::ImageKey;
|
||||
|
@ -39,8 +39,8 @@ use crate::{
|
|||
pub struct IFrameSizeMsg {
|
||||
/// The child browsing context for this iframe.
|
||||
pub browsing_context_id: BrowsingContextId,
|
||||
/// The size of the iframe.
|
||||
pub size: Size2D<f32, CSSPixel>,
|
||||
/// The size and scale factor of the iframe.
|
||||
pub size: ViewportDetails,
|
||||
/// The kind of sizing operation.
|
||||
pub type_: WindowSizeType,
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue