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";
};