mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
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:
parent
040e29415b
commit
76fa456a9a
25 changed files with 297 additions and 778 deletions
|
@ -132,7 +132,7 @@ style_malloc_size_of = { package = "malloc_size_of", git = "https://github.com/s
|
||||||
surfman = { git = "https://github.com/servo/surfman", rev = "300789ddbda45c89e9165c31118bf1c4c07f89f6", features = ["chains"] }
|
surfman = { git = "https://github.com/servo/surfman", rev = "300789ddbda45c89e9165c31118bf1c4c07f89f6", features = ["chains"] }
|
||||||
syn = { version = "2", default-features = false, features = ["clone-impls", "derive", "parsing"] }
|
syn = { version = "2", default-features = false, features = ["clone-impls", "derive", "parsing"] }
|
||||||
synstructure = "0.13"
|
synstructure = "0.13"
|
||||||
taffy = { version = "0.7", default-features = false, features = ["std", "serde", "grid"] }
|
taffy = { version = "0.7.2", default-features = false, features = ["std", "serde", "grid", "detailed_layout_info"] }
|
||||||
thin-vec = "0.2.13"
|
thin-vec = "0.2.13"
|
||||||
tikv-jemalloc-sys = "0.6.0"
|
tikv-jemalloc-sys = "0.6.0"
|
||||||
tikv-jemallocator = "0.6.0"
|
tikv-jemallocator = "0.6.0"
|
||||||
|
|
|
@ -976,6 +976,7 @@ impl FlexContainer {
|
||||||
content_inline_size_for_table: None,
|
content_inline_size_for_table: None,
|
||||||
baselines,
|
baselines,
|
||||||
depends_on_block_constraints,
|
depends_on_block_constraints,
|
||||||
|
detailed_layout_info: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -386,6 +386,7 @@ impl BlockFormattingContext {
|
||||||
content_inline_size_for_table: None,
|
content_inline_size_for_table: None,
|
||||||
baselines: flow_layout.baselines,
|
baselines: flow_layout.baselines,
|
||||||
depends_on_block_constraints: flow_layout.depends_on_block_constraints,
|
depends_on_block_constraints: flow_layout.depends_on_block_constraints,
|
||||||
|
detailed_layout_info: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1146,6 +1147,7 @@ impl IndependentNonReplacedContents {
|
||||||
block_margins_collapsed_with_children,
|
block_margins_collapsed_with_children,
|
||||||
)
|
)
|
||||||
.with_baselines(layout.baselines)
|
.with_baselines(layout.baselines)
|
||||||
|
.with_detailed_layout_info(layout.detailed_layout_info)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Lay out a normal in flow non-replaced block that establishes an independent
|
/// Lay out a normal in flow non-replaced block that establishes an independent
|
||||||
|
@ -1455,6 +1457,7 @@ impl IndependentNonReplacedContents {
|
||||||
CollapsedBlockMargins::from_margin(&margin),
|
CollapsedBlockMargins::from_margin(&margin),
|
||||||
)
|
)
|
||||||
.with_baselines(layout.baselines)
|
.with_baselines(layout.baselines)
|
||||||
|
.with_detailed_layout_info(layout.detailed_layout_info)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,9 @@ use crate::dom::NodeExt;
|
||||||
use crate::dom_traversal::{Contents, NodeAndStyleInfo};
|
use crate::dom_traversal::{Contents, NodeAndStyleInfo};
|
||||||
use crate::flexbox::FlexContainer;
|
use crate::flexbox::FlexContainer;
|
||||||
use crate::flow::BlockFormattingContext;
|
use crate::flow::BlockFormattingContext;
|
||||||
use crate::fragment_tree::{BaseFragmentInfo, BoxFragment, Fragment, FragmentFlags};
|
use crate::fragment_tree::{
|
||||||
|
BaseFragmentInfo, BoxFragment, DetailedLayoutInfo, Fragment, FragmentFlags,
|
||||||
|
};
|
||||||
use crate::geom::LogicalSides;
|
use crate::geom::LogicalSides;
|
||||||
use crate::layout_box_base::LayoutBoxBase;
|
use crate::layout_box_base::LayoutBoxBase;
|
||||||
use crate::positioned::PositioningContext;
|
use crate::positioned::PositioningContext;
|
||||||
|
@ -84,6 +86,9 @@ pub(crate) struct IndependentLayout {
|
||||||
|
|
||||||
/// Whether or not this layout depends on the containing block size.
|
/// Whether or not this layout depends on the containing block size.
|
||||||
pub depends_on_block_constraints: bool,
|
pub depends_on_block_constraints: bool,
|
||||||
|
|
||||||
|
/// Additional information of this layout that could be used by Javascripts and devtools.
|
||||||
|
pub detailed_layout_info: Option<DetailedLayoutInfo>,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) struct IndependentLayoutResult {
|
pub(crate) struct IndependentLayoutResult {
|
||||||
|
|
|
@ -20,6 +20,7 @@ use crate::geom::{
|
||||||
AuOrAuto, LengthPercentageOrAuto, PhysicalPoint, PhysicalRect, PhysicalSides, ToLogical,
|
AuOrAuto, LengthPercentageOrAuto, PhysicalPoint, PhysicalRect, PhysicalSides, ToLogical,
|
||||||
};
|
};
|
||||||
use crate::style_ext::ComputedValuesExt;
|
use crate::style_ext::ComputedValuesExt;
|
||||||
|
use crate::taffy::DetailedTaffyGridInfo;
|
||||||
|
|
||||||
/// Describes how a [`BoxFragment`] paints its background.
|
/// Describes how a [`BoxFragment`] paints its background.
|
||||||
pub(crate) enum BackgroundMode {
|
pub(crate) enum BackgroundMode {
|
||||||
|
@ -39,6 +40,11 @@ pub(crate) struct ExtraBackground {
|
||||||
pub rect: PhysicalRect<Au>,
|
pub rect: PhysicalRect<Au>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Debug)]
|
||||||
|
pub(crate) enum DetailedLayoutInfo {
|
||||||
|
Grid(Box<DetailedTaffyGridInfo>),
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Serialize)]
|
#[derive(Serialize)]
|
||||||
pub(crate) struct BoxFragment {
|
pub(crate) struct BoxFragment {
|
||||||
pub base: BaseFragment,
|
pub base: BaseFragment,
|
||||||
|
@ -80,6 +86,10 @@ pub(crate) struct BoxFragment {
|
||||||
|
|
||||||
#[serde(skip_serializing)]
|
#[serde(skip_serializing)]
|
||||||
pub background_mode: BackgroundMode,
|
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 {
|
impl BoxFragment {
|
||||||
|
@ -114,6 +124,7 @@ impl BoxFragment {
|
||||||
scrollable_overflow_from_children,
|
scrollable_overflow_from_children,
|
||||||
resolved_sticky_insets: None,
|
resolved_sticky_insets: None,
|
||||||
background_mode: BackgroundMode::Normal,
|
background_mode: BackgroundMode::Normal,
|
||||||
|
detailed_layout_info: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,6 +177,11 @@ impl BoxFragment {
|
||||||
self.background_mode = BackgroundMode::None;
|
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> {
|
pub fn scrollable_overflow(&self) -> PhysicalRect<Au> {
|
||||||
let physical_padding_rect = self.padding_rect();
|
let physical_padding_rect = self.padding_rect();
|
||||||
let content_origin = self.content_rect.origin.to_vector();
|
let content_origin = self.content_rect.origin.to_vector();
|
||||||
|
|
|
@ -23,7 +23,8 @@ use crate::formatting_contexts::{
|
||||||
IndependentFormattingContext, IndependentFormattingContextContents,
|
IndependentFormattingContext, IndependentFormattingContextContents,
|
||||||
};
|
};
|
||||||
use crate::fragment_tree::{
|
use crate::fragment_tree::{
|
||||||
BoxFragment, CollapsedBlockMargins, Fragment, FragmentFlags, HoistedSharedFragment,
|
BoxFragment, CollapsedBlockMargins, DetailedLayoutInfo, Fragment, FragmentFlags,
|
||||||
|
HoistedSharedFragment,
|
||||||
};
|
};
|
||||||
use crate::geom::{
|
use crate::geom::{
|
||||||
AuOrAuto, LengthPercentageOrAuto, LogicalRect, LogicalSides, LogicalVec2, PhysicalPoint,
|
AuOrAuto, LengthPercentageOrAuto, LogicalRect, LogicalSides, LogicalVec2, PhysicalPoint,
|
||||||
|
@ -561,6 +562,7 @@ impl HoistedAbsolutelyPositionedBox {
|
||||||
let mut new_fragment = {
|
let mut new_fragment = {
|
||||||
let content_size: LogicalVec2<Au>;
|
let content_size: LogicalVec2<Au>;
|
||||||
let fragments;
|
let fragments;
|
||||||
|
let mut detailed_layout_info: Option<DetailedLayoutInfo> = None;
|
||||||
match &context.contents {
|
match &context.contents {
|
||||||
IndependentFormattingContextContents::Replaced(replaced) => {
|
IndependentFormattingContextContents::Replaced(replaced) => {
|
||||||
// https://drafts.csswg.org/css2/visudet.html#abs-replaced-width
|
// https://drafts.csswg.org/css2/visudet.html#abs-replaced-width
|
||||||
|
@ -629,6 +631,7 @@ impl HoistedAbsolutelyPositionedBox {
|
||||||
block: block_size,
|
block: block_size,
|
||||||
};
|
};
|
||||||
fragments = independent_layout.fragments;
|
fragments = independent_layout.fragments;
|
||||||
|
detailed_layout_info = independent_layout.detailed_layout_info;
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -676,6 +679,7 @@ impl HoistedAbsolutelyPositionedBox {
|
||||||
// elements are not inflow.
|
// elements are not inflow.
|
||||||
CollapsedBlockMargins::zero(),
|
CollapsedBlockMargins::zero(),
|
||||||
)
|
)
|
||||||
|
.with_detailed_layout_info(detailed_layout_info)
|
||||||
};
|
};
|
||||||
positioning_context.layout_collected_children(layout_context, &mut new_fragment);
|
positioning_context.layout_collected_children(layout_context, &mut new_fragment);
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ use std::sync::Arc;
|
||||||
use app_units::Au;
|
use app_units::Au;
|
||||||
use euclid::default::{Point2D, Rect};
|
use euclid::default::{Point2D, Rect};
|
||||||
use euclid::{SideOffsets2D, Size2D, Vector2D};
|
use euclid::{SideOffsets2D, Size2D, Vector2D};
|
||||||
|
use itertools::Itertools;
|
||||||
use log::warn;
|
use log::warn;
|
||||||
use script_layout_interface::wrapper_traits::{
|
use script_layout_interface::wrapper_traits::{
|
||||||
LayoutNode, ThreadSafeLayoutElement, ThreadSafeLayoutNode,
|
LayoutNode, ThreadSafeLayoutElement, ThreadSafeLayoutNode,
|
||||||
|
@ -33,11 +34,16 @@ use style::stylist::RuleInclusion;
|
||||||
use style::traversal::resolve_style;
|
use style::traversal::resolve_style;
|
||||||
use style::values::computed::Float;
|
use style::values::computed::Float;
|
||||||
use style::values::generics::font::LineHeight;
|
use style::values::generics::font::LineHeight;
|
||||||
|
use style::values::specified::box_::DisplayInside;
|
||||||
|
use style::values::specified::GenericGridTemplateComponent;
|
||||||
use style_traits::{ParsingMode, ToCss};
|
use style_traits::{ParsingMode, ToCss};
|
||||||
|
|
||||||
use crate::flow::inline::construct::{TextTransformation, WhitespaceCollapse};
|
use crate::flow::inline::construct::{TextTransformation, WhitespaceCollapse};
|
||||||
use crate::fragment_tree::{BoxFragment, Fragment, FragmentFlags, FragmentTree, Tag};
|
use crate::fragment_tree::{
|
||||||
|
BoxFragment, DetailedLayoutInfo, Fragment, FragmentFlags, FragmentTree, Tag,
|
||||||
|
};
|
||||||
use crate::geom::{PhysicalRect, PhysicalVec};
|
use crate::geom::{PhysicalRect, PhysicalVec};
|
||||||
|
use crate::taffy::DetailedTaffyGridInfo;
|
||||||
|
|
||||||
pub fn process_content_box_request(
|
pub fn process_content_box_request(
|
||||||
requested_node: OpaqueNode,
|
requested_node: OpaqueNode,
|
||||||
|
@ -184,7 +190,7 @@ pub fn process_resolved_style_request<'dom>(
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
|
||||||
let (content_rect, margins, padding) = match fragment {
|
let (content_rect, margins, padding, detailed_layout_info) = match fragment {
|
||||||
Fragment::Box(ref box_fragment) | Fragment::Float(ref box_fragment) => {
|
Fragment::Box(ref box_fragment) | Fragment::Float(ref box_fragment) => {
|
||||||
if style.get_box().position != Position::Static {
|
if style.get_box().position != Position::Static {
|
||||||
let resolved_insets = || {
|
let resolved_insets = || {
|
||||||
|
@ -207,15 +213,34 @@ pub fn process_resolved_style_request<'dom>(
|
||||||
let content_rect = box_fragment.content_rect;
|
let content_rect = box_fragment.content_rect;
|
||||||
let margins = box_fragment.margin;
|
let margins = box_fragment.margin;
|
||||||
let padding = box_fragment.padding;
|
let padding = box_fragment.padding;
|
||||||
(content_rect, margins, padding)
|
let detailed_layout_info = &box_fragment.detailed_layout_info;
|
||||||
|
(content_rect, margins, padding, detailed_layout_info)
|
||||||
},
|
},
|
||||||
Fragment::Positioning(positioning_fragment) => {
|
Fragment::Positioning(positioning_fragment) => {
|
||||||
let content_rect = positioning_fragment.rect;
|
let content_rect = positioning_fragment.rect;
|
||||||
(content_rect, SideOffsets2D::zero(), SideOffsets2D::zero())
|
(
|
||||||
|
content_rect,
|
||||||
|
SideOffsets2D::zero(),
|
||||||
|
SideOffsets2D::zero(),
|
||||||
|
&None,
|
||||||
|
)
|
||||||
},
|
},
|
||||||
_ => return None,
|
_ => return None,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// https://drafts.csswg.org/css-grid/#resolved-track-list
|
||||||
|
// > The grid-template-rows and grid-template-columns properties are
|
||||||
|
// > resolved value special case properties.
|
||||||
|
//
|
||||||
|
// > When an element generates a grid container box...
|
||||||
|
if display.inside() == DisplayInside::Grid {
|
||||||
|
if let Some(DetailedLayoutInfo::Grid(info)) = detailed_layout_info {
|
||||||
|
if let Some(value) = resolve_grid_template(info, style, longhand_id) {
|
||||||
|
return Some(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// https://drafts.csswg.org/cssom/#resolved-value-special-case-property-like-height
|
// https://drafts.csswg.org/cssom/#resolved-value-special-case-property-like-height
|
||||||
// > If the property applies to the element or pseudo-element and the resolved value of the
|
// > If the property applies to the element or pseudo-element and the resolved value of the
|
||||||
// > display property is not none or contents, then the resolved value is the used value.
|
// > display property is not none or contents, then the resolved value is the used value.
|
||||||
|
@ -259,6 +284,63 @@ fn resolved_size_should_be_used_value(fragment: &Fragment) -> bool {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn resolve_grid_template(
|
||||||
|
grid_info: &DetailedTaffyGridInfo,
|
||||||
|
style: &ComputedValues,
|
||||||
|
longhand_id: LonghandId,
|
||||||
|
) -> Option<String> {
|
||||||
|
// https://drafts.csswg.org/css-grid/#resolved-track-list-standalone
|
||||||
|
fn serialize_standalone_non_subgrid_track_list(track_sizes: &[Au]) -> Option<String> {
|
||||||
|
match track_sizes.is_empty() {
|
||||||
|
// Standalone non subgrid grids with empty track lists should compute to `none`.
|
||||||
|
// As of current standard, this behaviour should only invoked by `none` computed value,
|
||||||
|
// therefore we can fallback into computed value resolving.
|
||||||
|
true => None,
|
||||||
|
// <https://drafts.csswg.org/css-grid/#resolved-track-list-standalone>
|
||||||
|
// > - Every track listed individually, whether implicitly or explicitly created,
|
||||||
|
// without using the repeat() notation.
|
||||||
|
// > - Every track size given as a length in pixels, regardless of sizing function.
|
||||||
|
// > - Adjacent line names collapsed into a single bracketed set.
|
||||||
|
// TODO: implement line names
|
||||||
|
false => Some(
|
||||||
|
track_sizes
|
||||||
|
.iter()
|
||||||
|
.map(|size| size.to_css_string())
|
||||||
|
.join(" "),
|
||||||
|
),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let (track_info, computed_value) = match longhand_id {
|
||||||
|
LonghandId::GridTemplateRows => (&grid_info.rows, &style.get_position().grid_template_rows),
|
||||||
|
LonghandId::GridTemplateColumns => (
|
||||||
|
&grid_info.columns,
|
||||||
|
&style.get_position().grid_template_columns,
|
||||||
|
),
|
||||||
|
_ => return None,
|
||||||
|
};
|
||||||
|
|
||||||
|
match computed_value {
|
||||||
|
// <https://drafts.csswg.org/css-grid/#resolved-track-list-standalone>
|
||||||
|
// > When an element generates a grid container box, the resolved value of its grid-template-rows or
|
||||||
|
// > grid-template-columns property in a standalone axis is the used value, serialized with:
|
||||||
|
GenericGridTemplateComponent::None |
|
||||||
|
GenericGridTemplateComponent::TrackList(_) |
|
||||||
|
GenericGridTemplateComponent::Masonry => {
|
||||||
|
serialize_standalone_non_subgrid_track_list(&track_info.sizes)
|
||||||
|
},
|
||||||
|
|
||||||
|
// <https://drafts.csswg.org/css-grid/#resolved-track-list-subgrid>
|
||||||
|
// > When an element generates a grid container box that is a subgrid, the resolved value of the
|
||||||
|
// > grid-template-rows and grid-template-columns properties represents the used number of columns,
|
||||||
|
// > serialized as the subgrid keyword followed by a list representing each of its lines as a
|
||||||
|
// > line name set of all the line’s names explicitly defined on the subgrid (not including those
|
||||||
|
// > adopted from the parent grid), without using the repeat() notation.
|
||||||
|
// TODO: implement subgrid
|
||||||
|
GenericGridTemplateComponent::Subgrid(_) => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn process_resolved_style_request_for_unstyled_node<'dom>(
|
pub fn process_resolved_style_request_for_unstyled_node<'dom>(
|
||||||
context: &SharedStyleContext,
|
context: &SharedStyleContext,
|
||||||
node: impl LayoutNode<'dom>,
|
node: impl LayoutNode<'dom>,
|
||||||
|
|
|
@ -1683,6 +1683,7 @@ impl<'a> TableLayout<'a> {
|
||||||
content_inline_size_for_table: None,
|
content_inline_size_for_table: None,
|
||||||
baselines: Baselines::default(),
|
baselines: Baselines::default(),
|
||||||
depends_on_block_constraints,
|
depends_on_block_constraints,
|
||||||
|
detailed_layout_info: None,
|
||||||
};
|
};
|
||||||
|
|
||||||
table_layout
|
table_layout
|
||||||
|
|
|
@ -12,14 +12,16 @@ use style::Zero;
|
||||||
use taffy::style_helpers::{TaffyMaxContent, TaffyMinContent};
|
use taffy::style_helpers::{TaffyMaxContent, TaffyMinContent};
|
||||||
use taffy::{AvailableSpace, MaybeMath, RequestedAxis, RunMode};
|
use taffy::{AvailableSpace, MaybeMath, RequestedAxis, RunMode};
|
||||||
|
|
||||||
use super::{TaffyContainer, TaffyItemBox, TaffyItemBoxInner, TaffyStyloStyle};
|
use super::{
|
||||||
|
DetailedTaffyGridInfo, TaffyContainer, TaffyItemBox, TaffyItemBoxInner, TaffyStyloStyle,
|
||||||
|
};
|
||||||
use crate::cell::ArcRefCell;
|
use crate::cell::ArcRefCell;
|
||||||
use crate::context::LayoutContext;
|
use crate::context::LayoutContext;
|
||||||
use crate::formatting_contexts::{
|
use crate::formatting_contexts::{
|
||||||
Baselines, IndependentFormattingContext, IndependentFormattingContextContents,
|
Baselines, IndependentFormattingContext, IndependentFormattingContextContents,
|
||||||
IndependentLayout,
|
IndependentLayout,
|
||||||
};
|
};
|
||||||
use crate::fragment_tree::{BoxFragment, CollapsedBlockMargins, Fragment};
|
use crate::fragment_tree::{BoxFragment, CollapsedBlockMargins, DetailedLayoutInfo, Fragment};
|
||||||
use crate::geom::{
|
use crate::geom::{
|
||||||
LogicalSides, LogicalVec2, PhysicalPoint, PhysicalRect, PhysicalSides, PhysicalSize, Size,
|
LogicalSides, LogicalVec2, PhysicalPoint, PhysicalRect, PhysicalSides, PhysicalSize, Size,
|
||||||
SizeConstraint, Sizes,
|
SizeConstraint, Sizes,
|
||||||
|
@ -64,6 +66,10 @@ struct TaffyContainerContext<'a> {
|
||||||
positioning_context: &'a mut PositioningContext,
|
positioning_context: &'a mut PositioningContext,
|
||||||
content_box_size_override: &'a ContainingBlock<'a>,
|
content_box_size_override: &'a ContainingBlock<'a>,
|
||||||
style: &'a ComputedValues,
|
style: &'a ComputedValues,
|
||||||
|
detailed_layout_info: Option<DetailedLayoutInfo>,
|
||||||
|
|
||||||
|
/// Temporary location for children detailed info, which will be moved into child fragments
|
||||||
|
child_detailed_layout_infos: Vec<Option<DetailedLayoutInfo>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ChildIter(std::ops::Range<usize>);
|
struct ChildIter(std::ops::Range<usize>);
|
||||||
|
@ -264,6 +270,8 @@ impl taffy::LayoutPartialTree for TaffyContainerContext<'_> {
|
||||||
};
|
};
|
||||||
|
|
||||||
child.child_fragments = layout.fragments;
|
child.child_fragments = layout.fragments;
|
||||||
|
self.child_detailed_layout_infos[usize::from(node_id)] =
|
||||||
|
layout.detailed_layout_info;
|
||||||
|
|
||||||
let block_size = layout.content_block_size.to_f32_px();
|
let block_size = layout.content_block_size.to_f32_px();
|
||||||
|
|
||||||
|
@ -314,6 +322,16 @@ impl taffy::LayoutGridContainer for TaffyContainerContext<'_> {
|
||||||
let child = (*self.source_child_nodes[id]).borrow();
|
let child = (*self.source_child_nodes[id]).borrow();
|
||||||
TaffyStyloStyle(AtomicRef::map(child, |c| &*c.style))
|
TaffyStyloStyle(AtomicRef::map(child, |c| &*c.style))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn set_detailed_grid_info(
|
||||||
|
&mut self,
|
||||||
|
_node_id: taffy::NodeId,
|
||||||
|
detailed_layout_info: taffy::DetailedGridInfo,
|
||||||
|
) {
|
||||||
|
self.detailed_layout_info = Some(DetailedLayoutInfo::Grid(Box::new(
|
||||||
|
DetailedTaffyGridInfo::from_detailed_grid_layout(detailed_layout_info),
|
||||||
|
)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ComputeInlineContentSizes for TaffyContainer {
|
impl ComputeInlineContentSizes for TaffyContainer {
|
||||||
|
@ -355,6 +373,8 @@ impl ComputeInlineContentSizes for TaffyContainer {
|
||||||
content_box_size_override: containing_block,
|
content_box_size_override: containing_block,
|
||||||
style,
|
style,
|
||||||
source_child_nodes: &self.children,
|
source_child_nodes: &self.children,
|
||||||
|
detailed_layout_info: None,
|
||||||
|
child_detailed_layout_infos: vec![None; self.children.len()],
|
||||||
};
|
};
|
||||||
|
|
||||||
let (max_content_output, min_content_output) = match style.clone_display().inside() {
|
let (max_content_output, min_content_output) = match style.clone_display().inside() {
|
||||||
|
@ -408,6 +428,8 @@ impl TaffyContainer {
|
||||||
content_box_size_override,
|
content_box_size_override,
|
||||||
style: content_box_size_override.style,
|
style: content_box_size_override.style,
|
||||||
source_child_nodes: &self.children,
|
source_child_nodes: &self.children,
|
||||||
|
detailed_layout_info: None,
|
||||||
|
child_detailed_layout_infos: vec![None; self.children.len()],
|
||||||
};
|
};
|
||||||
|
|
||||||
fn auto_or_to_option<T>(input: GenericLengthPercentageOrAuto<T>) -> Option<T> {
|
fn auto_or_to_option<T>(input: GenericLengthPercentageOrAuto<T>) -> Option<T> {
|
||||||
|
@ -456,11 +478,13 @@ impl TaffyContainer {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Convert `taffy::Layout` into Servo `Fragment`s
|
// Convert `taffy::Layout` into Servo `Fragment`s
|
||||||
|
// with container_ctx.child_detailed_layout_infos will also moved to the corresponding `Fragment`s
|
||||||
let fragments: Vec<Fragment> = self
|
let fragments: Vec<Fragment> = self
|
||||||
.children
|
.children
|
||||||
.iter()
|
.iter()
|
||||||
.map(|child| (**child).borrow_mut())
|
.map(|child| (**child).borrow_mut())
|
||||||
.map(|mut child| {
|
.enumerate()
|
||||||
|
.map(|(child_id, mut child)| {
|
||||||
fn rect_to_logical_sides<T>(rect: taffy::Rect<T>) -> LogicalSides<T> {
|
fn rect_to_logical_sides<T>(rect: taffy::Rect<T>) -> LogicalSides<T> {
|
||||||
LogicalSides {
|
LogicalSides {
|
||||||
inline_start: rect.left,
|
inline_start: rect.left,
|
||||||
|
@ -522,6 +546,9 @@ impl TaffyContainer {
|
||||||
.map(Au::from_f32_px),
|
.map(Au::from_f32_px),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let child_detailed_layout_info: Option<DetailedLayoutInfo> =
|
||||||
|
std::mem::take(&mut container_ctx.child_detailed_layout_infos[child_id]);
|
||||||
|
|
||||||
match &mut child.taffy_level_box {
|
match &mut child.taffy_level_box {
|
||||||
TaffyItemBoxInner::InFlowBox(independent_box) => {
|
TaffyItemBoxInner::InFlowBox(independent_box) => {
|
||||||
let fragment = Fragment::Box(
|
let fragment = Fragment::Box(
|
||||||
|
@ -539,7 +566,8 @@ impl TaffyContainer {
|
||||||
.with_baselines(Baselines {
|
.with_baselines(Baselines {
|
||||||
first: output.first_baselines.y.map(Au::from_f32_px),
|
first: output.first_baselines.y.map(Au::from_f32_px),
|
||||||
last: None,
|
last: None,
|
||||||
}),
|
})
|
||||||
|
.with_detailed_layout_info(child_detailed_layout_info),
|
||||||
);
|
);
|
||||||
|
|
||||||
child
|
child
|
||||||
|
@ -604,6 +632,8 @@ impl TaffyContainer {
|
||||||
// "true" is a safe default as it will prevent Servo from performing optimizations based
|
// "true" is a safe default as it will prevent Servo from performing optimizations based
|
||||||
// on the assumption that the node's size does not depend on block constraints.
|
// on the assumption that the node's size does not depend on block constraints.
|
||||||
depends_on_block_constraints: true,
|
depends_on_block_constraints: true,
|
||||||
|
|
||||||
|
detailed_layout_info: container_ctx.detailed_layout_info,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ mod layout;
|
||||||
mod stylo_taffy;
|
mod stylo_taffy;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
|
use app_units::Au;
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
use servo_arc::Arc;
|
use servo_arc::Arc;
|
||||||
use style::properties::ComputedValues;
|
use style::properties::ComputedValues;
|
||||||
|
@ -117,3 +118,38 @@ impl TaffyItemBox {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Details from Taffy grid layout that will be stored
|
||||||
|
#[derive(Clone, Debug)]
|
||||||
|
pub(crate) struct DetailedTaffyGridInfo {
|
||||||
|
pub rows: DetailedTaffyGridTrackInfo,
|
||||||
|
pub columns: DetailedTaffyGridTrackInfo,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl DetailedTaffyGridInfo {
|
||||||
|
fn from_detailed_grid_layout(grid_info: taffy::DetailedGridInfo) -> Self {
|
||||||
|
Self {
|
||||||
|
rows: DetailedTaffyGridTrackInfo {
|
||||||
|
sizes: grid_info
|
||||||
|
.rows
|
||||||
|
.sizes
|
||||||
|
.iter()
|
||||||
|
.map(|size| Au::from_f32_px(*size))
|
||||||
|
.collect(),
|
||||||
|
},
|
||||||
|
columns: DetailedTaffyGridTrackInfo {
|
||||||
|
sizes: grid_info
|
||||||
|
.columns
|
||||||
|
.sizes
|
||||||
|
.iter()
|
||||||
|
.map(|size| Au::from_f32_px(*size))
|
||||||
|
.collect(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Debug)]
|
||||||
|
pub(crate) struct DetailedTaffyGridTrackInfo {
|
||||||
|
pub sizes: Box<[Au]>,
|
||||||
|
}
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[grid-auto-repeat-positioned-container-001.html]
|
|
||||||
expected: FAIL
|
|
|
@ -1,48 +1,12 @@
|
||||||
[grid-minimum-contribution-with-percentages.html]
|
[grid-minimum-contribution-with-percentages.html]
|
||||||
[auto - columns]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto - rows]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min - columns]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min - rows]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max - columns]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max - rows]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[size - columns]
|
[size - columns]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[size - rows]
|
[size - rows]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[min max - columns]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min max - rows]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min size - columns]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min size - rows]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[max size - columns]
|
[max size - columns]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[max size - rows]
|
[max size - rows]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[min max size - columns]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min max size - rows]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -2,117 +2,60 @@
|
||||||
['emptyGrid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
|
['emptyGrid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr;]
|
['emptyGrid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: 10fr; and grid-template-rows: 10fr;]
|
['emptyGrid' with: grid-template-columns: 10fr; and grid-template-rows: 10fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 10fr; and grid-template-rows: 10fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: 0.5fr; and grid-template-rows: 0.5fr;]
|
['emptyGrid' with: grid-template-columns: 0.5fr; and grid-template-rows: 0.5fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 0.5fr; and grid-template-rows: 0.5fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: .5fr; and grid-template-rows: .5fr;]
|
['emptyGrid' with: grid-template-columns: .5fr; and grid-template-rows: .5fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: .5fr; and grid-template-rows: .5fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: minmax(100px, 1fr); and grid-template-rows: minmax(100px, 1fr);]
|
['emptyGrid' with: grid-template-columns: minmax(100px, 1fr); and grid-template-rows: minmax(100px, 1fr);]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(100px, 1fr); and grid-template-rows: minmax(100px, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: minmax(1fr, 1fr); and grid-template-rows: minmax(1fr, 1fr);]
|
['emptyGrid' with: grid-template-columns: minmax(1fr, 1fr); and grid-template-rows: minmax(1fr, 1fr);]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(1fr, 1fr); and grid-template-rows: minmax(1fr, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr;]
|
['emptyGrid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: 0.25fr 0.75fr; and grid-template-rows: 0.25fr 0.75fr;]
|
['emptyGrid' with: grid-template-columns: 0.25fr 0.75fr; and grid-template-rows: 0.25fr 0.75fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 0.25fr 0.75fr; and grid-template-rows: 0.25fr 0.75fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: 1fr 2fr 1fr; and grid-template-rows: 1fr 2fr 1fr;]
|
['emptyGrid' with: grid-template-columns: 1fr 2fr 1fr; and grid-template-rows: 1fr 2fr 1fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 1fr 2fr 1fr; and grid-template-rows: 1fr 2fr 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: auto 1fr 4fr 3fr 2fr; and grid-template-rows: auto 1fr 4fr 3fr 2fr;]
|
['emptyGrid' with: grid-template-columns: auto 1fr 4fr 3fr 2fr; and grid-template-rows: auto 1fr 4fr 3fr 2fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: auto 1fr 4fr 3fr 2fr; and grid-template-rows: auto 1fr 4fr 3fr 2fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: 1fr 4fr 100px 3fr 2fr; and grid-template-rows: 1fr 4fr 100px 3fr 2fr;]
|
['emptyGrid' with: grid-template-columns: 1fr 4fr 100px 3fr 2fr; and grid-template-rows: 1fr 4fr 100px 3fr 2fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 1fr 4fr 100px 3fr 2fr; and grid-template-rows: 1fr 4fr 100px 3fr 2fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: auto 1fr; and grid-template-rows: auto 1fr;]
|
['emptyGrid' with: grid-template-columns: auto 1fr; and grid-template-rows: auto 1fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: auto 1fr; and grid-template-rows: auto 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: max-content 1fr; and grid-template-rows: max-content 1fr;]
|
['emptyGrid' with: grid-template-columns: max-content 1fr; and grid-template-rows: max-content 1fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: max-content 1fr; and grid-template-rows: max-content 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: min-content 1fr; and grid-template-rows: min-content 1fr;]
|
['emptyGrid' with: grid-template-columns: min-content 1fr; and grid-template-rows: min-content 1fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: min-content 1fr; and grid-template-rows: min-content 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto;]
|
['emptyGrid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: 300px 1fr; and grid-template-rows: 200px 1fr;]
|
['emptyGrid' with: grid-template-columns: 300px 1fr; and grid-template-rows: 200px 1fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 300px 1fr; and grid-template-rows: 200px 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: 800px 1fr; and grid-template-rows: 600px 1fr;]
|
['emptyGrid' with: grid-template-columns: 800px 1fr; and grid-template-rows: 600px 1fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 800px 1fr; and grid-template-rows: 600px 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: 1000px 1fr; and grid-template-rows: 700px 1fr;]
|
['emptyGrid' with: grid-template-columns: 1000px 1fr; and grid-template-rows: 700px 1fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 1000px 1fr; and grid-template-rows: 700px 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: calc(50px + 50%) 1fr; and grid-template-rows: calc(50px + 50%) 1fr;]
|
['emptyGrid' with: grid-template-columns: calc(50px + 50%) 1fr; and grid-template-rows: calc(50px + 50%) 1fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -122,15 +65,9 @@
|
||||||
['emptyGrid' with: grid-template-columns: minmax(100px, 300px) 1fr; and grid-template-rows: minmax(100px, 200px) 1fr;]
|
['emptyGrid' with: grid-template-columns: minmax(100px, 300px) 1fr; and grid-template-rows: minmax(100px, 200px) 1fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(100px, 300px) 1fr; and grid-template-rows: minmax(100px, 200px) 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: repeat(4, 1fr); and grid-template-rows: repeat(4, 1fr);]
|
['emptyGrid' with: grid-template-columns: repeat(4, 1fr); and grid-template-rows: repeat(4, 1fr);]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: repeat(4, 1fr); and grid-template-rows: repeat(4, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: [a\] repeat(4, [b\] 1fr [c\]) [d\]; and grid-template-rows: [z\] repeat(4, [y\] 1fr) [x\];]
|
['emptyGrid' with: grid-template-columns: [a\] repeat(4, [b\] 1fr [c\]) [d\]; and grid-template-rows: [z\] repeat(4, [y\] 1fr) [x\];]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -11,9 +11,6 @@
|
||||||
['emptyGrid' with: grid-template-columns: 25%; and grid-template-rows: 50%;]
|
['emptyGrid' with: grid-template-columns: 25%; and grid-template-rows: 50%;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 25%; and grid-template-rows: 50%;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: calc(200px + 10%); and grid-template-rows: calc(25% + 50px);]
|
['emptyGrid' with: grid-template-columns: calc(200px + 10%); and grid-template-rows: calc(25% + 50px);]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -23,27 +20,15 @@
|
||||||
['emptyGrid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
|
['emptyGrid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: max-content; and grid-template-rows: max-content;]
|
['emptyGrid' with: grid-template-columns: max-content; and grid-template-rows: max-content;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: max-content; and grid-template-rows: max-content;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: min-content; and grid-template-rows: min-content;]
|
['emptyGrid' with: grid-template-columns: min-content; and grid-template-rows: min-content;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: min-content; and grid-template-rows: min-content;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: minmax(200px, 400px); and grid-template-rows: minmax(50px, 100px);]
|
['emptyGrid' with: grid-template-columns: minmax(200px, 400px); and grid-template-rows: minmax(50px, 100px);]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(200px, 400px); and grid-template-rows: minmax(50px, 100px);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: minmax(calc(10% + 200px), calc(800px - 20%)); and grid-template-rows: minmax(calc(20% + 50px), calc(600px - 10%));]
|
['emptyGrid' with: grid-template-columns: minmax(calc(10% + 200px), calc(800px - 20%)); and grid-template-rows: minmax(calc(20% + 50px), calc(600px - 10%));]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -53,33 +38,18 @@
|
||||||
['emptyGrid' with: grid-template-columns: 40em 100px 15%; and grid-template-rows: 50px 20em 10%;]
|
['emptyGrid' with: grid-template-columns: 40em 100px 15%; and grid-template-rows: 50px 20em 10%;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 40em 100px 15%; and grid-template-rows: 50px 20em 10%;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: 200px 1fr; and grid-template-rows: 1fr 100px;]
|
['emptyGrid' with: grid-template-columns: 200px 1fr; and grid-template-rows: 1fr 100px;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 200px 1fr; and grid-template-rows: 1fr 100px;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: auto 1fr; and grid-template-rows: auto 1fr;]
|
['emptyGrid' with: grid-template-columns: auto 1fr; and grid-template-rows: auto 1fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: auto 1fr; and grid-template-rows: auto 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 2fr 1fr;]
|
['emptyGrid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 2fr 1fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 2fr 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: minmax(25px, 75px) 750px; and grid-template-rows: minmax(50px, 150px) 500px;]
|
['emptyGrid' with: grid-template-columns: minmax(25px, 75px) 750px; and grid-template-rows: minmax(50px, 150px) 500px;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(25px, 75px) 750px; and grid-template-rows: minmax(50px, 150px) 500px;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: min-content 1fr calc(20px + 10%) minmax(30em, 50em); and grid-template-rows: min-content 1fr calc(10% + 40px) minmax(3em, 5em);]
|
['emptyGrid' with: grid-template-columns: min-content 1fr calc(20px + 10%) minmax(30em, 50em); and grid-template-rows: min-content 1fr calc(10% + 40px) minmax(3em, 5em);]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -20,21 +20,12 @@
|
||||||
['emptyGrid' with: grid-template-columns: repeat(5, 10%); and grid-template-rows: repeat(5, 10%);]
|
['emptyGrid' with: grid-template-columns: repeat(5, 10%); and grid-template-rows: repeat(5, 10%);]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: repeat(5, 10%); and grid-template-rows: repeat(5, 10%);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: max-content repeat(2, 25%) 1fr; and grid-template-rows: 100px repeat(2, 25%) 1fr;]
|
['emptyGrid' with: grid-template-columns: max-content repeat(2, 25%) 1fr; and grid-template-rows: 100px repeat(2, 25%) 1fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: max-content repeat(2, 25%) 1fr; and grid-template-rows: max-content repeat(2, 25%) 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: repeat(2, min-content 50px); and grid-template-rows: repeat(2, min-content 50px);]
|
['emptyGrid' with: grid-template-columns: repeat(2, min-content 50px); and grid-template-rows: repeat(2, min-content 50px);]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: repeat(2, min-content 50px); and grid-template-rows: repeat(2, min-content 50px);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['emptyGrid' with: grid-template-columns: repeat(2, [a\] minmax(50px, 100px) [b\] 25em [c\]); and grid-template-rows: repeat(2, [a\] minmax(50px, 100px) [b\] 25em [c\]);]
|
['emptyGrid' with: grid-template-columns: repeat(2, [a\] minmax(50px, 100px) [b\] 25em [c\]); and grid-template-rows: repeat(2, [a\] minmax(50px, 100px) [b\] 25em [c\]);]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -91,3 +82,6 @@
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 100px repeat(2, [a\]); and grid-template-rows: 100px repeat(2, [a\]);]
|
['grid' with: grid-template-columns: 100px repeat(2, [a\]); and grid-template-rows: 100px repeat(2, [a\]);]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: [a\] repeat(2, [b\] 100px); and grid-template-rows: [a\] repeat(2, [b\] 100px);]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -112,3 +112,105 @@
|
||||||
|
|
||||||
[Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px 70px;]
|
[Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px 70px;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: ; and grid-template-rows: ;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: 60px; and grid-template-rows: ;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: 100px 60px; and grid-template-rows: ;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: ; and grid-template-rows: 50px;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: ; and grid-template-rows: 50px 30px;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: 60px; and grid-template-rows: 50px;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: 60px; and grid-template-rows: 50px 30px;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: ;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: ;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: ;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px 50px;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px 50px;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: 60px;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: 60px 50px;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: ;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: ;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: ;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: 50px;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: 50px 30px;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: 50px;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: 50px 30px;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: ;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: ;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: ;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px 70px;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px 70px;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px 70px;]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -11,57 +11,15 @@
|
||||||
[grid-template-columns.<track-size>.auto]
|
[grid-template-columns.<track-size>.auto]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[grid-template-columns.<track-size>.<track-breadth>.<percentage>]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[grid-template-columns.<track-size>.<track-breadth>.<flex>]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[grid-template-columns.<track-size>.<track-breadth>.min-content]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[grid-template-columns.<track-size>.<track-breadth>.max-content]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[grid-template-columns.<track-size>.<track-breadth>.minmax()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[grid-template-columns.reset]
|
[grid-template-columns.reset]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[grid-template-rows.initial]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[grid-template-rows.none]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[grid-template-rows.<line-names>]
|
[grid-template-rows.<line-names>]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[grid-template-rows.<track-size>.auto]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[grid-template-rows.<track-size>.<track-breadth>.<length>]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[grid-template-rows.<track-size>.<track-breadth>.<percentage>]
|
[grid-template-rows.<track-size>.<track-breadth>.<percentage>]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[grid-template-rows.<track-size>.<track-breadth>.<flex>]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[grid-template-rows.<track-size>.<track-breadth>.min-content]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[grid-template-rows.<track-size>.<track-breadth>.max-content]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[grid-template-rows.<track-size>.<track-breadth>.minmax()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[grid-template-rows.reset]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[grid-template.initial]
|
[grid-template.initial]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,6 @@
|
||||||
[Check that min-width is honored when sizing auto columns.]
|
[Check that min-width is honored when sizing auto columns.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Check that min-width is honored when sizing auto columns and spanning grid items.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Check the interactions between width and min-width and auto tracks.]
|
[Check the interactions between width and min-width and auto tracks.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,90 +1,6 @@
|
||||||
[grid-flex-track-intrinsic-sizes-001.html]
|
[grid-flex-track-intrinsic-sizes-001.html]
|
||||||
['grid' with: grid-template-columns: 0fr; and grid-template-rows: 0fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(0, .5fr); and grid-template-rows: minmax(0, .5fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(0, 1fr); and grid-template-rows: minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(0, 2fr); and grid-template-rows: minmax(0, 2fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(75px, 1fr); and grid-template-rows: minmax(75px, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 0fr 0fr; and grid-template-rows: 0fr 0fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 0fr 1fr; and grid-template-rows: 0fr 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 1fr 0fr; and grid-template-rows: 1fr 0fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 1fr 3fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 0fr 0fr 1fr; and grid-template-rows: 0fr 0fr 1fr;]
|
['grid' with: grid-template-columns: 0fr 0fr 1fr; and grid-template-rows: 0fr 0fr 1fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 0fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(15px, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(15px, 0fr) minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(20px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(20px, 1fr) minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(30px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(30px, 1fr) minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 0fr minmax(0, 0fr); and grid-template-rows: 0fr minmax(0, 0fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 0fr minmax(0, 1fr); and grid-template-rows: 0fr minmax(0, 1fr);]
|
['grid' with: grid-template-columns: 0fr minmax(0, 1fr); and grid-template-rows: 0fr minmax(0, 1fr);]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 1fr minmax(0, 1fr); and grid-template-rows: 1fr minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 1fr minmax(25px, 1fr); and grid-template-rows: 1fr minmax(25px, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 0fr auto; and grid-template-rows: 0fr auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 1fr max-content; and grid-template-rows: 1fr max-content;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(0, 0fr) auto; and grid-template-rows: minmax(0, 0fr) auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(0, 1fr) auto; and grid-template-rows: minmax(0, 1fr) auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(25px, 0fr) auto; and grid-template-rows: minmax(25px, 0fr) auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(25px, 1fr) auto; and grid-template-rows: minmax(25px, 1fr) auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,131 +1,5 @@
|
||||||
[grid-flex-track-intrinsic-sizes-003.html]
|
[grid-flex-track-intrinsic-sizes-003.html]
|
||||||
expected: [TIMEOUT, OK]
|
expected: [TIMEOUT, OK]
|
||||||
[auto min item 'grid' with: grid-template-columns: 0fr; and grid-template-rows: 0fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: minmax(0, .5fr); and grid-template-rows: minmax(0, .5fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: minmax(0, 1fr); and grid-template-rows: minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: minmax(0, 2fr); and grid-template-rows: minmax(0, 2fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: minmax(75px, 1fr); and grid-template-rows: minmax(75px, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: 0fr 0fr; and grid-template-rows: 0fr 0fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: 0fr 1fr; and grid-template-rows: 0fr 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: 1fr 0fr; and grid-template-rows: 1fr 0fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 1fr 3fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: 0fr 0fr 1fr; and grid-template-rows: 0fr 0fr 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 0fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: minmax(15px, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(15px, 0fr) minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: minmax(20px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(20px, 1fr) minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: minmax(40px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(40px, 1fr) minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: 0fr minmax(0, 0fr); and grid-template-rows: 0fr minmax(0, 0fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: 0fr minmax(0, 1fr); and grid-template-rows: 0fr minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: 1fr minmax(0, 1fr); and grid-template-rows: 1fr minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: 1fr minmax(25px, 1fr); and grid-template-rows: 1fr minmax(25px, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: 0fr min-content; and grid-template-rows: 0fr min-content;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: 0fr auto; and grid-template-rows: 0fr auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: 0.5fr auto; and grid-template-rows: 0.5fr auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: 1fr max-content; and grid-template-rows: 1fr max-content;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: 1fr min-content; and grid-template-rows: 1fr min-content;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: minmax(0, 0fr) min-content; and grid-template-rows: minmax(0, 0fr) min-content;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: minmax(0, 0fr) auto; and grid-template-rows: minmax(0, 0fr) auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: minmax(0, 1fr) auto; and grid-template-rows: minmax(0, 1fr) auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: minmax(25px, 0fr) auto; and grid-template-rows: minmax(25px, 0fr) auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[auto min item 'grid' with: grid-template-columns: minmax(25px, 1fr) auto; and grid-template-rows: minmax(25px, 1fr) auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min-content min item 'grid' with: grid-template-columns: 0fr; and grid-template-rows: 0fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min-content min item 'grid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min-content min item 'grid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min-content min item 'grid' with: grid-template-columns: minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min-content min item 'grid' with: grid-template-columns: minmax(0, .5fr); and grid-template-rows: minmax(0, .5fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min-content min item 'grid' with: grid-template-columns: minmax(0, 1fr); and grid-template-rows: minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min-content min item 'grid' with: grid-template-columns: minmax(0, 2fr); and grid-template-rows: minmax(0, 2fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min-content min item 'grid' with: grid-template-columns: minmax(75px, 1fr); and grid-template-rows: minmax(75px, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min-content min item 'grid' with: grid-template-columns: 0fr 0fr; and grid-template-rows: 0fr 0fr;]
|
[min-content min item 'grid' with: grid-template-columns: 0fr 0fr; and grid-template-rows: 0fr 0fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -144,21 +18,6 @@
|
||||||
[min-content min item 'grid' with: grid-template-columns: 0fr 0fr 1fr; and grid-template-rows: 0fr 0fr 1fr;]
|
[min-content min item 'grid' with: grid-template-columns: 0fr 0fr 1fr; and grid-template-rows: 0fr 0fr 1fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[min-content min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 0fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min-content min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min-content min item 'grid' with: grid-template-columns: minmax(15px, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(15px, 0fr) minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min-content min item 'grid' with: grid-template-columns: minmax(20px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(20px, 1fr) minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min-content min item 'grid' with: grid-template-columns: minmax(40px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(40px, 1fr) minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min-content min item 'grid' with: grid-template-columns: 0fr minmax(0, 0fr); and grid-template-rows: 0fr minmax(0, 0fr);]
|
[min-content min item 'grid' with: grid-template-columns: 0fr minmax(0, 0fr); and grid-template-rows: 0fr minmax(0, 0fr);]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -189,119 +48,8 @@
|
||||||
[min-content min item 'grid' with: grid-template-columns: 1fr min-content; and grid-template-rows: 1fr min-content;]
|
[min-content min item 'grid' with: grid-template-columns: 1fr min-content; and grid-template-rows: 1fr min-content;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[min-content min item 'grid' with: grid-template-columns: minmax(0, 0fr) min-content; and grid-template-rows: minmax(0, 0fr) min-content;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min-content min item 'grid' with: grid-template-columns: minmax(0, 0fr) auto; and grid-template-rows: minmax(0, 0fr) auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min-content min item 'grid' with: grid-template-columns: minmax(0, 1fr) auto; and grid-template-rows: minmax(0, 1fr) auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min-content min item 'grid' with: grid-template-columns: minmax(25px, 0fr) auto; and grid-template-rows: minmax(25px, 0fr) auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[min-content min item 'grid' with: grid-template-columns: minmax(25px, 1fr) auto; and grid-template-rows: minmax(25px, 1fr) auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: 0fr; and grid-template-rows: 0fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: minmax(0, .5fr); and grid-template-rows: minmax(0, .5fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: minmax(0, 1fr); and grid-template-rows: minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: minmax(0, 2fr); and grid-template-rows: minmax(0, 2fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: minmax(75px, 1fr); and grid-template-rows: minmax(75px, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: 0fr 0fr; and grid-template-rows: 0fr 0fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: 0fr 1fr; and grid-template-rows: 0fr 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: 1fr 0fr; and grid-template-rows: 1fr 0fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 1fr 3fr;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: 0fr 0fr 1fr; and grid-template-rows: 0fr 0fr 1fr;]
|
[50px min item 'grid' with: grid-template-columns: 0fr 0fr 1fr; and grid-template-rows: 0fr 0fr 1fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 0fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: minmax(15px, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(15px, 0fr) minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: minmax(20px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(20px, 1fr) minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: minmax(40px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(40px, 1fr) minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: 0fr minmax(0, 0fr); and grid-template-rows: 0fr minmax(0, 0fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: 0fr minmax(0, 1fr); and grid-template-rows: 0fr minmax(0, 1fr);]
|
[50px min item 'grid' with: grid-template-columns: 0fr minmax(0, 1fr); and grid-template-rows: 0fr minmax(0, 1fr);]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: 1fr minmax(0, 1fr); and grid-template-rows: 1fr minmax(0, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: 1fr minmax(25px, 1fr); and grid-template-rows: 1fr minmax(25px, 1fr);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: 0fr min-content; and grid-template-rows: 0fr min-content;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: 0fr auto; and grid-template-rows: 0fr auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: 0.5fr auto; and grid-template-rows: 0.5fr auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: 1fr max-content; and grid-template-rows: 1fr max-content;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: 1fr min-content; and grid-template-rows: 1fr min-content;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: minmax(0, 0fr) min-content; and grid-template-rows: minmax(0, 0fr) min-content;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: minmax(0, 0fr) auto; and grid-template-rows: minmax(0, 0fr) auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: minmax(0, 1fr) auto; and grid-template-rows: minmax(0, 1fr) auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: minmax(25px, 0fr) auto; and grid-template-rows: minmax(25px, 0fr) auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: minmax(25px, 1fr) auto; and grid-template-rows: minmax(25px, 1fr) auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,93 +1,21 @@
|
||||||
[grid-intrinsic-track-sizes-001.html]
|
[grid-intrinsic-track-sizes-001.html]
|
||||||
['grid' with: grid-template-columns: auto; and grid-template-rows: auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: min-content; and grid-template-rows: min-content;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: max-content; and grid-template-rows: max-content;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(0, auto); and grid-template-rows: minmax(0, auto);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(0, min-content); and grid-template-rows: minmax(0, min-content);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(0, max-content); and grid-template-rows: minmax(0, max-content);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(auto, 10px); and grid-template-rows: minmax(auto, 10px);]
|
['grid' with: grid-template-columns: minmax(auto, 10px); and grid-template-rows: minmax(auto, 10px);]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(min-content, 10px); and grid-template-rows: minmax(min-content, 10px);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(max-content, 10px); and grid-template-rows: minmax(max-content, 10px);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: auto auto; and grid-template-rows: auto auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: min-content min-content; and grid-template-rows: min-content min-content;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: max-content max-content; and grid-template-rows: max-content max-content;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(0, auto) minmax(0, auto); and grid-template-rows: minmax(0, auto) minmax(0, auto);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(0, min-content) minmax(0, min-content); and grid-template-rows: minmax(0, min-content) minmax(0, min-content);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(0, max-content) minmax(0, max-content); and grid-template-rows: minmax(0, max-content) minmax(0, max-content);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(auto, 4px) minmax(auto, 4px); and grid-template-rows: minmax(auto, 4px) minmax(auto, 4px);]
|
['grid' with: grid-template-columns: minmax(auto, 4px) minmax(auto, 4px); and grid-template-rows: minmax(auto, 4px) minmax(auto, 4px);]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(auto, 10px) minmax(auto, 10px); and grid-template-rows: minmax(auto, 10px) minmax(auto, 10px);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(min-content, 10px) minmax(min-content, 10px); and grid-template-rows: minmax(min-content, 10px) minmax(min-content, 10px);]
|
['grid' with: grid-template-columns: minmax(min-content, 10px) minmax(min-content, 10px); and grid-template-rows: minmax(min-content, 10px) minmax(min-content, 10px);]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: minmax(max-content, 10px) minmax(max-content, 10px); and grid-template-rows: minmax(max-content, 10px) minmax(max-content, 10px);]
|
['grid' with: grid-template-columns: minmax(max-content, 10px) minmax(max-content, 10px); and grid-template-rows: minmax(max-content, 10px) minmax(max-content, 10px);]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 20px auto; and grid-template-rows: 20px auto;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 20px min-content; and grid-template-rows: 20px min-content;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 20px max-content; and grid-template-rows: 20px max-content;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 20px minmax(0, auto); and grid-template-rows: 20px minmax(0, auto);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 20px minmax(0, min-content); and grid-template-rows: 20px minmax(0, min-content);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 20px minmax(0, max-content); and grid-template-rows: 20px minmax(0, max-content);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 20px minmax(auto, 30px); and grid-template-rows: 20px minmax(auto, 30px);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 20px minmax(min-content, 6px); and grid-template-rows: 20px minmax(min-content, 6px);]
|
['grid' with: grid-template-columns: 20px minmax(min-content, 6px); and grid-template-rows: 20px minmax(min-content, 6px);]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 20px minmax(min-content, 40px); and grid-template-rows: 20px minmax(min-content, 40px);]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 20px minmax(max-content, 6px); and grid-template-rows: 20px minmax(max-content, 6px);]
|
['grid' with: grid-template-columns: 20px minmax(max-content, 6px); and grid-template-rows: 20px minmax(max-content, 6px);]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: 20px minmax(max-content, 30px); and grid-template-rows: 20px minmax(max-content, 30px);]
|
['grid' with: grid-template-columns: 20px minmax(max-content, 30px); and grid-template-rows: 20px minmax(max-content, 30px);]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
['grid' with: grid-template-columns: max-content min-content; and grid-template-rows: max-content min-content;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -2,48 +2,15 @@
|
||||||
[Property grid-template-rows value 'masonry']
|
[Property grid-template-rows value 'masonry']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Property grid-template-columns value '20%']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-columns value 'calc(30% + 40px)']
|
[Property grid-template-columns value 'calc(30% + 40px)']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Property grid-template-columns value '5fr']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-columns value 'min-content']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-columns value 'max-content']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-columns value 'auto']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-columns value 'minmax(10px, auto)']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-columns value 'minmax(20%, max-content)']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-columns value 'minmax(min-content, calc(-0.5em + 10px))']
|
[Property grid-template-columns value 'minmax(min-content, calc(-0.5em + 10px))']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Property grid-template-columns value 'minmax(auto, 0)']
|
[Property grid-template-columns value 'minmax(auto, 0)']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Property grid-template-columns value 'fit-content(70px)']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-columns value 'fit-content(20%)']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-columns value 'fit-content(calc(-0.5em + 10px))']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-columns value 'repeat(1, 10px)']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-columns value 'repeat(1, [one two\] 20%)']
|
[Property grid-template-columns value 'repeat(1, [one two\] 20%)']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -53,15 +20,6 @@
|
||||||
[Property grid-template-columns value 'repeat(2, fit-content(20%) [three four\] 30px 40px [five six\])']
|
[Property grid-template-columns value 'repeat(2, fit-content(20%) [three four\] 30px 40px [five six\])']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Property grid-template-columns value 'min-content repeat(5, minmax(10px, auto))']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-columns value '[\] 150px [\] 1fr [\]']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-columns value 'repeat(auto-fill, 200px)']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-columns value 'repeat(auto-fit, [one\] 20%)']
|
[Property grid-template-columns value 'repeat(auto-fit, [one\] 20%)']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -73,3 +31,6 @@
|
||||||
|
|
||||||
[Property grid-template-columns value '[one\] repeat(2, minmax(50px, auto)) [two\] 30px [three\] repeat(auto-fill, 10px) 40px [four five\] repeat(2, minmax(200px, auto)) [six\]']
|
[Property grid-template-columns value '[one\] repeat(2, minmax(50px, auto)) [two\] 30px [three\] repeat(auto-fill, 10px) 40px [four five\] repeat(2, minmax(200px, auto)) [six\]']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Property grid-template-columns value 'none']
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -2,9 +2,6 @@
|
||||||
[Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithPercentElement' : grid-template-columns = '400px 800px', grid-template-rows = '150px 450px']
|
[Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithPercentElement' : grid-template-columns = '400px 800px', grid-template-rows = '150px 450px']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithPercentWithoutSize' : grid-template-columns = '3.5px 7px', grid-template-rows = '4px 12px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithAutoElement' : grid-template-columns = '0px 17px', grid-template-rows = '0px 3px']
|
[Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithAutoElement' : grid-template-columns = '0px 17px', grid-template-rows = '0px 3px']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -14,9 +11,6 @@
|
||||||
[Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithMinMaxContent' : grid-template-columns = '0px 0px', grid-template-rows = '0px 0px']
|
[Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithMinMaxContent' : grid-template-columns = '0px 0px', grid-template-rows = '0px 0px']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithMinMaxContentWithChildrenElement' : grid-template-columns = '7px 17px', grid-template-rows = '16px 3px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithMinMaxAndFixed' : grid-template-columns = '240px 15px', grid-template-rows = '120px 210px']
|
[Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithMinMaxAndFixed' : grid-template-columns = '240px 15px', grid-template-rows = '120px 210px']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -5,18 +5,6 @@
|
||||||
[Element 'gridAutoAndAuto' grid-template-columns value computes to '45px 45px']
|
[Element 'gridAutoAndAuto' grid-template-columns value computes to '45px 45px']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Element 'gridMinContentAndMinContentFixed' grid-template-columns value computes to '20px 30px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridMaxContentAndMinContent' grid-template-columns value computes to '70px 20px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridFixedMinContentAndMaxContent' grid-template-columns value computes to '10px 80px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridFixedMaxContentAndMinContent' grid-template-columns value computes to '60px 30px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridMinContentAndMaxContentFixed' grid-template-columns value computes to '20px 70px']
|
[Element 'gridMinContentAndMaxContentFixed' grid-template-columns value computes to '20px 70px']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -29,69 +17,18 @@
|
||||||
[Element 'gridAutoMaxContent' grid-template-columns value computes to '20px 70px']
|
[Element 'gridAutoMaxContent' grid-template-columns value computes to '20px 70px']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Element 'gridMaxContentAndMinContentFixed' grid-template-columns value computes to '70px 20px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridMaxContentAndMaxContentFixed' grid-template-columns value computes to '55px 35px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridMinContentFixedAndAutoUnsortedConstrained' grid-template-columns value computes to '0px 40px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridAutoAndAutoUnsortedConstrained' grid-template-columns value computes to '10px 30px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridMinContentAndMinContentFixedUnsortedConstrained' grid-template-columns value computes to '0px 40px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridMaxContentAndMinContentUnsortedConstrained' grid-template-columns value computes to '0px 70px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridFixedMinContentAndMaxContentUnsortedConstrained' grid-template-columns value computes to '10px 70px']
|
[Element 'gridFixedMinContentAndMaxContentUnsortedConstrained' grid-template-columns value computes to '10px 70px']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Element 'gridFixedMaxContentAndMinContentUnsortedConstrained' grid-template-columns value computes to '10px 40px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridMinContentAndMaxContentFixedUnsortedConstrained' grid-template-columns value computes to '0px 90px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridMaxContentFixedAndAutoUnsortedConstrained' grid-template-columns value computes to '10px 40px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridAutoMinContentUnsortedConstrained' grid-template-columns value computes to '0px 60px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridAutoMaxContentUnsortedConstrained' grid-template-columns value computes to '0px 90px']
|
[Element 'gridAutoMaxContentUnsortedConstrained' grid-template-columns value computes to '0px 90px']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Element 'gridMaxContentAndMinContentFixedUnsortedConstrained' grid-template-columns value computes to '50px 40px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridMaxContentAndMaxContentFixedUnsortedConstrained' grid-template-columns value computes to '40px 70px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridMinContentFixedAndAutoUnsorted' grid-template-columns value computes to '15px 90px']
|
[Element 'gridMinContentFixedAndAutoUnsorted' grid-template-columns value computes to '15px 90px']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Element 'gridAutoAndAutoUnsorted' grid-template-columns value computes to '60px 30px']
|
[Element 'gridAutoAndAutoUnsorted' grid-template-columns value computes to '60px 30px']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Element 'gridMinContentAndMinContentFixedUnsorted' grid-template-columns value computes to '0px 40px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridMaxContentAndMinContentUnsorted' grid-template-columns value computes to '0px 70px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridFixedMinContentAndMaxContentUnsorted' grid-template-columns value computes to '10px 70px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridFixedMaxContentAndMinContentUnsorted' grid-template-columns value computes to '50px 40px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridMinContentAndMaxContentFixedUnsorted' grid-template-columns value computes to '0px 90px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridMaxContentFixedAndAutoUnsorted' grid-template-columns value computes to '15px 70px']
|
[Element 'gridMaxContentFixedAndAutoUnsorted' grid-template-columns value computes to '15px 70px']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -101,26 +38,11 @@
|
||||||
[Element 'gridAutoMaxContentUnsorted' grid-template-columns value computes to '0px 90px']
|
[Element 'gridAutoMaxContentUnsorted' grid-template-columns value computes to '0px 90px']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Element 'gridMaxContentAndMinContentFixedUnsorted' grid-template-columns value computes to '50px 40px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridMaxContentAndMaxContentFixedUnsorted' grid-template-columns value computes to '40px 70px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridMinContentFixedAndAutoAboveLimits' grid-template-columns value computes to '15px 95px']
|
[Element 'gridMinContentFixedAndAutoAboveLimits' grid-template-columns value computes to '15px 95px']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Element 'gridMaxContentFixedAndAutoAboveLimits' grid-template-columns value computes to '15px 135px']
|
[Element 'gridMaxContentFixedAndAutoAboveLimits' grid-template-columns value computes to '15px 135px']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Element 'gridMinContentFixedAndFixedFixedAndAuto' grid-template-columns value computes to '20px 20px 60px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridAutoAndFixedFixedAndMaxContentFixed' grid-template-columns value computes to '110px 20px 20px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridMaxContentAndMaxContentFixedAndMaxContent' grid-template-columns value computes to '70px 20px 50px']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Element 'gridAutoAndMinContentFixedAndMinContent' grid-template-columns value computes to '55px 30px 65px']
|
[Element 'gridAutoAndMinContentFixedAndMinContent' grid-template-columns value computes to '55px 30px 65px']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,67 +1,19 @@
|
||||||
[grid-template-rows-computed-withcontent.html]
|
[grid-template-rows-computed-withcontent.html]
|
||||||
[Property grid-template-rows value 'none']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-rows value '20%']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-rows value 'calc(30% + 40px)']
|
[Property grid-template-rows value 'calc(30% + 40px)']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Property grid-template-rows value '5fr']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-rows value 'min-content']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-rows value 'max-content']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-rows value 'auto']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-rows value 'minmax(10px, auto)']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-rows value 'minmax(20%, max-content)']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-rows value 'minmax(min-content, calc(-0.5em + 10px))']
|
[Property grid-template-rows value 'minmax(min-content, calc(-0.5em + 10px))']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Property grid-template-rows value 'minmax(auto, 0)']
|
[Property grid-template-rows value 'minmax(auto, 0)']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Property grid-template-rows value 'fit-content(70px)']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-rows value 'fit-content(20%)']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-rows value 'fit-content(calc(-0.5em + 10px))']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-rows value 'repeat(1, 10px)']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-rows value 'repeat(1, [one two\] 20%)']
|
[Property grid-template-rows value 'repeat(1, [one two\] 20%)']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Property grid-template-rows value 'repeat(2, minmax(10px, auto))']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-rows value 'repeat(2, fit-content(20%) [three four\] 30px 40px [five six\])']
|
[Property grid-template-rows value 'repeat(2, fit-content(20%) [three four\] 30px 40px [five six\])']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Property grid-template-rows value 'min-content repeat(5, minmax(10px, auto))']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-rows value '[\] 150px [\] 1fr [\]']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-rows value 'repeat(auto-fill, 200px)']
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Property grid-template-rows value 'repeat(auto-fit, [one\] 20%)']
|
[Property grid-template-rows value 'repeat(auto-fit, [one\] 20%)']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue