Changeset 250730 in webkit


Ignore:
Timestamp:
Oct 4, 2019 10:30:16 AM (5 years ago)
Author:
jh718.park@samsung.com
Message:

Negative radii in radial gradients should be rejected.
https://bugs.webkit.org/show_bug.cgi?id=202412

Per the spec, https://drafts.csswg.org/css-images-3/#radial-gradients
"Negative values are invalid.",
we reject negative radii values in radial-gradient.

This patch rejects negative radii during radial-gradient parsing
for both webkit prefixed and non-prefixed ones.

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/compat/webkit-radial-gradient-radii-expected.txt: Added.
  • web-platform-tests/compat/webkit-radial-gradient-radii.html: Added.
  • web-platform-tests/css/css-backgrounds/parsing/background-image-invalid-expected.txt: Added.
  • web-platform-tests/css/css-backgrounds/parsing/background-image-invalid.html: Added.

Source/WebCore:

Tests: imported/blink/css-parser/webkit-gradient.html

imported/w3c/web-platform-tests/compat/webkit-radial-gradient-radii.html
imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-image-invalid.html

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::consumeDeprecatedGradient):
(WebCore::CSSPropertyParserHelpers::consumeDeprecatedRadialGradient):
(WebCore::CSSPropertyParserHelpers::consumeRadialGradient):

LayoutTests:

  • imported/blink/css-parser/webkit-gradient-expected.txt: Added.
  • imported/blink/css-parser/webkit-gradient.html: Added.
Location:
trunk
Files:
9 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r250727 r250730  
     12019-10-04  Joonghun Park  <jh718.park@samsung.com>
     2
     3        Negative radii in radial gradients should be rejected.
     4        https://bugs.webkit.org/show_bug.cgi?id=202412
     5
     6        Per the spec, https://drafts.csswg.org/css-images-3/#radial-gradients
     7        "Negative values are invalid.",
     8        we reject negative radii values in radial-gradient.
     9
     10        This patch rejects negative radii during radial-gradient parsing
     11        for both webkit prefixed and non-prefixed ones.
     12
     13        Reviewed by Antti Koivisto.
     14
     15        * imported/blink/css-parser/webkit-gradient-expected.txt: Added.
     16        * imported/blink/css-parser/webkit-gradient.html: Added.
     17
    1182019-10-04  youenn fablet  <youenn@apple.com>
    219
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r250721 r250730  
     12019-10-04  Joonghun Park  <jh718.park@samsung.com>
     2
     3        Negative radii in radial gradients should be rejected.
     4        https://bugs.webkit.org/show_bug.cgi?id=202412
     5
     6        Per the spec, https://drafts.csswg.org/css-images-3/#radial-gradients
     7        "Negative values are invalid.",
     8        we reject negative radii values in radial-gradient.
     9
     10        This patch rejects negative radii during radial-gradient parsing
     11        for both webkit prefixed and non-prefixed ones.
     12
     13        Reviewed by Antti Koivisto.
     14
     15        * web-platform-tests/compat/webkit-radial-gradient-radii-expected.txt: Added.
     16        * web-platform-tests/compat/webkit-radial-gradient-radii.html: Added.
     17        * web-platform-tests/css/css-backgrounds/parsing/background-image-invalid-expected.txt: Added.
     18        * web-platform-tests/css/css-backgrounds/parsing/background-image-invalid.html: Added.
     19
    1202019-10-04  Chris Lord  <clord@igalia.com>
    221
  • trunk/Source/WebCore/ChangeLog

    r250728 r250730  
     12019-10-04  Joonghun Park  <jh718.park@samsung.com>
     2
     3        Negative radii in radial gradients should be rejected.
     4        https://bugs.webkit.org/show_bug.cgi?id=202412
     5
     6        Per the spec, https://drafts.csswg.org/css-images-3/#radial-gradients
     7        "Negative values are invalid.",
     8        we reject negative radii values in radial-gradient.
     9
     10        This patch rejects negative radii during radial-gradient parsing
     11        for both webkit prefixed and non-prefixed ones.
     12
     13        Reviewed by Antti Koivisto.
     14
     15        Tests: imported/blink/css-parser/webkit-gradient.html
     16               imported/w3c/web-platform-tests/compat/webkit-radial-gradient-radii.html
     17               imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-image-invalid.html
     18
     19        * css/parser/CSSPropertyParserHelpers.cpp:
     20        (WebCore::CSSPropertyParserHelpers::consumeDeprecatedGradient):
     21        (WebCore::CSSPropertyParserHelpers::consumeDeprecatedRadialGradient):
     22        (WebCore::CSSPropertyParserHelpers::consumeRadialGradient):
     23
    1242019-10-04  Alex Christensen  <achristensen@webkit.org>
    225
  • trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp

    r246490 r250730  
    996996        return nullptr;
    997997
    998     RefPtr<CSSPrimitiveValue> point = consumeDeprecatedGradientPoint(args, true);
     998    auto point = consumeDeprecatedGradientPoint(args, true);
    999999    if (!point)
    10001000        return nullptr;
     
    10101010    // For radial gradients only, we now expect a numeric radius.
    10111011    if (isDeprecatedRadialGradient) {
    1012         RefPtr<CSSPrimitiveValue> radius = consumeNumber(args, ValueRangeAll);
     1012        auto radius = consumeNumber(args, ValueRangeNonNegative);
    10131013        if (!radius || !consumeCommaIncludingWhitespace(args))
    10141014            return nullptr;
     
    10291029        if (!consumeCommaIncludingWhitespace(args))
    10301030            return nullptr;
    1031         RefPtr<CSSPrimitiveValue> radius = consumeNumber(args, ValueRangeAll);
     1031        auto radius = consumeNumber(args, ValueRangeNonNegative);
    10321032        if (!radius)
    10331033            return nullptr;
     
    11131113    result->setSecondY(centerY.copyRef());
    11141114
    1115     RefPtr<CSSPrimitiveValue> shape = consumeIdent<CSSValueCircle, CSSValueEllipse>(args);
    1116     RefPtr<CSSPrimitiveValue> sizeKeyword = consumeIdent<CSSValueClosestSide, CSSValueClosestCorner, CSSValueFarthestSide, CSSValueFarthestCorner, CSSValueContain, CSSValueCover>(args);
     1115    auto shape = consumeIdent<CSSValueCircle, CSSValueEllipse>(args);
     1116    auto sizeKeyword = consumeIdent<CSSValueClosestSide, CSSValueClosestCorner, CSSValueFarthestSide, CSSValueFarthestCorner, CSSValueContain, CSSValueCover>(args);
    11171117    if (!shape)
    11181118        shape = consumeIdent<CSSValueCircle, CSSValueEllipse>(args);
     
    11221122    // Or, two lengths or percentages
    11231123    if (!shape && !sizeKeyword) {
    1124         RefPtr<CSSPrimitiveValue> horizontalSize = consumeLengthOrPercent(args, cssParserMode, ValueRangeAll);
     1124        auto horizontalSize = consumeLengthOrPercent(args, cssParserMode, ValueRangeNonNegative);
    11251125        RefPtr<CSSPrimitiveValue> verticalSize;
    11261126        if (horizontalSize) {
    1127             verticalSize = consumeLengthOrPercent(args, cssParserMode, ValueRangeAll);
     1127            verticalSize = consumeLengthOrPercent(args, cssParserMode, ValueRangeNonNegative);
    11281128            if (!verticalSize)
    11291129                return nullptr;
     
    11691169            }
    11701170        } else {
    1171             RefPtr<CSSPrimitiveValue> center = consumeLengthOrPercent(args, cssParserMode, ValueRangeAll);
     1171            auto center = consumeLengthOrPercent(args, cssParserMode, ValueRangeNonNegative);
    11721172            if (!center)
    11731173                break;
     
    11751175                return nullptr;
    11761176            horizontalSize = center;
    1177             center = consumeLengthOrPercent(args, cssParserMode, ValueRangeAll);
     1177            center = consumeLengthOrPercent(args, cssParserMode, ValueRangeNonNegative);
    11781178            if (center) {
    11791179                verticalSize = center;
Note: See TracChangeset for help on using the changeset viewer.