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

Reply via email to