summaryrefslogtreecommitdiffstats
path: root/third_party/WebKit/Source/platform/scroll
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/WebKit/Source/platform/scroll')
-rw-r--r--third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.cpp10
-rw-r--r--third_party/WebKit/Source/platform/scroll/ScrollAnimator.cpp14
-rw-r--r--third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp12
-rw-r--r--third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.h3
4 files changed, 29 insertions, 10 deletions
diff --git a/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.cpp b/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.cpp
index 1b38d83..3fa59ee 100644
--- a/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.cpp
+++ b/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.cpp
@@ -52,7 +52,7 @@ void ProgrammaticScrollAnimator::animateToOffset(FloatPoint offset)
m_startTime = 0.0;
m_targetOffset = offset;
m_animationCurve = adoptPtr(Platform::current()->compositorSupport()->createScrollOffsetAnimationCurve(
- m_targetOffset,
+ compositorOffsetFromBlinkOffset(m_targetOffset),
WebCompositorAnimationCurve::TimingFunctionTypeEaseInOut,
WebScrollOffsetAnimationCurve::ScrollDurationDeltaBased));
@@ -79,7 +79,7 @@ void ProgrammaticScrollAnimator::tickAnimation(double monotonicTime)
m_startTime = monotonicTime;
double elapsedTime = monotonicTime - m_startTime;
bool isFinished = (elapsedTime > m_animationCurve->duration());
- FloatPoint offset = m_animationCurve->getValue(elapsedTime);
+ FloatPoint offset = blinkOffsetFromCompositorOffset(m_animationCurve->getValue(elapsedTime));
notifyPositionChanged(IntPoint(offset.x(), offset.y()));
if (isFinished) {
@@ -128,7 +128,8 @@ void ProgrammaticScrollAnimator::updateCompositorAnimations()
if (!sentToCompositor) {
m_runState = RunState::RunningOnMainThread;
- m_animationCurve->setInitialValue(FloatPoint(m_scrollableArea->scrollPosition()));
+ m_animationCurve->setInitialValue(compositorOffsetFromBlinkOffset(
+ FloatPoint(m_scrollableArea->scrollPosition())));
if (!m_scrollableArea->scheduleAnimation()) {
notifyPositionChanged(IntPoint(m_targetOffset.x(), m_targetOffset.y()));
resetAnimationState();
@@ -147,7 +148,8 @@ void ProgrammaticScrollAnimator::layerForCompositedScrollingDidChange(WebComposi
m_runState = RunState::RunningOnMainThread;
m_compositorAnimationId = 0;
m_compositorAnimationGroupId = 0;
- m_animationCurve->setInitialValue(FloatPoint(m_scrollableArea->scrollPosition()));
+ m_animationCurve->setInitialValue(compositorOffsetFromBlinkOffset(
+ FloatPoint(m_scrollableArea->scrollPosition())));
m_scrollableArea->registerForAnimation();
if (!m_scrollableArea->scheduleAnimation()) {
resetAnimationState();
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollAnimator.cpp b/third_party/WebKit/Source/platform/scroll/ScrollAnimator.cpp
index de0000b..7952137 100644
--- a/third_party/WebKit/Source/platform/scroll/ScrollAnimator.cpp
+++ b/third_party/WebKit/Source/platform/scroll/ScrollAnimator.cpp
@@ -131,7 +131,8 @@ ScrollResultOneDimensional ScrollAnimator::userScroll(
// Running on the main thread, simply update the target offset instead
// of sending to the compositor.
- m_animationCurve->updateTarget(m_timeFunction() - m_startTime, targetPos);
+ m_animationCurve->updateTarget(m_timeFunction() - m_startTime,
+ compositorOffsetFromBlinkOffset(targetPos));
return ScrollResultOneDimensional(/* didScroll */ true, /* unusedScrollDelta */ 0);
}
@@ -170,8 +171,9 @@ void ScrollAnimator::tickAnimation(double monotonicTime)
double elapsedTime = monotonicTime - m_startTime;
bool isFinished = (elapsedTime > m_animationCurve->duration());
- FloatPoint offset = isFinished ? m_animationCurve->targetValue()
- : m_animationCurve->getValue(elapsedTime);
+ FloatPoint offset = blinkOffsetFromCompositorOffset(isFinished
+ ? m_animationCurve->targetValue()
+ : m_animationCurve->getValue(elapsedTime));
offset = FloatPoint(m_scrollableArea->clampScrollPosition(offset));
@@ -219,19 +221,19 @@ void ScrollAnimator::updateCompositorAnimations()
m_compositorAnimationGroupId = 0;
m_animationCurve->updateTarget(m_timeFunction() - m_startTime,
- m_targetOffset);
+ compositorOffsetFromBlinkOffset(m_targetOffset));
m_runState = RunState::WaitingToSendToCompositor;
}
if (!m_animationCurve) {
m_animationCurve = adoptPtr(Platform::current()->compositorSupport()
->createScrollOffsetAnimationCurve(
- m_targetOffset,
+ compositorOffsetFromBlinkOffset(m_targetOffset),
WebCompositorAnimationCurve::TimingFunctionTypeEaseInOut,
m_lastGranularity == ScrollByPixel ?
WebScrollOffsetAnimationCurve::ScrollDurationInverseDelta :
WebScrollOffsetAnimationCurve::ScrollDurationConstant));
- m_animationCurve->setInitialValue(currentPosition());
+ m_animationCurve->setInitialValue(compositorOffsetFromBlinkOffset(currentPosition()));
}
bool sentToCompositor = false;
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp b/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp
index 142b27e..19f77ba 100644
--- a/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp
+++ b/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp
@@ -195,4 +195,16 @@ WebCompositorAnimationPlayer* ScrollAnimatorCompositorCoordinator::compositorPla
return m_compositorPlayer.get();
}
+FloatPoint ScrollAnimatorCompositorCoordinator::compositorOffsetFromBlinkOffset(FloatPoint offset)
+{
+ offset.moveBy(scrollableArea()->scrollOrigin());
+ return offset;
+}
+
+FloatPoint ScrollAnimatorCompositorCoordinator::blinkOffsetFromCompositorOffset(FloatPoint offset)
+{
+ offset.moveBy(-scrollableArea()->scrollOrigin());
+ return offset;
+}
+
} // namespace blink
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.h b/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.h
index 2f38927..afc0ef1 100644
--- a/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.h
+++ b/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.h
@@ -46,6 +46,9 @@ protected:
void removeAnimation();
void abortAnimation();
+ FloatPoint compositorOffsetFromBlinkOffset(FloatPoint);
+ FloatPoint blinkOffsetFromCompositorOffset(FloatPoint);
+
void compositorAnimationFinished(int groupId);
void reattachCompositorPlayerIfNeeded(WebCompositorAnimationTimeline*);