mirror of
https://github.com/servo/servo.git
synced 2025-07-23 23:33:43 +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
|
@ -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,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue