Skip to content

Commit

Permalink
[masonry] Optimize items that span multiple tracks
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=276733
rdar://problem/132435056

Reviewed by Sammy Gill and Yusuke Suzuki.

The implementation is split up into several steps.

1. Gather indefinite items into groups, and calculate their min/max sizes. Definite items
should be documented for later use too.

2. Update intrinsic tracks with single span items.

3. Convert indefinite items to definite items.

3. Update instrinsic tracks with multi span items that do not cross a flex track.

4. Update flex tracks with items that are single or multi span that cross a flex track.

Note: This masonry implementation does not support Subgrid at this point.

* LayoutTests/TestExpectations:
* Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:
 (WebCore::GridTrackSizingAlgorithm::computeTrackBasedSize const):
 (WebCore::GridTrackSizingAlgorithm::sizeTrackToFitSingleSpanMasonryGroup):
 (WebCore::GridTrackSizingAlgorithm::itemSizeForTrackSizeComputationPhaseMasonry const):
 (WebCore::GridTrackSizingAlgorithm::increaseSizesToAccommodateSpanningItemsMasonry):
 (WebCore::GridTrackSizingAlgorithm::increaseSizesToAccommodateSpanningItemsMasonryWithFlex):
 (WebCore::GridTrackSizingAlgorithm::convertIndefiniteItemsToDefiniteMasonry):
 (WebCore::GridTrackSizingAlgorithm::distributeSpaceToTracks const):
 (WebCore::GridTrackSizingAlgorithmStrategy::minContentForGridItem const):
 (WebCore::GridTrackSizingAlgorithm::canParticipateInBaselineAlignment const):
 (WebCore::GridTrackSizingAlgorithm::computeIndefiniteItemsForMasonry):
 (WebCore::GridTrackSizingAlgorithm::resolveIntrinsicTrackSizesMasonry):
 (WebCore::GridTrackSizingAlgorithm::accumulateIntrinsicSizesForTrackMasonry): Deleted.
 (WebCore::GridTrackSizingAlgorithm::computeIndefiniteItemsForMasonry const): Deleted.
* Source/WebCore/rendering/GridTrackSizingAlgorithm.h:

Canonical link: https://commits.webkit.org/282464@main
  • Loading branch information
stwrt committed Aug 19, 2024
1 parent 3aba769 commit f10662f
Show file tree
Hide file tree
Showing 3 changed files with 308 additions and 146 deletions.
1 change: 0 additions & 1 deletion LayoutTests/TestExpectations
Original file line number Diff line number Diff line change
Expand Up @@ -1699,7 +1699,6 @@ imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/gap/masonry-gap-0
webkit.org/b/266091 imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/grid-placement/masonry-grid-placement-named-lines-002.html [ ImageOnlyFailure ]

webkit.org/b/266091 imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-001.html [ ImageOnlyFailure ]
webkit.org/b/266091 imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-002.html [ ImageOnlyFailure ]
webkit.org/b/266091 imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-003.html [ ImageOnlyFailure ]
webkit.org/b/266091 imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-004.html [ ImageOnlyFailure ]
webkit.org/b/266091 imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-005.html [ ImageOnlyFailure ]
Expand Down
Loading

0 comments on commit f10662f

Please sign in to comment.