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

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

Issue 1738243002: Removed main-thread one dimensional scrolling paths. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@removeStepFromUserScroll
Patch Set: Rebase Created 4 years, 10 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/ScrollAnimatorBase.cpp
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollAnimatorBase.cpp b/third_party/WebKit/Source/platform/scroll/ScrollAnimatorBase.cpp
index d7f4b84166bffcd61119d1adb510a2570f8ace74..6e3757e33ae7736550c995b6b67f0af18b366041 100644
--- a/third_party/WebKit/Source/platform/scroll/ScrollAnimatorBase.cpp
+++ b/third_party/WebKit/Source/platform/scroll/ScrollAnimatorBase.cpp
@@ -40,8 +40,6 @@ namespace blink {
ScrollAnimatorBase::ScrollAnimatorBase(ScrollableArea* scrollableArea)
: m_scrollableArea(scrollableArea)
- , m_currentPosX(0)
- , m_currentPosY(0)
{
}
@@ -49,56 +47,49 @@ ScrollAnimatorBase::~ScrollAnimatorBase()
{
}
-float ScrollAnimatorBase::computeDeltaToConsume(ScrollbarOrientation orientation, float pixelDelta) const
+FloatSize ScrollAnimatorBase::computeDeltaToConsume(const FloatSize& delta) const
{
- float currentPos = (orientation == HorizontalScrollbar) ? m_currentPosX : m_currentPosY;
- float newPos = clampScrollPosition(orientation, currentPos + pixelDelta);
- return (currentPos == newPos) ? 0.0f : (newPos - currentPos);
+ FloatPoint newPos = toFloatPoint(m_scrollableArea->clampScrollPosition(m_currentPos + delta));
+ return newPos - m_currentPos;
}
-ScrollResultOneDimensional ScrollAnimatorBase::userScroll(ScrollbarOrientation orientation, ScrollGranularity, float delta)
+ScrollResult ScrollAnimatorBase::userScroll(ScrollGranularity, const FloatSize& delta)
{
- float& currentPos = (orientation == HorizontalScrollbar) ? m_currentPosX : m_currentPosY;
- float usedDelta = computeDeltaToConsume(orientation, delta);
- float newPos = currentPos + usedDelta;
- if (currentPos == newPos)
- return ScrollResultOneDimensional(false, delta);
+ FloatSize consumedDelta = computeDeltaToConsume(delta);
+ FloatPoint newPos = m_currentPos + consumedDelta;
+ if (m_currentPos == newPos)
+ return ScrollResult(false, false, delta.width(), delta.height());
- currentPos = newPos;
+ m_currentPos = newPos;
notifyPositionChanged();
- return ScrollResultOneDimensional(true, delta - usedDelta);
+ return ScrollResult(
+ consumedDelta.width(),
+ consumedDelta.height(),
+ delta.width() - consumedDelta.width(),
+ delta.height() - consumedDelta.height());
}
void ScrollAnimatorBase::scrollToOffsetWithoutAnimation(const FloatPoint& offset)
{
- m_currentPosX = offset.x();
- m_currentPosY = offset.y();
+ m_currentPos = offset;
notifyPositionChanged();
}
void ScrollAnimatorBase::setCurrentPosition(const FloatPoint& position)
{
- m_currentPosX = position.x();
- m_currentPosY = position.y();
+ m_currentPos = position;
}
FloatPoint ScrollAnimatorBase::currentPosition() const
{
- return FloatPoint(m_currentPosX, m_currentPosY);
+ return m_currentPos;
}
void ScrollAnimatorBase::notifyPositionChanged()
{
- m_scrollableArea->scrollPositionChanged(DoublePoint(m_currentPosX, m_currentPosY), UserScroll);
-}
-
-float ScrollAnimatorBase::clampScrollPosition(ScrollbarOrientation orientation, float pos) const
-{
- float maxScrollPos = m_scrollableArea->maximumScrollPosition(orientation);
- float minScrollPos = m_scrollableArea->minimumScrollPosition(orientation);
- return clampTo(pos, minScrollPos, maxScrollPos);
+ m_scrollableArea->scrollPositionChanged(m_currentPos, UserScroll);
}
DEFINE_TRACE(ScrollAnimatorBase)

Powered by Google App Engine
This is Rietveld 408576698