Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: fdfcbee33b6eca8b38c5592a6e6f5f27a6cfbce1
      
https://github.com/WebKit/WebKit/commit/fdfcbee33b6eca8b38c5592a6e6f5f27a6cfbce1
  Author: Anne van Kesteren <[email protected]>
  Date:   2026-03-17 (Tue, 17 Mar 2026)

  Changed paths:
    M LayoutTests/TestExpectations
    M LayoutTests/fast/box-sizing/fill-available-expected.txt
    M LayoutTests/fast/css-intrinsic-dimensions/height-positioned-expected.html
    M LayoutTests/fast/css-intrinsic-dimensions/width-avoid-floats-expected.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/normal-flow/margin-collapse-through-for-various-height-values.tentative-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/normal-flow/margin-collapse-through-for-various-height-values.tentative.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-flexbox/flex-basis-013-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/height-interpolation-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/max-height-interpolation-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/max-width-interpolation-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/min-height-interpolation-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/min-width-interpolation-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/animation/width-interpolation-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/keyword-sizes-on-abspos-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/keyword-sizes-on-flex-item-001-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/keyword-sizes-on-flex-item-002-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/keyword-sizes-on-floated-element-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/keyword-sizes-on-inline-block-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/keyword-sizes-on-replaced-element-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/aspect-ratio-1-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/aspect-ratio-2-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/auto-margins-1-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/block-height-001-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/block-height-002-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/block-height-004-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/block-height-005-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/block-height-007-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/block-height-008-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/flex-basis-1-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/flex-line-002-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/flex-line-003-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/flex-line-004-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/flex-line-005-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/flex-stretch-min-max-cross-001-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/grid-item-height-001-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/grid-item-height-001.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/indefinite-4-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/parsing-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/replaced-stretch-height-001-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-alias-block-size-001.tentative-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-alias-inline-size-001.tentative-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-alias-max-block-size-001.tentative-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-alias-max-inline-size-001.tentative-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-alias-min-block-size-001.tentative-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-alias-min-inline-size-001.tentative-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-block-size-001-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-block-size-002-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-block-size-003-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-inline-size-001-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-inline-size-002-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-inline-size-003-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-max-block-size-001-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-max-inline-size-001-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-min-block-size-001-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-min-inline-size-001-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-table-001-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-tables/fixed-layout-2-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/animation/calc-size-height-interpolation-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/animation/calc-size-width-interpolation-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/animation/interpolate-size-height-interpolation-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/animation/interpolate-size-max-height-interpolation-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/animation/interpolate-size-max-width-interpolation-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/animation/interpolate-size-min-height-interpolation-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/animation/interpolate-size-min-width-interpolation-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/animation/interpolate-size-width-interpolation-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-select-element/customizable-select/select-home-end-pagedown-pageup-detailed.optional-expected.txt
    R 
LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-sizing/stretch/block-height-007-expected.txt
    R 
LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-sizing/stretch/block-height-008-expected.txt
    R 
LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-block-size-001-expected.txt
    R 
LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-inline-size-001-expected.txt
    R 
LayoutTests/platform/ios/imported/w3c/web-platform-tests/css/css-sizing/stretch/indefinite-4-expected.txt
    R 
LayoutTests/platform/ios/imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-block-size-001-expected.txt
    R 
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-inline-size-001-expected.txt
    M Source/WebCore/css/CSSProperties.json
    M Source/WebCore/css/parser/CSSPropertyParserCustom.h
    M Source/WebCore/layout/layouttree/LayoutElementBox.cpp
    M Source/WebCore/rendering/GridLayoutFunctions.cpp
    M Source/WebCore/rendering/RenderBlock.cpp
    M Source/WebCore/rendering/RenderBox.cpp
    M Source/WebCore/rendering/RenderBox.h
    M Source/WebCore/rendering/RenderFlexibleBox.cpp
    M Source/WebCore/rendering/RenderFlexibleBox.h
    M Source/WebCore/rendering/RenderReplaced.cpp
    M Source/WebCore/style/values/flexbox/StyleFlexBasis.h
    M 
Source/WebCore/style/values/primitives/StyleLengthWrapper+CSSValueConversion.h
    M Source/WebCore/style/values/primitives/StyleLengthWrapper.h
    M Source/WebCore/style/values/sizing/StyleMaximumSize.h
    M Source/WebCore/style/values/sizing/StyleMinimumSize.h
    M Source/WebCore/style/values/sizing/StylePreferredSize.h

  Log Message:
  -----------
  Implement CSS Box Sizing stretch keyword
https://bugs.webkit.org/show_bug.cgi?id=277117
rdar://132539604

Reviewed by Alan Baradlay.

Implement the stretch keyword from CSS Box Sizing 4 section 6.1 for
width, height, min/max-width, min/max-height, and flex-basis.
-webkit-fill-available is kept as an alias.

Specification:

    https://drafts.csswg.org/css-sizing-4/#stretch-fit-sizing

Stretch sizes the margin box to fill the containing block. When the
containing block size is indefinite, stretch behaves as the initial
value (auto for width/height, 0 for min-*, none for max-*).

Block layout implements the margin-zeroing rule from CSS Box Sizing 4
section 6.1: in block layout (not flex/grid, not out-of-flow), when
the parent has no border or padding on a given side and is not an
independent formatting context, the child's margin on that side is
treated as zero for stretch sizing.

For replaced elements, min/max clamping is applied via the existing
RespectingMinMax helpers. Stretch with an indefinite containing block
is treated as none for min/max-height so aspect-ratio constraints apply
correctly. For height, the stretch path uses
computeSizingKeywordLogicalContentHeightUsing() directly rather than
the percentageOrCalculated() path, since the former returns a
content-box value (avoiding double border/padding subtraction) and
resolves the available height through
containingBlock->availableLogicalHeight() which already handles flex
items, grid items, and table cells. When the containing block height is
indefinite, stretch falls back to the intrinsic height.

For flexbox, stretch in min/max cross-size is handled by
applyStretchMinMaxCrossSize. In the block axis, stretch is treated
like intrinsic keywords in flexItemMainSizeIsDefinite (not computable
without a definite container).

fast/css-intrinsic-dimensions/height-positioned.html and
fast/css-intrinsic-dimensions/width-avoid-floats.html mismatched the
specification (and Chromium) and their expectations have been updated
accordingly.

New WPT tests:

    https://github.com/web-platform-tests/wpt/pull/58291
    https://github.com/web-platform-tests/wpt/pull/58486

Known remaining test issues that will be addressed separately through
implementation or specification changes:

    
imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-block-size-003.html
    
imported/w3c/web-platform-tests/css/css-sizing/stretch/stretch-inline-size-003.html
    
imported/w3c/web-platform-tests/css/CSS2/normal-flow/margin-collapse-through-for-various-height-values.tentative.html
    
imported/w3c/web-platform-tests/css/css-sizing/margin-collapse-with-indefinite-block-size-005.html

Canonical link: https://commits.webkit.org/309405@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to