Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(107)

Unified Diff: ui/compositor/layer_animation_element.cc

Issue 2291923002: Check target value
Patch Set: Test Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/compositor/layer_animation_element.h ('k') | ui/compositor/layer_animator.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
}
« no previous file with comments | « ui/compositor/layer_animation_element.h ('k') | ui/compositor/layer_animator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698