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..31152fdf6cb3db89b22ad0f3438bf3e04a4f2309 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: |
@@ -233,6 +242,13 @@ CompositorAnimationPlayer* ScrollAnimatorCompositorCoordinator::compositorPlayer |
return m_compositorPlayer.get(); |
} |
+IntSize ScrollAnimatorCompositorCoordinator::compositorSizeFromBlinkSize(IntSize size) |
+{ |
+ IntPoint scrollOrigin = getScrollableArea()->scrollOrigin(); |
+ size.expand(scrollOrigin.x(), scrollOrigin.y()); |
+ return size; |
+} |
+ |
FloatPoint ScrollAnimatorCompositorCoordinator::compositorOffsetFromBlinkOffset(FloatPoint offset) |
{ |
offset.moveBy(getScrollableArea()->scrollOrigin()); |
@@ -268,12 +284,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 +337,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(); |