Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 57fdd17822df399a4c26a0a3f3ad8342051c1eff
      
https://github.com/WebKit/WebKit/commit/57fdd17822df399a4c26a0a3f3ad8342051c1eff
  Author: Sammy Gill <sammy.g...@apple.com>
  Date:   2023-12-19 (Tue, 19 Dec 2023)

  Changed paths:
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/contain-inline-size-grid-indefinite-height-min-height-flex-row-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/contain-inline-size-grid-indefinite-height-min-height-flex-row.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/contain-size-grid-indefinite-height-min-height-flex-row-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/contain-size-grid-indefinite-height-min-height-flex-row.html
    M Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp
    M Source/WebCore/rendering/RenderGrid.h

  Log Message:
  -----------
  [css-contain][css-grid] Relax size containment constraints on "Expand 
Flexible Tracks," portion of grid track sizing algorithm.
https://bugs.webkit.org/show_bug.cgi?id=266506
rdar://119736473

Reviewed by Alan Baradlay.

This patch expands upon 272085@main which fixed a bug related to an
interaction between grid layout and size containment. In particular,
the patch allowed the grid track sizing algorithm to stretch auto sized
tracks even during size containment.

For the exact same reason we also want to relax the size containment
constraint imposed upon the grid track sizing algorithm to allow it to
perform portions of the "Expand Flexible Tracks," section. The only
portion of this step we want to skip is when we are computing the flex
fraction and the free space is indefinite, since this is the only part of
this section that takes into consideration the grid's contents. To
compute the flex fraction in this case, the spec says that it is the
maximum of:

- For each flexible track, if the flexible track’s flex factor is
greater than one, the result of dividing the track’s base size by its
flex factor; otherwise, the track’s base size.
- For each grid item that crosses a flexible track, the result of
finding the size of an fr using all the grid tracks that the item
crosses and a space to fill of the item’s max-content contribution.

During the size containment "Sizing as if empty," phase we can
completely take into consideration the first computation, but we should
not compute or consider the second.

https://drafts.csswg.org/css-contain/#containment-size
https://drafts.csswg.org/css-grid-2/#algo-flex-tracks

* 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/contain-inline-size-grid-indefinite-height-min-height-flex-row-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/contain-inline-size-grid-indefinite-height-min-height-flex-row.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/contain-size-grid-indefinite-height-min-height-flex-row-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/contain-size-grid-indefinite-height-min-height-flex-row.html:
 Added.
* Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:
(WebCore::IndefiniteSizeStrategy::findUsedFlexFraction const):
(WebCore::GridTrackSizingAlgorithm::run):
* Source/WebCore/rendering/RenderGrid.h:

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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to