Changeset 267503 in webkit
- Timestamp:
- Sep 23, 2020, 3:31:47 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 11 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/TestExpectations (modified) (1 diff)
-
LayoutTests/imported/w3c/ChangeLog (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-minimum-contribution-with-percentages-expected.txt (modified) (2 diffs)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-item-dynamic-min-contribution-001-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-height-orthogonal-001-expected.txt (modified) (3 diffs)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-lr-002-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-rl-002-expected.txt (modified) (1 diff)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp (modified) (10 diffs)
-
Source/WebCore/rendering/GridTrackSizingAlgorithm.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r267495 r267503 1 2020-09-23 obrufau@igalia.com <obrufau@igalia.com> 2 3 [css-grid] Clear the override width for computing percent margins 4 https://bugs.webkit.org/show_bug.cgi?id=209461 5 6 Reviewed by Manuel Rego Casasnovas. 7 8 Update test expectations. 9 10 * TestExpectations: 11 1 12 2020-09-23 Tadeu Zagallo <tzagallo@apple.com> 2 13 -
trunk/LayoutTests/TestExpectations
r267486 r267503 1165 1165 webkit.org/b/216145 imported/w3c/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-9.html [ ImageOnlyFailure ] 1166 1166 webkit.org/b/216145 imported/w3c/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-10.html [ ImageOnlyFailure ] 1167 webkit.org/b/209461 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-003.html [ ImageOnlyFailure ]1168 webkit.org/b/209461 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-004.html [ ImageOnlyFailure ]1169 webkit.org/b/209461 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-005.html [ ImageOnlyFailure ]1170 webkit.org/b/209461 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-006.html [ ImageOnlyFailure ]1171 webkit.org/b/209461 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-007.html [ ImageOnlyFailure ]1172 webkit.org/b/209461 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-008.html [ ImageOnlyFailure ]1173 webkit.org/b/209461 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-009.html [ ImageOnlyFailure ]1174 webkit.org/b/209461 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-010.html [ ImageOnlyFailure ]1175 webkit.org/b/209461 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-005.html [ ImageOnlyFailure ]1176 webkit.org/b/209461 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-006.html [ ImageOnlyFailure ]1177 webkit.org/b/209461 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-009.html [ ImageOnlyFailure ]1178 webkit.org/b/209461 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-010.html [ ImageOnlyFailure ]1179 1167 webkit.org/b/191461 imported/w3c/web-platform-tests/css/css-grid/grid-items/percentage-size-subitems-001.html [ ImageOnlyFailure ] 1180 1168 webkit.org/b/191462 imported/w3c/web-platform-tests/css/css-grid/grid-items/percentage-size-replaced-subitems-001.html [ ImageOnlyFailure ] -
trunk/LayoutTests/imported/w3c/ChangeLog
r267472 r267503 1 2020-09-23 obrufau@igalia.com <obrufau@igalia.com> 2 3 [css-grid] Clear the override width for computing percent margins 4 https://bugs.webkit.org/show_bug.cgi?id=209461 5 6 Reviewed by Manuel Rego Casasnovas. 7 8 Update test expectations. 9 10 The 2 grid-items-percentage-paddings tests are now expected to have some 11 failures because of bug 191964. In fact they were already failing before 12 this patch, as can be seen in wpt.fyi: 13 https://wpt.fyi/results/css/css-grid/grid-items?q=grid-items-percentage-paddings-vertical-%20-002.html 14 It's just that the bug that is being fixed made the test runner think 15 that the tests were passing, probably some racy condition or such. 16 17 * web-platform-tests/css/css-grid/grid-definition/grid-minimum-contribution-with-percentages-expected.txt: 18 * web-platform-tests/css/css-grid/grid-items/grid-item-dynamic-min-contribution-001-expected.txt: 19 * web-platform-tests/css/css-grid/grid-items/grid-items-minimum-height-orthogonal-001-expected.txt: 20 * web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-lr-002-expected.txt: 21 * web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-rl-002-expected.txt: 22 1 23 2020-09-23 Youenn Fablet <youenn@apple.com> 2 24 -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-minimum-contribution-with-percentages-expected.txt
r262809 r267503 3 3 PASS auto - rows 4 4 PASS min - columns 5 FAIL min - rows assert_equals: grid-template-rows expected "50px" but got "150px" 5 PASS min - rows 6 6 PASS max - columns 7 7 PASS max - rows … … 9 9 PASS size - rows 10 10 PASS min max - columns 11 FAIL min max - rows assert_equals: grid-template-rows expected "50px" but got "150px" 11 PASS min max - rows 12 12 PASS min size - columns 13 FAIL min size - rows assert_equals: grid-template-rows expected "50px" but got "200px" 13 PASS min size - rows 14 14 PASS max size - columns 15 15 PASS max size - rows 16 16 PASS min max size - columns 17 FAIL min max size - rows assert_equals: grid-template-rows expected "50px" but got "150px" 17 PASS min max size - rows 18 18 -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-item-dynamic-min-contribution-001-expected.txt
r264456 r267503 3 3 PASS Minimum size: 0% 4 4 PASS Minimum size: 100% 5 FAIL Minimum size: 200% assert_equals: height expected "200px" but got "400px" 6 FAIL Minimum size: 300% assert_equals: height expected "300px" but got "5400px" 5 PASS Minimum size: 200% 6 PASS Minimum size: 300% 7 7 PASS Minimum size: 400px 8 8 PASS Minimum size: 500px -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-height-orthogonal-001-expected.txt
r262852 r267503 3 3 PASS .grid 2 4 4 PASS .grid 3 5 FAIL .grid 4 assert_equals: 6 <div class="grid"> 7 <div class="minHeight60 marginTop5" data-expected-height="60"></div> 8 <div data-expected-height="65"></div> 9 </div> 10 height expected 65 but got 60 11 FAIL .grid 5 assert_equals: 12 <div class="grid"> 13 <div class="minHeight60 marginTop5 marginLeftAuto" data-expected-height="60"></div> 14 <div data-expected-height="65"></div> 15 </div> 16 height expected 65 but got 60 5 PASS .grid 4 6 PASS .grid 5 17 7 PASS .grid 6 18 FAIL .grid 7 assert_equals: 19 <div class="grid"> 20 <div class="minHeight60 marginBottom10" data-expected-height="60"></div> 21 <div data-expected-height="70"></div> 22 </div> 23 height expected 70 but got 60 8 PASS .grid 7 24 9 PASS .grid 8 25 FAIL .grid 9 assert_equals: 26 <div class="grid"> 27 <div class="minHeight60 marginTop5 marginBottom10" data-expected-height="60"></div> 28 <div data-expected-height="75"></div> 29 </div> 30 height expected 75 but got 60 10 PASS .grid 9 31 11 PASS .grid 10 32 12 PASS .grid 11 … … 42 22 PASS .grid 21 43 23 PASS .grid 22 44 FAIL .grid 23 assert_equals: 45 <div class="grid"> 46 <div class="minHeight60 marginTop5 marginBottom10 paddingTop6 paddingBottom3 borderTop2 borderBottom4" data-expected-height="75"></div> 47 <div data-expected-height="90"></div> 48 </div> 49 height expected 90 but got 75 24 PASS .grid 23 50 25 PASS .grid 24 51 26 PASS .grid 25 52 27 PASS .grid 26 53 FAIL .grid 27 assert_equals: 54 <div class="grid directionRTL"> 55 <div class="minHeight60 marginTop5" data-expected-height="60"></div> 56 <div data-expected-height="65"></div> 57 </div> 58 height expected 65 but got 60 59 FAIL .grid 28 assert_equals: 60 <div class="grid directionRTL"> 61 <div class="minHeight60 marginTop5 marginLeftAuto" data-expected-height="60"></div> 62 <div data-expected-height="65"></div> 63 </div> 64 height expected 65 but got 60 28 PASS .grid 27 29 PASS .grid 28 65 30 PASS .grid 29 66 FAIL .grid 30 assert_equals: 67 <div class="grid directionRTL"> 68 <div class="minHeight60 marginBottom10" data-expected-height="60"></div> 69 <div data-expected-height="70"></div> 70 </div> 71 height expected 70 but got 60 31 PASS .grid 30 72 32 PASS .grid 31 73 FAIL .grid 32 assert_equals: 74 <div class="grid directionRTL"> 75 <div class="minHeight60 marginTop5 marginBottom10" data-expected-height="60"></div> 76 <div data-expected-height="75"></div> 77 </div> 78 height expected 75 but got 60 33 PASS .grid 32 79 34 PASS .grid 33 80 35 PASS .grid 34 … … 90 45 PASS .grid 44 91 46 PASS .grid 45 92 FAIL .grid 46 assert_equals: 93 <div class="grid directionRTL"> 94 <div class="minHeight60 marginTop5 marginBottom10 paddingTop6 paddingBottom3 borderTop2 borderBottom4" data-expected-height="75"></div> 95 <div data-expected-height="90"></div> 96 </div> 97 height expected 90 but got 75 47 PASS .grid 46 98 48 Direction LTR 99 49 -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-lr-002-expected.txt
r262901 r267503 2 2 PASS .grid 1 3 3 PASS .grid 2 4 PASS .grid 3 5 PASS .grid 4 4 FAIL .grid 3 assert_equals: 5 <div class="grid"> 6 <div class="paddingTop50Percent" data-expected-padding-top="50" data-expected-width="10" data-expected-height="60">X</div> 7 <div data-offset-x="10" data-offset-y="0" data-expected-width="10" data-expected-height="100"></div> 8 </div> 9 height expected 60 but got 50 10 FAIL .grid 4 assert_equals: 11 <div class="grid"> 12 <div class="paddingBottom50Percent" data-expected-padding-bottom="50" data-expected-width="10" data-expected-height="60">X</div> 13 <div data-offset-x="10" data-offset-y="0" data-expected-width="10" data-expected-height="100"></div> 14 </div> 15 height expected 60 but got 50 6 16 PASS .grid 5 7 17 PASS .grid 6 8 PASS .grid 7 9 PASS .grid 8 18 FAIL .grid 7 assert_equals: 19 <div class="grid directionRTL"> 20 <div class="paddingTop50Percent" data-expected-padding-top="50" data-expected-width="10" data-expected-height="60">X</div> 21 <div data-offset-x="10" data-offset-y="400" data-expected-width="10" data-expected-height="100"></div> 22 </div> 23 height expected 60 but got 50 24 FAIL .grid 8 assert_equals: 25 <div class="grid directionRTL"> 26 <div class="paddingBottom50Percent" data-expected-padding-bottom="50" data-expected-width="10" data-expected-height="60">X</div> 27 <div data-offset-x="10" data-offset-y="400" data-expected-width="10" data-expected-height="100"></div> 28 </div> 29 height expected 60 but got 50 10 30 Direction LTR 11 31 -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-rl-002-expected.txt
r262901 r267503 2 2 PASS .grid 1 3 3 PASS .grid 2 4 PASS .grid 3 5 PASS .grid 4 4 FAIL .grid 3 assert_equals: 5 <div class="grid"> 6 <div class="paddingTop50Percent" data-expected-padding-top="50" data-expected-width="10" data-expected-height="60">X</div> 7 <div data-offset-x="0" data-offset-y="0" data-expected-width="10" data-expected-height="100"></div> 8 </div> 9 height expected 60 but got 50 10 FAIL .grid 4 assert_equals: 11 <div class="grid"> 12 <div class="paddingBottom50Percent" data-expected-padding-bottom="50" data-expected-width="10" data-expected-height="60">X</div> 13 <div data-offset-x="0" data-offset-y="0" data-expected-width="10" data-expected-height="100"></div> 14 </div> 15 height expected 60 but got 50 6 16 PASS .grid 5 7 17 PASS .grid 6 8 PASS .grid 7 9 PASS .grid 8 18 FAIL .grid 7 assert_equals: 19 <div class="grid directionRTL"> 20 <div class="paddingTop50Percent" data-expected-padding-top="50" data-expected-width="10" data-expected-height="60">X</div> 21 <div data-offset-x="0" data-offset-y="400" data-expected-width="10" data-expected-height="100"></div> 22 </div> 23 height expected 60 but got 50 24 FAIL .grid 8 assert_equals: 25 <div class="grid directionRTL"> 26 <div class="paddingBottom50Percent" data-expected-padding-bottom="50" data-expected-width="10" data-expected-height="60">X</div> 27 <div data-offset-x="0" data-offset-y="400" data-expected-width="10" data-expected-height="100"></div> 28 </div> 29 height expected 60 but got 50 10 30 Direction LTR 11 31 -
trunk/Source/WebCore/ChangeLog
r267502 r267503 1 2020-09-23 obrufau@igalia.com <obrufau@igalia.com> 2 3 [css-grid] Clear the override width for computing percent margins 4 https://bugs.webkit.org/show_bug.cgi?id=209461 5 6 Reviewed by Manuel Rego Casasnovas. 7 8 When calculating the min-content contribution of a grid item of an auto 9 sized grid track we must consider the grid item's margin. When the grid 10 item's area is indefinite, a percent margin is resolved to zero. 11 However, when performing a relayout, the percent margin may be solved 12 against the previously computed grid area, since the grid item has 13 already an OverrideContainingBlockLogicalWidth value. 14 15 In order to re-compute the percent margin properly, we need to clear 16 the previously override value. It's important to be careful of not 17 clearing the override value set during intrinsic size, since we need 18 it for the actual layout phase. Hence, we only reset the 'override' 19 value when we are executing a definite strategy. 20 21 This is a reland of r261841, which was reverted because it broke spotify. 22 This problem is now avoided thanks to bug 210089. 23 24 Tests: imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-minimum-contribution-with-percentages.html 25 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-item-dynamic-min-contribution-001.html 26 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-height-orthogonal-001.html 27 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-003.html 28 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-004.html 29 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-005.html 30 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-006.html 31 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-007.html 32 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-008.html 33 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-009.html 34 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-010.html 35 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-005.html 36 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-006.html 37 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-009.html 38 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-010.html 39 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-lr-002.html 40 imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-rl-002.html 41 42 * rendering/GridTrackSizingAlgorithm.cpp: 43 (WebCore::hasRelativeMarginOrPaddingForChild): 44 (WebCore::hasRelativeOrIntrinsicSizeForChild): 45 (WebCore::shouldClearOverrideContainingBlockContentSizeForChild): 46 (WebCore::GridTrackSizingAlgorithmStrategy::minSizeForChild const): 47 (WebCore::GridTrackSizingAlgorithmStrategy::minLogicalSizeForChild const): 48 (WebCore::DefiniteSizeStrategy::minLogicalSizeForChild const): 49 (WebCore::DefiniteSizeStrategy::minContentForChild const): 50 * rendering/GridTrackSizingAlgorithm.h: 51 1 52 2020-09-23 Carlos Garcia Campos <cgarcia@igalia.com> 2 53 -
trunk/Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp
r266675 r267503 107 107 } 108 108 109 static bool shouldClearOverrideContainingBlockContentSizeForChild(const RenderBox& child, GridTrackSizingDirection direction) 109 static bool hasRelativeMarginOrPaddingForChild(const RenderBox& child, GridTrackSizingDirection direction) 110 { 111 if (direction == ForColumns) 112 return child.style().marginStart().isPercentOrCalculated() || child.style().marginEnd().isPercentOrCalculated() || child.style().paddingStart().isPercentOrCalculated() || child.style().paddingEnd().isPercentOrCalculated(); 113 return child.style().marginBefore().isPercentOrCalculated() || child.style().marginAfter().isPercentOrCalculated() || child.style().paddingBefore().isPercentOrCalculated() || child.style().paddingAfter().isPercentOrCalculated(); 114 } 115 116 static bool hasRelativeOrIntrinsicSizeForChild(const RenderBox& child, GridTrackSizingDirection direction) 110 117 { 111 118 if (direction == ForColumns) 112 119 return child.hasRelativeLogicalWidth() || child.style().logicalWidth().isIntrinsicOrAuto(); 113 120 return child.hasRelativeLogicalHeight() || child.style().logicalHeight().isIntrinsicOrAuto(); 121 } 122 123 static bool shouldClearOverrideContainingBlockContentSizeForChild(const RenderBox& child, GridTrackSizingDirection direction) 124 { 125 return hasRelativeOrIntrinsicSizeForChild(child, direction) || hasRelativeMarginOrPaddingForChild(child, direction); 114 126 } 115 127 … … 120 132 else 121 133 child.setOverrideContainingBlockContentLogicalHeight(size); 122 }123 124 // FIXME: we borrowed this from RenderBlock. We cannot call it from here because it's protected for RenderObjects.125 static LayoutUnit marginIntrinsicLogicalWidthForChild(const RenderGrid* renderGrid, RenderBox& child)126 {127 // A margin has three types: fixed, percentage, and auto (variable).128 // Auto and percentage margins become 0 when computing min/max width.129 // Fixed margins can be added in as is.130 Length marginLeft = child.style().marginStartUsing(&renderGrid->style());131 Length marginRight = child.style().marginEndUsing(&renderGrid->style());132 LayoutUnit margin;133 if (marginLeft.isFixed())134 margin += marginLeft.value();135 if (marginRight.isFixed())136 margin += marginRight.value();137 return margin;138 134 } 139 135 … … 833 829 834 830 LayoutUnit gridAreaSize = m_algorithm.gridAreaBreadthForChild(child, childInlineDirection); 835 if (isRowAxis) 836 return minLogicalWidthForChild(child, childMinSize, gridAreaSize) + baselineShim; 837 838 bool overrideSizeHasChanged = updateOverrideContainingBlockContentSizeForChild(child, childInlineDirection, gridAreaSize); 839 layoutGridItemForMinSizeComputation(child, overrideSizeHasChanged); 840 841 return child.computeLogicalHeightUsing(MinSize, childMinSize, WTF::nullopt).valueOr(0) + child.marginLogicalHeight() + child.scrollbarLogicalHeight() + baselineShim; 831 return minLogicalSizeForChild(child, childMinSize, gridAreaSize) + baselineShim; 842 832 } 843 833 … … 921 911 } 922 912 913 LayoutUnit GridTrackSizingAlgorithmStrategy::minLogicalSizeForChild(RenderBox& child, const Length& childMinSize, LayoutUnit availableSize) const 914 { 915 GridTrackSizingDirection childInlineDirection = GridLayoutFunctions::flowAwareDirectionForChild(*renderGrid(), child, ForColumns); 916 bool isRowAxis = direction() == childInlineDirection; 917 if (isRowAxis) 918 return child.computeLogicalWidthInFragmentUsing(MinSize, childMinSize, availableSize, *renderGrid(), nullptr) + GridLayoutFunctions::marginLogicalSizeForChild(*renderGrid(), childInlineDirection, child); 919 bool overrideSizeHasChanged = updateOverrideContainingBlockContentSizeForChild(child, childInlineDirection, availableSize); 920 layoutGridItemForMinSizeComputation(child, overrideSizeHasChanged); 921 GridTrackSizingDirection childBlockDirection = GridLayoutFunctions::flowAwareDirectionForChild(*renderGrid(), child, ForRows); 922 return child.computeLogicalHeightUsing(MinSize, childMinSize, WTF::nullopt).valueOr(0) + GridLayoutFunctions::marginLogicalSizeForChild(*renderGrid(), childBlockDirection, child); 923 } 924 923 925 class IndefiniteSizeStrategy final : public GridTrackSizingAlgorithmStrategy { 924 926 public: … … 927 929 928 930 private: 929 LayoutUnit minLogicalWidthForChild(RenderBox&, Length childMinSize, LayoutUnit availableSize) const override;930 931 void layoutGridItemForMinSizeComputation(RenderBox&, bool overrideSizeHasChanged) const override; 931 932 void maximizeTracks(Vector<GridTrack>&, Optional<LayoutUnit>& freeSpace) override; … … 934 935 LayoutUnit freeSpaceForStretchAutoTracksStep() const override; 935 936 }; 936 937 LayoutUnit IndefiniteSizeStrategy::minLogicalWidthForChild(RenderBox& child, Length childMinSize, LayoutUnit availableSize) const938 {939 return child.computeLogicalWidthInFragmentUsing(MinSize, childMinSize, availableSize, *renderGrid(), nullptr) + marginIntrinsicLogicalWidthForChild(renderGrid(), child);940 }941 937 942 938 void IndefiniteSizeStrategy::layoutGridItemForMinSizeComputation(RenderBox& child, bool overrideSizeHasChanged) const … … 1028 1024 1029 1025 private: 1030 LayoutUnit minLogicalWidthForChild(RenderBox&, Length childMinSize, LayoutUnit availableSize) const override;1031 1026 void layoutGridItemForMinSizeComputation(RenderBox&, bool overrideSizeHasChanged) const override; 1032 1027 void maximizeTracks(Vector<GridTrack>&, Optional<LayoutUnit>& freeSpace) override; … … 1034 1029 bool recomputeUsedFlexFractionIfNeeded(double& flexFraction, LayoutUnit& totalGrowth) const override; 1035 1030 LayoutUnit freeSpaceForStretchAutoTracksStep() const override; 1031 LayoutUnit minContentForChild(RenderBox&) const override; 1032 LayoutUnit minLogicalSizeForChild(RenderBox&, const Length& childMinSize, LayoutUnit availableSize) const override; 1036 1033 }; 1037 1034 … … 1048 1045 } 1049 1046 1050 LayoutUnit DefiniteSizeStrategy::minLogicalWidthForChild(RenderBox& child, Length childMinSize, LayoutUnit availableSize) const 1051 { 1052 LayoutUnit marginLogicalWidth = 1053 GridLayoutFunctions::computeMarginLogicalSizeForChild(*renderGrid(), ForColumns, child); 1054 return child.computeLogicalWidthInFragmentUsing(MinSize, childMinSize, availableSize, *renderGrid(), nullptr) + marginLogicalWidth; 1047 LayoutUnit DefiniteSizeStrategy::minLogicalSizeForChild(RenderBox& child, const Length& childMinSize, LayoutUnit availableSize) const 1048 { 1049 GridTrackSizingDirection childInlineDirection = GridLayoutFunctions::flowAwareDirectionForChild(*renderGrid(), child, ForColumns); 1050 LayoutUnit indefiniteSize = direction() == childInlineDirection ? LayoutUnit() : LayoutUnit(-1); 1051 GridTrackSizingDirection flowAwareDirection = GridLayoutFunctions::flowAwareDirectionForChild(*renderGrid(), child, direction()); 1052 if (hasRelativeMarginOrPaddingForChild(child, flowAwareDirection) || (direction() != childInlineDirection && hasRelativeOrIntrinsicSizeForChild(child, flowAwareDirection))) 1053 setOverrideContainingBlockContentSizeForChild(child, direction(), indefiniteSize); 1054 return GridTrackSizingAlgorithmStrategy::minLogicalSizeForChild(child, childMinSize, availableSize); 1055 1055 } 1056 1056 … … 1089 1089 { 1090 1090 return m_algorithm.freeSpace(direction()).value(); 1091 } 1092 1093 LayoutUnit DefiniteSizeStrategy::minContentForChild(RenderBox& child) const 1094 { 1095 GridTrackSizingDirection childInlineDirection = GridLayoutFunctions::flowAwareDirectionForChild(*renderGrid(), child, ForColumns); 1096 if (direction() == childInlineDirection && child.needsLayout() && shouldClearOverrideContainingBlockContentSizeForChild(child, ForColumns)) 1097 setOverrideContainingBlockContentSizeForChild(child, childInlineDirection, LayoutUnit()); 1098 return GridTrackSizingAlgorithmStrategy::minContentForChild(child); 1091 1099 } 1092 1100 -
trunk/Source/WebCore/rendering/GridTrackSizingAlgorithm.h
r264488 r267503 253 253 WTF_MAKE_FAST_ALLOCATED; 254 254 public: 255 LayoutUnit minContentForChild(RenderBox&) const;255 virtual LayoutUnit minContentForChild(RenderBox&) const; 256 256 LayoutUnit maxContentForChild(RenderBox&) const; 257 257 LayoutUnit minSizeForChild(RenderBox&) const; … … 268 268 : m_algorithm(algorithm) { } 269 269 270 virtual LayoutUnit minLogical WidthForChild(RenderBox&, Length childMinSize, LayoutUnit availableSize) const = 0;270 virtual LayoutUnit minLogicalSizeForChild(RenderBox&, const Length& childMinSize, LayoutUnit availableSize) const; 271 271 virtual void layoutGridItemForMinSizeComputation(RenderBox&, bool overrideSizeHasChanged) const = 0; 272 272
Note:
See TracChangeset
for help on using the changeset viewer.