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

Side by Side Diff: third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.h

Issue 1778223002: Revert of Takeover MT initiated animations from the compositor (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2661
Patch Set: Created 4 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef ScrollAnimatorCompositorCoordinator_h 5 #ifndef ScrollAnimatorCompositorCoordinator_h
6 #define ScrollAnimatorCompositorCoordinator_h 6 #define ScrollAnimatorCompositorCoordinator_h
7 7
8 #include "base/gtest_prod_util.h" 8 #include "base/gtest_prod_util.h"
9 #include "cc/animation/animation_curve.h" 9 #include "cc/animation/animation_curve.h"
10 #include "platform/PlatformExport.h" 10 #include "platform/PlatformExport.h"
(...skipping 18 matching lines...) Expand all
29 public: 29 public:
30 virtual ~ScrollAnimatorCompositorCoordinator(); 30 virtual ~ScrollAnimatorCompositorCoordinator();
31 31
32 bool hasAnimationThatRequiresService() const; 32 bool hasAnimationThatRequiresService() const;
33 void dispose(); 33 void dispose();
34 34
35 virtual bool hasRunningAnimation() const { return false; } 35 virtual bool hasRunningAnimation() const { return false; }
36 36
37 virtual void resetAnimationState(); 37 virtual void resetAnimationState();
38 virtual void cancelAnimation(); 38 virtual void cancelAnimation();
39 // Aborts the currently running scroll offset animation on the compositor
40 // and continues it on the main thread. This should only be called when in
41 // DocumentLifecycle::LifecycleState::CompositingClean state.
42 virtual void takeoverCompositorAnimation();
43 39
44 virtual ScrollableArea* scrollableArea() const = 0; 40 virtual ScrollableArea* scrollableArea() const = 0;
45 virtual void tickAnimation(double monotonicTime) = 0; 41 virtual void tickAnimation(double monotonicTime) = 0;
46 virtual void updateCompositorAnimations() = 0; 42 virtual void updateCompositorAnimations() = 0;
47 virtual void notifyCompositorAnimationFinished(int groupId) = 0; 43 virtual void notifyCompositorAnimationFinished(int groupId) = 0;
48 virtual void notifyCompositorAnimationAborted(int groupId) = 0; 44 virtual void notifyCompositorAnimationAborted(int groupId) = 0;
49 virtual void layerForCompositedScrollingDidChange(CompositorAnimationTimelin e*) = 0; 45 virtual void layerForCompositedScrollingDidChange(CompositorAnimationTimelin e*) = 0;
50 46
51 DEFINE_INLINE_VIRTUAL_TRACE() { } 47 DEFINE_INLINE_VIRTUAL_TRACE() { }
52 48
53 protected: 49 protected:
54 explicit ScrollAnimatorCompositorCoordinator(); 50 explicit ScrollAnimatorCompositorCoordinator();
55 51
56 bool addAnimation(PassOwnPtr<CompositorAnimation>); 52 bool addAnimation(PassOwnPtr<CompositorAnimation>);
57 void removeAnimation(); 53 void removeAnimation();
58 virtual void abortAnimation(); 54 void abortAnimation();
59 55
60 void compositorAnimationFinished(int groupId); 56 void compositorAnimationFinished(int groupId);
61 // Returns true if the compositor player was attached to a new layer. 57 // Returns true if the compositor player was attached to a new layer.
62 bool reattachCompositorPlayerIfNeeded(CompositorAnimationTimeline*); 58 bool reattachCompositorPlayerIfNeeded(CompositorAnimationTimeline*);
63 59
64 // WebCompositorAnimationDelegate implementation. 60 // WebCompositorAnimationDelegate implementation.
65 void notifyAnimationStarted(double monotonicTime, int group) override; 61 void notifyAnimationStarted(double monotonicTime, int group) override;
66 void notifyAnimationFinished(double monotonicTime, int group) override; 62 void notifyAnimationFinished(double monotonicTime, int group) override;
67 void notifyAnimationAborted(double monotonicTime, int group) override; 63 void notifyAnimationAborted(double monotonicTime, int group) override;
68 void notifyAnimationTakeover( 64 void notifyAnimationTakeover(
69 double monotonicTime, 65 double monotonicTime,
70 double animationStartTime, 66 double animationStartTime,
71 scoped_ptr<cc::AnimationCurve>) override { }; 67 scoped_ptr<cc::AnimationCurve>) override { };
72 68
73 // CompositorAnimationPlayerClient implementation. 69 // CompositorAnimationPlayerClient implementation.
74 CompositorAnimationPlayer* compositorPlayer() const override; 70 CompositorAnimationPlayer* compositorPlayer() const override;
75 71
76 friend class Internals; 72 friend class Internals;
77 FRIEND_TEST_ALL_PREFIXES(ScrollAnimatorTest, MainThreadStates); 73 FRIEND_TEST_ALL_PREFIXES(ScrollAnimatorTest, MainThreadStates);
78 FRIEND_TEST_ALL_PREFIXES(ScrollAnimatorTest, AnimatedScrollTakeover);
79 74
80 enum class RunState { 75 enum class RunState {
81 // No animation. 76 // No animation.
82 Idle, 77 Idle,
83 78
84 // Waiting to send an animation to the compositor. There might also 79 // Waiting to send an animation to the compositor. There might also
85 // already be another animation running on the compositor that will need 80 // already be another animation running on the compositor that will need
86 // to be canceled first. 81 // to be canceled first.
87 WaitingToSendToCompositor, 82 WaitingToSendToCompositor,
88 83
89 // Running an animation on the compositor. 84 // Running an animation on the compositor.
90 RunningOnCompositor, 85 RunningOnCompositor,
91 86
92 // Running an animation on the compositor but needs update. 87 // Running an animation on the compositor but needs update.
93 RunningOnCompositorButNeedsUpdate, 88 RunningOnCompositorButNeedsUpdate,
94 89
95 // Running an animation on the main thread. 90 // Running an animation on the main thread.
96 RunningOnMainThread, 91 RunningOnMainThread,
97 92
98 // Waiting to cancel the animation currently running on the compositor. 93 // Waiting to cancel the animation currently running on the compositor.
99 // There is no pending animation to replace the canceled animation. 94 // There is no pending animation to replace the canceled animation.
100 WaitingToCancelOnCompositor, 95 WaitingToCancelOnCompositor,
101 96
102 // Finished an animation that was running on the main thread or the 97 // Finished an animation that was running on the main thread or the
103 // compositor thread. When in this state, post animation cleanup can 98 // compositor thread. When in this state, post animation cleanup can
104 // be performed. 99 // be performed.
105 PostAnimationCleanup, 100 PostAnimationCleanup
106
107 // Running an animation on the compositor but need to continue it
108 // on the main thread. This could happen if a main thread scrolling
109 // reason is added while animating the scroll offset.
110 RunningOnCompositorButNeedsTakeover,
111 }; 101 };
112 102
113 OwnPtr<CompositorAnimationPlayer> m_compositorPlayer; 103 OwnPtr<CompositorAnimationPlayer> m_compositorPlayer;
114 int m_compositorAnimationAttachedToLayerId; 104 int m_compositorAnimationAttachedToLayerId;
115 RunState m_runState; 105 RunState m_runState;
116 int m_compositorAnimationId; 106 int m_compositorAnimationId;
117 int m_compositorAnimationGroupId; 107 int m_compositorAnimationGroupId;
118 }; 108 };
119 109
120 } // namespace blink 110 } // namespace blink
121 111
122 #endif // ScrollAnimatorCompositorCoordinator_h 112 #endif // ScrollAnimatorCompositorCoordinator_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698