stylo: Add support for -webkit-fill-available sizing keyword (#39492)

This keyword is de-facto required for web compatibility, Firefox is also
enabling it (https://bugzil.la/1988938).

This patch just aliases it to `stretch`.

Stylo PR: https://github.com/servo/stylo/pull/243

Testing: Various tests pass

Signed-off-by: Oriol Brufau <obrufau@igalia.com>
This commit is contained in:
Oriol Brufau 2025-09-26 12:45:56 +02:00 committed by GitHub
parent 858208bd25
commit 38a63a7977
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 23 additions and 564 deletions

View file

@ -2201,7 +2201,7 @@ fn block_size_is_zero_or_intrinsic(size: &StyleSize, containing_block: &Containi
StyleSize::MaxContent |
StyleSize::FitContent |
StyleSize::FitContentFunction(_) => true,
StyleSize::Stretch => {
StyleSize::Stretch | StyleSize::WebkitFillAvailable => {
// TODO: Should this return true when the containing block has a definite size of 0px?
!containing_block.size.block.is_definite()
},

View file

@ -383,7 +383,7 @@ impl From<StyleSize> for Size<LengthPercentage> {
StyleSize::MaxContent => Size::MaxContent,
StyleSize::FitContent => Size::FitContent,
StyleSize::FitContentFunction(lp) => Size::FitContentFunction(lp.0),
StyleSize::Stretch => Size::Stretch,
StyleSize::Stretch | StyleSize::WebkitFillAvailable => Size::Stretch,
StyleSize::AnchorSizeFunction(_) | StyleSize::AnchorContainingCalcFunction(_) => {
unreachable!("anchor-size() should be disabled")
},
@ -400,7 +400,7 @@ impl From<StyleMaxSize> for Size<LengthPercentage> {
StyleMaxSize::MaxContent => Size::MaxContent,
StyleMaxSize::FitContent => Size::FitContent,
StyleMaxSize::FitContentFunction(lp) => Size::FitContentFunction(lp.0),
StyleMaxSize::Stretch => Size::Stretch,
StyleMaxSize::Stretch | StyleMaxSize::WebkitFillAvailable => Size::Stretch,
StyleMaxSize::AnchorSizeFunction(_) | StyleMaxSize::AnchorContainingCalcFunction(_) => {
unreachable!("anchor-size() should be disabled")
},

View file

@ -30,7 +30,7 @@ pub fn dimension(val: &stylo::Size) -> taffy::Dimension {
stylo::Size::MinContent => taffy::Dimension::AUTO,
stylo::Size::FitContent => taffy::Dimension::AUTO,
stylo::Size::FitContentFunction(_) => taffy::Dimension::AUTO,
stylo::Size::Stretch => taffy::Dimension::AUTO,
stylo::Size::Stretch | stylo::Size::WebkitFillAvailable => taffy::Dimension::AUTO,
// Anchor positioning will be flagged off for time being
stylo::Size::AnchorSizeFunction(_) => unreachable!(),
@ -49,7 +49,7 @@ pub fn max_size_dimension(val: &stylo::MaxSize) -> taffy::Dimension {
stylo::MaxSize::MinContent => taffy::Dimension::AUTO,
stylo::MaxSize::FitContent => taffy::Dimension::AUTO,
stylo::MaxSize::FitContentFunction(_) => taffy::Dimension::AUTO,
stylo::MaxSize::Stretch => taffy::Dimension::AUTO,
stylo::MaxSize::Stretch | stylo::MaxSize::WebkitFillAvailable => taffy::Dimension::AUTO,
// Anchor positioning will be flagged off for time being
stylo::MaxSize::AnchorSizeFunction(_) => unreachable!(),