diff options
author | Martin Robinson <mrobinson@igalia.com> | 2025-04-04 19:06:34 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-04-04 17:06:34 +0000 |
commit | fb344ba4e9ace1a2ebe09f0fb7c56be1e8ee4720 (patch) | |
tree | f7b85aa0dd1276bd72c4a211a3443b2ee07f76e2 /components/script/navigation.rs | |
parent | 7c89e24f344fcef5ab858ff752cdd22624b8d66b (diff) | |
download | servo-fb344ba4e9ace1a2ebe09f0fb7c56be1e8ee4720.tar.gz servo-fb344ba4e9ace1a2ebe09f0fb7c56be1e8ee4720.zip |
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>
Diffstat (limited to 'components/script/navigation.rs')
-rw-r--r-- | components/script/navigation.rs | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/components/script/navigation.rs b/components/script/navigation.rs index 761492b79bf..2c22e25c123 100644 --- a/components/script/navigation.rs +++ b/components/script/navigation.rs @@ -10,9 +10,9 @@ use std::cell::Cell; use base::cross_process_instant::CrossProcessInstant; use base::id::{BrowsingContextId, PipelineId, WebViewId}; -use constellation_traits::WindowSizeData; use content_security_policy::Destination; use crossbeam_channel::Sender; +use embedder_traits::ViewportDetails; use http::header; use net_traits::request::{ CredentialsMode, InsecureRequestsPolicy, RedirectMode, RequestBuilder, RequestMode, @@ -138,7 +138,7 @@ pub(crate) struct InProgressLoad { pub(crate) opener: Option<BrowsingContextId>, /// The current window size associated with this pipeline. #[no_trace] - pub(crate) window_size: WindowSizeData, + pub(crate) viewport_details: ViewportDetails, /// The activity level of the document (inactive, active or fully active). #[no_trace] pub(crate) activity: DocumentActivity, @@ -170,7 +170,7 @@ impl InProgressLoad { webview_id: WebViewId, parent_info: Option<PipelineId>, opener: Option<BrowsingContextId>, - window_size: WindowSizeData, + viewport_details: ViewportDetails, origin: MutableOrigin, load_data: LoadData, ) -> InProgressLoad { @@ -181,7 +181,7 @@ impl InProgressLoad { webview_id, parent_info, opener, - window_size, + viewport_details, activity: DocumentActivity::FullyActive, throttled: false, origin, |