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

Unified Diff: third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp

Issue 2015113003: Correctly update scroll offset animations in response to scroll anchoring (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nit Created 4 years, 7 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: third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp b/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp
index db9139da68e7d740f3ed25356394295e2792dcc3..1d58966e8e2a1064ab64e156e5355ffdc1d45e2c 100644
--- a/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp
+++ b/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp
@@ -40,13 +40,18 @@ void ScrollAnimatorCompositorCoordinator::dispose()
m_compositorPlayer.reset();
}
-void ScrollAnimatorCompositorCoordinator::resetAnimationState()
+void ScrollAnimatorCompositorCoordinator::resetAnimationIds()
{
- m_runState = RunState::Idle;
m_compositorAnimationId = 0;
m_compositorAnimationGroupId = 0;
}
+void ScrollAnimatorCompositorCoordinator::resetAnimationState()
+{
+ m_runState = RunState::Idle;
+ resetAnimationIds();
+}
+
bool ScrollAnimatorCompositorCoordinator::hasAnimationThatRequiresService() const
{
if (hasImplOnlyAnimationUpdate())
@@ -62,6 +67,7 @@ bool ScrollAnimatorCompositorCoordinator::hasAnimationThatRequiresService() cons
case RunState::RunningOnMainThread:
case RunState::RunningOnCompositorButNeedsUpdate:
case RunState::RunningOnCompositorButNeedsTakeover:
+ case RunState::RunningOnCompositorButNeedsAdjustment:
case RunState::WaitingToCancelOnCompositor:
return true;
}
@@ -98,7 +104,6 @@ void ScrollAnimatorCompositorCoordinator::cancelAnimation()
case RunState::WaitingToCancelOnCompositor:
case RunState::PostAnimationCleanup:
break;
- case RunState::RunningOnCompositorButNeedsTakeover:
case RunState::WaitingToSendToCompositor:
if (m_compositorAnimationId) {
// We still have a previous animation running on the compositor.
@@ -111,6 +116,8 @@ void ScrollAnimatorCompositorCoordinator::cancelAnimation()
m_runState = RunState::PostAnimationCleanup;
break;
case RunState::WaitingToCancelOnCompositorButNewScroll:
+ case RunState::RunningOnCompositorButNeedsAdjustment:
+ case RunState::RunningOnCompositorButNeedsTakeover:
case RunState::RunningOnCompositorButNeedsUpdate:
case RunState::RunningOnCompositor:
m_runState = RunState::WaitingToCancelOnCompositor;
@@ -133,6 +140,7 @@ void ScrollAnimatorCompositorCoordinator::takeOverCompositorAnimation()
case RunState::WaitingToSendToCompositor:
case RunState::RunningOnMainThread:
break;
+ case RunState::RunningOnCompositorButNeedsAdjustment:
case RunState::RunningOnCompositorButNeedsUpdate:
case RunState::RunningOnCompositor:
// We call abortAnimation that makes changes to the animation running on
@@ -166,6 +174,7 @@ void ScrollAnimatorCompositorCoordinator::compositorAnimationFinished(
case RunState::WaitingToCancelOnCompositorButNewScroll:
break;
case RunState::RunningOnCompositor:
+ case RunState::RunningOnCompositorButNeedsAdjustment:
case RunState::RunningOnCompositorButNeedsUpdate:
case RunState::RunningOnCompositorButNeedsTakeover:
case RunState::WaitingToCancelOnCompositor:
@@ -268,12 +277,19 @@ void ScrollAnimatorCompositorCoordinator::updateCompositorAnimations()
if (m_implOnlyAnimationTakeover)
host.takeOverImplOnlyScrollOffsetAnimation(elementId);
}
- m_implOnlyAnimationAdjustment = FloatSize();
+ m_implOnlyAnimationAdjustment = IntSize();
m_implOnlyAnimationTakeover = false;
}
+void ScrollAnimatorCompositorCoordinator::adjustAnimationAndSetScrollPosition(
+ IntSize adjustment, ScrollType scrollType) {
+ // Subclasses should override this and adjust the animation as necessary.
+ getScrollableArea()->setScrollPosition(
+ getScrollableArea()->scrollPositionDouble() + adjustment, scrollType);
+}
+
void ScrollAnimatorCompositorCoordinator::adjustImplOnlyScrollOffsetAnimation(
- const FloatSize& adjustment)
+ const IntSize& adjustment)
{
if (!getScrollableArea()->scrollAnimatorEnabled())
return;
@@ -314,6 +330,8 @@ String ScrollAnimatorCompositorCoordinator::runStateAsText() const
return String("RunningOnCompositorButNeedsTakeover");
case RunState::WaitingToCancelOnCompositorButNewScroll:
return String("WaitingToCancelOnCompositorButNewScroll");
+ case RunState::RunningOnCompositorButNeedsAdjustment:
+ return String("RunningOnCompositorButNeedsAdjustment");
}
ASSERT_NOT_REACHED();
return String();

Powered by Google App Engine
This is Rietveld 408576698