Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 7ed83ab2929f7a2be55fb40888fea7ff02909f56
https://github.com/WebKit/WebKit/commit/7ed83ab2929f7a2be55fb40888fea7ff02909f56
Author: Cathie Chen <[email protected]>
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
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes