Index: cc/animation/animation_player.h |
diff --git a/cc/animation/animation_player.h b/cc/animation/animation_player.h |
index 99a8d985a647f7d5ff67eeba166fabe52704cd77..62c9d54b2b2412a8886e538fcfce249a945a3178 100644 |
--- a/cc/animation/animation_player.h |
+++ b/cc/animation/animation_player.h |
@@ -19,6 +19,7 @@ |
namespace cc { |
class AnimationDelegate; |
+class AnimationEvents; |
class AnimationHost; |
class AnimationTimeline; |
struct AnimationEvent; |
@@ -75,6 +76,12 @@ class CC_ANIMATION_EXPORT AnimationPlayer |
void PushPropertiesTo(AnimationPlayer* player_impl); |
+ void Animate(base::TimeTicks monotonic_time); |
+ void UpdateState(bool start_ready_animations, AnimationEvents* events); |
+ |
+ void UpdateActivation(ActivationType type); |
+ void Deactivate(); |
+ |
// AnimationDelegate routing. |
bool NotifyAnimationStarted(const AnimationEvent& event); |
bool NotifyAnimationFinished(const AnimationEvent& event); |
@@ -152,6 +159,17 @@ class CC_ANIMATION_EXPORT AnimationPlayer |
void GetPropertyAnimationState(PropertyAnimationState* pending_state, |
PropertyAnimationState* active_state) const; |
+ // When a scroll animation is removed on the main thread, its compositor |
+ // thread counterpart continues producing scroll deltas until activation. |
+ // These scroll deltas need to be cleared at activation, so that the active |
+ // element's scroll offset matches the offset provided by the main thread |
+ // rather than a combination of this offset and scroll deltas produced by |
+ // the removed animation. This is to provide the illusion of synchronicity to |
+ // JS that simultaneously removes an animation and sets the scroll offset. |
+ bool scroll_offset_animation_was_interrupted() const { |
+ return scroll_offset_animation_was_interrupted_; |
+ } |
+ |
private: |
friend class base::RefCounted<AnimationPlayer>; |
@@ -195,6 +213,11 @@ class CC_ANIMATION_EXPORT AnimationPlayer |
// previous attempt at starting animations failed to start all animations. |
bool needs_to_start_animations_; |
+ // This is used to ensure that we don't spam the animation host. |
+ bool is_active_; |
+ |
+ bool scroll_offset_animation_was_interrupted_; |
+ |
DISALLOW_COPY_AND_ASSIGN(AnimationPlayer); |
}; |