| Index: ui/compositor/layer_animation_element.cc
|
| diff --git a/ui/compositor/layer_animation_element.cc b/ui/compositor/layer_animation_element.cc
|
| index 1e9f93fd7bc7510b66d57e22fda1aa6174343260..f802fb930b11cc27b927d5039e885b5f694b5157 100644
|
| --- a/ui/compositor/layer_animation_element.cc
|
| +++ b/ui/compositor/layer_animation_element.cc
|
| @@ -44,6 +44,9 @@ class Pause : public LayerAnimationElement {
|
| }
|
| void OnGetTarget(TargetValue* target) const override {}
|
| void OnAbort(LayerAnimationDelegate* delegate) override {}
|
| + bool AreStartAndTargetSame() override {
|
| + return false;
|
| + }
|
|
|
| DISALLOW_COPY_AND_ASSIGN(Pause);
|
| };
|
| @@ -74,6 +77,10 @@ class InterpolatedTransformTransition : public LayerAnimationElement {
|
|
|
| void OnAbort(LayerAnimationDelegate* delegate) override {}
|
|
|
| + bool AreStartAndTargetSame() override {
|
| + return false;
|
| + }
|
| +
|
| private:
|
| std::unique_ptr<InterpolatedTransform> interpolated_transform_;
|
|
|
| @@ -107,6 +114,10 @@ class BoundsTransition : public LayerAnimationElement {
|
|
|
| void OnAbort(LayerAnimationDelegate* delegate) override {}
|
|
|
| + bool AreStartAndTargetSame() override {
|
| + return start_ == target_;
|
| + }
|
| +
|
| private:
|
| gfx::Rect start_;
|
| const gfx::Rect target_;
|
| @@ -141,6 +152,10 @@ class VisibilityTransition : public LayerAnimationElement {
|
|
|
| void OnAbort(LayerAnimationDelegate* delegate) override {}
|
|
|
| + bool AreStartAndTargetSame() override {
|
| + return start_ == target_;
|
| + }
|
| +
|
| private:
|
| bool start_;
|
| const bool target_;
|
| @@ -176,6 +191,10 @@ class BrightnessTransition : public LayerAnimationElement {
|
|
|
| void OnAbort(LayerAnimationDelegate* delegate) override {}
|
|
|
| + bool AreStartAndTargetSame() override {
|
| + return start_ == target_;
|
| + }
|
| +
|
| private:
|
| float start_;
|
| const float target_;
|
| @@ -211,6 +230,10 @@ class GrayscaleTransition : public LayerAnimationElement {
|
|
|
| void OnAbort(LayerAnimationDelegate* delegate) override {}
|
|
|
| + bool AreStartAndTargetSame() override {
|
| + return start_ == target_;
|
| + }
|
| +
|
| private:
|
| float start_;
|
| const float target_;
|
| @@ -246,6 +269,10 @@ class ColorTransition : public LayerAnimationElement {
|
|
|
| void OnAbort(LayerAnimationDelegate* delegate) override {}
|
|
|
| + bool AreStartAndTargetSame() override {
|
| + return start_ == target_;
|
| + }
|
| +
|
| private:
|
| SkColor start_;
|
| const SkColor target_;
|
| @@ -275,6 +302,7 @@ class ThreadedLayerAnimationElement : public LayerAnimationElement {
|
| return false;
|
|
|
| if (Started() && IsThreaded()) {
|
| + LOG(ERROR) << "RemoveThreadedAnimation";
|
| LayerThreadedAnimationDelegate* threaded =
|
| delegate->GetThreadedAnimationDelegate();
|
| DCHECK(threaded);
|
| @@ -303,6 +331,7 @@ class ThreadedLayerAnimationElement : public LayerAnimationElement {
|
| set_effective_start_time(base::TimeTicks());
|
| std::unique_ptr<cc::Animation> animation = CreateCCAnimation();
|
| animation->set_needs_synchronized_start_time(true);
|
| + LOG(ERROR) << "AddThreadedAnimation";
|
|
|
| LayerThreadedAnimationDelegate* threaded =
|
| delegate->GetThreadedAnimationDelegate();
|
| @@ -349,6 +378,7 @@ class ThreadedOpacityTransition : public ThreadedLayerAnimationElement {
|
| }
|
|
|
| std::unique_ptr<cc::Animation> CreateCCAnimation() override {
|
| + LOG(ERROR) << "Create Opacity CC Animation";
|
| std::unique_ptr<cc::AnimationCurve> animation_curve(
|
| new FloatAnimationCurveAdapter(tween_type(), start_, target_,
|
| duration()));
|
| @@ -362,6 +392,10 @@ class ThreadedOpacityTransition : public ThreadedLayerAnimationElement {
|
| target->opacity = target_;
|
| }
|
|
|
| + bool AreStartAndTargetSame() override {
|
| + return start_ == target_;
|
| + }
|
| +
|
| private:
|
| float start_;
|
| const float target_;
|
| @@ -413,6 +447,10 @@ class ThreadedTransformTransition : public ThreadedLayerAnimationElement {
|
| target->transform = target_;
|
| }
|
|
|
| + bool AreStartAndTargetSame() override {
|
| + return start_ == target_;
|
| + }
|
| +
|
| private:
|
| gfx::Transform start_;
|
| const gfx::Transform target_;
|
| @@ -479,7 +517,13 @@ void LayerAnimationElement::Start(LayerAnimationDelegate* delegate,
|
| DCHECK(first_frame_);
|
| animation_group_id_ = animation_group_id;
|
| last_progressed_fraction_ = 0.0;
|
| +
|
| OnStart(delegate);
|
| + if (AreStartAndTargetSame()) {
|
| + ProgressToEnd(delegate);
|
| + return;
|
| + }
|
| +
|
| RequestEffectiveStart(delegate);
|
| first_frame_ = false;
|
| }
|
|
|