[webkit-changes] [WebKit/WebKit] 5d0fdb: Stop using -[UIScrollView _horizontalVelocity] and...
Wenson Hsieh
noreply at github.com
Tue Oct 10 16:20:02 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 5d0fdb0896b24f0f31078bac5b067fc6ae0d9ac1
https://github.com/WebKit/WebKit/commit/5d0fdb0896b24f0f31078bac5b067fc6ae0d9ac1
Author: Wenson Hsieh <wenson_hsieh at apple.com>
Date: 2023-10-10 (Tue, 10 Oct 2023)
Changed paths:
M Source/WebKit/Platform/spi/ios/UIKitSPI.h
M Source/WebKit/SourcesCocoa.txt
M Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h
M Source/WebKit/UIProcess/API/ios/WKWebViewIOS.h
M Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm
M Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
M Source/WebKit/UIProcess/ios/WKKeyboardScrollingAnimator.h
M Source/WebKit/UIProcess/ios/WKKeyboardScrollingAnimator.mm
M Source/WebKit/UIProcess/ios/WKPDFView.mm
M Source/WebKit/UIProcess/ios/WKScrollView.h
A Source/WebKit/UIProcess/ios/WKVelocityTrackingScrollView.h
A Source/WebKit/UIProcess/ios/WKVelocityTrackingScrollView.mm
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
Log Message:
-----------
Stop using -[UIScrollView _horizontalVelocity] and -[UIScrollView _verticalVelocity]
https://bugs.webkit.org/show_bug.cgi?id=262964
Reviewed by Tim Horton.
Stop using these two SPI properties on `UIScrollView`. Instead, track horizontal and vertical
velocities on `WKScrollView` by storing a moving window of the last 3 recent scrolling deltas, and
using the average of this to estimate horizontal and vertical scrolling velocities.
This velocity tracking functionality is contained within a new `WKVelocityTrackingScrollView` class,
which `WKScrollView` now subclasses; this will make it easier to eventually bring smooth keyboard
scrolling to overflow/iframe `WKChildScrollView`s, which can be refactored to extend from
`WKVelocityTrackingScrollView` and integrate with their own keyboard scrolling animators.
See below for more details.
* Source/WebKit/Platform/spi/ios/UIKitSPI.h:
Remove now-unused SPI declarations on `UIScrollView`.
* Source/WebKit/SourcesCocoa.txt:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:
Add an internal iOS property on `WKWebView` to return a `WKVelocityTrackingScrollView` (as opposed
to a `UIScrollView`, which is what the API `-scrollView` property returns to clients).
Drive-by fix: also remove a couple of unused ivars.
* Source/WebKit/UIProcess/API/ios/WKWebViewIOS.h:
* Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:
(-[WKWebView scrollViewDidScroll:]):
Call into `WKScrollView` to update the velocity tracking window if needed.
(-[WKWebView _scrollViewInternal]):
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setUpInteraction]):
* Source/WebKit/UIProcess/ios/WKKeyboardScrollingAnimator.h:
* Source/WebKit/UIProcess/ios/WKKeyboardScrollingAnimator.mm:
(-[WKKeyboardScrollViewAnimator initWithScrollView:]):
(-[WKKeyboardScrollViewAnimator distanceForIncrement:inDirection:]):
(-[WKKeyboardScrollViewAnimator scrollToContentOffset:animated:]):
(-[WKKeyboardScrollViewAnimator scrollWithScrollToExtentAnimationTo:]):
(-[WKKeyboardScrollViewAnimator contentOffset]):
(-[WKKeyboardScrollViewAnimator boundedContentOffset:]):
(-[WKKeyboardScrollViewAnimator interactiveScrollVelocity]):
Use the new `-interactiveScrollVelocityInPointsPerSecond` property instead of scroll view SPI.
(-[WKKeyboardScrollViewAnimator scrollableDirectionsFromOffset:]):
(-[WKKeyboardScrollViewAnimator rubberbandableDirections]):
Drive-by refactoring: change `WKScrollView` to a `__weak` reference, to eliminate the need for
`getAutoreleased()`.
* Source/WebKit/UIProcess/ios/WKPDFView.mm:
(-[WKPDFView web_initWithFrame:webView:mimeType:]):
* Source/WebKit/UIProcess/ios/WKScrollView.h:
Make this subclass `WKVelocityTrackingScrollView`, for scrolling velocity tracking functionality.
* Source/WebKit/UIProcess/ios/WKVelocityTrackingScrollView.h: Copied from Source/WebKit/UIProcess/ios/WKKeyboardScrollingAnimator.h.
* Source/WebKit/UIProcess/ios/WKVelocityTrackingScrollView.mm: Added.
(ScrollingDeltaWindow::update):
(ScrollingDeltaWindow::reset):
(ScrollingDeltaWindow::averageVelocity const):
(-[WKVelocityTrackingScrollView updateInteractiveScrollVelocity]):
(-[WKVelocityTrackingScrollView interactiveScrollVelocityInPointsPerSecond]):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
Canonical link: https://commits.webkit.org/269177@main
More information about the webkit-changes
mailing list