| Index: cc/animation/scroll_offset_animations.h
|
| diff --git a/cc/animation/scroll_offset_animations.h b/cc/animation/scroll_offset_animations.h
|
| index 26b07d52c273341b887a402346018ef9d2288cdb..421a31380cdf3bba8dc69de7cf14f674da56228e 100644
|
| --- a/cc/animation/scroll_offset_animations.h
|
| +++ b/cc/animation/scroll_offset_animations.h
|
| @@ -5,6 +5,8 @@
|
| #ifndef CC_ANIMATION_SCROLL_OFFSET_ANIMATIONS_H_
|
| #define CC_ANIMATION_SCROLL_OFFSET_ANIMATIONS_H_
|
|
|
| +#include <unordered_map>
|
| +
|
| #include "cc/animation/scroll_offset_animations_impl.h"
|
| #include "cc/trees/mutator_host_client.h"
|
|
|
| @@ -14,16 +16,18 @@ namespace cc {
|
| // that may impact an impl-only scroll offset animation.
|
| // Note that this class only exists on the main thread.
|
| struct CC_EXPORT ScrollOffsetAnimationUpdate {
|
| - enum Type { SCROLL_OFFSET_CHANGED };
|
| -
|
| - ScrollOffsetAnimationUpdate(Type, ElementId);
|
| + ScrollOffsetAnimationUpdate();
|
| + explicit ScrollOffsetAnimationUpdate(ElementId);
|
|
|
| - Type type_;
|
| // The element to which this update applies.
|
| ElementId element_id_;
|
|
|
| // The amount by which the scroll offset is changed on the main thread.
|
| gfx::Vector2dF adjustment_;
|
| +
|
| + // If set to true, abort the currently running impl only scroll offset
|
| + // animation running on cc and finish it on the main thread.
|
| + bool takeover_;
|
| };
|
|
|
| // ScrollOffsetAnimations contains a list of ScrollOffsetAnimationUpdates.
|
| @@ -34,7 +38,9 @@ class CC_EXPORT ScrollOffsetAnimations {
|
| explicit ScrollOffsetAnimations(AnimationHost* animation_host);
|
| ~ScrollOffsetAnimations();
|
|
|
| - void AddUpdate(ScrollOffsetAnimationUpdate);
|
| + void AddAdjustmentUpdate(ElementId, gfx::Vector2dF adjustment);
|
| + void AddTakeoverUpdate(ElementId);
|
| +
|
| bool HasUpdatesForTesting() const;
|
|
|
| // Goes through the updates in the order in which they're added and calls the
|
| @@ -42,8 +48,11 @@ class CC_EXPORT ScrollOffsetAnimations {
|
| void PushPropertiesTo(ScrollOffsetAnimationsImpl*);
|
|
|
| private:
|
| - using UpdatesQueue = std::vector<ScrollOffsetAnimationUpdate>;
|
| - UpdatesQueue queue_;
|
| + ScrollOffsetAnimationUpdate GetUpdateForElementId(ElementId) const;
|
| +
|
| + using ElementToUpdateMap =
|
| + std::unordered_map<ElementId, ScrollOffsetAnimationUpdate>;
|
| + ElementToUpdateMap element_to_update_map_;
|
|
|
| AnimationHost* animation_host_;
|
| };
|
|
|