layout: grid template getComputedStyle resolved value (#34885)

* Store taffy detailed info into fragment

Signed-off-by: stevennovaryo <steven.novaryo@gmail.com>

* Fix info propagation and resolved grid track query

Signed-off-by: stevennovaryo <steven.novaryo@gmail.com>

* Fix import

Signed-off-by: stevennovaryo <steven.novaryo@gmail.com>

* Fix tracklist matching logic and type optimization

Signed-off-by: stevennovaryo <steven.novaryo@gmail.com>

* Run fmt

Signed-off-by: stevennovaryo <steven.novaryo@gmail.com>

* Update wpt expectations

Signed-off-by: stevennovaryo <steven.novaryo@gmail.com>

* Optimizing info propagation and minor qol

Signed-off-by: stevennovaryo <steven.novaryo@gmail.com>

* Run fmt

Signed-off-by: stevennovaryo <steven.novaryo@gmail.com>

---------

Signed-off-by: stevennovaryo <steven.novaryo@gmail.com>
This commit is contained in:
Steven Novaryo 2025-01-09 18:49:27 +08:00 committed by GitHub
parent 040e29415b
commit 76fa456a9a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
25 changed files with 297 additions and 778 deletions

View file

@ -20,6 +20,7 @@ use crate::geom::{
AuOrAuto, LengthPercentageOrAuto, PhysicalPoint, PhysicalRect, PhysicalSides, ToLogical,
};
use crate::style_ext::ComputedValuesExt;
use crate::taffy::DetailedTaffyGridInfo;
/// Describes how a [`BoxFragment`] paints its background.
pub(crate) enum BackgroundMode {
@ -39,6 +40,11 @@ pub(crate) struct ExtraBackground {
pub rect: PhysicalRect<Au>,
}
#[derive(Clone, Debug)]
pub(crate) enum DetailedLayoutInfo {
Grid(Box<DetailedTaffyGridInfo>),
}
#[derive(Serialize)]
pub(crate) struct BoxFragment {
pub base: BaseFragment,
@ -80,6 +86,10 @@ pub(crate) struct BoxFragment {
#[serde(skip_serializing)]
pub background_mode: BackgroundMode,
/// Additional information of from layout that could be used by Javascripts and devtools.
#[serde(skip_serializing)]
pub detailed_layout_info: Option<DetailedLayoutInfo>,
}
impl BoxFragment {
@ -114,6 +124,7 @@ impl BoxFragment {
scrollable_overflow_from_children,
resolved_sticky_insets: None,
background_mode: BackgroundMode::Normal,
detailed_layout_info: None,
}
}
@ -166,6 +177,11 @@ impl BoxFragment {
self.background_mode = BackgroundMode::None;
}
pub fn with_detailed_layout_info(mut self, info: Option<DetailedLayoutInfo>) -> Self {
self.detailed_layout_info = info;
self
}
pub fn scrollable_overflow(&self) -> PhysicalRect<Au> {
let physical_padding_rect = self.padding_rect();
let content_origin = self.content_rect.origin.to_vector();