Changeset 270618 in webkit


Ignore:
Timestamp:
Dec 10, 2020 2:09:41 AM (20 months ago)
Author:
commit-queue@webkit.org
Message:

Support aspect-ratio on replaced elements
https://bugs.webkit.org/show_bug.cgi?id=219200

Patch by Rob Buis <rbuis@igalia.com> on 2020-12-10
Reviewed by Darin Adler.

Source/WebCore:

Take CSS aspect-ratio into account when calculating replaced element dimensions.

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::computeAspectRatioInformationForRenderBox const): override
the context renderer aspect ratio with the replaced element aspect ratio.
(WebCore::RenderReplaced::computeIntrinsicRatioInformation const): compute
intrinsicRatio using CSS aspect-ratio information if it is provided.

  • rendering/svg/RenderSVGRoot.cpp:

(WebCore::RenderSVGRoot::computeIntrinsicRatioInformation const): compute
intrinsicRatio using CSS aspect-ratio for SVG root elements.

LayoutTests:

Enable some tests that pass now.

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r270613 r270618  
     12020-12-10  Rob Buis  <rbuis@igalia.com>
     2
     3        Support aspect-ratio on replaced elements
     4        https://bugs.webkit.org/show_bug.cgi?id=219200
     5
     6        Reviewed by Darin Adler.
     7
     8        Enable some tests that pass now.
     9
     10        * TestExpectations:
     11
    1122020-12-09  Cathie Chen  <cathiechen@igalia.com>
    213
  • trunk/LayoutTests/TestExpectations

    r270610 r270618  
    44564456webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-021.html [ ImageOnlyFailure ]
    44574457webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-022.html [ ImageOnlyFailure ]
    4458 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-023.html [ ImageOnlyFailure ]
    44594458webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-024.html [ ImageOnlyFailure ]
    44604459webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/intrinsic-size-001.html [ ImageOnlyFailure ]
     
    44684467webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/percentage-resolution-002.html [ ImageOnlyFailure ]
    44694468webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/percentage-resolution-004.html [ ImageOnlyFailure ]
    4470 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-001.html [ ImageOnlyFailure ]
    4471 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-002.html [ ImageOnlyFailure ]
    4472 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-004.html [ ImageOnlyFailure ]
    4473 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-005.html [ ImageOnlyFailure ]
    4474 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-006.html [ ImageOnlyFailure ]
    4475 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-007.html [ ImageOnlyFailure ]
    4476 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-008.html [ ImageOnlyFailure ]
    4477 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-009.html [ ImageOnlyFailure ]
    4478 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-010.html [ ImageOnlyFailure ]
    4479 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-011.html [ ImageOnlyFailure ]
    4480 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-012.html [ ImageOnlyFailure ]
    4481 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-016.html [ ImageOnlyFailure ]
    4482 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-017.html [ ImageOnlyFailure ]
    4483 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-018.html [ ImageOnlyFailure ]
    4484 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-019.html [ ImageOnlyFailure ]
    4485 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-021.html [ ImageOnlyFailure ]
    4486 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-025.html [ ImageOnlyFailure ]
    4487 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-027.html [ ImageOnlyFailure ]
    44884469webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-001.html [ ImageOnlyFailure ]
    44894470webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-002.html [ ImageOnlyFailure ]
  • trunk/Source/WebCore/ChangeLog

    r270617 r270618  
     12020-12-10  Rob Buis  <rbuis@igalia.com>
     2
     3        Support aspect-ratio on replaced elements
     4        https://bugs.webkit.org/show_bug.cgi?id=219200
     5
     6        Reviewed by Darin Adler.
     7
     8        Take CSS aspect-ratio into account when calculating replaced element dimensions.
     9
     10        * rendering/RenderReplaced.cpp:
     11        (WebCore::RenderReplaced::computeAspectRatioInformationForRenderBox const): override
     12        the context renderer aspect ratio with the replaced element aspect ratio.
     13        (WebCore::RenderReplaced::computeIntrinsicRatioInformation const): compute
     14        intrinsicRatio using CSS aspect-ratio information if it is provided.
     15        * rendering/svg/RenderSVGRoot.cpp:
     16        (WebCore::RenderSVGRoot::computeIntrinsicRatioInformation const): compute
     17        intrinsicRatio using CSS aspect-ratio for SVG root elements.
     18
    1192020-12-09  Sergio Villar Senin  <svillar@igalia.com>
    220
  • trunk/Source/WebCore/rendering/RenderReplaced.cpp

    r270585 r270618  
    393393        contentRenderer->computeIntrinsicRatioInformation(intrinsicSize, intrinsicRatio);
    394394
     395        if (style().aspectRatioType() == AspectRatioType::Ratio || (style().aspectRatioType() == AspectRatioType::AutoAndRatio && !intrinsicRatio))
     396            intrinsicRatio = style().aspectRatioWidth() / style().aspectRatioHeight();
     397
    395398        // Handle zoom & vertical writing modes here, as the embedded document doesn't know about them.
    396399        intrinsicSize.scale(style().effectiveZoom());
     
    478481    intrinsicSize = FloatSize(intrinsicLogicalWidth(), intrinsicLogicalHeight());
    479482
     483    if (style().hasAspectRatio()) {
     484        intrinsicRatio = style().logicalAspectRatio();
     485        if (style().aspectRatioType() == AspectRatioType::Ratio)
     486            return;
     487    }
    480488    // Figure out if we need to compute an intrinsic ratio.
    481489    if (!hasAspectRatio())
  • trunk/Source/WebCore/rendering/svg/RenderSVGRoot.cpp

    r264364 r270618  
    8484    intrinsicSize.setHeight(floatValueForLength(svgSVGElement().intrinsicHeight(), 0));
    8585
    86 
     86    if (style().aspectRatioType() == AspectRatioType::Ratio) {
     87        intrinsicRatio = style().logicalAspectRatio();
     88        return;
     89    }
     90
     91    Optional<double> intrinsicRatioValue;
    8792    if (!intrinsicSize.isEmpty())
    88         intrinsicRatio = intrinsicSize.width() / static_cast<double>(intrinsicSize.height());
     93        intrinsicRatioValue = intrinsicSize.width() / static_cast<double>(intrinsicSize.height());
    8994    else {
    9095        // - If either/both of the ‘width’ and ‘height’ of the rootmost ‘svg’ element are in percentage units (or omitted), the
     
    95100        if (!viewBoxSize.isEmpty()) {
    96101            // The viewBox can only yield an intrinsic ratio, not an intrinsic size.
    97             intrinsicRatio = viewBoxSize.width() / static_cast<double>(viewBoxSize.height());
    98         }
    99     }
     102            intrinsicRatioValue = viewBoxSize.width() / static_cast<double>(viewBoxSize.height());
     103        }
     104    }
     105
     106    if (intrinsicRatioValue)
     107        intrinsicRatio = *intrinsicRatioValue;
     108    else if (style().aspectRatioType() == AspectRatioType::AutoAndRatio)
     109        intrinsicRatio = style().logicalAspectRatio();
    100110}
    101111
Note: See TracChangeset for help on using the changeset viewer.