Changeset 271948 in webkit


Ignore:
Timestamp:
Jan 27, 2021 6:13:56 AM (18 months ago)
Author:
commit-queue@webkit.org
Message:

Handle zero aspect-ratio width/height
https://bugs.webkit.org/show_bug.cgi?id=220970

Patch by Rob Buis <rbuis@igalia.com> on 2021-01-27
Reviewed by Manuel Rego Casasnovas.

Source/WebCore:

Treat aspect-ratio with zero width and/or height internally
as auto, but when serializing maintain the original input.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • rendering/style/RenderStyleConstants.cpp:

(WebCore::operator<<):

  • rendering/style/RenderStyleConstants.h:
  • style/StyleBuilderCustom.h:

(WebCore::Style::BuilderCustom::applyValueAspectRatio):

LayoutTests:

Enable some tests that pass now.

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r271944 r271948  
     12021-01-27  Rob Buis  <rbuis@igalia.com>
     2
     3        Handle zero aspect-ratio width/height
     4        https://bugs.webkit.org/show_bug.cgi?id=220970
     5
     6        Reviewed by Manuel Rego Casasnovas.
     7
     8        Enable some tests that pass now.
     9
     10        * TestExpectations:
     11
    1122021-01-27  Manuel Rego Casasnovas  <rego@igalia.com>
    213
  • trunk/LayoutTests/TestExpectations

    r271939 r271948  
    44594459webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-032.html [ ImageOnlyFailure ]
    44604460webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/table-element-001.html [ ImageOnlyFailure ]
    4461 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/zero-or-infinity-001.html [ ImageOnlyFailure ]
    4462 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/zero-or-infinity-002.html [ ImageOnlyFailure ]
    4463 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/zero-or-infinity-004.html [ ImageOnlyFailure ]
    4464 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/zero-or-infinity-006.html [ ImageOnlyFailure ]
    4465 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/zero-or-infinity-007.html [ ImageOnlyFailure ]
    4466 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/zero-or-infinity-008.html [ ImageOnlyFailure ]
    4467 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/zero-or-infinity-009.html [ ImageOnlyFailure ]
    4468 webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/aspect-ratio/zero-or-infinity-010.html [ ImageOnlyFailure ]
    44694461webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-001.html [ ImageOnlyFailure ]
    44704462webkit.org/b/214463 imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/contain-intrinsic-size-002.html [ ImageOnlyFailure ]
  • trunk/Source/WebCore/ChangeLog

    r271946 r271948  
     12021-01-27  Rob Buis  <rbuis@igalia.com>
     2
     3        Handle zero aspect-ratio width/height
     4        https://bugs.webkit.org/show_bug.cgi?id=220970
     5
     6        Reviewed by Manuel Rego Casasnovas.
     7
     8        Treat aspect-ratio with zero width and/or height internally
     9        as auto, but when serializing maintain the original input.
     10
     11        * css/CSSComputedStyleDeclaration.cpp:
     12        (WebCore::ComputedStyleExtractor::valueForPropertyInStyle):
     13        * rendering/style/RenderStyleConstants.cpp:
     14        (WebCore::operator<<):
     15        * rendering/style/RenderStyleConstants.h:
     16        * style/StyleBuilderCustom.h:
     17        (WebCore::Style::BuilderCustom::applyValueAspectRatio):
     18
    1192021-01-27  Antti Koivisto  <antti@apple.com>
    220
  • trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp

    r271480 r271948  
    34733473            case AspectRatioType::Auto:
    34743474                return cssValuePool.createIdentifierValue(CSSValueAuto);
     3475            case AspectRatioType::AutoZero:
    34753476            case AspectRatioType::AutoAndRatio:
    34763477            case AspectRatioType::Ratio: {
     
    34783479                ratioList->append(cssValuePool.createValue(style.aspectRatioWidth(), CSSUnitType::CSS_NUMBER));
    34793480                ratioList->append(cssValuePool.createValue(style.aspectRatioHeight(), CSSUnitType::CSS_NUMBER));
    3480                 if (style.aspectRatioType() == AspectRatioType::Ratio)
     3481                if (style.aspectRatioType() != AspectRatioType::AutoAndRatio)
    34813482                    return ratioList;
    34823483                auto list = CSSValueList::createSpaceSeparated();
  • trunk/Source/WebCore/rendering/style/RenderStyleConstants.cpp

    r269820 r271948  
    9494    case AspectRatioType::Ratio: ts << "ratio"; break;
    9595    case AspectRatioType::AutoAndRatio: ts << "autoandratio"; break;
     96    case AspectRatioType::AutoZero: ts << "autozero"; break;
    9697    }
    9798    return ts;
  • trunk/Source/WebCore/rendering/style/RenderStyleConstants.h

    r269820 r271948  
    520520    Auto,
    521521    Ratio,
    522     AutoAndRatio
     522    AutoAndRatio,
     523    AutoZero
    523524};
    524525
  • trunk/Source/WebCore/style/StyleBuilderCustom.h

    r271688 r271948  
    11801180    }
    11811181
    1182     builderState.style().setAspectRatioType(AspectRatioType::Ratio);
    11831182    ASSERT(list.length() == 2);
    1184     builderState.style().setAspectRatio(downcast<CSSPrimitiveValue>(list.item(0))->doubleValue(), downcast<CSSPrimitiveValue>(list.item(1))->doubleValue());
     1183    auto width = downcast<CSSPrimitiveValue>(list.item(0))->doubleValue();
     1184    auto height = downcast<CSSPrimitiveValue>(list.item(1))->doubleValue();
     1185    if (!width || !height)
     1186        builderState.style().setAspectRatioType(AspectRatioType::AutoZero);
     1187    else
     1188        builderState.style().setAspectRatioType(AspectRatioType::Ratio);
     1189    builderState.style().setAspectRatio(width, height);
    11851190}
    11861191
Note: See TracChangeset for help on using the changeset viewer.