tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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:
Mdom/base/nsDOMWindowUtils.cpp | 12++++++++----
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; }