Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 7ed83ab2929f7a2be55fb40888fea7ff02909f56 https://github.com/WebKit/WebKit/commit/7ed83ab2929f7a2be55fb40888fea7ff02909f56 Author: Cathie Chen <cathiec...@igalia.com> Date: 2022-10-25 (Tue, 25 Oct 2022)
Changed paths: M LayoutTests/TestExpectations M LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-003-expected.txt M LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-004-expected.txt M LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-005-expected.txt M LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-009-expected.txt M LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-029-expected.txt M LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-030-expected.txt M LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-031-expected.txt M LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-032-expected.txt M LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-logical-003-expected.txt M Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp M Source/WebCore/rendering/RenderBlock.cpp M Source/WebCore/rendering/RenderBlockFlow.cpp M Source/WebCore/rendering/RenderBox.cpp M Source/WebCore/rendering/RenderBox.h M Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp M Source/WebCore/rendering/RenderFileUploadControl.cpp M Source/WebCore/rendering/RenderFlexibleBox.cpp M Source/WebCore/rendering/RenderGrid.cpp M Source/WebCore/rendering/RenderGrid.h M Source/WebCore/rendering/RenderListBox.cpp M Source/WebCore/rendering/RenderMenuList.cpp M Source/WebCore/rendering/RenderReplaced.cpp M Source/WebCore/rendering/RenderReplaced.h M Source/WebCore/rendering/RenderSlider.cpp M Source/WebCore/rendering/RenderTextControl.cpp M Source/WebCore/rendering/RenderVideo.cpp M Source/WebCore/rendering/style/RenderStyle.cpp Log Message: ----------- Implement css property contain-intrinsic-size https://bugs.webkit.org/show_bug.cgi?id=238867 Reviewed by Alan Bujtas. This patch adds support for contain-intrinsic-size value "none | <length>". The value "auto && <length>" is not supported, because per [1] it depends on "content-visibility:auto" which is not supported yet. Per [2], the properties allow elements with size containment to specify an explicit intrinsic inner size, which is determined in RenderBox. These values will affect the intrinsic width calculation in computeIntrinsicLogicalWidths. As to intrinsic height, the value will be overridden at the point after layout children and before logical height calculation. For grid layout, we need to use explicit intrinsic inner size to calculate auto repetition, if width/height is auto. [1] https://github.com/w3c/csswg-drafts/issues/6308 [2] https://www.w3.org/TR/css-sizing-4/#intrinsic-size-override * LayoutTests/TestExpectations: * LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-003-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-004-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-005-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-009-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-029-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-030-expected.txt: The three failed cases are related to css scrollbar-gutter. * LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-031-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-032-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-logical-003-expected.txt: * Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp: (WebCore::GridTrackSizingAlgorithm::computeGridContainerIntrinsicSizes): Set explicitIntrinsicInnerLogicalSize to m_minContentSize and m_maxContentSize. (WebCore::GridTrackSizingAlgorithm::run): Don't skip stretching tracks for size containment if there is explicitIntrinsicInnerLogicalSize. * Source/WebCore/rendering/RenderBlock.cpp: (WebCore::RenderBlock::computeIntrinsicLogicalWidths const): Ditto. * Source/WebCore/rendering/RenderBlockFlow.cpp: (WebCore::RenderBlockFlow::computeIntrinsicLogicalWidths const): Ditto. * Source/WebCore/rendering/RenderBox.cpp: (WebCore::RenderBox::updateLogicalHeight): Set explicitIntrinsicHeight to logicalHeight if it exists. (WebCore::RenderBox::computeLogicalHeightWithoutLayout const): We should take account of explicitIntrinsicInnerLogicalHeight here. (WebCore::RenderBox::explicitIntrinsicInnerWidth const): (WebCore::RenderBox::explicitIntrinsicInnerHeight const): * Source/WebCore/rendering/RenderBox.h: (WebCore::RenderBox::explicitIntrinsicInnerLogicalWidth const): (WebCore::RenderBox::explicitIntrinsicInnerLogicalHeight const): * Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp: (WebCore::RenderDeprecatedFlexibleBox::computeIntrinsicLogicalWidths const): Ditto. * Source/WebCore/rendering/RenderFileUploadControl.cpp: (WebCore::RenderFileUploadControl::computeIntrinsicLogicalWidths const): Ditto. * Source/WebCore/rendering/RenderFlexibleBox.cpp: (WebCore::RenderFlexibleBox::computeIntrinsicLogicalWidths const): Ditto. * Source/WebCore/rendering/RenderGrid.cpp: (WebCore::RenderGrid::layoutBlock): Should use explicitIntrinsicInnerHeigth as the definite size if exists. (WebCore::RenderGrid::computeIntrinsicLogicalWidths const): Don't add gutterSize if it's explicitIntrinsicInnerLogicalSize. (WebCore::RenderGrid::computeTrackSizesForIndefiniteSize const): Ditto. (WebCore::RenderGrid::explicitIntrinsicInnerLogicalSize const): Ditto. (WebCore::RenderGrid::computeAutoRepeatTracksCount const): Use explicitIntrinsicInnerLogicalSize as availableSize if the size of grid container is not specified. (WebCore::RenderGrid::computeEmptyTracksForAutoRepeat const): The tracks of grid container with size containment are not empty if hasExplicitIntrinsicInnerLogicalSize. * Source/WebCore/rendering/RenderGrid.h: * Source/WebCore/rendering/RenderListBox.cpp: (WebCore::RenderListBox::computeIntrinsicLogicalWidths const): Ditto. (WebCore::RenderListBox::computeLogicalHeight const): Use explicitIntrinsicInnerLogicalHeight as estimated height not the sum of item height. * Source/WebCore/rendering/RenderMenuList.cpp: (RenderMenuList::computeIntrinsicLogicalWidths const): Ditto. * Source/WebCore/rendering/RenderReplaced.cpp: (WebCore::RenderReplaced::computeIntrinsicRatioInformation const): Don't let size containment effect aspect ratio. * Source/WebCore/rendering/RenderReplaced.h: Return explicitIntrinsicInnerSize if exits. * Source/WebCore/rendering/RenderSlider.cpp: (WebCore::RenderSlider::computeIntrinsicLogicalWidths const): Ditto. * Source/WebCore/rendering/RenderTextControl.cpp: (WebCore::RenderTextControl::computeIntrinsicLogicalWidths const): Ditto. * Source/WebCore/rendering/RenderVideo.cpp: (WebCore::RenderVideo::calculateIntrinsicSize): * Source/WebCore/rendering/style/RenderStyle.cpp: (WebCore::rareNonInheritedDataChangeRequiresLayout): The changes of contain-intrinsic-size should require layout. Canonical link: https://commits.webkit.org/255971@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes