Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[masonry] Optimize items that span multiple tracks
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