Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 513928cfe121683ce95b1928b4407bf49c8b7365
https://github.com/WebKit/WebKit/commit/513928cfe121683ce95b1928b4407bf49c8b7365
Author: Wenson Hsieh <[email protected]>
Date: 2023-11-10 (Fri, 10 Nov 2023)
Changed paths:
M Source/WTF/wtf/PlatformHave.h
M Source/WebKit/Platform/spi/ios/UIKitSPI.h
M Source/WebKit/UIProcess/ios/WKContentViewInteraction.h
M Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
M Source/WebKit/UIProcess/ios/WKTextInteractionWrapper.mm
Log Message:
-----------
[UIAsyncTextInput] Adopt `-[UIAsyncTextInteractionDelegate
selection(Will|Did)Change:]`
https://bugs.webkit.org/show_bug.cgi?id=264589
Reviewed by Megan Gardner.
Adopt two `UIAsyncTextInteractionDelegate` methods:
```
-[UIAsyncTextInteractionDelegate selectionWillChange:]
-[UIAsyncTextInteractionDelegate selectionDidChange:]
```
...in place of these two methods currently on `UITextInputAdditions`:
```
-[UITextInputAdditions beginSelectionChange]
-[UITextInputAdditions endSelectionChange]
```
These method hooks allow `WKContentView` to implement some bookkeeping when
UIKit is driving
selection changes (e.g. during text interactions, such as tapping to change an
editable caret
selection). Note that while clients of the latter currently need to call
`-selectionWillChange:` and
`-selectionDidChange:`, the new API does not require this (and instead calls
these methods from
underneath the async text input).
* Source/WTF/wtf/PlatformHave.h:
* Source/WebKit/Platform/spi/ios/UIKitSPI.h:
Add a new compile-time flag to guard the availability of
`UIAsyncTextInteractionDelegate`.
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
Conform to `UIAsyncTextInteractionDelegate` when possible.
(-[WKContentView moveByOffset:]):
(-[WKContentView accessoryView:tabInDirection:]):
(-[WKContentView beginSelectionChange]):
(-[WKContentView _internalBeginSelectionChange]):
We invoke `-(begin|end)SelectionChange` in various places, from within WebKit
code; to avoid our own
release assertions, split this out into `_internal`-prefixed methods, for use
within the engine.
(-[WKContentView _updateInternalStateBeforeSelectionChange]):
(-[WKContentView endSelectionChange]):
Add assertions as well to enforce that the system doesn't call into these
internal hooks when the
input delegate is a `UIAsyncTextInput`.
(-[WKContentView _internalEndSelectionChange]):
(-[WKContentView _updateInternalStateAfterSelectionChange]):
(-[WKContentView executeEditCommandWithCallback:]):
(-[WKContentView _selectionChanged]):
(-[WKContentView selectWordForReplacement]):
(-[WKContentView selectionWillChange:]):
(-[WKContentView selectionDidChange:]):
* Source/WebKit/UIProcess/ios/WKTextInteractionWrapper.mm:
(-[WKTextInteractionWrapper initWithView:]):
Canonical link: https://commits.webkit.org/270563@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes