Index: cc/animation/element_animations.h |
diff --git a/cc/animation/element_animations.h b/cc/animation/element_animations.h |
index 296a0ad6274d90c2f799b6a53571e55445f10bb9..87fac9d95b0eaa2bc1ab736dbbc4a28e3bea5fdd 100644 |
--- a/cc/animation/element_animations.h |
+++ b/cc/animation/element_animations.h |
@@ -5,7 +5,6 @@ |
#ifndef CC_ANIMATION_ELEMENT_ANIMATIONS_H_ |
#define CC_ANIMATION_ELEMENT_ANIMATIONS_H_ |
-#include <bitset> |
#include <memory> |
#include <vector> |
@@ -173,44 +172,20 @@ class CC_EXPORT ElementAnimations : public base::RefCounted<ElementAnimations> { |
bool scroll_offset_animation_was_interrupted() const { |
return scroll_offset_animation_was_interrupted_; |
} |
+ void SetScrollOffsetAnimationWasInterrupted(); |
- bool needs_to_start_animations_for_testing() { |
- return needs_to_start_animations_; |
- } |
+ // TODO(loyso): Erase it, use AnimationPlayer's one. |
+ bool needs_to_start_animations_for_testing() const; |
void SetNeedsPushProperties(); |
bool needs_push_properties() const { return needs_push_properties_; } |
- private: |
- friend class base::RefCounted<ElementAnimations>; |
- |
- ElementAnimations(); |
- ~ElementAnimations(); |
- |
- // A set of target properties. TargetProperty must be 0-based enum. |
- using TargetProperties = |
- std::bitset<TargetProperty::LAST_TARGET_PROPERTY + 1>; |
- |
- void PushNewAnimationsToImplThread( |
- ElementAnimations* element_animations_impl) const; |
- void MarkAbortedAnimationsForDeletion( |
- ElementAnimations* element_animations_impl) const; |
- void RemoveAnimationsCompletedOnMainThread( |
- ElementAnimations* element_animations_impl) const; |
- void PushPropertiesToImplThread(ElementAnimations* element_animations_impl); |
- |
- void StartAnimations(base::TimeTicks monotonic_time); |
- void PromoteStartedAnimations(base::TimeTicks monotonic_time, |
- AnimationEvents* events); |
- void MarkFinishedAnimations(base::TimeTicks monotonic_time); |
- void MarkAnimationsForDeletion(base::TimeTicks monotonic_time, |
- AnimationEvents* events); |
- void PurgeAnimationsMarkedForDeletion(); |
+ // TODO(loyso): Rework UpdateClientAnimationState to use bitset. |
ajuma
2016/09/13 17:19:16
Agreed. In particular, the version below that take
loyso (OOO)
2016/09/14 00:20:07
Acknowledged.
|
+ void UpdateClientAnimationState(TargetProperty::Type target_property); |
+ void UpdateClientAnimationState(bool transform, bool opacity, bool filter); |
+ void SetNeedsUpdateImplClientState(bool transform, bool opacity, bool filter); |
- void TickAnimations(base::TimeTicks monotonic_time); |
- |
- enum UpdateActivationType { NORMAL_ACTIVATION, FORCE_ACTIVATION }; |
- void UpdateActivation(UpdateActivationType type); |
+ void UpdateActivationNormal(); |
void NotifyClientOpacityAnimated(float opacity, |
bool notify_active_elements, |
@@ -224,14 +199,25 @@ class CC_EXPORT ElementAnimations : public base::RefCounted<ElementAnimations> { |
void NotifyClientScrollOffsetAnimated(const gfx::ScrollOffset& scroll_offset, |
bool notify_active_elements, |
bool notify_pending_elements); |
+ gfx::ScrollOffset ScrollOffsetForAnimation() const; |
+ |
+ private: |
+ friend class base::RefCounted<ElementAnimations>; |
+ |
+ ElementAnimations(); |
+ ~ElementAnimations(); |
+ |
+ enum class ActivationType { NORMAL, FORCE }; |
+ void UpdateActivation(ActivationType type); |
+ |
+ void UpdateClientAnimationStateInternal(TargetProperty::Type property); |
+ |
void NotifyClientAnimationChanged( |
TargetProperty::Type property, |
ElementListType list_type, |
bool notify_elements_about_potential_animation, |
bool notify_elements_about_running_animation); |
- void UpdateClientAnimationState(TargetProperty::Type property); |
- |
void OnFilterAnimated(ElementListType list_type, |
const FilterOperations& filters); |
void OnOpacityAnimated(ElementListType list_type, float opacity); |
@@ -243,28 +229,12 @@ class CC_EXPORT ElementAnimations : public base::RefCounted<ElementAnimations> { |
TargetProperty::Type property, |
AnimationChangeType change_type, |
bool is_animating); |
- gfx::ScrollOffset ScrollOffsetForAnimation() const; |
- void NotifyPlayersAnimationStarted(base::TimeTicks monotonic_time, |
- TargetProperty::Type target_property, |
- int group); |
- void NotifyPlayersAnimationFinished(base::TimeTicks monotonic_time, |
- TargetProperty::Type target_property, |
- int group); |
- void NotifyPlayersAnimationAborted(base::TimeTicks monotonic_time, |
- TargetProperty::Type target_property, |
- int group); |
- void NotifyPlayersAnimationWaitingForDeletion(); |
- void NotifyPlayersAnimationPropertyUpdate(const AnimationEvent& event); |
- void NotifyPlayersAnimationTakeover(base::TimeTicks monotonic_time, |
- TargetProperty::Type target_property, |
- double animation_start_time, |
- std::unique_ptr<AnimationCurve> curve); |
+ void ClearNeedsUpdateImplClientState(); |
std::unique_ptr<PlayersList> players_list_; |
AnimationHost* animation_host_; |
ElementId element_id_; |
- std::vector<std::unique_ptr<Animation>> animations_; |
// This is used to ensure that we don't spam the animation host. |
bool is_active_; |
@@ -274,10 +244,6 @@ class CC_EXPORT ElementAnimations : public base::RefCounted<ElementAnimations> { |
bool has_element_in_active_list_; |
bool has_element_in_pending_list_; |
- // Only try to start animations when new animations are added or when the |
- // previous attempt at starting animations failed to start all animations. |
- bool needs_to_start_animations_; |
- |
bool scroll_offset_animation_was_interrupted_; |
bool needs_push_properties_; |
@@ -299,6 +265,10 @@ class CC_EXPORT ElementAnimations : public base::RefCounted<ElementAnimations> { |
struct PropertyAnimationState opacity_animation_state_; |
struct PropertyAnimationState transform_animation_state_; |
+ bool needs_update_impl_client_state_transform_ : 1; |
+ bool needs_update_impl_client_state_opacity_ : 1; |
+ bool needs_update_impl_client_state_filter_ : 1; |
ajuma
2016/09/13 17:19:16
These need to be initialized.
loyso (OOO)
2016/09/14 00:20:07
It is initialized. See ClearNeedsUpdateImplClientS
|
+ |
DISALLOW_COPY_AND_ASSIGN(ElementAnimations); |
}; |