aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOriol Brufau <obrufau@igalia.com>2025-03-23 15:26:44 +0100
committerGitHub <noreply@github.com>2025-03-23 14:26:44 +0000
commit8c2ac88ad0de2760c87675565a65903bb9e03d7b (patch)
tree182f4bdbde0d3046b612f09aeb4167f36ce33f85
parent3a356ffb74ec342500b92244437787a3cad3e0c1 (diff)
downloadservo-8c2ac88ad0de2760c87675565a65903bb9e03d7b.tar.gz
servo-8c2ac88ad0de2760c87675565a65903bb9e03d7b.zip
layout: Implement the `fit-content()` sizing function (#36056)
Spec: https://drafts.csswg.org/css-sizing-3/#funcdef-width-fit-content It's similar to the `fit-content` keyword but, instead of clamping the stretch size between `min-content` and `max-content`, it clamps the provided argument. So now that we support `fit-content`, it's quite straightforward to add. It's just not completely clear what should happen when the argument has a cyclic percentage, so this may need some further adjustments depending on the outcome of https://github.com/w3c/csswg-drafts/issues/11805 Signed-off-by: Oriol Brufau <obrufau@igalia.com>
-rw-r--r--Cargo.lock24
-rw-r--r--components/layout_2020/flexbox/layout.rs7
-rw-r--r--components/layout_2020/flow/mod.rs8
-rw-r--r--components/layout_2020/geom.rs93
-rw-r--r--components/layout_2020/sizing.rs4
-rw-r--r--components/layout_2020/style_ext.rs20
-rw-r--r--components/layout_2020/taffy/stylo_taffy/convert.rs2
-rw-r--r--tests/wpt/meta/css/css-sizing/fit-content-length-percentage-001.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/fit-content-length-percentage-002.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/fit-content-length-percentage-003.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/fit-content-length-percentage-004.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/fit-content-length-percentage-005.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/fit-content-length-percentage-006.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/fit-content-length-percentage-007.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/fit-content-length-percentage-008.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/fit-content-length-percentage-009.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/fit-content-length-percentage-010.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/fit-content-length-percentage-011.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/fit-content-length-percentage-012.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/fit-content-length-percentage-013.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/fit-content-length-percentage-014.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/fit-content-length-percentage-015.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/fit-content-length-percentage-016.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/parsing/height-valid.html.ini9
-rw-r--r--tests/wpt/meta/css/css-sizing/parsing/max-height-computed.html.ini12
-rw-r--r--tests/wpt/meta/css/css-sizing/parsing/max-height-valid.html.ini9
-rw-r--r--tests/wpt/meta/css/css-sizing/parsing/max-width-computed.html.ini12
-rw-r--r--tests/wpt/meta/css/css-sizing/parsing/max-width-valid.html.ini9
-rw-r--r--tests/wpt/meta/css/css-sizing/parsing/min-height-computed.html.ini12
-rw-r--r--tests/wpt/meta/css/css-sizing/parsing/min-height-valid.html.ini9
-rw-r--r--tests/wpt/meta/css/css-sizing/parsing/min-width-computed.html.ini12
-rw-r--r--tests/wpt/meta/css/css-sizing/parsing/min-width-valid.html.ini9
-rw-r--r--tests/wpt/meta/css/css-sizing/parsing/width-valid.html.ini9
33 files changed, 100 insertions, 192 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 7a274e0b461..6759907cecd 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -6513,7 +6513,7 @@ dependencies = [
[[package]]
name = "selectors"
version = "0.26.0"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#4b44fbdb7f93c3f57eb99ad5f14cda5e82af4467"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#bd0a7031b68ed87f9dbba0714e735fa5cf9df676"
dependencies = [
"bitflags 2.9.0",
"cssparser",
@@ -6798,7 +6798,7 @@ dependencies = [
[[package]]
name = "servo_arc"
version = "0.4.0"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#4b44fbdb7f93c3f57eb99ad5f14cda5e82af4467"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#bd0a7031b68ed87f9dbba0714e735fa5cf9df676"
dependencies = [
"serde",
"stable_deref_trait",
@@ -7248,7 +7248,7 @@ dependencies = [
[[package]]
name = "stylo"
version = "0.0.1"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#4b44fbdb7f93c3f57eb99ad5f14cda5e82af4467"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#bd0a7031b68ed87f9dbba0714e735fa5cf9df676"
dependencies = [
"app_units",
"arrayvec",
@@ -7306,7 +7306,7 @@ dependencies = [
[[package]]
name = "stylo_atoms"
version = "0.1.0"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#4b44fbdb7f93c3f57eb99ad5f14cda5e82af4467"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#bd0a7031b68ed87f9dbba0714e735fa5cf9df676"
dependencies = [
"string_cache",
"string_cache_codegen",
@@ -7315,12 +7315,12 @@ dependencies = [
[[package]]
name = "stylo_config"
version = "0.1.0"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#4b44fbdb7f93c3f57eb99ad5f14cda5e82af4467"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#bd0a7031b68ed87f9dbba0714e735fa5cf9df676"
[[package]]
name = "stylo_derive"
version = "0.0.1"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#4b44fbdb7f93c3f57eb99ad5f14cda5e82af4467"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#bd0a7031b68ed87f9dbba0714e735fa5cf9df676"
dependencies = [
"darling",
"proc-macro2",
@@ -7332,7 +7332,7 @@ dependencies = [
[[package]]
name = "stylo_dom"
version = "0.1.0"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#4b44fbdb7f93c3f57eb99ad5f14cda5e82af4467"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#bd0a7031b68ed87f9dbba0714e735fa5cf9df676"
dependencies = [
"bitflags 2.9.0",
"stylo_malloc_size_of",
@@ -7341,7 +7341,7 @@ dependencies = [
[[package]]
name = "stylo_malloc_size_of"
version = "0.0.1"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#4b44fbdb7f93c3f57eb99ad5f14cda5e82af4467"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#bd0a7031b68ed87f9dbba0714e735fa5cf9df676"
dependencies = [
"app_units",
"cssparser",
@@ -7358,12 +7358,12 @@ dependencies = [
[[package]]
name = "stylo_static_prefs"
version = "0.1.0"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#4b44fbdb7f93c3f57eb99ad5f14cda5e82af4467"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#bd0a7031b68ed87f9dbba0714e735fa5cf9df676"
[[package]]
name = "stylo_traits"
version = "0.0.1"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#4b44fbdb7f93c3f57eb99ad5f14cda5e82af4467"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#bd0a7031b68ed87f9dbba0714e735fa5cf9df676"
dependencies = [
"app_units",
"bitflags 2.9.0",
@@ -7746,7 +7746,7 @@ dependencies = [
[[package]]
name = "to_shmem"
version = "0.1.0"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#4b44fbdb7f93c3f57eb99ad5f14cda5e82af4467"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#bd0a7031b68ed87f9dbba0714e735fa5cf9df676"
dependencies = [
"cssparser",
"servo_arc",
@@ -7759,7 +7759,7 @@ dependencies = [
[[package]]
name = "to_shmem_derive"
version = "0.1.0"
-source = "git+https://github.com/servo/stylo?branch=2025-03-15#4b44fbdb7f93c3f57eb99ad5f14cda5e82af4467"
+source = "git+https://github.com/servo/stylo?branch=2025-03-15#bd0a7031b68ed87f9dbba0714e735fa5cf9df676"
dependencies = [
"darling",
"proc-macro2",
diff --git a/components/layout_2020/flexbox/layout.rs b/components/layout_2020/flexbox/layout.rs
index 4114a439916..77076898f57 100644
--- a/components/layout_2020/flexbox/layout.rs
+++ b/components/layout_2020/flexbox/layout.rs
@@ -2599,11 +2599,8 @@ impl FlexItemBox {
BoxSizing::BorderBox => length - main_padding_border_sum,
}
};
- size.maybe_map(|v| {
- v.maybe_to_used_value(container_definite_main_size)
- .map(apply_box_sizing)
- })
- .unwrap_or_default()
+ size.resolve_percentages_for_preferred(container_definite_main_size)
+ .map(apply_box_sizing)
},
},
}
diff --git a/components/layout_2020/flow/mod.rs b/components/layout_2020/flow/mod.rs
index 898f2d00500..58e7310d6cd 100644
--- a/components/layout_2020/flow/mod.rs
+++ b/components/layout_2020/flow/mod.rs
@@ -2144,9 +2144,11 @@ impl<'container> PlacementState<'container> {
fn block_size_is_zero_or_intrinsic(size: &StyleSize, containing_block: &ContainingBlock) -> bool {
match size {
- StyleSize::Auto | StyleSize::MinContent | StyleSize::MaxContent | StyleSize::FitContent => {
- true
- },
+ StyleSize::Auto |
+ StyleSize::MinContent |
+ StyleSize::MaxContent |
+ StyleSize::FitContent |
+ StyleSize::FitContentFunction(_) => true,
StyleSize::Stretch => {
// TODO: Should this return true when the containing block has a definite size of 0px?
!containing_block.size.block.is_definite()
diff --git a/components/layout_2020/geom.rs b/components/layout_2020/geom.rs
index 8d5ff95f743..56da1c5d7f5 100644
--- a/components/layout_2020/geom.rs
+++ b/components/layout_2020/geom.rs
@@ -133,6 +133,17 @@ impl<T: Clone> LogicalVec2<T> {
block: f(&self.block),
}
}
+
+ pub(crate) fn map_with<U, V>(
+ &self,
+ other: &LogicalVec2<U>,
+ f: impl Fn(&T, &U) -> V,
+ ) -> LogicalVec2<V> {
+ LogicalVec2 {
+ inline: f(&self.inline, &other.inline),
+ block: f(&self.block, &other.block),
+ }
+ }
}
impl<T: Add<Output = T> + Copy> Add<LogicalVec2<T>> for LogicalVec2<T> {
@@ -697,6 +708,8 @@ pub(crate) enum Size<T> {
MaxContent,
/// <https://drafts.csswg.org/css-sizing-4/#valdef-width-fit-content>
FitContent,
+ /// <https://drafts.csswg.org/css-sizing-3/#funcdef-width-fit-content>
+ FitContentFunction(T),
/// <https://drafts.csswg.org/css-sizing-4/#valdef-width-stretch>
Stretch,
/// Represents a numeric `<length-percentage>`, but resolved as a `T`.
@@ -730,34 +743,28 @@ impl<T: Clone> Size<T> {
}
#[inline]
- pub fn map<U>(&self, f: impl FnOnce(T) -> U) -> Size<U> {
+ pub(crate) fn map<U>(&self, f: impl FnOnce(T) -> U) -> Size<U> {
match self {
Size::Initial => Size::Initial,
Size::MinContent => Size::MinContent,
Size::MaxContent => Size::MaxContent,
Size::FitContent => Size::FitContent,
+ Size::FitContentFunction(size) => Size::FitContentFunction(f(size.clone())),
Size::Stretch => Size::Stretch,
Size::Numeric(numeric) => Size::Numeric(f(numeric.clone())),
}
}
-
- #[inline]
- pub fn maybe_map<U>(&self, f: impl FnOnce(T) -> Option<U>) -> Option<Size<U>> {
- Some(match self {
- Size::Numeric(numeric) => Size::Numeric(f(numeric.clone())?),
- _ => self.map(|_| unreachable!("This shouldn't be called for keywords")),
- })
- }
}
impl From<StyleSize> for Size<LengthPercentage> {
fn from(size: StyleSize) -> Self {
match size {
- StyleSize::LengthPercentage(length) => Size::Numeric(length.0),
+ StyleSize::LengthPercentage(lp) => Size::Numeric(lp.0),
StyleSize::Auto => Size::Initial,
StyleSize::MinContent => Size::MinContent,
StyleSize::MaxContent => Size::MaxContent,
StyleSize::FitContent => Size::FitContent,
+ StyleSize::FitContentFunction(lp) => Size::FitContentFunction(lp.0),
StyleSize::Stretch => Size::Stretch,
StyleSize::AnchorSizeFunction(_) => unreachable!("anchor-size() should be disabled"),
}
@@ -767,11 +774,12 @@ impl From<StyleSize> for Size<LengthPercentage> {
impl From<StyleMaxSize> for Size<LengthPercentage> {
fn from(max_size: StyleMaxSize) -> Self {
match max_size {
- StyleMaxSize::LengthPercentage(length) => Size::Numeric(length.0),
+ StyleMaxSize::LengthPercentage(lp) => Size::Numeric(lp.0),
StyleMaxSize::None => Size::Initial,
StyleMaxSize::MinContent => Size::MinContent,
StyleMaxSize::MaxContent => Size::MaxContent,
StyleMaxSize::FitContent => Size::FitContent,
+ StyleMaxSize::FitContentFunction(lp) => Size::FitContentFunction(lp.0),
StyleMaxSize::Stretch => Size::Stretch,
StyleMaxSize::AnchorSizeFunction(_) => unreachable!("anchor-size() should be disabled"),
}
@@ -784,25 +792,49 @@ impl Size<LengthPercentage> {
self.to_numeric()
.and_then(|length_percentage| length_percentage.to_percentage())
}
-}
-impl LogicalVec2<Size<LengthPercentage>> {
- pub(crate) fn maybe_percentages_relative_to_basis(
- &self,
- basis: &LogicalVec2<Option<Au>>,
- ) -> LogicalVec2<Size<Au>> {
- LogicalVec2 {
- inline: self
- .inline
- .maybe_map(|v| v.maybe_to_used_value(basis.inline))
- .unwrap_or_default(),
- block: self
- .block
- .maybe_map(|v| v.maybe_to_used_value(basis.block))
- .unwrap_or_default(),
+ /// Resolves percentages in a preferred size, against the provided basis.
+ /// If the basis is missing, percentages are considered cyclic.
+ /// <https://www.w3.org/TR/css-sizing-3/#preferred-size-properties>
+ /// <https://www.w3.org/TR/css-sizing-3/#cyclic-percentage-size>
+ #[inline]
+ pub(crate) fn resolve_percentages_for_preferred(&self, basis: Option<Au>) -> Size<Au> {
+ match self {
+ Size::Numeric(numeric) => numeric
+ .maybe_to_used_value(basis)
+ .map_or(Size::Initial, Size::Numeric),
+ Size::FitContentFunction(numeric) => {
+ // Under discussion in https://github.com/w3c/csswg-drafts/issues/11805
+ numeric
+ .maybe_to_used_value(basis)
+ .map_or(Size::FitContent, Size::FitContentFunction)
+ },
+ _ => self.map(|_| unreachable!("This shouldn't be called for keywords")),
}
}
+ /// Resolves percentages in a maximum size, against the provided basis.
+ /// If the basis is missing, percentages are considered cyclic.
+ /// <https://www.w3.org/TR/css-sizing-3/#preferred-size-properties>
+ /// <https://www.w3.org/TR/css-sizing-3/#cyclic-percentage-size>
+ #[inline]
+ pub(crate) fn resolve_percentages_for_max(&self, basis: Option<Au>) -> Size<Au> {
+ match self {
+ Size::Numeric(numeric) => numeric
+ .maybe_to_used_value(basis)
+ .map_or(Size::Initial, Size::Numeric),
+ Size::FitContentFunction(numeric) => {
+ // Under discussion in https://github.com/w3c/csswg-drafts/issues/11805
+ numeric
+ .maybe_to_used_value(basis)
+ .map_or(Size::MaxContent, Size::FitContentFunction)
+ },
+ _ => self.map(|_| unreachable!("This shouldn't be called for keywords")),
+ }
+ }
+}
+
+impl LogicalVec2<Size<LengthPercentage>> {
pub(crate) fn percentages_relative_to_basis(
&self,
basis: &LogicalVec2<Au>,
@@ -831,6 +863,7 @@ impl Size<Au> {
},
Self::MinContent => content_size.min_content,
Self::MaxContent => content_size.max_content,
+ Self::FitContentFunction(size) => content_size.shrink_to_fit(*size),
Self::FitContent => {
content_size.shrink_to_fit(stretch_size.unwrap_or_else(|| content_size.max_content))
},
@@ -852,6 +885,7 @@ impl Size<Au> {
Self::Initial => get_automatic_minimum_size(),
Self::MinContent => content_size.min_content,
Self::MaxContent => content_size.max_content,
+ Self::FitContentFunction(size) => content_size.shrink_to_fit(*size),
Self::FitContent => content_size.shrink_to_fit(stretch_size.unwrap_or_default()),
Self::Stretch => stretch_size.unwrap_or_default(),
Self::Numeric(numeric) => *numeric,
@@ -870,6 +904,7 @@ impl Size<Au> {
Self::Initial => return None,
Self::MinContent => content_size.min_content,
Self::MaxContent => content_size.max_content,
+ Self::FitContentFunction(size) => content_size.shrink_to_fit(*size),
Self::FitContent => content_size.shrink_to_fit(stretch_size.unwrap_or(MAX_AU)),
Self::Stretch => return stretch_size,
Self::Numeric(numeric) => *numeric,
@@ -888,7 +923,11 @@ impl Size<Au> {
#[inline]
pub(crate) fn maybe_resolve_extrinsic(&self, stretch_size: Option<Au>) -> Option<Au> {
match self {
- Self::Initial | Self::MinContent | Self::MaxContent | Self::FitContent => None,
+ Self::Initial |
+ Self::MinContent |
+ Self::MaxContent |
+ Self::FitContent |
+ Self::FitContentFunction(_) => None,
Self::Stretch => stretch_size,
Self::Numeric(numeric) => Some(*numeric),
}
diff --git a/components/layout_2020/sizing.rs b/components/layout_2020/sizing.rs
index 4a4cb5d4dfa..125a832fe6c 100644
--- a/components/layout_2020/sizing.rs
+++ b/components/layout_2020/sizing.rs
@@ -191,6 +191,10 @@ pub(crate) fn outer_inline(
content_size.sizes.max_content,
content_size.depends_on_block_constraints,
),
+ Size::FitContentFunction(size) => {
+ let size = content_size.sizes.shrink_to_fit(size);
+ (size, size, content_size.depends_on_block_constraints)
+ },
Size::Stretch => return stretch_values,
})
};
diff --git a/components/layout_2020/style_ext.rs b/components/layout_2020/style_ext.rs
index 57207186f81..4a8d15b9fd3 100644
--- a/components/layout_2020/style_ext.rs
+++ b/components/layout_2020/style_ext.rs
@@ -1014,18 +1014,16 @@ impl LayoutStyle<'_> {
depends_on_block_constraints(&max_size.block) ||
style.depends_on_block_constraints_due_to_relative_positioning(writing_mode);
- let box_size = box_size.maybe_percentages_relative_to_basis(&containing_block.size);
- let content_box_size = style
- .content_box_size_for_box_size(box_size, &pbm)
- .map(|v| v.map(Au::from));
+ let box_size = box_size.map_with(&containing_block.size, |size, basis| {
+ size.resolve_percentages_for_preferred(*basis)
+ });
+ let content_box_size = style.content_box_size_for_box_size(box_size, &pbm);
let min_size = min_size.percentages_relative_to_basis(&containing_block_size_or_zero);
- let content_min_box_size = style
- .content_min_box_size_for_min_size(min_size, &pbm)
- .map(|v| v.map(Au::from));
- let max_size = max_size.maybe_percentages_relative_to_basis(&containing_block.size);
- let content_max_box_size = style
- .content_max_box_size_for_max_size(max_size, &pbm)
- .map(|v| v.map(Au::from));
+ let content_min_box_size = style.content_min_box_size_for_min_size(min_size, &pbm);
+ let max_size = max_size.map_with(&containing_block.size, |size, basis| {
+ size.resolve_percentages_for_max(*basis)
+ });
+ let content_max_box_size = style.content_max_box_size_for_max_size(max_size, &pbm);
ContentBoxSizesAndPBM {
content_box_sizes: LogicalVec2 {
block: Sizes::new(
diff --git a/components/layout_2020/taffy/stylo_taffy/convert.rs b/components/layout_2020/taffy/stylo_taffy/convert.rs
index 9baf026793c..29e76b516ad 100644
--- a/components/layout_2020/taffy/stylo_taffy/convert.rs
+++ b/components/layout_2020/taffy/stylo_taffy/convert.rs
@@ -54,6 +54,7 @@ pub fn dimension(val: &stylo::Size) -> taffy::Dimension {
stylo::Size::MaxContent => taffy::Dimension::Auto,
stylo::Size::MinContent => taffy::Dimension::Auto,
stylo::Size::FitContent => taffy::Dimension::Auto,
+ stylo::Size::FitContentFunction(_) => taffy::Dimension::Auto,
stylo::Size::Stretch => taffy::Dimension::Auto,
// Anchor positioning will be flagged off for time being
@@ -71,6 +72,7 @@ pub fn max_size_dimension(val: &stylo::MaxSize) -> taffy::Dimension {
stylo::MaxSize::MaxContent => taffy::Dimension::Auto,
stylo::MaxSize::MinContent => taffy::Dimension::Auto,
stylo::MaxSize::FitContent => taffy::Dimension::Auto,
+ stylo::MaxSize::FitContentFunction(_) => taffy::Dimension::Auto,
stylo::MaxSize::Stretch => taffy::Dimension::Auto,
// Anchor positioning will be flagged off for time being
diff --git a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-001.html.ini b/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-001.html.ini
deleted file mode 100644
index bd89c37d30d..00000000000
--- a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-001.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[fit-content-length-percentage-001.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-002.html.ini b/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-002.html.ini
deleted file mode 100644
index 560c0c740f5..00000000000
--- a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-002.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[fit-content-length-percentage-002.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-003.html.ini b/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-003.html.ini
deleted file mode 100644
index 4becf0c8d10..00000000000
--- a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-003.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[fit-content-length-percentage-003.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-004.html.ini b/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-004.html.ini
deleted file mode 100644
index 8f4948160d3..00000000000
--- a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-004.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[fit-content-length-percentage-004.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-005.html.ini b/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-005.html.ini
deleted file mode 100644
index 63f2b6a967f..00000000000
--- a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-005.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[fit-content-length-percentage-005.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-006.html.ini b/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-006.html.ini
deleted file mode 100644
index 2d49c015fa1..00000000000
--- a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-006.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[fit-content-length-percentage-006.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-007.html.ini b/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-007.html.ini
deleted file mode 100644
index 0a79173ce7a..00000000000
--- a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-007.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[fit-content-length-percentage-007.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-008.html.ini b/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-008.html.ini
deleted file mode 100644
index fcea7e84120..00000000000
--- a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-008.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[fit-content-length-percentage-008.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-009.html.ini b/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-009.html.ini
deleted file mode 100644
index eb21dfff3a9..00000000000
--- a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-009.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[fit-content-length-percentage-009.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-010.html.ini b/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-010.html.ini
deleted file mode 100644
index 463fd56796e..00000000000
--- a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-010.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[fit-content-length-percentage-010.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-011.html.ini b/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-011.html.ini
deleted file mode 100644
index 80b9e362254..00000000000
--- a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-011.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[fit-content-length-percentage-011.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-012.html.ini b/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-012.html.ini
deleted file mode 100644
index 7e5f46ffae7..00000000000
--- a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-012.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[fit-content-length-percentage-012.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-013.html.ini b/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-013.html.ini
deleted file mode 100644
index ffe71757be9..00000000000
--- a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-013.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[fit-content-length-percentage-013.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-014.html.ini b/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-014.html.ini
deleted file mode 100644
index 14ac3a7d4e3..00000000000
--- a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-014.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[fit-content-length-percentage-014.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-015.html.ini b/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-015.html.ini
deleted file mode 100644
index f4655614bc8..00000000000
--- a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-015.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[fit-content-length-percentage-015.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-016.html.ini b/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-016.html.ini
deleted file mode 100644
index 1258b879b51..00000000000
--- a/tests/wpt/meta/css/css-sizing/fit-content-length-percentage-016.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[fit-content-length-percentage-016.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/parsing/height-valid.html.ini b/tests/wpt/meta/css/css-sizing/parsing/height-valid.html.ini
deleted file mode 100644
index 6d7711beb8c..00000000000
--- a/tests/wpt/meta/css/css-sizing/parsing/height-valid.html.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[height-valid.html]
- [e.style['height'\] = "fit-content(10%)" should set the property value]
- expected: FAIL
-
- [e.style['height'\] = "fit-content(0.5em)" should set the property value]
- expected: FAIL
-
- [e.style['height'\] = "fit-content(calc(10% - 0.5em))" should set the property value]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/parsing/max-height-computed.html.ini b/tests/wpt/meta/css/css-sizing/parsing/max-height-computed.html.ini
deleted file mode 100644
index 1ce030b6ca3..00000000000
--- a/tests/wpt/meta/css/css-sizing/parsing/max-height-computed.html.ini
+++ /dev/null
@@ -1,12 +0,0 @@
-[max-height-computed.html]
- [Property max-height value 'fit-content(10px)']
- expected: FAIL
-
- [Property max-height value 'fit-content(20%)']
- expected: FAIL
-
- [Property max-height value 'fit-content(calc(10% + 40px))']
- expected: FAIL
-
- [Property max-height value 'fit-content(calc(10px + 0.5em))']
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/parsing/max-height-valid.html.ini b/tests/wpt/meta/css/css-sizing/parsing/max-height-valid.html.ini
deleted file mode 100644
index e6d91c7ad3c..00000000000
--- a/tests/wpt/meta/css/css-sizing/parsing/max-height-valid.html.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[max-height-valid.html]
- [e.style['max-height'\] = "fit-content(10%)" should set the property value]
- expected: FAIL
-
- [e.style['max-height'\] = "fit-content(0.5em)" should set the property value]
- expected: FAIL
-
- [e.style['max-height'\] = "fit-content(calc(10% - 0.5em))" should set the property value]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/parsing/max-width-computed.html.ini b/tests/wpt/meta/css/css-sizing/parsing/max-width-computed.html.ini
deleted file mode 100644
index a3433878bcc..00000000000
--- a/tests/wpt/meta/css/css-sizing/parsing/max-width-computed.html.ini
+++ /dev/null
@@ -1,12 +0,0 @@
-[max-width-computed.html]
- [Property max-width value 'fit-content(10px)']
- expected: FAIL
-
- [Property max-width value 'fit-content(20%)']
- expected: FAIL
-
- [Property max-width value 'fit-content(calc(10% + 40px))']
- expected: FAIL
-
- [Property max-width value 'fit-content(calc(10px + 0.5em))']
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/parsing/max-width-valid.html.ini b/tests/wpt/meta/css/css-sizing/parsing/max-width-valid.html.ini
deleted file mode 100644
index 827822e9396..00000000000
--- a/tests/wpt/meta/css/css-sizing/parsing/max-width-valid.html.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[max-width-valid.html]
- [e.style['max-width'\] = "fit-content(10%)" should set the property value]
- expected: FAIL
-
- [e.style['max-width'\] = "fit-content(0.5em)" should set the property value]
- expected: FAIL
-
- [e.style['max-width'\] = "fit-content(calc(10% - 0.5em))" should set the property value]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/parsing/min-height-computed.html.ini b/tests/wpt/meta/css/css-sizing/parsing/min-height-computed.html.ini
deleted file mode 100644
index 38fde2d8e70..00000000000
--- a/tests/wpt/meta/css/css-sizing/parsing/min-height-computed.html.ini
+++ /dev/null
@@ -1,12 +0,0 @@
-[min-height-computed.html]
- [Property min-height value 'fit-content(10px)']
- expected: FAIL
-
- [Property min-height value 'fit-content(20%)']
- expected: FAIL
-
- [Property min-height value 'fit-content(calc(10% + 40px))']
- expected: FAIL
-
- [Property min-height value 'fit-content(calc(10px + 0.5em))']
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/parsing/min-height-valid.html.ini b/tests/wpt/meta/css/css-sizing/parsing/min-height-valid.html.ini
deleted file mode 100644
index 4a673ae2cf1..00000000000
--- a/tests/wpt/meta/css/css-sizing/parsing/min-height-valid.html.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[min-height-valid.html]
- [e.style['min-height'\] = "fit-content(10%)" should set the property value]
- expected: FAIL
-
- [e.style['min-height'\] = "fit-content(0.5em)" should set the property value]
- expected: FAIL
-
- [e.style['min-height'\] = "fit-content(calc(10% - 0.5em))" should set the property value]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/parsing/min-width-computed.html.ini b/tests/wpt/meta/css/css-sizing/parsing/min-width-computed.html.ini
deleted file mode 100644
index 5e87562d965..00000000000
--- a/tests/wpt/meta/css/css-sizing/parsing/min-width-computed.html.ini
+++ /dev/null
@@ -1,12 +0,0 @@
-[min-width-computed.html]
- [Property min-width value 'fit-content(10px)']
- expected: FAIL
-
- [Property min-width value 'fit-content(20%)']
- expected: FAIL
-
- [Property min-width value 'fit-content(calc(10% + 40px))']
- expected: FAIL
-
- [Property min-width value 'fit-content(calc(10px + 0.5em))']
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/parsing/min-width-valid.html.ini b/tests/wpt/meta/css/css-sizing/parsing/min-width-valid.html.ini
deleted file mode 100644
index bfb9555dadc..00000000000
--- a/tests/wpt/meta/css/css-sizing/parsing/min-width-valid.html.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[min-width-valid.html]
- [e.style['min-width'\] = "fit-content(10%)" should set the property value]
- expected: FAIL
-
- [e.style['min-width'\] = "fit-content(0.5em)" should set the property value]
- expected: FAIL
-
- [e.style['min-width'\] = "fit-content(calc(10% - 0.5em))" should set the property value]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/parsing/width-valid.html.ini b/tests/wpt/meta/css/css-sizing/parsing/width-valid.html.ini
deleted file mode 100644
index 4538a8f7fce..00000000000
--- a/tests/wpt/meta/css/css-sizing/parsing/width-valid.html.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-[width-valid.html]
- [e.style['width'\] = "fit-content(10%)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "fit-content(0.5em)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "fit-content(calc(10% - 0.5em))" should set the property value]
- expected: FAIL