Changeset 271745 in webkit


Ignore:
Timestamp:
Jan 22, 2021 8:29:46 AM (18 months ago)
Author:
commit-queue@webkit.org
Message:

[css-grid] Relayout grid items when definiteness changes.
https://bugs.webkit.org/show_bug.cgi?id=220657

LayoutTests/imported/w3c:

Tests percentage-size-subitems-002.html and relative-grandchild.html are
imported from WPT.

Patch by Ziran Sun <Ziran Sun> on 2021-01-22
Reviewed by Manuel Rego Casasnovas.

  • web-platform-tests/css/css-grid/grid-items/percentage-size-subitems-002-expected.html: Added.
  • web-platform-tests/css/css-grid/grid-items/percentage-size-subitems-002.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-grid/relative-grandchild.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-grid/relative-grandchild-expected.xht: Added.
  • web-platform-tests/css/css-grid/grid-items/w3c-import.log:

Source/WebCore:

Patch by Ziran Sun <Ziran Sun> on 2021-01-22
Reviewed by Manuel Rego Casasnovas.

When setting an override logical-height the definiteness can change causing %-height
children to resolve differently. This change adds this check to determine if a grid-item
needs relayout. It is an import of Chromium changes at
https://chromium-review.googlesource.com/c/chromium/src/+/2474917
Instead of adding maybeHasPercentHeightDescendant() in WebKit, this change calls
hasPercentHeightDescendants(). In Chromium it wasn't possible to use
hasPercentHeightDescendants() because of this quirk:
https://quirks.spec.whatwg.org/#the-percentage-height-calculation-quirk
WebKit doesn't seem to use the quirk for grid according to the image in
https://github.com/w3c/csswg-drafts/issues/5545

This also fixes issues in test:
grid-child-percent-basis-resize-1.html

Tests have been ported in WPT at
https://github.com/web-platform-tests/wpt/pull/26136

Tests: imported/w3c/web-platform-tests/css/css-grid/grid-items/percentage-size-subitems-002.html

imported/w3c/web-platform-tests/css/css-grid/relative-grandchild.html

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::applyStretchAlignmentToChildIfNeeded):

LayoutTests:

Patch by Ziran Sun <Ziran Sun> on 2021-01-22
Reviewed by Manuel Rego Casasnovas.

Location:
trunk
Files:
4 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r271738 r271745  
     12021-01-22  Ziran Sun  <zsun@igalia.com>
     2
     3        [css-grid] Relayout grid items when definiteness changes.
     4        https://bugs.webkit.org/show_bug.cgi?id=220657
     5
     6        Reviewed by Manuel Rego Casasnovas.
     7
     8        * TestExpectations:
     9
    1102021-01-21  Rob Buis  <rbuis@igalia.com>
    211
  • trunk/LayoutTests/TestExpectations

    r271679 r271745  
    39713971webkit.org/b/212246 imported/w3c/web-platform-tests/css/css-grid/alignment/grid-self-alignment-baseline-with-grid-003.html [ ImageOnlyFailure ]
    39723972webkit.org/b/212246 imported/w3c/web-platform-tests/css/css-grid/alignment/grid-self-alignment-baseline-with-grid-004.html [ ImageOnlyFailure ]
    3973 webkit.org/b/212246 imported/w3c/web-platform-tests/css/css-grid/grid-child-percent-basis-resize-1.html [ ImageOnlyFailure ]
    39743973webkit.org/b/212246 imported/w3c/web-platform-tests/css/css-grid/grid-model/grid-areas-overflowing-grid-container-001.html [ ImageOnlyFailure ]
    39753974webkit.org/b/212246 imported/w3c/web-platform-tests/css/css-grid/grid-model/grid-areas-overflowing-grid-container-002.html [ ImageOnlyFailure ]
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r271735 r271745  
     12021-01-22  Ziran Sun  <zsun@igalia.com>
     2
     3        [css-grid] Relayout grid items when definiteness changes.
     4        https://bugs.webkit.org/show_bug.cgi?id=220657
     5
     6        Tests percentage-size-subitems-002.html and relative-grandchild.html are
     7        imported from WPT.
     8
     9        Reviewed by Manuel Rego Casasnovas.
     10
     11        * web-platform-tests/css/css-grid/grid-items/percentage-size-subitems-002-expected.html: Added.
     12        * web-platform-tests/css/css-grid/grid-items/percentage-size-subitems-002.html: Added.
     13        * LayoutTests/imported/w3c/web-platform-tests/css/css-grid/relative-grandchild.html: Added.
     14        * LayoutTests/imported/w3c/web-platform-tests/css/css-grid/relative-grandchild-expected.xht: Added.
     15        * web-platform-tests/css/css-grid/grid-items/w3c-import.log:
     16
    1172021-01-21  Devin Rousso  <drousso@apple.com>
    218
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/w3c-import.log

    r266602 r271745  
    277277/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/percentage-size-subitems-001-expected.html
    278278/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/percentage-size-subitems-001.html
     279/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/percentage-size-subitems-002.html
    279280/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/ref-filled-green-100px-square-image.html
    280281/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/remove-svg-grid-item-001-expected.html
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/w3c-import.log

    r262056 r271745  
    3535/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-tracks-stretched-with-different-flex-factors-sum.html
    3636/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/inheritance.html
     37/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/relative-grandchild.html
    3738/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/table-grid-item-dynamic-001-expected.html
    3839/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/table-grid-item-dynamic-001.html
  • trunk/Source/WebCore/ChangeLog

    r271744 r271745  
     12021-01-22  Ziran Sun  <zsun@igalia.com>
     2
     3        [css-grid] Relayout grid items when definiteness changes.
     4        https://bugs.webkit.org/show_bug.cgi?id=220657
     5
     6        Reviewed by Manuel Rego Casasnovas.
     7
     8        When setting an override logical-height the definiteness can change causing %-height
     9        children to resolve differently. This change adds this check to determine if a grid-item
     10        needs relayout. It is an import of Chromium changes at
     11        https://chromium-review.googlesource.com/c/chromium/src/+/2474917
     12        Instead of adding maybeHasPercentHeightDescendant() in WebKit, this change calls
     13        hasPercentHeightDescendants(). In Chromium it wasn't possible to use
     14        hasPercentHeightDescendants() because of this quirk:
     15        https://quirks.spec.whatwg.org/#the-percentage-height-calculation-quirk
     16        WebKit doesn't seem to use the quirk for grid according to the image in
     17        https://github.com/w3c/csswg-drafts/issues/5545
     18
     19        This also fixes issues in test:
     20        grid-child-percent-basis-resize-1.html
     21
     22        Tests have been ported in WPT at
     23        https://github.com/web-platform-tests/wpt/pull/26136
     24
     25        Tests: imported/w3c/web-platform-tests/css/css-grid/grid-items/percentage-size-subitems-002.html
     26               imported/w3c/web-platform-tests/css/css-grid/relative-grandchild.html
     27
     28        * rendering/RenderGrid.cpp:
     29        (WebCore::RenderGrid::applyStretchAlignmentToChildIfNeeded):
     30
    1312021-01-22  Kate Cheney  <katherine_cheney@apple.com>
    232
  • trunk/Source/WebCore/rendering/RenderGrid.cpp

    r271521 r271745  
    11391139        LayoutUnit desiredLogicalHeight = child.constrainLogicalHeightByMinMax(stretchedLogicalHeight, -1_lu);
    11401140        child.setOverridingLogicalHeight(desiredLogicalHeight);
    1141         if (desiredLogicalHeight != child.logicalHeight()) {
    1142             // FIXME: Can avoid laying out here in some cases. See https://webkit.org/b/87905.
     1141
     1142        // Checking the logical-height of a child isn't enough. Setting an override logical-height
     1143        // changes the definiteness, resulting in percentages to resolve differently.
     1144        //
     1145        // FIXME: Can avoid laying out here in some cases. See https://webkit.org/b/87905.
     1146        if (desiredLogicalHeight != child.logicalHeight() || (is<RenderBlock>(child) && downcast<RenderBlock>(child).hasPercentHeightDescendants())) {
    11431147            child.setLogicalHeight(0_lu);
    11441148            child.setNeedsLayout(MarkOnlyThis);
Note: See TracChangeset for help on using the changeset viewer.