commit d18702226672e73e35fef6e3da3dc112c2f8901f
parent 5ec1de4603394ab9a55b6c003812bbfc410bedfd
Author: Botond Ballo <botond@mozilla.com>
Date: Wed, 3 Dec 2025 20:04:37 +0000
Bug 1999440 - Use ScrollModeForScrollBehavior() in nsDOMWindowUtils::ScrollToVisual(). r=hiro
This function is used by GeckoView to expose scrollTo() and scrollBy()
functions to the GeckoView's embedder. These have a conceptually
similar purpose to window.scrollTo() and window.scrollBy(), and so
should be governed by scroll-behavior physics rather than scroll snap
physics.
Differential Revision: https://phabricator.services.mozilla.com/D272348
Diffstat:
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/dom/base/nsDOMWindowUtils.cpp b/dom/base/nsDOMWindowUtils.cpp
@@ -1785,6 +1785,10 @@ nsDOMWindowUtils::ScrollToVisual(float aOffsetX, float aOffsetY,
NS_ENSURE_TRUE(presContext->IsRootContentDocumentCrossProcess(),
NS_ERROR_INVALID_ARG);
+ ScrollContainerFrame* sf =
+ presContext->PresShell()->GetRootScrollContainerFrame();
+ NS_ENSURE_TRUE(sf, NS_ERROR_NOT_AVAILABLE);
+
FrameMetrics::ScrollOffsetUpdateType updateType;
switch (aUpdateType) {
case UPDATE_TYPE_RESTORE:
@@ -1797,13 +1801,13 @@ nsDOMWindowUtils::ScrollToVisual(float aOffsetX, float aOffsetY,
return NS_ERROR_INVALID_ARG;
}
- ScrollMode scrollMode;
+ ScrollBehavior scrollBehavior;
switch (aScrollMode) {
case SCROLL_MODE_INSTANT:
- scrollMode = ScrollMode::Instant;
+ scrollBehavior = ScrollBehavior::Instant;
break;
case SCROLL_MODE_SMOOTH:
- scrollMode = ScrollMode::SmoothMsd;
+ scrollBehavior = ScrollBehavior::Smooth;
break;
default:
return NS_ERROR_INVALID_ARG;
@@ -1811,7 +1815,7 @@ nsDOMWindowUtils::ScrollToVisual(float aOffsetX, float aOffsetY,
presContext->PresShell()->ScrollToVisual(
CSSPoint::ToAppUnits(CSSPoint(aOffsetX, aOffsetY)), updateType,
- scrollMode);
+ sf->ScrollModeForScrollBehavior(scrollBehavior));
return NS_OK;
}