diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/platform/animation')
11 files changed, 56 insertions, 53 deletions
diff --git a/chromium/third_party/blink/renderer/platform/animation/compositor_animation.cc b/chromium/third_party/blink/renderer/platform/animation/compositor_animation.cc index 4ea0dacd875..f02f038486a 100644 --- a/chromium/third_party/blink/renderer/platform/animation/compositor_animation.cc +++ b/chromium/third_party/blink/renderer/platform/animation/compositor_animation.cc @@ -14,8 +14,7 @@ namespace blink { std::unique_ptr<CompositorAnimation> CompositorAnimation::Create() { return std::make_unique<CompositorAnimation>( - cc::SingleKeyframeEffectAnimation::Create( - cc::AnimationIdProvider::NextAnimationId())); + cc::Animation::Create(cc::AnimationIdProvider::NextAnimationId())); } std::unique_ptr<CompositorAnimation> @@ -23,17 +22,14 @@ CompositorAnimation::CreateWorkletAnimation( cc::WorkletAnimationId worklet_animation_id, const String& name, double playback_rate, - std::unique_ptr<CompositorScrollTimeline> scroll_timeline, std::unique_ptr<cc::AnimationOptions> options, std::unique_ptr<cc::AnimationEffectTimings> effect_timings) { return std::make_unique<CompositorAnimation>(cc::WorkletAnimation::Create( - worklet_animation_id, name.Utf8(), playback_rate, - std::move(scroll_timeline), std::move(options), + worklet_animation_id, name.Utf8(), playback_rate, std::move(options), std::move(effect_timings))); } -CompositorAnimation::CompositorAnimation( - scoped_refptr<cc::SingleKeyframeEffectAnimation> animation) +CompositorAnimation::CompositorAnimation(scoped_refptr<cc::Animation> animation) : animation_(animation), delegate_() {} CompositorAnimation::~CompositorAnimation() { @@ -44,7 +40,7 @@ CompositorAnimation::~CompositorAnimation() { animation_->animation_timeline()->DetachAnimation(animation_); } -cc::SingleKeyframeEffectAnimation* CompositorAnimation::CcAnimation() const { +cc::Animation* CompositorAnimation::CcAnimation() const { return animation_.get(); } @@ -76,7 +72,7 @@ void CompositorAnimation::RemoveKeyframeModel(int keyframe_model_id) { } void CompositorAnimation::PauseKeyframeModel(int keyframe_model_id, - double time_offset) { + base::TimeDelta time_offset) { animation_->PauseKeyframeModel(keyframe_model_id, time_offset); } @@ -88,9 +84,8 @@ void CompositorAnimation::UpdateScrollTimeline( base::Optional<cc::ElementId> element_id, base::Optional<double> start_scroll_offset, base::Optional<double> end_scroll_offset) { - cc::ToWorkletAnimation(animation_.get()) - ->UpdateScrollTimeline(element_id, start_scroll_offset, - end_scroll_offset); + animation_->UpdateScrollTimeline(element_id, start_scroll_offset, + end_scroll_offset); } void CompositorAnimation::UpdatePlaybackRate(double playback_rate) { diff --git a/chromium/third_party/blink/renderer/platform/animation/compositor_animation.h b/chromium/third_party/blink/renderer/platform/animation/compositor_animation.h index e900e473315..348a4480437 100644 --- a/chromium/third_party/blink/renderer/platform/animation/compositor_animation.h +++ b/chromium/third_party/blink/renderer/platform/animation/compositor_animation.h @@ -10,9 +10,8 @@ #include "base/macros.h" #include "base/memory/scoped_refptr.h" #include "base/optional.h" +#include "cc/animation/animation.h" #include "cc/animation/animation_delegate.h" -#include "cc/animation/scroll_timeline.h" -#include "cc/animation/single_keyframe_effect_animation.h" #include "cc/animation/worklet_animation.h" #include "third_party/blink/renderer/platform/graphics/compositor_element_id.h" #include "third_party/blink/renderer/platform/platform_export.h" @@ -24,8 +23,6 @@ class AnimationCurve; namespace blink { -using CompositorScrollTimeline = cc::ScrollTimeline; - class CompositorAnimationDelegate; class CompositorKeyframeModel; @@ -37,15 +34,13 @@ class PLATFORM_EXPORT CompositorAnimation : public cc::AnimationDelegate { cc::WorkletAnimationId, const String& name, double playback_rate, - std::unique_ptr<CompositorScrollTimeline>, std::unique_ptr<cc::AnimationOptions>, std::unique_ptr<cc::AnimationEffectTimings> effect_timings); - explicit CompositorAnimation( - scoped_refptr<cc::SingleKeyframeEffectAnimation>); + explicit CompositorAnimation(scoped_refptr<cc::Animation>); ~CompositorAnimation() override; - cc::SingleKeyframeEffectAnimation* CcAnimation() const; + cc::Animation* CcAnimation() const; // An animation delegate is notified when animations are started and stopped. // The CompositorAnimation does not take ownership of the delegate, and @@ -59,7 +54,7 @@ class PLATFORM_EXPORT CompositorAnimation : public cc::AnimationDelegate { void AddKeyframeModel(std::unique_ptr<CompositorKeyframeModel>); void RemoveKeyframeModel(int keyframe_model_id); - void PauseKeyframeModel(int keyframe_model_id, double time_offset); + void PauseKeyframeModel(int keyframe_model_id, base::TimeDelta time_offset); void AbortKeyframeModel(int keyframe_model_id); void UpdateScrollTimeline(base::Optional<cc::ElementId>, @@ -85,7 +80,7 @@ class PLATFORM_EXPORT CompositorAnimation : public cc::AnimationDelegate { void NotifyLocalTimeUpdated( base::Optional<base::TimeDelta> local_time) override; - scoped_refptr<cc::SingleKeyframeEffectAnimation> animation_; + scoped_refptr<cc::Animation> animation_; CompositorAnimationDelegate* delegate_; DISALLOW_COPY_AND_ASSIGN(CompositorAnimation); diff --git a/chromium/third_party/blink/renderer/platform/animation/compositor_animation_test.cc b/chromium/third_party/blink/renderer/platform/animation/compositor_animation_test.cc index c40fb3822d0..25a9e0b34ae 100644 --- a/chromium/third_party/blink/renderer/platform/animation/compositor_animation_test.cc +++ b/chromium/third_party/blink/renderer/platform/animation/compositor_animation_test.cc @@ -60,7 +60,7 @@ TEST_F(CompositorAnimationTest, NullDelegate) { std::unique_ptr<CompositorAnimationTestClient> client( new CompositorAnimationTestClient); CompositorAnimation* animation = client->GetCompositorAnimation(); - cc::SingleKeyframeEffectAnimation* cc_animation = animation->CcAnimation(); + cc::Animation* cc_animation = animation->CcAnimation(); timeline->AnimationAttached(*client); int timeline_id = cc_animation->animation_timeline()->id(); @@ -93,8 +93,7 @@ TEST_F(CompositorAnimationTest, NotifyFromCCAfterCompositorAnimationDeletion) { std::unique_ptr<CompositorAnimationTestClient> client( new CompositorAnimationTestClient); CompositorAnimation* animation = client->GetCompositorAnimation(); - scoped_refptr<cc::SingleKeyframeEffectAnimation> cc_animation = - animation->CcAnimation(); + scoped_refptr<cc::Animation> cc_animation = animation->CcAnimation(); timeline->AnimationAttached(*client); int timeline_id = cc_animation->animation_timeline()->id(); @@ -129,8 +128,7 @@ TEST_F(CompositorAnimationTest, scoped_refptr<cc::AnimationTimeline> cc_timeline = timeline->GetAnimationTimeline(); - scoped_refptr<cc::SingleKeyframeEffectAnimation> cc_animation = - client->animation_->CcAnimation(); + scoped_refptr<cc::Animation> cc_animation = client->animation_->CcAnimation(); EXPECT_FALSE(cc_animation->animation_timeline()); timeline->AnimationAttached(*client); diff --git a/chromium/third_party/blink/renderer/platform/animation/compositor_animation_timeline.cc b/chromium/third_party/blink/renderer/platform/animation/compositor_animation_timeline.cc index eca78aece63..3da0644ab74 100644 --- a/chromium/third_party/blink/renderer/platform/animation/compositor_animation_timeline.cc +++ b/chromium/third_party/blink/renderer/platform/animation/compositor_animation_timeline.cc @@ -15,6 +15,10 @@ CompositorAnimationTimeline::CompositorAnimationTimeline() : animation_timeline_(cc::AnimationTimeline::Create( cc::AnimationIdProvider::NextTimelineId())) {} +CompositorAnimationTimeline::CompositorAnimationTimeline( + scoped_refptr<cc::AnimationTimeline> timeline) + : animation_timeline_(timeline) {} + CompositorAnimationTimeline::~CompositorAnimationTimeline() { // Detach timeline from host, otherwise it stays there (leaks) until // compositor shutdown. diff --git a/chromium/third_party/blink/renderer/platform/animation/compositor_animation_timeline.h b/chromium/third_party/blink/renderer/platform/animation/compositor_animation_timeline.h index b4e6b8427d4..8307cd8f257 100644 --- a/chromium/third_party/blink/renderer/platform/animation/compositor_animation_timeline.h +++ b/chromium/third_party/blink/renderer/platform/animation/compositor_animation_timeline.h @@ -24,6 +24,7 @@ class PLATFORM_EXPORT CompositorAnimationTimeline { public: CompositorAnimationTimeline(); + explicit CompositorAnimationTimeline(scoped_refptr<cc::AnimationTimeline>); ~CompositorAnimationTimeline(); cc::AnimationTimeline* GetAnimationTimeline() const; diff --git a/chromium/third_party/blink/renderer/platform/animation/compositor_keyframe_model.cc b/chromium/third_party/blink/renderer/platform/animation/compositor_keyframe_model.cc index 656f2f22d6d..8aeb308e331 100644 --- a/chromium/third_party/blink/renderer/platform/animation/compositor_keyframe_model.cc +++ b/chromium/third_party/blink/renderer/platform/animation/compositor_keyframe_model.cc @@ -90,9 +90,8 @@ double CompositorKeyframeModel::TimeOffset() const { return keyframe_model_->time_offset().InSecondsF(); } -void CompositorKeyframeModel::SetTimeOffset(double monotonic_time) { - keyframe_model_->set_time_offset( - base::TimeDelta::FromSecondsD(monotonic_time)); +void CompositorKeyframeModel::SetTimeOffset(base::TimeDelta monotonic_time) { + keyframe_model_->set_time_offset(monotonic_time); } blink::CompositorKeyframeModel::Direction diff --git a/chromium/third_party/blink/renderer/platform/animation/compositor_keyframe_model.h b/chromium/third_party/blink/renderer/platform/animation/compositor_keyframe_model.h index 3002115a428..7144083160b 100644 --- a/chromium/third_party/blink/renderer/platform/animation/compositor_keyframe_model.h +++ b/chromium/third_party/blink/renderer/platform/animation/compositor_keyframe_model.h @@ -63,7 +63,7 @@ class PLATFORM_EXPORT CompositorKeyframeModel { void SetStartTime(base::TimeTicks); double TimeOffset() const; - void SetTimeOffset(double monotonic_time); + void SetTimeOffset(base::TimeDelta monotonic_time); Direction GetDirection() const; void SetDirection(Direction); diff --git a/chromium/third_party/blink/renderer/platform/animation/compositor_keyframe_model_test.cc b/chromium/third_party/blink/renderer/platform/animation/compositor_keyframe_model_test.cc index d6e98d70c29..98c3567a652 100644 --- a/chromium/third_party/blink/renderer/platform/animation/compositor_keyframe_model_test.cc +++ b/chromium/third_party/blink/renderer/platform/animation/compositor_keyframe_model_test.cc @@ -28,7 +28,7 @@ TEST(WebCompositorAnimationTest, ModifiedSettings) { *curve, compositor_target_property::OPACITY, 0, 1); keyframe_model->SetIterations(2); keyframe_model->SetStartTime(2); - keyframe_model->SetTimeOffset(2); + keyframe_model->SetTimeOffset(base::TimeDelta::FromSeconds(2)); keyframe_model->SetDirection(CompositorKeyframeModel::Direction::REVERSE); EXPECT_EQ(2, keyframe_model->Iterations()); diff --git a/chromium/third_party/blink/renderer/platform/animation/compositor_transform_operations.cc b/chromium/third_party/blink/renderer/platform/animation/compositor_transform_operations.cc index 001388046da..9ee7cf65d70 100644 --- a/chromium/third_party/blink/renderer/platform/animation/compositor_transform_operations.cc +++ b/chromium/third_party/blink/renderer/platform/animation/compositor_transform_operations.cc @@ -28,29 +28,29 @@ void CompositorTransformOperations::AppendTranslate(double x, double y, double z) { transform_operations_.AppendTranslate( - SkDoubleToMScalar(x), SkDoubleToMScalar(y), SkDoubleToMScalar(z)); + SkDoubleToScalar(x), SkDoubleToScalar(y), SkDoubleToScalar(z)); } void CompositorTransformOperations::AppendRotate(double x, double y, double z, double degrees) { - transform_operations_.AppendRotate(SkDoubleToMScalar(x), SkDoubleToMScalar(y), - SkDoubleToMScalar(z), - SkDoubleToMScalar(degrees)); + transform_operations_.AppendRotate(SkDoubleToScalar(x), SkDoubleToScalar(y), + SkDoubleToScalar(z), + SkDoubleToScalar(degrees)); } void CompositorTransformOperations::AppendScale(double x, double y, double z) { - transform_operations_.AppendScale(SkDoubleToMScalar(x), SkDoubleToMScalar(y), - SkDoubleToMScalar(z)); + transform_operations_.AppendScale(SkDoubleToScalar(x), SkDoubleToScalar(y), + SkDoubleToScalar(z)); } void CompositorTransformOperations::AppendSkew(double x, double y) { - transform_operations_.AppendSkew(SkDoubleToMScalar(x), SkDoubleToMScalar(y)); + transform_operations_.AppendSkew(SkDoubleToScalar(x), SkDoubleToScalar(y)); } void CompositorTransformOperations::AppendPerspective(double depth) { - transform_operations_.AppendPerspective(SkDoubleToMScalar(depth)); + transform_operations_.AppendPerspective(SkDoubleToScalar(depth)); } void CompositorTransformOperations::AppendMatrix(const SkMatrix44& matrix) { diff --git a/chromium/third_party/blink/renderer/platform/animation/timing_function.cc b/chromium/third_party/blink/renderer/platform/animation/timing_function.cc index 2ea4d36719a..5d8e9c8806a 100644 --- a/chromium/third_party/blink/renderer/platform/animation/timing_function.cc +++ b/chromium/third_party/blink/renderer/platform/animation/timing_function.cc @@ -200,7 +200,7 @@ bool operator==(const CubicBezierTimingFunction& lhs, if (rhs.GetType() != TimingFunction::Type::CUBIC_BEZIER) return false; - const CubicBezierTimingFunction& ctf = ToCubicBezierTimingFunction(rhs); + const auto& ctf = To<CubicBezierTimingFunction>(rhs); if ((lhs.GetEaseType() == CubicBezierTimingFunction::EaseType::CUSTOM) && (ctf.GetEaseType() == CubicBezierTimingFunction::EaseType::CUSTOM)) return (lhs.X1() == ctf.X1()) && (lhs.Y1() == ctf.Y1()) && @@ -213,7 +213,7 @@ bool operator==(const StepsTimingFunction& lhs, const TimingFunction& rhs) { if (rhs.GetType() != TimingFunction::Type::STEPS) return false; - const StepsTimingFunction& stf = ToStepsTimingFunction(rhs); + const auto& stf = To<StepsTimingFunction>(rhs); return (lhs.NumberOfSteps() == stf.NumberOfSteps()) && (lhs.GetStepPosition() == stf.GetStepPosition()); } @@ -223,15 +223,15 @@ bool operator==(const StepsTimingFunction& lhs, const TimingFunction& rhs) { bool operator==(const TimingFunction& lhs, const TimingFunction& rhs) { switch (lhs.GetType()) { case TimingFunction::Type::LINEAR: { - const LinearTimingFunction& linear = ToLinearTimingFunction(lhs); + const auto& linear = To<LinearTimingFunction>(lhs); return (linear == rhs); } case TimingFunction::Type::CUBIC_BEZIER: { - const CubicBezierTimingFunction& cubic = ToCubicBezierTimingFunction(lhs); + const auto& cubic = To<CubicBezierTimingFunction>(lhs); return (cubic == rhs); } case TimingFunction::Type::STEPS: { - const StepsTimingFunction& step = ToStepsTimingFunction(lhs); + const auto& step = To<StepsTimingFunction>(lhs); return (step == rhs); } default: diff --git a/chromium/third_party/blink/renderer/platform/animation/timing_function.h b/chromium/third_party/blink/renderer/platform/animation/timing_function.h index f7a9eaef5b1..8cf6ef43f37 100644 --- a/chromium/third_party/blink/renderer/platform/animation/timing_function.h +++ b/chromium/third_party/blink/renderer/platform/animation/timing_function.h @@ -30,6 +30,7 @@ #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/runtime_enabled_features.h" #include "third_party/blink/renderer/platform/wtf/assertions.h" +#include "third_party/blink/renderer/platform/wtf/casting.h" #include "third_party/blink/renderer/platform/wtf/std_lib_extras.h" #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" #include "third_party/blink/renderer/platform/wtf/thread_safe_ref_counted.h" @@ -217,14 +218,24 @@ PLATFORM_EXPORT bool operator==(const StepsTimingFunction&, PLATFORM_EXPORT bool operator==(const TimingFunction&, const TimingFunction&); PLATFORM_EXPORT bool operator!=(const TimingFunction&, const TimingFunction&); -#define DEFINE_TIMING_FUNCTION_TYPE_CASTS(typeName, enumName) \ - DEFINE_TYPE_CASTS(typeName##TimingFunction, TimingFunction, value, \ - value->GetType() == TimingFunction::Type::enumName, \ - value.GetType() == TimingFunction::Type::enumName) - -DEFINE_TIMING_FUNCTION_TYPE_CASTS(Linear, LINEAR); -DEFINE_TIMING_FUNCTION_TYPE_CASTS(CubicBezier, CUBIC_BEZIER); -DEFINE_TIMING_FUNCTION_TYPE_CASTS(Steps, STEPS); +template <> +struct DowncastTraits<LinearTimingFunction> { + static bool AllowFrom(const TimingFunction& value) { + return value.GetType() == TimingFunction::Type::LINEAR; + } +}; +template <> +struct DowncastTraits<CubicBezierTimingFunction> { + static bool AllowFrom(const TimingFunction& value) { + return value.GetType() == TimingFunction::Type::CUBIC_BEZIER; + } +}; +template <> +struct DowncastTraits<StepsTimingFunction> { + static bool AllowFrom(const TimingFunction& value) { + return value.GetType() == TimingFunction::Type::STEPS; + } +}; } // namespace blink |