[webkit-changes] [WebKit/WebKit] 31f538: [SwiftUI] Find-in-Page integration (iOS)
Richard Robinson
noreply at github.com
Sun Dec 22 20:38:03 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 31f53890413ab604b438db03c40f219b25f3ced1
https://github.com/WebKit/WebKit/commit/31f53890413ab604b438db03c40f219b25f3ced1
Author: Richard Robinson <richard_robinson2 at apple.com>
Date: 2024-12-22 (Sun, 22 Dec 2024)
Changed paths:
M Source/WebKit/UIProcess/API/Swift/View+WebViewModifiers.swift
M Source/WebKit/UIProcess/API/Swift/WebPage.swift
M Source/WebKit/UIProcess/API/Swift/WebView.swift
A Source/WebKit/UIProcess/Cocoa/Foundation+Extras.swift
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
M Tools/SwiftBrowser/Source/ContentView.swift
Log Message:
-----------
[SwiftUI] Find-in-Page integration (iOS)
https://bugs.webkit.org/show_bug.cgi?id=284715
rdar://141503364
Reviewed by Wenson Hsieh.
Add support to enable "Find in Page" integration, on iOS only for now due to the many platform differences
between UIKit and AppKit.
* Source/WebKit/UIProcess/API/Swift/View+WebViewModifiers.swift:
(EnvironmentValues.webViewFindContext):
(View.webViewFindNavigator(_:)):
(View.webViewFindDisabled(_:)):
(View.webViewReplaceDisabled(_:)):
(FindContext.isPresented):
Add several view modifiers which correspond to their native SwiftUI counterparts. The main modifier is
`webViewFindNavigator` which actually presents the find navigator when the binding value is true. The
`webViewFindDisabled` and `webViewReplaceDisabled` modifiers are used to control specific functionality
of the find navigator.
* Source/WebKit/UIProcess/API/Swift/WebPage.swift:
(WebPageWebView.delegate):
(WebPageWebView.findInteraction(_:didBegin:)):
(WebPageWebView.findInteraction(_:didEnd:)):
(WebPageWebView.supportsTextReplacement):
(Delegate.findInteraction(_:didBegin:)):
(Delegate.findInteraction(_:didEnd:)):
(Delegate.supportsTextReplacement):
Add a delegate protocol to override and propogate some find interaction methods from WKWebView to WebView.
* Source/WebKit/UIProcess/API/Swift/WebView.swift:
(WebViewWrapper.findContext):
(WebViewWrapper.webView):
(WebViewWrapper.findInteraction(_:didBegin:)):
(WebViewWrapper.findInteraction(_:didEnd:)):
(WebViewWrapper.supportsTextReplacement):
Update the environment state's find context when the delegate methods are called.
(WebViewRepresentable.updatePlatformView(_:context:)):
(WebViewRepresentable.makeCoordinator):
(WebViewCoordinator.configuration):
(WebViewCoordinator.update(_:configuration:environment:)):
(WebViewCoordinator.updateFindInteraction(_:environment:)):
Present or dismiss the find navigator according to the find context state.
* Source/WebKit/UIProcess/Cocoa/Foundation+Extras.swift: Copied from Source/WebKit/UIProcess/API/Swift/View+WebViewModifiers.swift.
(onNextMainRunLoop(do:)):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Tools/SwiftBrowser/Source/ContentView.swift:
(ContentView.body):
Update SwiftBrowser to use this new functionality.
Canonical link: https://commits.webkit.org/288243@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list