Title: [237855] trunk/Source/WebCore
Revision
237855
Author
grao...@webkit.org
Date
2018-11-06 03:15:43 -0800 (Tue, 06 Nov 2018)

Log Message

[Web Animations] Update the API to allow the "auto" composite value
https://bugs.webkit.org/show_bug.cgi?id=191300
<rdar://problem/45838373>

Reviewed by Dean Jackson.

The Web Animations API has been changed such that the various "composite" properties are no longer optional and instead
allow an "auto" value in their enumeration.

* CMakeLists.txt:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* animation/CompositeOperationOrAuto.h: Copied from Source/WebCore/animation/KeyframeEffect.idl.
* animation/CompositeOperationOrAuto.idl: Copied from Source/WebCore/animation/KeyframeEffect.idl.
* animation/KeyframeEffect.cpp:
(WebCore::processKeyframeLikeObject):
(WebCore::processIterableKeyframes):
(WebCore::processPropertyIndexedKeyframes):
(WebCore::KeyframeEffect::getKeyframes):
* animation/KeyframeEffect.h:
* animation/KeyframeEffect.idl:

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebCore/CMakeLists.txt (237854 => 237855)


--- trunk/Source/WebCore/CMakeLists.txt	2018-11-06 11:15:35 UTC (rev 237854)
+++ trunk/Source/WebCore/CMakeLists.txt	2018-11-06 11:15:43 UTC (rev 237855)
@@ -489,6 +489,7 @@
     animation/CSSAnimation.idl
     animation/CSSTransition.idl
     animation/CompositeOperation.idl
+    animation/CompositeOperationOrAuto.idl
     animation/ComputedEffectTiming.idl
     animation/DocumentTimeline.idl
     animation/DocumentTimelineOptions.idl

Modified: trunk/Source/WebCore/ChangeLog (237854 => 237855)


--- trunk/Source/WebCore/ChangeLog	2018-11-06 11:15:35 UTC (rev 237854)
+++ trunk/Source/WebCore/ChangeLog	2018-11-06 11:15:43 UTC (rev 237855)
@@ -1,5 +1,30 @@
 2018-11-06  Antoine Quint  <grao...@apple.com>
 
+        [Web Animations] Update the API to allow the "auto" composite value
+        https://bugs.webkit.org/show_bug.cgi?id=191300
+        <rdar://problem/45838373>
+
+        Reviewed by Dean Jackson.
+
+        The Web Animations API has been changed such that the various "composite" properties are no longer optional and instead
+        allow an "auto" value in their enumeration.
+
+        * CMakeLists.txt:
+        * DerivedSources.make:
+        * Sources.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+        * animation/CompositeOperationOrAuto.h: Copied from Source/WebCore/animation/KeyframeEffect.idl.
+        * animation/CompositeOperationOrAuto.idl: Copied from Source/WebCore/animation/KeyframeEffect.idl.
+        * animation/KeyframeEffect.cpp:
+        (WebCore::processKeyframeLikeObject):
+        (WebCore::processIterableKeyframes):
+        (WebCore::processPropertyIndexedKeyframes):
+        (WebCore::KeyframeEffect::getKeyframes):
+        * animation/KeyframeEffect.h:
+        * animation/KeyframeEffect.idl:
+
+2018-11-06  Antoine Quint  <grao...@apple.com>
+
         [Web Animations] Update the API to implement Animation.updatePlaybackRate()
         https://bugs.webkit.org/show_bug.cgi?id=186510
         <rdar://problem/41000641>

Modified: trunk/Source/WebCore/DerivedSources.make (237854 => 237855)


--- trunk/Source/WebCore/DerivedSources.make	2018-11-06 11:15:35 UTC (rev 237854)
+++ trunk/Source/WebCore/DerivedSources.make	2018-11-06 11:15:43 UTC (rev 237855)
@@ -403,6 +403,7 @@
     $(WebCore)/animation/AnimationPlaybackEventInit.idl \
     $(WebCore)/animation/AnimationTimeline.idl \
     $(WebCore)/animation/CompositeOperation.idl \
+    $(WebCore)/animation/CompositeOperationOrAuto.idl \
     $(WebCore)/animation/ComputedEffectTiming.idl \
     $(WebCore)/animation/CSSAnimation.idl \
     $(WebCore)/animation/CSSTransition.idl \

Modified: trunk/Source/WebCore/Sources.txt (237854 => 237855)


--- trunk/Source/WebCore/Sources.txt	2018-11-06 11:15:35 UTC (rev 237854)
+++ trunk/Source/WebCore/Sources.txt	2018-11-06 11:15:43 UTC (rev 237855)
@@ -2534,6 +2534,7 @@
 JSComment.cpp
 JSCompositionEvent.cpp
 JSCompositeOperation.cpp
+JSCompositeOperationOrAuto.cpp
 JSComputedEffectTiming.cpp
 JSConvolverNode.cpp
 JSCoordinates.cpp

Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (237854 => 237855)


--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2018-11-06 11:15:35 UTC (rev 237854)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2018-11-06 11:15:43 UTC (rev 237855)
@@ -2030,6 +2030,8 @@
 		71025EDE1F99F1EC004A250C /* JSAnimationTimeline.h in Headers */ = {isa = PBXBuildFile; fileRef = 71025ED91F99F1A7004A250C /* JSAnimationTimeline.h */; };
 		71025EE01F99F1EC004A250C /* JSDocumentTimeline.h in Headers */ = {isa = PBXBuildFile; fileRef = 71025EDC1F99F1A8004A250C /* JSDocumentTimeline.h */; };
 		71025EE21F99F1EC004A250C /* JSWebAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 71025ED81F99F1A6004A250C /* JSWebAnimation.h */; };
+		7111243E216FA71100EB7B67 /* CompositeOperationOrAuto.h in Headers */ = {isa = PBXBuildFile; fileRef = 7111243B216FA6E000EB7B67 /* CompositeOperationOrAuto.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		71112441216FA7CD00EB7B67 /* JSCompositeOperationOrAuto.h in Headers */ = {isa = PBXBuildFile; fileRef = 71112440216FA7BE00EB7B67 /* JSCompositeOperationOrAuto.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		7116E2CC1FED75DC00C06FDE /* ComputedEffectTiming.h in Headers */ = {isa = PBXBuildFile; fileRef = 7116E2CB1FED75D100C06FDE /* ComputedEffectTiming.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		7116E2CF1FED765B00C06FDE /* JSComputedEffectTiming.h in Headers */ = {isa = PBXBuildFile; fileRef = 7116E2CE1FED765200C06FDE /* JSComputedEffectTiming.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		7117445914BC34EC00EE5FC8 /* SVGTextMetricsBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7117445714BC34E200EE5FC8 /* SVGTextMetricsBuilder.h */; };
@@ -9161,6 +9163,10 @@
 		71025EDC1F99F1A8004A250C /* JSDocumentTimeline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDocumentTimeline.h; sourceTree = "<group>"; };
 		710FA74B1DEE576D004C715E /* controls-bar.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode._javascript_; path = "controls-bar.js"; sourceTree = "<group>"; };
 		710FA74C1DEE577E004C715E /* controls-visibility-support.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode._javascript_; path = "controls-visibility-support.js"; sourceTree = "<group>"; };
+		7111243B216FA6E000EB7B67 /* CompositeOperationOrAuto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CompositeOperationOrAuto.h; sourceTree = "<group>"; };
+		7111243D216FA6E000EB7B67 /* CompositeOperationOrAuto.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CompositeOperationOrAuto.idl; sourceTree = "<group>"; };
+		7111243F216FA7BE00EB7B67 /* JSCompositeOperationOrAuto.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCompositeOperationOrAuto.cpp; sourceTree = "<group>"; };
+		71112440216FA7BE00EB7B67 /* JSCompositeOperationOrAuto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCompositeOperationOrAuto.h; sourceTree = "<group>"; };
 		7116E2C91FED75D000C06FDE /* ComputedEffectTiming.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ComputedEffectTiming.idl; sourceTree = "<group>"; };
 		7116E2CB1FED75D100C06FDE /* ComputedEffectTiming.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ComputedEffectTiming.h; sourceTree = "<group>"; };
 		7116E2CD1FED765200C06FDE /* JSComputedEffectTiming.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSComputedEffectTiming.cpp; sourceTree = "<group>"; };
@@ -16133,6 +16139,8 @@
 				71025ED91F99F1A7004A250C /* JSAnimationTimeline.h */,
 				71247E2B1FEA5F63008C08CE /* JSCompositeOperation.cpp */,
 				71247E2E1FEA5F66008C08CE /* JSCompositeOperation.h */,
+				7111243F216FA7BE00EB7B67 /* JSCompositeOperationOrAuto.cpp */,
+				71112440216FA7BE00EB7B67 /* JSCompositeOperationOrAuto.h */,
 				7116E2CD1FED765200C06FDE /* JSComputedEffectTiming.cpp */,
 				7116E2CE1FED765200C06FDE /* JSComputedEffectTiming.h */,
 				71B28424203CEC0B0036AA5D /* JSCSSAnimation.cpp */,
@@ -20017,6 +20025,8 @@
 				71025EC91F99F096004A250C /* AnimationTimeline.idl */,
 				71247E351FEA5F81008C08CE /* CompositeOperation.h */,
 				71247E361FEA5F81008C08CE /* CompositeOperation.idl */,
+				7111243B216FA6E000EB7B67 /* CompositeOperationOrAuto.h */,
+				7111243D216FA6E000EB7B67 /* CompositeOperationOrAuto.idl */,
 				7116E2CB1FED75D100C06FDE /* ComputedEffectTiming.h */,
 				7116E2C91FED75D000C06FDE /* ComputedEffectTiming.idl */,
 				71C29E2E203CE76B008F36D2 /* CSSAnimation.cpp */,
@@ -27943,6 +27953,7 @@
 				2DAF343D1EA7E0F100382CD3 /* ConstantPropertyMap.h in Headers */,
 				A818721C0977D3C0005826D9 /* ContainerNode.h in Headers */,
 				E1A1470811102B1500EEC0F3 /* ContainerNodeAlgorithms.h in Headers */,
+				71112441216FA7CD00EB7B67 /* JSCompositeOperationOrAuto.h in Headers */,
 				BC5EB9810E82072500B25965 /* ContentData.h in Headers */,
 				51B45D211AB8D1E200117CD2 /* ContentExtension.h in Headers */,
 				5CDFA6C81AA4F2DA00EA8746 /* ContentExtensionActions.h in Headers */,
@@ -29155,6 +29166,7 @@
 				7C8E34BE1E4A33B00054CE23 /* JSDOMConvertObject.h in Headers */,
 				E323CFFA1E5AF6AF00F0B4A0 /* JSDOMConvertPromise.h in Headers */,
 				7C8E34BF1E4A33B00054CE23 /* JSDOMConvertRecord.h in Headers */,
+				7111243E216FA71100EB7B67 /* CompositeOperationOrAuto.h in Headers */,
 				7C1F5D591F22FF7300A8874F /* JSDOMConvertScheduledAction.h in Headers */,
 				7C8E34C01E4A33B00054CE23 /* JSDOMConvertSequences.h in Headers */,
 				7C8E34C11E4A33B00054CE23 /* JSDOMConvertSerializedScriptValue.h in Headers */,

Copied: trunk/Source/WebCore/animation/CompositeOperationOrAuto.h (from rev 237854, trunk/Source/WebCore/animation/KeyframeEffect.idl) (0 => 237855)


--- trunk/Source/WebCore/animation/CompositeOperationOrAuto.h	                        (rev 0)
+++ trunk/Source/WebCore/animation/CompositeOperationOrAuto.h	2018-11-06 11:15:43 UTC (rev 237855)
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2018 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+namespace WebCore {
+
+enum class CompositeOperationOrAuto { Replace, Add, Accumulate, Auto };
+
+} // namespace WebCore

Copied: trunk/Source/WebCore/animation/CompositeOperationOrAuto.idl (from rev 237854, trunk/Source/WebCore/animation/KeyframeEffect.idl) (0 => 237855)


--- trunk/Source/WebCore/animation/CompositeOperationOrAuto.idl	                        (rev 0)
+++ trunk/Source/WebCore/animation/CompositeOperationOrAuto.idl	2018-11-06 11:15:43 UTC (rev 237855)
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2018 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+enum CompositeOperationOrAuto { "replace", "add", "accumulate", "auto" };

Modified: trunk/Source/WebCore/animation/KeyframeEffect.cpp (237854 => 237855)


--- trunk/Source/WebCore/animation/KeyframeEffect.cpp	2018-11-06 11:15:35 UTC (rev 237854)
+++ trunk/Source/WebCore/animation/KeyframeEffect.cpp	2018-11-06 11:15:43 UTC (rev 237855)
@@ -40,6 +40,7 @@
 #include "FrameView.h"
 #include "GeometryUtilities.h"
 #include "JSCompositeOperation.h"
+#include "JSCompositeOperationOrAuto.h"
 #include "JSKeyframeEffect.h"
 #include "RenderBox.h"
 #include "RenderBoxModelObject.h"
@@ -166,17 +167,17 @@
     //    If allow lists is true, use the following dictionary type:
     //
     //    dictionary BasePropertyIndexedKeyframe {
-    //        (double? or sequence<double?>)                         offset = [];
-    //        (DOMString or sequence<DOMString>)                     easing = [];
-    //        (CompositeOperation? or sequence<CompositeOperation?>) composite = [];
+    //        (double? or sequence<double?>)                                   offset = [];
+    //        (DOMString or sequence<DOMString>)                               easing = [];
+    //        (CompositeOperationOrAuto or sequence<CompositeOperationOrAuto>) composite = [];
     //    };
     //
     //    Otherwise, use the following dictionary type:
     //
     //    dictionary BaseKeyframe {
-    //        double?             offset = null;
-    //        DOMString           easing = "linear";
-    //        CompositeOperation? composite = null;
+    //        double?                  offset = null;
+    //        DOMString                easing = "linear";
+    //        CompositeOperationOrAuto composite = "auto";
     //    };
     //
     //    Store the result of this procedure as keyframe output.
@@ -190,10 +191,7 @@
         else
             baseProperties.offset = nullptr;
         baseProperties.easing = baseKeyframe.easing;
-        if (baseKeyframe.composite)
-            baseProperties.composite = baseKeyframe.composite.value();
-        else
-            baseProperties.composite = nullptr;
+        baseProperties.composite = baseKeyframe.composite;
     }
     RETURN_IF_EXCEPTION(scope, Exception { TypeError });
 
@@ -298,11 +296,9 @@
         keyframeOutput.easing = WTF::get<String>(keyframeLikeObject.baseProperties.easing);
 
         // When calling processKeyframeLikeObject() with the "allow lists" flag set to false, the only composite
-        // alternatives we should expect are CompositeOperation and nullptr.
-        if (WTF::holds_alternative<CompositeOperation>(keyframeLikeObject.baseProperties.composite))
-            keyframeOutput.composite = WTF::get<CompositeOperation>(keyframeLikeObject.baseProperties.composite);
-        else
-            ASSERT(WTF::holds_alternative<std::nullptr_t>(keyframeLikeObject.baseProperties.composite));
+        // alternatives we should expect is CompositeOperationAuto.
+        ASSERT(WTF::holds_alternative<CompositeOperationOrAuto>(keyframeLikeObject.baseProperties.composite));
+        keyframeOutput.composite = WTF::get<CompositeOperationOrAuto>(keyframeLikeObject.baseProperties.composite);
 
         for (auto& propertyAndValue : keyframeLikeObject.propertiesAndValues) {
             auto cssPropertyId = propertyAndValue.property;
@@ -437,27 +433,27 @@
         parsedKeyframes[i].easing = easings[i];
 
     // 12. If the “composite” member of the property-indexed keyframe is not an empty sequence:
-    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);
+    Vector<CompositeOperationOrAuto> compositeModes;
+    if (WTF::holds_alternative<Vector<CompositeOperationOrAuto>>(propertyIndexedKeyframe.baseProperties.composite))
+        compositeModes = WTF::get<Vector<CompositeOperationOrAuto>>(propertyIndexedKeyframe.baseProperties.composite);
+    else if (WTF::holds_alternative<CompositeOperationOrAuto>(propertyIndexedKeyframe.baseProperties.composite))
+        compositeModes.append(WTF::get<CompositeOperationOrAuto>(propertyIndexedKeyframe.baseProperties.composite));
     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.
-        // 2. As with easings, if composite modes has fewer items than property keyframes, repeat the elements in composite modes successively starting from the beginning of
-        //    the list until composite modes has as many items as property keyframes.
+        // 1. Let composite modes be a sequence of CompositeOperationOrAuto values assigned from the “composite” member of property-indexed keyframe. If that member is a single
+        //    CompositeOperationOrAuto value operation, let composite modes be a sequence of length one, with the value of the “composite” as its single item.
+        // 2. As with easings, if composite modes has fewer items than processed keyframes, repeat the elements in composite modes successively starting from the beginning of
+        //    the list until composite modes has as many items as processed keyframes.
         if (compositeModes.size() < parsedKeyframes.size()) {
             size_t initialNumberOfCompositeModes = compositeModes.size();
             for (i = initialNumberOfCompositeModes; i < parsedKeyframes.size(); ++i)
                 compositeModes.append(compositeModes[i % initialNumberOfCompositeModes]);
         }
-        // 3. Assign each value in composite modes to the keyframe-specific composite operation on the keyframe with the corresponding position in property keyframes until
-        //    the end of property keyframes is reached.
-        for (size_t i = 0; i < compositeModes.size() && i < parsedKeyframes.size(); ++i)
-            parsedKeyframes[i].composite = compositeModes[i];
+        // 3. Assign each value in composite modes that is not auto to the keyframe-specific composite operation on the keyframe with the corresponding position in processed
+        //    keyframes until the end of processed keyframes is reached.
+        for (size_t i = 0; i < compositeModes.size() && i < parsedKeyframes.size(); ++i) {
+            if (compositeModes[i] != CompositeOperationOrAuto::Auto)
+                parsedKeyframes[i].composite = compositeModes[i];
+        }
     }
 
     return { };
@@ -577,10 +573,10 @@
             // 1. Initialize a dictionary object, output keyframe, using the following definition:
             //
             // dictionary BaseComputedKeyframe {
-            //      double?             offset = null;
-            //      double              computedOffset;
-            //      DOMString           easing = "linear";
-            //      CompositeOperation? composite = null;
+            //      double?                  offset = null;
+            //      double                   computedOffset;
+            //      DOMString                easing = "linear";
+            //      CompositeOperationOrAuto composite = "auto";
             // };
 
             auto& keyframe = m_blendingKeyframes[i];
@@ -622,10 +618,10 @@
             // 1. Initialize a dictionary object, output keyframe, using the following definition:
             //
             // dictionary BaseComputedKeyframe {
-            //      double?             offset = null;
-            //      double              computedOffset;
-            //      DOMString           easing = "linear";
-            //      CompositeOperation? composite = null;
+            //      double?                  offset = null;
+            //      double                   computedOffset;
+            //      DOMString                easing = "linear";
+            //      CompositeOperationOrAuto composite = "auto";
             // };
 
             auto& parsedKeyframe = m_parsedKeyframes[i];

Modified: trunk/Source/WebCore/animation/KeyframeEffect.h (237854 => 237855)


--- trunk/Source/WebCore/animation/KeyframeEffect.h	2018-11-06 11:15:35 UTC (rev 237854)
+++ trunk/Source/WebCore/animation/KeyframeEffect.h	2018-11-06 11:15:43 UTC (rev 237855)
@@ -28,6 +28,7 @@
 #include "AnimationEffect.h"
 #include "CSSPropertyBlendingClient.h"
 #include "CompositeOperation.h"
+#include "CompositeOperationOrAuto.h"
 #include "EffectTiming.h"
 #include "Element.h"
 #include "IterationCompositeOperation.h"
@@ -55,13 +56,13 @@
     struct BasePropertyIndexedKeyframe {
         Variant<std::nullptr_t, Vector<std::optional<double>>, double> offset = Vector<std::optional<double>>();
         Variant<Vector<String>, String> easing = Vector<String>();
-        Variant<std::nullptr_t, Vector<std::optional<CompositeOperation>>, CompositeOperation> composite = Vector<std::optional<CompositeOperation>>();
+        Variant<Vector<CompositeOperationOrAuto>, CompositeOperationOrAuto> composite = Vector<CompositeOperationOrAuto>();
     };
 
     struct BaseKeyframe {
         std::optional<double> offset;
         String easing { "linear" };
-        std::optional<CompositeOperation> composite;
+        CompositeOperationOrAuto composite { CompositeOperationOrAuto::Auto };
     };
 
     struct PropertyAndValues {
@@ -77,7 +78,7 @@
     struct ParsedKeyframe {
         std::optional<double> offset;
         double computedOffset;
-        std::optional<CompositeOperation> composite;
+        CompositeOperationOrAuto composite { CompositeOperationOrAuto::Auto };
         String easing;
         RefPtr<TimingFunction> timingFunction;
         Ref<MutableStyleProperties> style;
@@ -93,7 +94,7 @@
         std::optional<double> offset;
         double computedOffset;
         String easing { "linear" };
-        std::optional<CompositeOperation> composite;
+        CompositeOperationOrAuto composite { CompositeOperationOrAuto::Auto };
     };
 
     Element* target() const { return m_target.get(); }

Modified: trunk/Source/WebCore/animation/KeyframeEffect.idl (237854 => 237855)


--- trunk/Source/WebCore/animation/KeyframeEffect.idl	2018-11-06 11:15:35 UTC (rev 237854)
+++ trunk/Source/WebCore/animation/KeyframeEffect.idl	2018-11-06 11:15:43 UTC (rev 237855)
@@ -42,13 +42,13 @@
 dictionary BasePropertyIndexedKeyframe {
     (sequence<double?> or double?) offset = [];
     (sequence<DOMString> or DOMString) easing = [];
-    (sequence<CompositeOperation?> or CompositeOperation?) composite = [];
+    (sequence<CompositeOperationOrAuto> or CompositeOperationOrAuto) composite = [];
 };
 
 dictionary BaseKeyframe {
     double? offset = null;
     DOMString easing = "linear";
-    CompositeOperation? composite = null;
+    CompositeOperationOrAuto composite = "auto";
 };
 
 [
@@ -57,5 +57,5 @@
      double? offset = null;
      double computedOffset;
      DOMString easing = "linear";
-     CompositeOperation? composite = null;
+     CompositeOperationOrAuto composite = "auto";
 };
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to