Title: [283561] trunk
Revision
283561
Author
[email protected]
Date
2021-10-05 11:19:17 -0700 (Tue, 05 Oct 2021)

Log Message

radial-gradient does not accept calc values that combine length and percent
https://bugs.webkit.org/show_bug.cgi?id=230388

Patch by Nikos Mouchtaris <[email protected]> on 2021-10-05
Reviewed by Simon Fraser.

Source/WebCore:

Removed outdated check that disallowed combined percentage and length expressions.
Added code to calculate radius for combined percentage and length expressions.

* css/parser/CSSPropertyParserHelpers.cpp:
(WebCore::CSSPropertyParserHelpers::consumeRadialGradient):

LayoutTests:

* css3/calc/css3-radial-gradients-expected.html:
* css3/calc/css3-radial-gradients.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (283560 => 283561)


--- trunk/LayoutTests/ChangeLog	2021-10-05 18:15:47 UTC (rev 283560)
+++ trunk/LayoutTests/ChangeLog	2021-10-05 18:19:17 UTC (rev 283561)
@@ -1,3 +1,13 @@
+2021-10-05  Nikos Mouchtaris  <[email protected]>
+
+        radial-gradient does not accept calc values that combine length and percent
+        https://bugs.webkit.org/show_bug.cgi?id=230388
+
+        Reviewed by Simon Fraser.
+
+        * css3/calc/css3-radial-gradients-expected.html:
+        * css3/calc/css3-radial-gradients.html:
+
 2021-10-05  Ayumi Kojima  <[email protected]>
 
         [ iOS15 WK2 ] http/tests/media/modern-media-controls/overflow-support/playback-speed-live-broadcast.html is a constant timeout.

Modified: trunk/LayoutTests/css3/calc/css3-radial-gradients-expected.html (283560 => 283561)


--- trunk/LayoutTests/css3/calc/css3-radial-gradients-expected.html	2021-10-05 18:15:47 UTC (rev 283560)
+++ trunk/LayoutTests/css3/calc/css3-radial-gradients-expected.html	2021-10-05 18:19:17 UTC (rev 283561)
@@ -47,6 +47,15 @@
     background-image: -webkit-radial-gradient(circle closest-side, red, green 40px, blue);
     background-image: -moz-radial-gradient(circle closest-side, red, green 40px, blue);
 }
+    
+.gradient9 {
+    background-image: radial-gradient(50px 70px, #f0f, #fff);
+}
+    
+.gradient10 {
+    background-image: radial-gradient(50px 60px, #f0f, #fff);
+}
+
 </style>
 <body>
     <div class="gradient1 box"></div>
@@ -59,4 +68,6 @@
     <br>
     <div class="gradient7 box"></div>
     <div class="gradient8 box"></div>
+    <div class="gradient9 box"></div>
+    <div class="gradient10 box"></div>
 </body>

Modified: trunk/LayoutTests/css3/calc/css3-radial-gradients.html (283560 => 283561)


--- trunk/LayoutTests/css3/calc/css3-radial-gradients.html	2021-10-05 18:15:47 UTC (rev 283560)
+++ trunk/LayoutTests/css3/calc/css3-radial-gradients.html	2021-10-05 18:19:17 UTC (rev 283561)
@@ -47,6 +47,14 @@
     background-image: -webkit-radial-gradient(circle closest-side, red, green calc(50% + 10px), blue);
     background-image: -moz-radial-gradient(circle closest-side, red, green -moz-calc(50% + 10px), blue);
 }
+    
+.gradient9 {
+    background-image: radial-gradient(50px calc(50% + 10px), #f0f, #fff);
+}
+    
+.gradient10 {
+    background-image: radial-gradient(50px 50%, #f0f, #fff);
+}
 </style>
 <body>
     <div class="gradient1 box"></div>
@@ -59,4 +67,6 @@
     <br>
     <div class="gradient7 box"></div>
     <div class="gradient8 box"></div>
+    <div class="gradient9 box"></div>
+    <div class="gradient10 box"></div>
 </body>

Modified: trunk/Source/WebCore/ChangeLog (283560 => 283561)


--- trunk/Source/WebCore/ChangeLog	2021-10-05 18:15:47 UTC (rev 283560)
+++ trunk/Source/WebCore/ChangeLog	2021-10-05 18:19:17 UTC (rev 283561)
@@ -1,3 +1,16 @@
+2021-10-05  Nikos Mouchtaris  <[email protected]>
+
+        radial-gradient does not accept calc values that combine length and percent
+        https://bugs.webkit.org/show_bug.cgi?id=230388
+
+        Reviewed by Simon Fraser.
+
+        Removed outdated check that disallowed combined percentage and length expressions.
+        Added code to calculate radius for combined percentage and length expressions.
+
+        * css/parser/CSSPropertyParserHelpers.cpp:
+        (WebCore::CSSPropertyParserHelpers::consumeRadialGradient):
+
 2021-10-05  Tim Horton  <[email protected]>
 
         Add an alternate style for form controls, and implement it for checkboxes and radio buttons

Modified: trunk/Source/WebCore/css/CSSGradientValue.cpp (283560 => 283561)


--- trunk/Source/WebCore/css/CSSGradientValue.cpp	2021-10-05 18:15:47 UTC (rev 283560)
+++ trunk/Source/WebCore/css/CSSGradientValue.cpp	2021-10-05 18:19:17 UTC (rev 283561)
@@ -977,6 +977,10 @@
         result = radius.floatValue() * conversionData.zoom();
     else if (widthOrHeight && radius.isPercentage())
         result = *widthOrHeight * radius.floatValue() / 100;
+    else if (widthOrHeight && radius.isCalculatedPercentageWithLength()) {
+        auto _expression_ = radius.cssCalcValue()->createCalculationValue(conversionData);
+        result = _expression_->evaluate(*widthOrHeight);
+    }
     else
         result = radius.computeLength<float>(conversionData);
     return result;

Modified: trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp (283560 => 283561)


--- trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp	2021-10-05 18:15:47 UTC (rev 283560)
+++ trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp	2021-10-05 18:19:17 UTC (rev 283561)
@@ -3105,9 +3105,6 @@
     // If there's only one size, it must be a length.
     if (!verticalSize && horizontalSize && horizontalSize->isPercentage())
         return nullptr;
-    if ((horizontalSize && horizontalSize->isCalculatedPercentageWithLength())
-        || (verticalSize && verticalSize->isCalculatedPercentageWithLength()))
-        return nullptr;
 
     RefPtr<CSSPrimitiveValue> centerX;
     RefPtr<CSSPrimitiveValue> centerY;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to