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

Unified Diff: Source/platform/scroll/ProgrammaticScrollAnimator.h

Issue 1133513002: Animations: Port ProgrammaticScrollAnimator to use compositor timelines (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@linkhigh
Patch Set: Mark subframe-interrupted-scroll as flaky Created 5 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: Source/platform/scroll/ProgrammaticScrollAnimator.h
diff --git a/Source/platform/scroll/ProgrammaticScrollAnimator.h b/Source/platform/scroll/ProgrammaticScrollAnimator.h
index d3813a33eb54555fc19179f72864ed75820add85..9ee87562a7aa39b9067e82a33f122d8e2fb4753d 100644
--- a/Source/platform/scroll/ProgrammaticScrollAnimator.h
+++ b/Source/platform/scroll/ProgrammaticScrollAnimator.h
@@ -6,6 +6,8 @@
#define ProgrammaticScrollAnimator_h
#include "platform/geometry/FloatPoint.h"
+#include "public/platform/WebCompositorAnimationDelegate.h"
+#include "public/platform/WebCompositorAnimationPlayerClient.h"
#include "wtf/FastAllocBase.h"
#include "wtf/Noncopyable.h"
#include "wtf/OwnPtr.h"
@@ -14,11 +16,13 @@
namespace blink {
class ScrollableArea;
+class WebCompositorAnimationPlayer;
+class WebCompositorAnimationTimeline;
class WebScrollOffsetAnimationCurve;
// Animator for fixed-destination scrolls, such as those triggered by
// CSSOM View scroll APIs.
-class ProgrammaticScrollAnimator {
+class ProgrammaticScrollAnimator : private WebCompositorAnimationPlayerClient, WebCompositorAnimationDelegate {
WTF_MAKE_NONCOPYABLE(ProgrammaticScrollAnimator);
WTF_MAKE_FAST_ALLOCATED(ProgrammaticScrollAnimator);
public:
@@ -32,8 +36,14 @@ public:
void tickAnimation(double monotonicTime);
bool hasAnimationThatRequiresService() const;
void updateCompositorAnimations();
- void layerForCompositedScrollingDidChange();
+ void layerForCompositedScrollingDidChange(WebCompositorAnimationTimeline*);
void notifyCompositorAnimationFinished(int groupId);
+ // WebCompositorAnimationDelegate implementation.
+ void notifyAnimationStarted(double monotonicTime, int group) override;
+ void notifyAnimationFinished(double monotonicTime, int group) override;
+
+ // WebCompositorAnimationPlayerClient implementation.
+ WebCompositorAnimationPlayer* compositorPlayer() const override;
private:
explicit ProgrammaticScrollAnimator(ScrollableArea*);
@@ -60,6 +70,10 @@ private:
void resetAnimationState();
void notifyPositionChanged(const DoublePoint&);
+ void reattachCompositorPlayerIfNeeded(WebCompositorAnimationTimeline*);
+
+ OwnPtr<WebCompositorAnimationPlayer> m_compositorPlayer;
+ int m_compositorAnimationAttachedToLayerId;
ScrollableArea* m_scrollableArea;
OwnPtr<WebScrollOffsetAnimationCurve> m_animationCurve;
« no previous file with comments | « Source/core/page/scrolling/ScrollingCoordinator.cpp ('k') | Source/platform/scroll/ProgrammaticScrollAnimator.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698