⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 243218 in webkit


Ignore:
Timestamp:
Mar 20, 2019, 11:26:40 AM (7 years ago)
Author:
commit-queue@webkit.org
Message:

[css-grid] Always consider baseline shim for the minimum contribution
https://bugs.webkit.org/show_bug.cgi?id=195964

Patch by Oriol Brufau <Oriol Brufau> on 2019-03-20
Reviewed by Javier Fernandez.

LayoutTests/imported/w3c:

Import WPT tests.

  • web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-expected.txt: Added.
  • web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-lr-expected.txt: Added.
  • web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-lr.html: Added.
  • web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-rl-expected.txt: Added.
  • web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-rl.html: Added.
  • web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim.html: Added.
  • web-platform-tests/css/css-grid/layout-algorithm/w3c-import.log:

Source/WebCore:

Tests: imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-lr.html

imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-rl.html
imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim.html

Before this patch, the shim used for baseline alignment is not taken
into consideration when calculating the minimum contribution of a grid
item if its preferred size is auto, its minimum size is auto, and the
max track sizing function is a fixed small value. In this case, the
auto minimum size can produce a smaller track than if it was 0.

The specification needs to clarify how baseline shims interact with
minimum contributions (https://github.com/w3c/csswg-drafts/issues/3660),
but the above doesn't make sense.

  • rendering/GridTrackSizingAlgorithm.cpp:

(WebCore::GridTrackSizingAlgorithmStrategy::minSizeForChild const):

Location:
trunk
Files:
6 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r243041 r243218  
     12019-03-20  Oriol Brufau  <obrufau@igalia.com>
     2
     3        [css-grid] Always consider baseline shim for the minimum contribution
     4        https://bugs.webkit.org/show_bug.cgi?id=195964
     5
     6        Reviewed by Javier Fernandez.
     7
     8        Import WPT tests.
     9
     10        * web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-expected.txt: Added.
     11        * web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-lr-expected.txt: Added.
     12        * web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-lr.html: Added.
     13        * web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-rl-expected.txt: Added.
     14        * web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-rl.html: Added.
     15        * web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim.html: Added.
     16        * web-platform-tests/css/css-grid/layout-algorithm/w3c-import.log:
     17
    1182019-03-16  Youenn Fablet  <youenn@apple.com>
    219
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/w3c-import.log

    r241746 r243218  
    2525/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-layout-free-space-unit-expected.html
    2626/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-layout-free-space-unit.html
     27/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-lr.html
     28/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-rl.html
     29/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim.html
    2730/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-percent-cols-filled-shrinkwrap-001-expected.html
    2831/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-percent-cols-filled-shrinkwrap-001.html
  • trunk/Source/WebCore/ChangeLog

    r243211 r243218  
     12019-03-20  Oriol Brufau  <obrufau@igalia.com>
     2
     3        [css-grid] Always consider baseline shim for the minimum contribution
     4        https://bugs.webkit.org/show_bug.cgi?id=195964
     5
     6        Reviewed by Javier Fernandez.
     7
     8        Tests: imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-lr.html
     9               imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-rl.html
     10               imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim.html
     11
     12        Before this patch, the shim used for baseline alignment is not taken
     13        into consideration when calculating the minimum contribution of a grid
     14        item if its preferred size is auto, its minimum size is auto, and the
     15        max track sizing function is a fixed small value. In this case, the
     16        auto minimum size can produce a smaller track than if it was 0.
     17
     18        The specification needs to clarify how baseline shims interact with
     19        minimum contributions (https://github.com/w3c/csswg-drafts/issues/3660),
     20        but the above doesn't make sense.
     21
     22        * rendering/GridTrackSizingAlgorithm.cpp:
     23        (WebCore::GridTrackSizingAlgorithmStrategy::minSizeForChild const):
     24
    1252019-03-20  Simon Fraser  <simon.fraser@apple.com>
    226
  • trunk/Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp

    r241746 r243218  
    800800    GridTrackSizingDirection childInlineDirection = GridLayoutFunctions::flowAwareDirectionForChild(*renderGrid(), child, ForColumns);
    801801    bool isRowAxis = direction() == childInlineDirection;
     802    const Length& childSize = isRowAxis ? child.style().logicalWidth() : child.style().logicalHeight();
     803    if (!childSize.isAuto())
     804        return minContentForChild(child);
     805
    802806    const Length& childMinSize = isRowAxis ? child.style().logicalMinWidth() : child.style().logicalMinHeight();
    803     const Length& childSize = isRowAxis ? child.style().logicalWidth() : child.style().logicalHeight();
    804 
    805807    bool overflowIsVisible = isRowAxis ? child.style().overflowInlineDirection() == Overflow::Visible : child.style().overflowBlockDirection() == Overflow::Visible;
     808    LayoutUnit baselineShim = m_algorithm.baselineOffsetForChild(child, gridAxisForDirection(direction()));
     809
    806810    if (childSize.isAuto() && childMinSize.isAuto() && overflowIsVisible) {
    807811        auto minSize = minContentForChild(child);
     
    816820            auto marginAndBorderAndPadding = GridLayoutFunctions::marginLogicalSizeForChild(*renderGrid(), direction(), child);
    817821            marginAndBorderAndPadding += isRowAxis ? child.borderAndPaddingLogicalWidth() : child.borderAndPaddingLogicalHeight();
    818             minSize = std::max(maxBreadth, marginAndBorderAndPadding);
     822            minSize = std::max(maxBreadth, marginAndBorderAndPadding + baselineShim);
    819823        }
    820824        return minSize;
    821825    }
    822826
    823     if (!childSize.isAuto())
    824         return minContentForChild(child);
    825 
    826     LayoutUnit baselineShim = m_algorithm.baselineOffsetForChild(child, gridAxisForDirection(direction()));
    827827    LayoutUnit gridAreaSize = m_algorithm.gridAreaBreadthForChild(child, childInlineDirection);
    828828    if (isRowAxis)
Note: See TracChangeset for help on using the changeset viewer.