summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/animation/keyframe_effect_model.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/core/animation/keyframe_effect_model.h')
-rw-r--r--chromium/third_party/blink/renderer/core/animation/keyframe_effect_model.h45
1 files changed, 27 insertions, 18 deletions
diff --git a/chromium/third_party/blink/renderer/core/animation/keyframe_effect_model.h b/chromium/third_party/blink/renderer/core/animation/keyframe_effect_model.h
index 54224d18644..7ad2414d2cf 100644
--- a/chromium/third_party/blink/renderer/core/animation/keyframe_effect_model.h
+++ b/chromium/third_party/blink/renderer/core/animation/keyframe_effect_model.h
@@ -234,6 +234,12 @@ class KeyframeEffectModel final : public KeyframeEffectModelBase {
keyframes, composite_, default_keyframe_easing_);
}
+ KeyframeEffectModel<StringKeyframe>* CloneAsEmptyStringKeyframeModel() {
+ HeapVector<Member<StringKeyframe>> empty_keyframes;
+ return MakeGarbageCollected<KeyframeEffectModel<StringKeyframe>>(
+ empty_keyframes, composite_, default_keyframe_easing_);
+ }
+
private:
bool IsStringKeyframeEffectModel() const override { return false; }
bool IsTransitionKeyframeEffectModel() const override { return false; }
@@ -253,35 +259,38 @@ using TransitionKeyframeVector = TransitionKeyframeEffectModel::KeyframeVector;
using TransitionPropertySpecificKeyframeVector =
TransitionKeyframeEffectModel::PropertySpecificKeyframeVector;
-DEFINE_TYPE_CASTS(KeyframeEffectModelBase,
- EffectModel,
- value,
- value->IsKeyframeEffectModel(),
- value.IsKeyframeEffectModel());
-DEFINE_TYPE_CASTS(StringKeyframeEffectModel,
- KeyframeEffectModelBase,
- value,
- value->IsStringKeyframeEffectModel(),
- value.IsStringKeyframeEffectModel());
-DEFINE_TYPE_CASTS(TransitionKeyframeEffectModel,
- KeyframeEffectModelBase,
- value,
- value->IsTransitionKeyframeEffectModel(),
- value.IsTransitionKeyframeEffectModel());
+template <>
+struct DowncastTraits<KeyframeEffectModelBase> {
+ static bool AllowFrom(const EffectModel& value) {
+ return value.IsKeyframeEffectModel();
+ }
+};
+template <>
+struct DowncastTraits<StringKeyframeEffectModel> {
+ static bool AllowFrom(const KeyframeEffectModelBase& value) {
+ return value.IsStringKeyframeEffectModel();
+ }
+};
+template <>
+struct DowncastTraits<TransitionKeyframeEffectModel> {
+ static bool AllowFrom(const KeyframeEffectModelBase& value) {
+ return value.IsTransitionKeyframeEffectModel();
+ }
+};
inline const StringKeyframeEffectModel* ToStringKeyframeEffectModel(
const EffectModel* base) {
- return ToStringKeyframeEffectModel(ToKeyframeEffectModelBase(base));
+ return To<StringKeyframeEffectModel>(To<KeyframeEffectModelBase>(base));
}
inline StringKeyframeEffectModel* ToStringKeyframeEffectModel(
EffectModel* base) {
- return ToStringKeyframeEffectModel(ToKeyframeEffectModelBase(base));
+ return To<StringKeyframeEffectModel>(To<KeyframeEffectModelBase>(base));
}
inline TransitionKeyframeEffectModel* ToTransitionKeyframeEffectModel(
EffectModel* base) {
- return ToTransitionKeyframeEffectModel(ToKeyframeEffectModelBase(base));
+ return To<TransitionKeyframeEffectModel>(To<KeyframeEffectModelBase>(base));
}
template <>