CSS Transitions and CSS Animations properties should treat unitless 0 as an invalid...
authorgraouts@webkit.org <graouts@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 28 Oct 2019 17:01:55 +0000 (17:01 +0000)
committergraouts@webkit.org <graouts@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 28 Oct 2019 17:01:55 +0000 (17:01 +0000)
https://bugs.webkit.org/show_bug.cgi?id=203484

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Mark WPT progressions.

* web-platform-tests/css/css-animations/parsing/animation-delay-invalid-expected.txt:
* web-platform-tests/css/css-animations/parsing/animation-duration-invalid-expected.txt:
* web-platform-tests/css/css-transitions/parsing/transition-delay-invalid-expected.txt:

Source/WebCore:

The CSS specification does not allow for "0" as a valid time (https://drafts.csswg.org/css-values-3/#time).
We change the way we parse time values to only allow for "0" if the UnitlessQuirk is set to Allow, which is
only the case for the -webkit-marquee-speed property.

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

Source/WebInspectorUI:

Use 0s instead of 0 in places where unitless times were used but shouldn't have been.

* UserInterface/Views/FindBanner.css:
(.no-find-banner-transition:matches(.find-banner, .supports-find-banner)):
* UserInterface/Views/TabBar.css:
(.tab-bar > .item > .close):

LayoutTests:

Use 0s instead of 0 in places where unitless times were used but shouldn't have been.

* animations/fill-mode-forwards-zero-duration.html:
* compositing/animation/keyframe-order.html:
* css1/units/zero-duration-without-units.html:
* legacy-animation-engine/animations/fill-mode-forwards-zero-duration.html:
* legacy-animation-engine/compositing/animation/keyframe-order.html:
* legacy-animation-engine/css1/units/zero-duration-without-units.html:
* legacy-animation-engine/transitions/zero-duration-in-list.html:
* legacy-animation-engine/transitions/zero-duration-without-units.html:
* transitions/zero-duration-in-list.html:
* transitions/zero-duration-without-units.html:
* webanimations/css-animations-expected.txt:
* webanimations/css-animations.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@251658 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 files changed:
LayoutTests/ChangeLog
LayoutTests/animations/fill-mode-forwards-zero-duration.html
LayoutTests/compositing/animation/keyframe-order.html
LayoutTests/css1/units/zero-duration-without-units.html
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/parsing/animation-delay-invalid-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/parsing/animation-duration-invalid-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/parsing/transition-delay-invalid-expected.txt
LayoutTests/legacy-animation-engine/animations/fill-mode-forwards-zero-duration.html
LayoutTests/legacy-animation-engine/compositing/animation/keyframe-order.html
LayoutTests/legacy-animation-engine/css1/units/zero-duration-without-units.html
LayoutTests/legacy-animation-engine/transitions/zero-duration-in-list.html
LayoutTests/legacy-animation-engine/transitions/zero-duration-without-units.html
LayoutTests/transitions/zero-duration-in-list.html
LayoutTests/transitions/zero-duration-without-units.html
LayoutTests/webanimations/css-animations-expected.txt
LayoutTests/webanimations/css-animations.html
Source/WebCore/ChangeLog
Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp
Source/WebInspectorUI/ChangeLog
Source/WebInspectorUI/UserInterface/Views/FindBanner.css
Source/WebInspectorUI/UserInterface/Views/TabBar.css

index d8e8ba3..167afa8 100644 (file)
@@ -1,3 +1,25 @@
+2019-10-28  Antoine Quint  <graouts@apple.com>
+
+        CSS Transitions and CSS Animations properties should treat unitless 0 as an invalid value for times
+        https://bugs.webkit.org/show_bug.cgi?id=203484
+
+        Reviewed by Antti Koivisto.
+
+        Use 0s instead of 0 in places where unitless times were used but shouldn't have been.
+
+        * animations/fill-mode-forwards-zero-duration.html:
+        * compositing/animation/keyframe-order.html:
+        * css1/units/zero-duration-without-units.html:
+        * legacy-animation-engine/animations/fill-mode-forwards-zero-duration.html:
+        * legacy-animation-engine/compositing/animation/keyframe-order.html:
+        * legacy-animation-engine/css1/units/zero-duration-without-units.html:
+        * legacy-animation-engine/transitions/zero-duration-in-list.html:
+        * legacy-animation-engine/transitions/zero-duration-without-units.html:
+        * transitions/zero-duration-in-list.html:
+        * transitions/zero-duration-without-units.html:
+        * webanimations/css-animations-expected.txt:
+        * webanimations/css-animations.html:
+
 2019-10-28  Carlos Alberto Lopez Perez  <clopez@igalia.com>
 
         [GTK][WPE] Enable CSS typed OM
index c67e2b8..6bf2677 100644 (file)
@@ -9,7 +9,7 @@
       height: 100px;
       width: 100px;
       background-color: blue;
-      animation: anim1 0 2s linear forwards;
+      animation: anim1 0s 2s linear forwards;
     }
     @keyframes anim1 {
         from { left: 400px; }
index c6b77a8..99b7d30 100644 (file)
@@ -21,7 +21,7 @@
     }
     
     .spinner.animating {
-        -webkit-animation: imageSpin 999999999s linear 0 infinite
+        -webkit-animation: imageSpin 999999999s linear 0s infinite
     }
 
     .inner {
index b04de21..0422400 100644 (file)
@@ -12,7 +12,7 @@
       background-color: blue;
       -webkit-transition-property: top, left;
       -webkit-transition-duration: 1s;
-      -webkit-transition-duration: 0;
+      -webkit-transition-duration: 0s;
       -webkit-transition-timing-function: linear;
     }
   </style>
index 8d91eee..4645770 100644 (file)
@@ -1,3 +1,16 @@
+2019-10-28  Antoine Quint  <graouts@apple.com>
+
+        CSS Transitions and CSS Animations properties should treat unitless 0 as an invalid value for times
+        https://bugs.webkit.org/show_bug.cgi?id=203484
+
+        Reviewed by Antti Koivisto.
+
+        Mark WPT progressions.
+
+        * web-platform-tests/css/css-animations/parsing/animation-delay-invalid-expected.txt:
+        * web-platform-tests/css/css-animations/parsing/animation-duration-invalid-expected.txt:
+        * web-platform-tests/css/css-transitions/parsing/transition-delay-invalid-expected.txt:
+
 2019-10-27  Antoine Quint  <graouts@apple.com>
 
         [Web Animations] The easing property for a CSSTransition effect is always "linear"
index 0cbf5e8..9d4a704 100644 (file)
@@ -1,6 +1,6 @@
 
 PASS e.style['animation-delay'] = "infinite" should not set the property value 
-FAIL e.style['animation-delay'] = "0" should not set the property value assert_equals: expected "" but got "0ms"
+PASS e.style['animation-delay'] = "0" should not set the property value 
 PASS e.style['animation-delay'] = "1s 2s" should not set the property value 
 PASS e.style['animation-delay'] = "initial, -3s" should not set the property value 
 PASS e.style['animation-delay'] = "-3s, initial" should not set the property value 
index 5526435..a10cb76 100644 (file)
@@ -1,6 +1,6 @@
 
 PASS e.style['animation-duration'] = "-3s" should not set the property value 
-FAIL e.style['animation-duration'] = "0" should not set the property value assert_equals: expected "" but got "0ms"
+PASS e.style['animation-duration'] = "0" should not set the property value 
 PASS e.style['animation-duration'] = "infinite" should not set the property value 
 PASS e.style['animation-duration'] = "1s 2s" should not set the property value 
 PASS e.style['animation-duration'] = "initial, 1s" should not set the property value 
index 807d776..4d6fe7a 100644 (file)
@@ -1,6 +1,6 @@
 
 PASS e.style['transition-delay'] = "infinite" should not set the property value 
-FAIL e.style['transition-delay'] = "0" should not set the property value assert_equals: expected "" but got "0ms"
+PASS e.style['transition-delay'] = "0" should not set the property value 
 PASS e.style['transition-delay'] = "500ms 0.5s" should not set the property value 
 PASS e.style['transition-delay'] = "-3s, initial" should not set the property value 
 PASS e.style['transition-delay'] = "initial, -3s" should not set the property value 
index 64d799a..1c14b3d 100644 (file)
@@ -9,7 +9,7 @@
       height: 100px;
       width: 100px;
       background-color: blue;
-      animation: anim1 0 2s linear forwards;
+      animation: anim1 0s 2s linear forwards;
     }
     @keyframes anim1 {
         from { left: 400px; }
index 6486cb0..787d93b 100644 (file)
@@ -21,7 +21,7 @@
     }
     
     .spinner.animating {
-        -webkit-animation: imageSpin 999999999s linear 0 infinite
+        -webkit-animation: imageSpin 999999999s linear 0s infinite
     }
 
     .inner {
index e5b49fe..d0a5c30 100644 (file)
@@ -11,7 +11,7 @@
       background-color: blue;
       -webkit-transition-property: top, left;
       -webkit-transition-duration: 1s;
-      -webkit-transition-duration: 0;
+      -webkit-transition-duration: 0s;
       -webkit-transition-timing-function: linear;
     }
   </style>
index 5399177..2c4d4a0 100644 (file)
@@ -9,7 +9,7 @@
       height: 100px;
       width: 100px;
       background-color: blue;
-      -webkit-transition-duration: 0, 0.5s;
+      -webkit-transition-duration: 0s, 0.5s;
       -webkit-transition-timing-function: linear;
       -webkit-transition-property: top, left;
     }
index 3d25d7b..857c47e 100644 (file)
@@ -9,7 +9,7 @@
       background-color: blue;
       -webkit-transition-property: top;
       -webkit-transition-duration: 1s;
-      -webkit-transition-duration: 0;
+      -webkit-transition-duration: 0s;
     }
   </style>
   <script>
index 1f91eec..e66adf3 100644 (file)
@@ -9,7 +9,7 @@
       height: 100px;
       width: 100px;
       background-color: blue;
-      -webkit-transition-duration: 0, 0.5s;
+      -webkit-transition-duration: 0s, 0.5s;
       -webkit-transition-timing-function: linear;
       -webkit-transition-property: top, left;
     }
index 10cce47..be5c96c 100644 (file)
@@ -9,7 +9,7 @@
       background-color: blue;
       -webkit-transition-property: top;
       -webkit-transition-duration: 1s;
-      -webkit-transition-duration: 0;
+      -webkit-transition-duration: 0s;
     }
   </style>
   <script>
index daa98a6..f5d1d4e 100644 (file)
@@ -11,5 +11,5 @@ PASS Web Animations should not reflect the animation-timing-function property on
 PASS Calling finish() on the animation no longer lists the animation after it has been running. 
 PASS Seeking the animation to its end time no longer lists the animation after it has been running. 
 PASS Setting the target's animation-name to none no longer lists the animation after it has been running. 
-PASS Setting the target's animation-duration to 0 no longer lists the animation after it has been running. 
+PASS Setting the target's animation-duration to 0s no longer lists the animation after it has been running. 
 
index 13d3c89..83fe95c 100644 (file)
@@ -91,7 +91,7 @@ targetTest(target => {
 
     assert_equals(target.getAnimations()[0].effect.getTiming().delay, -1000, "The animation's delay matches the initial animation-delay property.");
 
-    target.style.animationDelay = 0;
+    target.style.animationDelay = "0s";
     assert_equals(target.getAnimations()[0].effect.getTiming().delay, 0, "The animation's delay matches the updated animation-delay property.");
 }, "Web Animations should reflect the animation-delay property.");
 
@@ -221,7 +221,7 @@ function runAnimationCompletionTest(finalAssertionCallback, description)
 runAnimationCompletionTest(animation => animation.finish(), "Calling finish() on the animation");
 runAnimationCompletionTest(animation => animation.currentTime = animation.effect.getTiming().duration, "Seeking the animation to its end time");
 runAnimationCompletionTest(animation => animation.effect.target.style.animationName = "none", "Setting the target's animation-name to none");
-runAnimationCompletionTest(animation => animation.effect.target.style.animationDuration = 0, "Setting the target's animation-duration to 0");
+runAnimationCompletionTest(animation => animation.effect.target.style.animationDuration = "0s", "Setting the target's animation-duration to 0s");
 
 </script>
 </body>
\ No newline at end of file
index bb21ee2..daccd94 100644 (file)
@@ -1,3 +1,17 @@
+2019-10-28  Antoine Quint  <graouts@apple.com>
+
+        CSS Transitions and CSS Animations properties should treat unitless 0 as an invalid value for times
+        https://bugs.webkit.org/show_bug.cgi?id=203484
+
+        Reviewed by Antti Koivisto.
+
+        The CSS specification does not allow for "0" as a valid time (https://drafts.csswg.org/css-values-3/#time).
+        We change the way we parse time values to only allow for "0" if the UnitlessQuirk is set to Allow, which is
+        only the case for the -webkit-marquee-speed property.
+
+        * css/parser/CSSPropertyParserHelpers.cpp:
+        (WebCore::CSSPropertyParserHelpers::consumeTime):
+
 2019-10-27  Antoine Quint  <graouts@apple.com>
 
         [Web Animations] The easing property for a CSSTransition effect is always "linear"
index c1b13e1..45918ca 100644 (file)
@@ -447,7 +447,7 @@ RefPtr<CSSPrimitiveValue> consumeTime(CSSParserTokenRange& range, CSSParserMode
 {
     const CSSParserToken& token = range.peek();
     CSSPrimitiveValue::UnitType unit = token.unitType();
-    bool acceptUnitless = token.type() == NumberToken && shouldAcceptUnitlessValue(token.numericValue(), cssParserMode, unitless);
+    bool acceptUnitless = token.type() == NumberToken && unitless == UnitlessQuirk::Allow && shouldAcceptUnitlessValue(token.numericValue(), cssParserMode, unitless);
     if (acceptUnitless)
         unit = CSSPrimitiveValue::UnitType::CSS_MS;
     if (token.type() == DimensionToken || acceptUnitless) {
index 7334dbb..d32f516 100644 (file)
@@ -1,3 +1,17 @@
+2019-10-28  Antoine Quint  <graouts@apple.com>
+
+        CSS Transitions and CSS Animations properties should treat unitless 0 as an invalid value for times
+        https://bugs.webkit.org/show_bug.cgi?id=203484
+
+        Reviewed by Antti Koivisto.
+
+        Use 0s instead of 0 in places where unitless times were used but shouldn't have been.
+
+        * UserInterface/Views/FindBanner.css:
+        (.no-find-banner-transition:matches(.find-banner, .supports-find-banner)):
+        * UserInterface/Views/TabBar.css:
+        (.tab-bar > .item > .close):
+
 2019-10-25  Devin Rousso  <drousso@apple.com>
 
         Web Inspector: Styles: un-experimentalize showing rule icons
index 4c9704f..623342a 100644 (file)
@@ -52,7 +52,7 @@
 }
 
 .no-find-banner-transition:matches(.find-banner, .supports-find-banner) {
-    transition-duration: 0 !important;
+    transition-duration: 0s !important;
 }
 
 .supports-find-banner {
index a0b9848..3d7cd7a 100644 (file)
@@ -190,7 +190,7 @@ body.window-inactive .tab-bar > .item.selected {
 
     transition-property: background-color, opacity;
     transition-duration: 250ms, 500ms;
-    transition-delay: 0, 50ms;
+    transition-delay: 0s, 50ms;
 
     -webkit-margin-end: 4px;
 }