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

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

Issue 2387883002: Use float for scroll offset. (Closed)
Patch Set: Fix README.md Created 4 years, 2 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 "cc/animation/scroll_offset_animations.h" 10 #include "cc/animation/scroll_offset_animations.h"
11 #include "platform/PlatformExport.h" 11 #include "platform/PlatformExport.h"
12 #include "platform/animation/CompositorAnimationDelegate.h" 12 #include "platform/animation/CompositorAnimationDelegate.h"
13 #include "platform/animation/CompositorAnimationPlayerClient.h" 13 #include "platform/animation/CompositorAnimationPlayerClient.h"
14 #include "platform/geometry/FloatPoint.h"
15 #include "platform/graphics/CompositorElementId.h" 14 #include "platform/graphics/CompositorElementId.h"
16 #include "platform/heap/Handle.h" 15 #include "platform/heap/Handle.h"
17 #include "platform/scroll/ScrollTypes.h" 16 #include "platform/scroll/ScrollTypes.h"
18 #include "wtf/Allocator.h" 17 #include "wtf/Allocator.h"
19 #include "wtf/Noncopyable.h" 18 #include "wtf/Noncopyable.h"
20 #include <memory> 19 #include <memory>
21 20
22 namespace blink { 21 namespace blink {
23 22
24 class ScrollableArea; 23 class ScrollableArea;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 PostAnimationCleanup, 61 PostAnimationCleanup,
63 62
64 // Running an animation on the compositor but need to continue it 63 // Running an animation on the compositor but need to continue it
65 // on the main thread. This could happen if a main thread scrolling 64 // on the main thread. This could happen if a main thread scrolling
66 // reason is added while animating the scroll offset. 65 // reason is added while animating the scroll offset.
67 RunningOnCompositorButNeedsTakeover, 66 RunningOnCompositorButNeedsTakeover,
68 67
69 // Waiting to cancel the animation currently running on the compositor 68 // Waiting to cancel the animation currently running on the compositor
70 // while another animation is requested. In this case, the currently 69 // while another animation is requested. In this case, the currently
71 // running animation is aborted and an animation to the new target 70 // running animation is aborted and an animation to the new target
72 // from the current position is started. 71 // from the current offset is started.
73 WaitingToCancelOnCompositorButNewScroll, 72 WaitingToCancelOnCompositorButNewScroll,
74 73
75 // Running an animation on the compositor but an adjustment to the 74 // Running an animation on the compositor but an adjustment to the
76 // scroll position was made on the main thread and the animation must 75 // scroll offset was made on the main thread and the animation must
77 // be updated. 76 // be updated.
78 RunningOnCompositorButNeedsAdjustment, 77 RunningOnCompositorButNeedsAdjustment,
79 }; 78 };
80 79
81 virtual ~ScrollAnimatorCompositorCoordinator(); 80 virtual ~ScrollAnimatorCompositorCoordinator();
82 81
83 bool hasAnimationThatRequiresService() const; 82 bool hasAnimationThatRequiresService() const;
84 void dispose(); 83 void dispose();
85 String runStateAsText() const; 84 String runStateAsText() const;
86 85
87 virtual bool hasRunningAnimation() const { return false; } 86 virtual bool hasRunningAnimation() const { return false; }
88 87
89 virtual void resetAnimationState(); 88 virtual void resetAnimationState();
90 virtual void cancelAnimation(); 89 virtual void cancelAnimation();
91 // Aborts the currently running scroll offset animation on the compositor 90 // Aborts the currently running scroll offset animation on the compositor
92 // and continues it on the main thread. This should only be called when in 91 // and continues it on the main thread. This should only be called when in
93 // DocumentLifecycle::LifecycleState::CompositingClean state. 92 // DocumentLifecycle::LifecycleState::CompositingClean state.
94 virtual void takeOverCompositorAnimation(); 93 virtual void takeOverCompositorAnimation();
95 // Updates the scroll position of the animator's ScrollableArea by 94 // Updates the scroll offset of the animator's ScrollableArea by
96 // adjustment and update the target of an ongoing scroll offset animation. 95 // adjustment and update the target of an ongoing scroll offset animation.
97 virtual void adjustAnimationAndSetScrollPosition(const DoublePoint& position, 96 virtual void adjustAnimationAndSetScrollOffset(const ScrollOffset&,
98 ScrollType); 97 ScrollType);
99 virtual void updateCompositorAnimations(); 98 virtual void updateCompositorAnimations();
100 99
101 virtual ScrollableArea* getScrollableArea() const = 0; 100 virtual ScrollableArea* getScrollableArea() const = 0;
102 virtual void tickAnimation(double monotonicTime) = 0; 101 virtual void tickAnimation(double monotonicTime) = 0;
103 virtual void notifyCompositorAnimationFinished(int groupId) = 0; 102 virtual void notifyCompositorAnimationFinished(int groupId) = 0;
104 virtual void notifyCompositorAnimationAborted(int groupId) = 0; 103 virtual void notifyCompositorAnimationAborted(int groupId) = 0;
105 virtual void layerForCompositedScrollingDidChange( 104 virtual void layerForCompositedScrollingDidChange(
106 CompositorAnimationTimeline*) = 0; 105 CompositorAnimationTimeline*) = 0;
107 106
108 RunState runStateForTesting() { return m_runState; } 107 RunState runStateForTesting() { return m_runState; }
109 108
110 DEFINE_INLINE_VIRTUAL_TRACE() {} 109 DEFINE_INLINE_VIRTUAL_TRACE() {}
111 110
112 protected: 111 protected:
113 explicit ScrollAnimatorCompositorCoordinator(); 112 explicit ScrollAnimatorCompositorCoordinator();
114 113
115 void scrollPositionChanged(const DoublePoint& offset, ScrollType); 114 void scrollOffsetChanged(const ScrollOffset&, ScrollType);
116 115
117 void adjustImplOnlyScrollOffsetAnimation(const IntSize& adjustment); 116 void adjustImplOnlyScrollOffsetAnimation(const IntSize& adjustment);
118 IntSize implOnlyAnimationAdjustmentForTesting() { 117 IntSize implOnlyAnimationAdjustmentForTesting() {
119 return m_implOnlyAnimationAdjustment; 118 return m_implOnlyAnimationAdjustment;
120 } 119 }
121 120
122 void resetAnimationIds(); 121 void resetAnimationIds();
123 bool addAnimation(std::unique_ptr<CompositorAnimation>); 122 bool addAnimation(std::unique_ptr<CompositorAnimation>);
124 void removeAnimation(); 123 void removeAnimation();
125 virtual void abortAnimation(); 124 virtual void abortAnimation();
126 125
127 FloatPoint compositorOffsetFromBlinkOffset(FloatPoint); 126 // "offset" in the cc scrolling code is analagous to "position" in the blink
128 FloatPoint blinkOffsetFromCompositorOffset(FloatPoint); 127 // scrolling code:
128 // they both represent the distance from the top-left of the overflow rect to
129 // the top-left
130 // of the viewport. In blink, "offset" refers to the distance of the viewport
131 // from the
132 // beginning of flow of the contents. In left-to-right flows, blink "offset"
133 // and "position" are
134 // equivalent, but in right-to-left flows (including direction:rtl,
135 // writing-mode:vertical-rl,
136 // and flex-direction:row-reverse), they aren't. See core/layout/README.md
137 // for more info.
138 FloatPoint compositorOffsetFromBlinkOffset(ScrollOffset);
139 ScrollOffset blinkOffsetFromCompositorOffset(FloatPoint);
129 140
130 void compositorAnimationFinished(int groupId); 141 void compositorAnimationFinished(int groupId);
131 // Returns true if the compositor player was attached to a new layer. 142 // Returns true if the compositor player was attached to a new layer.
132 bool reattachCompositorPlayerIfNeeded(CompositorAnimationTimeline*); 143 bool reattachCompositorPlayerIfNeeded(CompositorAnimationTimeline*);
133 144
134 // CompositorAnimationDelegate implementation. 145 // CompositorAnimationDelegate implementation.
135 void notifyAnimationStarted(double monotonicTime, int group) override; 146 void notifyAnimationStarted(double monotonicTime, int group) override;
136 void notifyAnimationFinished(double monotonicTime, int group) override; 147 void notifyAnimationFinished(double monotonicTime, int group) override;
137 void notifyAnimationAborted(double monotonicTime, int group) override; 148 void notifyAnimationAborted(double monotonicTime, int group) override;
138 void notifyAnimationTakeover(double monotonicTime, 149 void notifyAnimationTakeover(double monotonicTime,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 bool hasImplOnlyAnimationUpdate() const; 181 bool hasImplOnlyAnimationUpdate() const;
171 void updateImplOnlyCompositorAnimations(); 182 void updateImplOnlyCompositorAnimations();
172 // Accesses compositing state and should only be called when in or after 183 // Accesses compositing state and should only be called when in or after
173 // DocumentLifecycle::LifecycleState::CompositingClean. 184 // DocumentLifecycle::LifecycleState::CompositingClean.
174 void takeOverImplOnlyScrollOffsetAnimation(); 185 void takeOverImplOnlyScrollOffsetAnimation();
175 }; 186 };
176 187
177 } // namespace blink 188 } // namespace blink
178 189
179 #endif // ScrollAnimatorCompositorCoordinator_h 190 #endif // ScrollAnimatorCompositorCoordinator_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698