Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b07ce30ae0052f005a29fb74c470e2f63f3a1144
      
https://github.com/WebKit/WebKit/commit/b07ce30ae0052f005a29fb74c470e2f63f3a1144
  Author: Ryan Reno <[email protected]>
  Date:   2026-07-17 (Fri, 17 Jul 2026)

  Changed paths:
    M Source/WebCore/animation/AnimationTimelinesController.cpp
    M Source/WebCore/animation/AnimationTimelinesController.h
    M Source/WebCore/animation/KeyframeEffect.h
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/dom/Document.h
    M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTree.serialization.in
    M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeCommitBundle.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h
    M Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm
    M Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm
    M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/WKScrollViewTests.mm

  Log Message:
  -----------
  REGRESSION(308209@main): okaymay.be scroll-driven animation is jittery
https://bugs.webkit.org/show_bug.cgi?id=319523
rdar://179479959

Reviewed by Simon Fraser and Antoine Quint.

Unaccelerated scroll-driven animations must do layout on the main frame for 
every frame of scrolling. When
we are upadating obscured insets interactively, we throttle visible content 
rect updates and thus throttle
updates that the scroll-driven animation needs to compute the next frame of the 
animation. When we finally do
send an update, the animated layer jumps ahead causing a visible jitter.

To avoid this we skip the power optimization and send unthrottled visible 
content rect updates to the WebContent
process. The iOS power benchmark measures a neutral result so we still get the 
power benefit on content that does
not contain unaccelerated scroll-driven animations.

Test: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/WKScrollViewTests.mm

* Source/WebCore/animation/AnimationTimelinesController.cpp:
(WebCore::AnimationTimelinesController::hasProgressBasedScrollDrivenAnimation 
const):
* Source/WebCore/animation/AnimationTimelinesController.h:
* Source/WebCore/animation/KeyframeEffect.h:
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::hasProgressBasedScrollDrivenAnimation const):
* Source/WebCore/dom/Document.h:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTree.serialization.in:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeCommitBundle.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:
* Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:
(-[WKWebView _didCommitLayerTree:mainFrameData:pageData:transactionID:]):
(-[WKWebView _updateVisibleContentRects]):
* Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
(WebKit::WebPage::willCommitMainFrameData):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/WKScrollViewTests.mm:
(TestWebKitAPI::(WKScrollViewTests, 
VisibleContentRectUpdatesDuringInteractiveObscuredInsetsChangeAreNotThrottledForMainThreadScrollDrivenAnimation)):
(TestWebKitAPI::(WKScrollViewTests, 
ScrollDrivenAnimationTracksScrollDuringInteractiveObscuredInsetsChange)):

Canonical link: https://commits.webkit.org/317404@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to