Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 618b1ef1bc467c98376d75b330ec744db9572c70
      
https://github.com/WebKit/WebKit/commit/618b1ef1bc467c98376d75b330ec744db9572c70
  Author: Richard Robinson <[email protected]>
  Date:   2025-02-28 (Fri, 28 Feb 2025)

  Changed paths:
    M Source/WebCore/page/LocalFrameView.cpp
    M Source/WebCore/page/LocalFrameView.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h
    A Source/WebKit/UIProcess/API/Cocoa/_WKRectEdge+Extras.swift
    M Source/WebKit/UIProcess/API/Swift/WebPage.swift
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp
    M Source/WebKit/WebProcess/WebPage/WebPage.h
    M Source/WebKit/WebProcess/WebPage/WebPage.messages.in
    M Source/WebKit/_WebKit_SwiftUI/CocoaWebViewAdapter.swift
    M Source/WebKit/_WebKit_SwiftUI/Foundation+Extras.swift
    M Source/WebKit/_WebKit_SwiftUI/SwiftUI+Extras.swift
    M Source/WebKit/_WebKit_SwiftUI/View+WebViewModifiers.swift
    M Source/WebKit/_WebKit_SwiftUI/ViewModifierContexts.swift
    M Source/WebKit/_WebKit_SwiftUI/WebViewRepresentable.swift

  Log Message:
  -----------
  [SwiftUI] Provide ability for clients to scroll a WebView using a 
ScrollPosition
https://bugs.webkit.org/show_bug.cgi?id=288813
rdar://145824125

Reviewed by Aditya Keerthi.

The existing `ScrollPosition` SwiftUI type in conjunction with the 
`.scrollPosition` view modifier allow clients to programatically
scroll in the following ways:

1. To a particular point
2. To a particular x or y value
3. To a particular edge
4. To a particular identifiable view

This implements support for (1) and (3) by adding a `.webViewScrollPosition` 
view modifier. (2) is not currently possible because
the SwiftUI API does not expose these properties. (4) is potentially possible, 
but out of scope for this PR.

To facilitate this, new functionality is internally added to WebKit to allow 
scrolling to a particular edge.

* Source/WebCore/page/LocalFrameView.cpp:
(WebCore::LocalFrameView::scrollToEdgeWithOptions):
* Source/WebCore/page/LocalFrameView.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKRectEdge+Extras.swift: Copied from 
Source/WebKit/_WebKit_SwiftUI/Foundation+Extras.swift.
(_WKRectEdge.result):
* Source/WebKit/UIProcess/API/Swift/WebPage.swift:
(WebPageWebView.setContentOffset(_:animated:)):
(WebPageWebView.scrollTo(_:animated:)):
* Source/WebKit/UIProcess/API/mac/WKWebViewMac.mm:
(-[WKWebView _scrollToEdge:animated:]):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::scrollToEdge):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/mac/WebViewImpl.h:
* Source/WebKit/UIProcess/mac/WebViewImpl.mm:
(WebKit::WebViewImpl::scrollToEdge):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::scrollToEdge):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:
* Source/WebKit/_WebKit_SwiftUI/CocoaWebViewAdapter.swift:
(CocoaWebViewAdapter.scrollPosition):
* Source/WebKit/_WebKit_SwiftUI/Foundation+Extras.swift:
* Source/WebKit/_WebKit_SwiftUI/SwiftUI+Extras.swift:
(Transaction.isAnimated):
* Source/WebKit/_WebKit_SwiftUI/View+WebViewModifiers.swift:
(View.webViewScrollPosition(_:)):
* Source/WebKit/_WebKit_SwiftUI/ViewModifierContexts.swift:
(ScrollPositionContext.position):
* Source/WebKit/_WebKit_SwiftUI/WebViewRepresentable.swift:
(WebViewRepresentable.updatePlatformView(_:context:)):
(WebViewCoordinator.update(_:configuration:context:)):
(WebViewCoordinator.updateScrollPosition(_:context:)):
(WebViewCoordinator.updateFindInteraction(_:context:)):
(WebViewCoordinator.update(_:configuration:environment:)): Deleted.
(WebViewCoordinator.updateFindInteraction(_:environment:)): Deleted.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to