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

Unified Diff: third_party/WebKit/Source/platform/mac/ScrollAnimatorMac.mm

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/mac/ScrollAnimatorMac.mm
diff --git a/third_party/WebKit/Source/platform/mac/ScrollAnimatorMac.mm b/third_party/WebKit/Source/platform/mac/ScrollAnimatorMac.mm
index a109e93d5f2e2d734fe24e424e59c848ffb743a0..601be84352e4debdf12197ea071c1c8db84ec64a 100644
--- a/third_party/WebKit/Source/platform/mac/ScrollAnimatorMac.mm
+++ b/third_party/WebKit/Source/platform/mac/ScrollAnimatorMac.mm
@@ -729,32 +729,40 @@ void ScrollAnimatorMac::dispose()
m_sendContentAreaScrolledTaskFactory->cancel();
}
-ScrollResultOneDimensional ScrollAnimatorMac::userScroll(ScrollbarOrientation orientation, ScrollGranularity granularity, float delta)
+ScrollResult ScrollAnimatorMac::userScroll(ScrollGranularity granularity, const FloatSize& delta)
{
m_haveScrolledSincePageLoad = true;
if (!m_scrollableArea->scrollAnimatorEnabled())
- return ScrollAnimatorBase::userScroll(orientation, granularity, delta);
+ return ScrollAnimatorBase::userScroll(granularity, delta);
if (granularity == ScrollByPixel || granularity == ScrollByPrecisePixel)
- return ScrollAnimatorBase::userScroll(orientation, granularity, delta);
+ return ScrollAnimatorBase::userScroll(granularity, delta);
- float currentPos = orientation == HorizontalScrollbar ? m_currentPosX : m_currentPosY;
- float usedDelta = computeDeltaToConsume(orientation, delta);
- float newPos = currentPos + usedDelta;
- if (currentPos == newPos)
- return ScrollResultOneDimensional(false);
+ FloatSize consumedDelta = computeDeltaToConsume(delta);
+ FloatPoint newPos = m_currentPos + consumedDelta;
+ if (m_currentPos == newPos)
+ return ScrollResult();
- NSPoint newPoint;
+ // Prevent clobbering an existing animation on an unscrolled axis.
if ([m_scrollAnimationHelper.get() _isAnimating]) {
NSPoint targetOrigin = [m_scrollAnimationHelper.get() targetOrigin];
- newPoint = orientation == HorizontalScrollbar ? NSMakePoint(newPos, targetOrigin.y) : NSMakePoint(targetOrigin.x, newPos);
- } else
- newPoint = orientation == HorizontalScrollbar ? NSMakePoint(newPos, m_currentPosY) : NSMakePoint(m_currentPosX, newPos);
+ if (!delta.width())
+ newPos.setX(targetOrigin.x);
+ if (!delta.height())
+ newPos.setY(targetOrigin.y);
+ }
+ NSPoint newPoint = NSMakePoint(newPos.x(), newPos.y());
[m_scrollAnimationHelper.get() scrollToPoint:newPoint];
- return ScrollResultOneDimensional(true, delta - usedDelta);
+ // TODO(bokan): This has different semantics on ScrollResult than ScrollAnimator,
+ // which only returns unused delta if there's no animation and we don't start one.
+ return ScrollResult(
+ consumedDelta.width(),
+ consumedDelta.height(),
+ delta.width() - consumedDelta.width(),
+ delta.height() - consumedDelta.height());
}
void ScrollAnimatorMac::scrollToOffsetWithoutAnimation(const FloatPoint& offset)
@@ -778,14 +786,13 @@ void ScrollAnimatorMac::immediateScrollTo(const FloatPoint& newPosition)
{
FloatPoint adjustedPosition = adjustScrollPositionIfNecessary(newPosition);
- bool positionChanged = adjustedPosition.x() != m_currentPosX || adjustedPosition.y() != m_currentPosY;
+ bool positionChanged = adjustedPosition != m_currentPos;
if (!positionChanged && !scrollableArea()->scrollOriginChanged())
return;
- FloatSize delta = FloatSize(adjustedPosition.x() - m_currentPosX, adjustedPosition.y() - m_currentPosY);
+ FloatSize delta = adjustedPosition - m_currentPos;
- m_currentPosX = adjustedPosition.x();
- m_currentPosY = adjustedPosition.y();
+ m_currentPos = adjustedPosition;
notifyContentAreaScrolled(delta);
notifyPositionChanged();
}
« no previous file with comments | « third_party/WebKit/Source/platform/mac/ScrollAnimatorMac.h ('k') | third_party/WebKit/Source/platform/scroll/ScrollAnimator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698