Title: [228694] trunk
Revision
228694
Author
grao...@webkit.org
Date
2018-02-19 09:42:43 -0800 (Mon, 19 Feb 2018)

Log Message

[Web Animations] Accept null composite modes in keyframes
https://bugs.webkit.org/show_bug.cgi?id=182902

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Update test expectations with progressions.

* web-platform-tests/web-animations/interfaces/KeyframeEffect/constructor-expected.txt:

Source/WebCore:

The Web Animations spec used to specify that that composite modes should be non-null and instead not be
provided when specifying keyframes, but now null values are accepted. We update the IDL input types used
when parsing keyframes to allow for null values.

We had already updated the getKeyframes() output in webkit.org/b/182600.

* animation/KeyframeEffectReadOnly.cpp:
(WebCore::processIterableKeyframes):
(WebCore::processKeyframeLikeObject):
(WebCore::processPropertyIndexedKeyframes):
* animation/KeyframeEffectReadOnly.h:
* animation/KeyframeEffectReadOnly.idl:

Modified Paths

Diff

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (228693 => 228694)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2018-02-19 17:39:52 UTC (rev 228693)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2018-02-19 17:42:43 UTC (rev 228694)
@@ -1,3 +1,14 @@
+2018-02-17  Antoine Quint  <grao...@apple.com>
+
+        [Web Animations] Accept null composite modes in keyframes
+        https://bugs.webkit.org/show_bug.cgi?id=182902
+
+        Reviewed by Dean Jackson.
+
+        Update test expectations with progressions.
+
+        * web-platform-tests/web-animations/interfaces/KeyframeEffect/constructor-expected.txt:
+
 2018-02-19  Manuel Rego Casasnovas  <r...@igalia.com>
 
         [css-grid] Apply automatic minimum size clamping to spanning items too

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/constructor-expected.txt (228693 => 228694)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/constructor-expected.txt	2018-02-19 17:39:52 UTC (rev 228693)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/constructor-expected.txt	2018-02-19 17:42:43 UTC (rev 228694)
@@ -2,73 +2,73 @@
 PASS A KeyframeEffectReadOnly can be constructed with no frames 
 PASS easing values are parsed correctly when passed to the KeyframeEffectReadOnly constructor in KeyframeEffectOptions 
 PASS Invalid easing values are correctly rejected when passed to the KeyframeEffectReadOnly constructor in KeyframeEffectOptions 
-FAIL composite values are parsed correctly when passed to the KeyframeEffectReadOnly constructor in property-indexed keyframes Type error
-FAIL composite values are parsed correctly when passed to the KeyframeEffectReadOnly constructor in regular keyframes Type error
+PASS composite values are parsed correctly when passed to the KeyframeEffectReadOnly constructor in property-indexed keyframes 
+PASS composite values are parsed correctly when passed to the KeyframeEffectReadOnly constructor in regular keyframes 
 PASS composite value is null if the composite operation specified on the keyframe effect is being used 
 PASS A KeyframeEffectReadOnly can be constructed with a one property two value property-indexed keyframes specification 
-FAIL A KeyframeEffectReadOnly constructed with a one property two value property-indexed keyframes specification roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a one property two value property-indexed keyframes specification roundtrips 
 FAIL A KeyframeEffectReadOnly can be constructed with a one shorthand property two value property-indexed keyframes specification assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
-FAIL A KeyframeEffectReadOnly constructed with a one shorthand property two value property-indexed keyframes specification roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a one shorthand property two value property-indexed keyframes specification roundtrips 
 FAIL A KeyframeEffectReadOnly can be constructed with a two property (one shorthand and one of its longhand components) two value property-indexed keyframes specification assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,marginTop,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
-FAIL A KeyframeEffectReadOnly constructed with a two property (one shorthand and one of its longhand components) two value property-indexed keyframes specification roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a two property (one shorthand and one of its longhand components) two value property-indexed keyframes specification roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a two property two value property-indexed keyframes specification 
-FAIL A KeyframeEffectReadOnly constructed with a two property two value property-indexed keyframes specification roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a two property two value property-indexed keyframes specification roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a two property property-indexed keyframes specification with different numbers of values 
-FAIL A KeyframeEffectReadOnly constructed with a two property property-indexed keyframes specification with different numbers of values roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a two property property-indexed keyframes specification with different numbers of values roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a property-indexed keyframes specification with an invalid value 
-FAIL A KeyframeEffectReadOnly constructed with a property-indexed keyframes specification with an invalid value roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframes specification with an invalid value roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a one property two value property-indexed keyframes specification that needs to stringify its values 
-FAIL A KeyframeEffectReadOnly constructed with a one property two value property-indexed keyframes specification that needs to stringify its values roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a one property two value property-indexed keyframes specification that needs to stringify its values roundtrips 
 FAIL A KeyframeEffectReadOnly can be constructed with a property-indexed keyframes specification with a CSS variable reference assert_equals: value for 'left' on ComputedKeyframe #0 expected "var(--dist)" but got "auto"
-FAIL A KeyframeEffectReadOnly constructed with a property-indexed keyframes specification with a CSS variable reference roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframes specification with a CSS variable reference roundtrips 
 FAIL A KeyframeEffectReadOnly can be constructed with a property-indexed keyframes specification with a CSS variable reference in a shorthand property assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
-FAIL A KeyframeEffectReadOnly constructed with a property-indexed keyframes specification with a CSS variable reference in a shorthand property roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframes specification with a CSS variable reference in a shorthand property roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a one property one value property-indexed keyframes specification 
-FAIL A KeyframeEffectReadOnly constructed with a one property one value property-indexed keyframes specification roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a one property one value property-indexed keyframes specification roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a one property one non-array value property-indexed keyframes specification 
-FAIL A KeyframeEffectReadOnly constructed with a one property one non-array value property-indexed keyframes specification roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a one property one non-array value property-indexed keyframes specification roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a one property two value property-indexed keyframes specification where the first value is invalid 
-FAIL A KeyframeEffectReadOnly constructed with a one property two value property-indexed keyframes specification where the first value is invalid roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a one property two value property-indexed keyframes specification where the first value is invalid roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a one property two value property-indexed keyframes specification where the second value is invalid 
-FAIL A KeyframeEffectReadOnly constructed with a one property two value property-indexed keyframes specification where the second value is invalid roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a one property two value property-indexed keyframes specification where the second value is invalid roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a property-indexed keyframe with a single offset 
-FAIL A KeyframeEffectReadOnly constructed with a property-indexed keyframe with a single offset roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframe with a single offset roundtrips 
 FAIL A KeyframeEffectReadOnly can be constructed with a property-indexed keyframe with an array of offsets assert_equals: value for 'computedOffset' on ComputedKeyframe #1 expected 0.25 but got 0.45000000000000007
-FAIL A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of offsets roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of offsets roundtrips 
 FAIL A KeyframeEffectReadOnly can be constructed with a property-indexed keyframe with an array of offsets that is too short assert_equals: value for 'computedOffset' on ComputedKeyframe #1 expected 0.25 but got 0.5
-FAIL A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of offsets that is too short roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of offsets that is too short roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a property-indexed keyframe with an array of offsets that is too long 
-FAIL A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of offsets that is too long roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of offsets that is too long roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a property-indexed keyframe with an empty array of offsets 
-FAIL A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an empty array of offsets roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an empty array of offsets roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a property-indexed keyframe with an array of offsets with an embedded null value 
-FAIL A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of offsets with an embedded null value roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of offsets with an embedded null value roundtrips 
 FAIL A KeyframeEffectReadOnly can be constructed with a property-indexed keyframe with an array of offsets with a trailing null value assert_equals: value for 'computedOffset' on ComputedKeyframe #1 expected 0.25 but got 0.5
-FAIL A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of offsets with a trailing null value roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of offsets with a trailing null value roundtrips 
 FAIL A KeyframeEffectReadOnly can be constructed with a property-indexed keyframe with an array of offsets with leading and trailing null values assert_equals: value for 'computedOffset' on ComputedKeyframe #1 expected 0.25 but got 0.5
-FAIL A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of offsets with leading and trailing null values roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of offsets with leading and trailing null values roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a property-indexed keyframe with an array of offsets with adjacent null values 
-FAIL A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of offsets with adjacent null values roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of offsets with adjacent null values roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a property-indexed keyframe with an array of offsets with all null values (and too many at that) 
-FAIL A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of offsets with all null values (and too many at that) roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of offsets with all null values (and too many at that) roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a property-indexed keyframe with a single null offset 
-FAIL A KeyframeEffectReadOnly constructed with a property-indexed keyframe with a single null offset roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframe with a single null offset roundtrips 
 FAIL A KeyframeEffectReadOnly can be constructed with a property-indexed keyframe with an array of offsets that is not strictly ascending in the unused part of the array assert_equals: value for 'computedOffset' on ComputedKeyframe #1 expected 0.2 but got 0.4
-FAIL A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of offsets that is not strictly ascending in the unused part of the array roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of offsets that is not strictly ascending in the unused part of the array roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a property-indexed keyframe without any specified easing 
-FAIL A KeyframeEffectReadOnly constructed with a property-indexed keyframe without any specified easing roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframe without any specified easing roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a property-indexed keyframe with a single easing 
-FAIL A KeyframeEffectReadOnly constructed with a property-indexed keyframe with a single easing roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframe with a single easing roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a property-indexed keyframe with an array of easings 
-FAIL A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of easings roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of easings roundtrips 
 FAIL A KeyframeEffectReadOnly can be constructed with a property-indexed keyframe with an array of easings that is too short assert_equals: value for 'easing' on ComputedKeyframe #2 expected "ease-in" but got "ease-out"
-FAIL A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of easings that is too short roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of easings that is too short roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a property-indexed keyframe with a single-element array of easings 
-FAIL A KeyframeEffectReadOnly constructed with a property-indexed keyframe with a single-element array of easings roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframe with a single-element array of easings roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a property-indexed keyframe with an empty array of easings 
-FAIL A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an empty array of easings roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an empty array of easings roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a property-indexed keyframe with an array of easings that is too long 
-FAIL A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of easings that is too long roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframe with an array of easings that is too long roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a property-indexed keyframe with a single composite operation 
 PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframe with a single composite operation roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a property-indexed keyframe with a composite array 
@@ -80,25 +80,25 @@
 PASS A KeyframeEffectReadOnly can be constructed with a property-indexed keyframe with a single-element composite array 
 PASS A KeyframeEffectReadOnly constructed with a property-indexed keyframe with a single-element composite array roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a one property one keyframe sequence 
-FAIL A KeyframeEffectReadOnly constructed with a one property one keyframe sequence roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a one property one keyframe sequence roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a one property two keyframe sequence 
-FAIL A KeyframeEffectReadOnly constructed with a one property two keyframe sequence roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a one property two keyframe sequence roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a two property two keyframe sequence 
-FAIL A KeyframeEffectReadOnly constructed with a two property two keyframe sequence roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a two property two keyframe sequence roundtrips 
 FAIL A KeyframeEffectReadOnly can be constructed with a one shorthand property two keyframe sequence assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
-FAIL A KeyframeEffectReadOnly constructed with a one shorthand property two keyframe sequence roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a one shorthand property two keyframe sequence roundtrips 
 FAIL A KeyframeEffectReadOnly can be constructed with a two property (a shorthand and one of its component longhands) two keyframe sequence assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,marginTop,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
-FAIL A KeyframeEffectReadOnly constructed with a two property (a shorthand and one of its component longhands) two keyframe sequence roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a two property (a shorthand and one of its component longhands) two keyframe sequence roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a two property keyframe sequence where one property is missing from the first keyframe 
-FAIL A KeyframeEffectReadOnly constructed with a two property keyframe sequence where one property is missing from the first keyframe roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a two property keyframe sequence where one property is missing from the first keyframe roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a two property keyframe sequence where one property is missing from the last keyframe 
-FAIL A KeyframeEffectReadOnly constructed with a two property keyframe sequence where one property is missing from the last keyframe roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a two property keyframe sequence where one property is missing from the last keyframe roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a one property two keyframe sequence that needs to stringify its values 
-FAIL A KeyframeEffectReadOnly constructed with a one property two keyframe sequence that needs to stringify its values roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a one property two keyframe sequence that needs to stringify its values roundtrips 
 FAIL A KeyframeEffectReadOnly can be constructed with a keyframe sequence with a CSS variable reference assert_equals: value for 'left' on ComputedKeyframe #0 expected "var(--dist)" but got "auto"
-FAIL A KeyframeEffectReadOnly constructed with a keyframe sequence with a CSS variable reference roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a keyframe sequence with a CSS variable reference roundtrips 
 FAIL A KeyframeEffectReadOnly can be constructed with a keyframe sequence with a CSS variable reference in a shorthand property assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
-FAIL A KeyframeEffectReadOnly constructed with a keyframe sequence with a CSS variable reference in a shorthand property roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a keyframe sequence with a CSS variable reference in a shorthand property roundtrips 
 FAIL A KeyframeEffectReadOnly can be constructed with a keyframe sequence with duplicate values for a given interior offset Type error
 FAIL A KeyframeEffectReadOnly constructed with a keyframe sequence with duplicate values for a given interior offset roundtrips Type error
 FAIL A KeyframeEffectReadOnly can be constructed with a keyframe sequence with duplicate values for offsets 0 and 1 Type error
@@ -106,19 +106,19 @@
 FAIL A KeyframeEffectReadOnly can be constructed with a two property four keyframe sequence Type error
 FAIL A KeyframeEffectReadOnly constructed with a two property four keyframe sequence roundtrips Type error
 PASS A KeyframeEffectReadOnly can be constructed with a single keyframe sequence with omitted offset 
-FAIL A KeyframeEffectReadOnly constructed with a single keyframe sequence with omitted offset roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a single keyframe sequence with omitted offset roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a single keyframe sequence with null offset 
-FAIL A KeyframeEffectReadOnly constructed with a single keyframe sequence with null offset roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a single keyframe sequence with null offset roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a single keyframe sequence with string offset 
-FAIL A KeyframeEffectReadOnly constructed with a single keyframe sequence with string offset roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a single keyframe sequence with string offset roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a one property keyframe sequence with some omitted offsets 
-FAIL A KeyframeEffectReadOnly constructed with a one property keyframe sequence with some omitted offsets roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a one property keyframe sequence with some omitted offsets roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a one property keyframe sequence with some null offsets 
-FAIL A KeyframeEffectReadOnly constructed with a one property keyframe sequence with some null offsets roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a one property keyframe sequence with some null offsets roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a two property keyframe sequence with some omitted offsets 
-FAIL A KeyframeEffectReadOnly constructed with a two property keyframe sequence with some omitted offsets roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a two property keyframe sequence with some omitted offsets roundtrips 
 PASS A KeyframeEffectReadOnly can be constructed with a one property keyframe sequence with all omitted offsets 
-FAIL A KeyframeEffectReadOnly constructed with a one property keyframe sequence with all omitted offsets roundtrips Type error
+PASS A KeyframeEffectReadOnly constructed with a one property keyframe sequence with all omitted offsets roundtrips 
 FAIL A KeyframeEffectReadOnly can be constructed with a keyframe sequence with different easing values, but the same easing value for a given offset Type error
 FAIL A KeyframeEffectReadOnly constructed with a keyframe sequence with different easing values, but the same easing value for a given offset roundtrips Type error
 FAIL A KeyframeEffectReadOnly can be constructed with a keyframe sequence with different composite values, but the same composite value for a given offset Type error

Modified: trunk/Source/WebCore/ChangeLog (228693 => 228694)


--- trunk/Source/WebCore/ChangeLog	2018-02-19 17:39:52 UTC (rev 228693)
+++ trunk/Source/WebCore/ChangeLog	2018-02-19 17:42:43 UTC (rev 228694)
@@ -1,3 +1,23 @@
+2018-02-17  Antoine Quint  <grao...@apple.com>
+
+        [Web Animations] Accept null composite modes in keyframes
+        https://bugs.webkit.org/show_bug.cgi?id=182902
+
+        Reviewed by Dean Jackson.
+
+        The Web Animations spec used to specify that that composite modes should be non-null and instead not be
+        provided when specifying keyframes, but now null values are accepted. We update the IDL input types used
+        when parsing keyframes to allow for null values.
+
+        We had already updated the getKeyframes() output in webkit.org/b/182600.
+
+        * animation/KeyframeEffectReadOnly.cpp:
+        (WebCore::processIterableKeyframes):
+        (WebCore::processKeyframeLikeObject):
+        (WebCore::processPropertyIndexedKeyframes):
+        * animation/KeyframeEffectReadOnly.h:
+        * animation/KeyframeEffectReadOnly.idl:
+
 2018-02-19  Ms2ger  <ms2...@igalia.com>
 
         Explicitly qualify some method calls on this in lamdas in Service Worker code.

Modified: trunk/Source/WebCore/animation/KeyframeEffectReadOnly.cpp (228693 => 228694)


--- trunk/Source/WebCore/animation/KeyframeEffectReadOnly.cpp	2018-02-19 17:39:52 UTC (rev 228693)
+++ trunk/Source/WebCore/animation/KeyframeEffectReadOnly.cpp	2018-02-19 17:42:43 UTC (rev 228694)
@@ -150,7 +150,7 @@
             else if (ownPropertyName == "offset")
                 offset = convert<IDLNullable<IDLDouble>>(state, ownPropertyRawValue);
             else if (ownPropertyName == "composite")
-                composite = convert<IDLEnumeration<CompositeOperation>>(state, ownPropertyRawValue);
+                composite = convert<IDLNullable<IDLEnumeration<CompositeOperation>>>(state, ownPropertyRawValue);
             else {
                 auto cssPropertyId = IDLAttributeNameToAnimationPropertyName(ownPropertyName.string());
                 if (CSSPropertyAnimation::isPropertyAnimatable(cssPropertyId))
@@ -184,7 +184,7 @@
     //    dictionary BasePropertyIndexedKeyframe {
     //        (double? or sequence<double?>)                       offset = [];
     //        (DOMString or sequence<DOMString>)                   easing = [];
-    //        (CompositeOperation or sequence<CompositeOperation>) composite = [];
+    //        (CompositeOperation? or sequence<CompositeOperation?>) composite = [];
     //    };
     //
     //    Store the result of this procedure as keyframe output.
@@ -360,11 +360,13 @@
         processedKeyframes[i].easing = easings[i];
 
     // 12. If the “composite” member of the property-indexed keyframe is not an empty sequence:
-    Vector<CompositeOperation> compositeModes;
-    if (WTF::holds_alternative<Vector<CompositeOperation>>(propertyIndexedKeyframe.baseProperties.composite))
-        compositeModes = WTF::get<Vector<CompositeOperation>>(propertyIndexedKeyframe.baseProperties.composite);
+    Vector<std::optional<CompositeOperation>> compositeModes;
+    if (WTF::holds_alternative<Vector<std::optional<CompositeOperation>>>(propertyIndexedKeyframe.baseProperties.composite))
+        compositeModes = WTF::get<Vector<std::optional<CompositeOperation>>>(propertyIndexedKeyframe.baseProperties.composite);
     else if (WTF::holds_alternative<CompositeOperation>(propertyIndexedKeyframe.baseProperties.composite))
         compositeModes.append(WTF::get<CompositeOperation>(propertyIndexedKeyframe.baseProperties.composite));
+    else if (WTF::holds_alternative<std::nullptr_t>(propertyIndexedKeyframe.baseProperties.composite))
+        compositeModes.append(std::nullopt);
     if (!compositeModes.isEmpty()) {
         // 1. Let composite modes be a sequence of composite operations assigned from the “composite” member of property-indexed keyframe. If that member is a single composite
         //    operation, let composite modes be a sequence of length one, with the value of the “composite” as its single item.

Modified: trunk/Source/WebCore/animation/KeyframeEffectReadOnly.h (228693 => 228694)


--- trunk/Source/WebCore/animation/KeyframeEffectReadOnly.h	2018-02-19 17:39:52 UTC (rev 228693)
+++ trunk/Source/WebCore/animation/KeyframeEffectReadOnly.h	2018-02-19 17:42:43 UTC (rev 228694)
@@ -50,7 +50,7 @@
     struct BasePropertyIndexedKeyframe {
         Variant<std::nullptr_t, Vector<std::optional<double>>, double> offset = Vector<std::optional<double>>();
         Variant<Vector<String>, String> easing = Vector<String>();
-        Variant<Vector<CompositeOperation>, CompositeOperation> composite = Vector<CompositeOperation>();
+        Variant<std::nullptr_t, Vector<std::optional<CompositeOperation>>, CompositeOperation> composite = Vector<std::optional<CompositeOperation>>();
     };
 
     struct PropertyAndValues {

Modified: trunk/Source/WebCore/animation/KeyframeEffectReadOnly.idl (228693 => 228694)


--- trunk/Source/WebCore/animation/KeyframeEffectReadOnly.idl	2018-02-19 17:39:52 UTC (rev 228693)
+++ trunk/Source/WebCore/animation/KeyframeEffectReadOnly.idl	2018-02-19 17:42:43 UTC (rev 228694)
@@ -41,7 +41,7 @@
 dictionary BasePropertyIndexedKeyframe {
     (sequence<double?> or double?) offset = [];
     (sequence<DOMString> or DOMString) easing = [];
-    (sequence<CompositeOperation> or CompositeOperation) composite = [];
+    (sequence<CompositeOperation?> or CompositeOperation?) composite = [];
 };
 
 [
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to