Changeset 215463 in webkit
- Timestamp:
- Apr 18, 2017 9:27:53 AM (7 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r215458 r215463 1 2017-04-18 Manuel Rego Casasnovas <rego@igalia.com> 2 3 [css-grid] Add support for percentage gaps 4 https://bugs.webkit.org/show_bug.cgi?id=170764 5 6 Reviewed by Sergio Villar Senin. 7 8 Import tests from Blink. 9 10 * fast/css-grid-layout/grid-gutters-as-percentage-expected.txt: Added. 11 * fast/css-grid-layout/grid-gutters-as-percentage.html: Added. 12 * fast/css-grid-layout/grid-gutters-get-set-expected.txt: 13 * fast/css-grid-layout/grid-gutters-get-set.html: 14 1 15 2017-04-18 Miguel Gomez <magomez@igalia.com> 2 16 -
trunk/LayoutTests/fast/css-grid-layout/grid-gutters-get-set-expected.txt
r200510 r215463 9 9 PASS window.getComputedStyle(gridGap, '').getPropertyValue('grid-row-gap') is "20px" 10 10 PASS window.getComputedStyle(gridGap, '').getPropertyValue('grid-column-gap') is "15px" 11 PASS window.getComputedStyle(gridPercentGap, '').getPropertyValue('grid-row-gap') is "10%" 12 PASS window.getComputedStyle(gridPercentGap, '').getPropertyValue('grid-column-gap') is "15%" 11 13 PASS window.getComputedStyle(gridSimpleGap, '').getPropertyValue('grid-row-gap') is "25px" 12 14 PASS window.getComputedStyle(gridSimpleGap, '').getPropertyValue('grid-column-gap') is "25px" 15 PASS window.getComputedStyle(gridSimplePercentGap, '').getPropertyValue('grid-row-gap') is "10%" 16 PASS window.getComputedStyle(gridSimplePercentGap, '').getPropertyValue('grid-column-gap') is "10%" 13 17 PASS window.getComputedStyle(gridColumnGap, '').getPropertyValue('grid-row-gap') is "0px" 14 18 PASS window.getComputedStyle(gridColumnGap, '').getPropertyValue('grid-column-gap') is "16px" … … 21 25 PASS window.getComputedStyle(gridRowColumnGaps, '').getPropertyValue('grid-row-gap') is "12px" 22 26 PASS window.getComputedStyle(gridRowColumnGaps, '').getPropertyValue('grid-column-gap') is "16px" 27 PASS window.getComputedStyle(gridRowColumnPercentGaps, '').getPropertyValue('grid-row-gap') is "10%" 28 PASS window.getComputedStyle(gridRowColumnPercentGaps, '').getPropertyValue('grid-column-gap') is "15%" 23 29 PASS window.getComputedStyle(gridRowColumnInheritGaps, '').getPropertyValue('grid-row-gap') is "25px" 24 30 PASS window.getComputedStyle(gridRowColumnInheritGaps, '').getPropertyValue('grid-column-gap') is "25px" -
trunk/LayoutTests/fast/css-grid-layout/grid-gutters-get-set.html
r213831 r215463 5 5 <style> 6 6 .gridGap { grid-gap: 20px 15px; } 7 .gridPercentGap { grid-gap: 10% 15%; } 7 8 .gridSimpleGap { grid-gap: 25px; } 9 .gridSimplePercentGap { grid-gap: 10%; } 8 10 .gridColumnGap { grid-column-gap: 2vw; } 9 11 .gridRowGap { grid-row-gap: 2em; } … … 11 13 grid-row-gap: 12px; 12 14 grid-column-gap: 1rem; 15 } 16 .gridRowColumnPercentGaps { 17 grid-row-gap: 10%; 18 grid-column-gap: 15%; 13 19 } 14 20 .gridRowColumnInheritGaps { … … 24 30 grid-column-gap: calc(2px + 1vw); 25 31 } 26 .gridInvalidRowGap { grid-row-gap: 10%; }32 .gridInvalidRowGap { grid-row-gap: -10px; } 27 33 .gridInvalidColumnGap { grid-column-gap: max-content; } 28 34 .gridInvalidMultipleRowColumnGaps { … … 45 51 <div class="grid" id="defaultGrid"></div> 46 52 <div class="grid gridGap" id="gridGap"></div> 53 <div class="grid gridPercentGap" id="gridPercentGap"></div> 47 54 <div class="grid gridSimpleGap" id="gridSimpleGap"></div> 55 <div class="grid gridSimplePercentGap" id="gridSimplePercentGap"></div> 48 56 <div class="grid gridColumnGap" id="gridColumnGap"></div> 49 57 <div class="grid gridRowGap" id="gridRowGap"></div> 50 58 <div class="grid gridCalcGaps" id="gridCalcGaps"></div> 51 59 <div class="grid gridRowColumnGaps" id="gridRowColumnGaps"></div> 60 <div class="grid gridRowColumnPercentGaps" id="gridRowColumnPercentGaps"></div> 52 61 <div class="grid gridSimpleGap"> 53 62 <div class="grid gridRowColumnInheritGaps" id="gridRowColumnInheritGaps"></div> … … 73 82 testGridGapDefinitionsValues("defaultGrid", "0px", "0px"); 74 83 testGridGapDefinitionsValues("gridGap", "20px", "15px"); 84 testGridGapDefinitionsValues("gridPercentGap", "10%", "15%"); 75 85 testGridGapDefinitionsValues("gridSimpleGap", "25px", "25px"); 86 testGridGapDefinitionsValues("gridSimplePercentGap", "10%", "10%"); 76 87 testGridGapDefinitionsValues("gridColumnGap", "0px", "16px"); 77 88 testGridGapDefinitionsValues("gridRowGap", "32px", "0px"); … … 79 90 testGridGapDefinitionsValues("gridRowColumnGaps", "12px", "16px"); 80 91 testGridGapDefinitionsValues("gridRowColumnGaps", "12px", "16px"); 92 testGridGapDefinitionsValues("gridRowColumnPercentGaps", "10%", "15%"); 81 93 testGridGapDefinitionsValues("gridRowColumnInheritGaps", "25px", "25px"); 82 94 testGridGapDefinitionsValues("gridRowColumnInitialGaps", "0px", "0px"); -
trunk/Source/WebCore/ChangeLog
r215461 r215463 1 2017-04-18 Manuel Rego Casasnovas <rego@igalia.com> 2 3 [css-grid] Add support for percentage gaps 4 https://bugs.webkit.org/show_bug.cgi?id=170764 5 6 Reviewed by Sergio Villar Senin. 7 8 Part of the code to support percentage gaps was already imported 9 from Blink in r213149 (bug #168657). However parsing was not enabled yet, 10 so some pieces were missing. 11 12 This patch accepts percentages in the parsing of grid-column-gap and 13 grid-row-gap properties, and the grid-gap shorthand. 14 On top of that it gets rid of GridTrackSizingAlgorithm::sizingOperation() 15 method as it's not needed. And instead it passes the specific operation 16 to each call to RenderGrid::guttersSize(), otherwise we would be getting 17 wrong results. 18 19 Test: fast/css-grid-layout/grid-gutters-as-percentage.html 20 21 * css/parser/CSSPropertyParser.cpp: 22 (WebCore::CSSPropertyParser::parseSingleValue): Add support for 23 percentage values. 24 (WebCore::CSSPropertyParser::parseShorthand): Ditto. 25 * rendering/GridTrackSizingAlgorithm.cpp: 26 (WebCore::IndefiniteSizeStrategy::recomputeUsedFlexFractionIfNeeded): 27 Pass the specific sizing operation. 28 * rendering/GridTrackSizingAlgorithm.h: Remove sizingOperation(). 29 * rendering/RenderGrid.cpp: 30 (WebCore::RenderGrid::computeTrackBasedLogicalHeight): Pass the specific 31 sizing operation. 32 (WebCore::RenderGrid::computeTrackSizesForDefiniteSize): Ditto. 33 (WebCore::RenderGrid::computeTrackSizesForIndefiniteSize): Ditto. 34 (WebCore::RenderGrid::populateGridPositionsForDirection): Ditto. 35 1 36 2017-04-18 Per Arne Vollan <pvollan@apple.com> 2 37 -
trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp
r215261 r215463 3990 3990 case CSSPropertyGridColumnGap: 3991 3991 case CSSPropertyGridRowGap: 3992 return consumeLength (m_range, m_context.mode, ValueRangeNonNegative);3992 return consumeLengthOrPercent(m_range, m_context.mode, ValueRangeNonNegative); 3993 3993 case CSSPropertyShapeMargin: 3994 3994 return consumeLengthOrPercent(m_range, m_context.mode, ValueRangeNonNegative); … … 5708 5708 return consumePerspectiveOrigin(important); 5709 5709 case CSSPropertyGridGap: { 5710 RefPtr<CSSValue> rowGap = consumeLength (m_range, m_context.mode, ValueRangeNonNegative);5711 RefPtr<CSSValue> columnGap = consumeLength (m_range, m_context.mode, ValueRangeNonNegative);5710 RefPtr<CSSValue> rowGap = consumeLengthOrPercent(m_range, m_context.mode, ValueRangeNonNegative); 5711 RefPtr<CSSValue> columnGap = consumeLengthOrPercent(m_range, m_context.mode, ValueRangeNonNegative); 5712 5712 if (!rowGap || !m_range.atEnd()) 5713 5713 return false; -
trunk/Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp
r213480 r215463 916 916 LayoutUnit freeSpace = checkMaxSize ? maxSize.value() : LayoutUnit(-1); 917 917 const Grid& grid = m_algorithm.grid(); 918 freeSpace = std::max(freeSpace, minSize.value()) - renderGrid->guttersSize(grid, ForRows, 0, grid.numTracks(ForRows), m_algorithm.sizingOperation());918 freeSpace = std::max(freeSpace, minSize.value()) - renderGrid->guttersSize(grid, ForRows, 0, grid.numTracks(ForRows), IntrinsicSizeComputation); 919 919 920 920 size_t numberOfTracks = m_algorithm.tracks(ForRows).size(); -
trunk/Source/WebCore/rendering/GridTrackSizingAlgorithm.h
r213149 r215463 118 118 #endif 119 119 120 SizingOperation sizingOperation() const { return m_sizingOperation; }121 122 120 private: 123 121 GridTrackSize gridTrackSize(GridTrackSizingDirection direction, unsigned translatedIndex) const { return gridTrackSize(direction, translatedIndex, m_sizingOperation); } -
trunk/Source/WebCore/rendering/RenderGrid.cpp
r214604 r215463 129 129 logicalHeight += row.baseSize(); 130 130 131 logicalHeight += guttersSize(m_grid, ForRows, 0, allRows.size(), m_trackSizingAlgorithm.sizingOperation());131 logicalHeight += guttersSize(m_grid, ForRows, 0, allRows.size(), TrackSizing); 132 132 133 133 return logicalHeight; … … 136 136 void RenderGrid::computeTrackSizesForDefiniteSize(GridTrackSizingDirection direction, LayoutUnit availableSpace) 137 137 { 138 LayoutUnit totalGuttersSize = guttersSize(m_grid, direction, 0, m_grid.numTracks(direction), m_trackSizingAlgorithm.sizingOperation());138 LayoutUnit totalGuttersSize = guttersSize(m_grid, direction, 0, m_grid.numTracks(direction), TrackSizing); 139 139 LayoutUnit freeSpace = availableSpace - totalGuttersSize; 140 140 … … 384 384 385 385 size_t numberOfTracks = algorithm.tracks(direction).size(); 386 LayoutUnit totalGuttersSize = guttersSize(grid, direction, 0, numberOfTracks, algorithm.sizingOperation());386 LayoutUnit totalGuttersSize = guttersSize(grid, direction, 0, numberOfTracks, IntrinsicSizeComputation); 387 387 388 388 minIntrinsicSize = algorithm.minContentSize() + totalGuttersSize; … … 1078 1078 // compute the gap between two consecutive tracks without examining the surrounding ones. 1079 1079 bool hasCollapsedTracks = m_grid.hasAutoRepeatEmptyTracks(direction); 1080 LayoutUnit gap = !hasCollapsedTracks ? gridGapForDirection(direction, m_trackSizingAlgorithm.sizingOperation()) : LayoutUnit();1080 LayoutUnit gap = !hasCollapsedTracks ? gridGapForDirection(direction, TrackSizing) : LayoutUnit(); 1081 1081 unsigned nextToLastLine = numberOfLines - 2; 1082 1082 for (unsigned i = 0; i < nextToLastLine; ++i) … … 1087 1087 // coincide exactly) except on the edges of the grid where they become 0. 1088 1088 if (hasCollapsedTracks) { 1089 gap = gridGapForDirection(direction, m_trackSizingAlgorithm.sizingOperation());1089 gap = gridGapForDirection(direction, TrackSizing); 1090 1090 unsigned remainingEmptyTracks = m_grid.autoRepeatEmptyTracks(direction)->size(); 1091 1091 LayoutUnit gapAccumulator;
Note: See TracChangeset
for help on using the changeset viewer.