Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[iOS] Update WKSETextInput/WKSETextInteraction adoption
https://bugs.webkit.org/show_bug.cgi?id=267555 rdar://121011826 Reviewed by Tim Horton. Since 272018@main landed, there have been numerous minor adjustments to the async text input API in ServiceExtensions; now that the API shape is finally stable, we adjust the WebKit preadoption to use these new method and symbol names when `SERVICE_EXTENSIONS_TEXT_INPUT_IS_AVAILABLE` is set, while ensuring binary compatibility with the old UIKit async text input symbols. See below for more details. * Source/WebCore/platform/ios/WebEvent.mm: (webEventType): (isChangingKeyModifiers): (-[WebEvent initWithKeyEntry:]): (-[WebEvent originalKeyEntry]): (-[WebEvent initWithKeyEvent:]): Deleted. (-[WebEvent originalKeyEvent]): Deleted. Rename `WebSEKeyEvent` to `WebSEKeyEntry`, and `WebSEKeyEventType` to `WebSEKeyPressState`. * Source/WebCore/platform/ios/WebEventPrivate.h: * Source/WebCore/platform/ios/WebSEDefinitions.h: * Source/WebKit/Platform/spi/ios/UIKitSPI.h: Remove `HAVE_UI_ASYNC_TEXT_INTERACTION_DELEGATE`, since it's been in SDKs where `HAVE_UI_ASYNC_TEXT_INTERACTION` is set for months now. * Source/WebKit/Shared/DocumentEditingContext.mm: Import the relevant system headers. * Source/WebKit/UIProcess/ios/WKContentViewInteraction.h: * Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm: Rename numerous text input delegate method implementations, to fit the new API shape. (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]): Also address the fact that calls to `-hasSelectablePositionAtPoint:` have been replaced with calls to `-textInteractionGesture:shouldBeginAtPoint:` with `WKSEGestureTypeForceTouch`, since the former was only used in a few places for the purposes of handling force touch. (-[WKContentView replaceForWebView:]): (-[WKContentView selectionBarColor]): Replace `-selectionBarColor` with `-selectionHandleColor`. (-[WKContentView canPerformAction:withSender:]): Replace `-moveInDirection:byGranularity:` with `-moveInStorageDirection:byGranularity:`. (toGestureType): (toWKSEGestureType): (toSelectionTouch): (toWKSESelectionTouchPhase): (selectionChangedWithTouch): (-[WKContentView changeSelectionWithTouchAt:withSelectionTouch:baseIsStart:withFlags:]): (logTextInteraction): (-[WKContentView _internalBeginSelectionChange]): (-[WKContentView _internalEndSelectionChange]): (-[WKContentView addTextAlternatives:]): (-[WKContentView _updateTextInputTraits:]): (shiftKeyState): (-[WKContentView modifierFlagsDidChangeFrom:to:]): (-[WKContentView _deferKeyEventToInputMethodEditing:]): (-[WKContentView _interpretKeyEvent:isCharEvent:]): (-[WKContentView _transpose]): (-[WKContentView _updateInputContextAfterBlurringAndRefocusingElement]): (-[WKContentView _selectionChanged]): (-[WKContentView _provideSuggestionsToInputDelegate:]): (-[WKContentView _provideUITextSuggestionsToInputDelegate:]): (toWebDocumentRequestOptions): (toWebRequest): (-[WKContentView requestDocumentContext:completionHandler:]): (-[WKContentView asWKSETextInput]): The following method implementations represent the set of final API names, which wrap calls to `UIAsyncTextInput` methods. (-[WKContentView systemWillPresentEditMenuWithAnimator:]): (-[WKContentView systemWillDismissEditMenuWithAnimator:]): (-[WKContentView insertTextAlternatives:]): (-[WKContentView insertText:textAlternatives:style:]): Note: `-insertText:textAlternatives:style:` was renamed to `-insertTextAlternatives:` here, but we implement both versions of this new delegate method for now to ensure binary compatibility with both versions of ServiceExtensions. (-[WKContentView isPointNearMarkedText:]): (-[WKContentView replaceSelectedText:withText:]): (-[WKContentView updateCurrentSelectionTo:fromGesture:inState:]): (-[WKContentView setSelectionFromPoint:toPoint:gesture:state:]): (-[WKContentView adjustSelectionBoundaryToPoint:touchPhase:baseIsStart:flags:]): (-[WKContentView moveSelectionAtBoundary:inStorageDirection:completionHandler:]): (-[WKContentView extendedTextInputTraits]): (-[WKContentView selectTextForEditMenuWithLocationInView:completionHandler:]): (-[WKContentView isSelectionAtDocumentStart]): (-[WKContentView automaticallyPresentEditMenu]): (-[WKContentView asyncSystemInputDelegate]): (-[WKContentView setAsyncInputDelegate:setAsyncSystemInputDelegate:]): (-[WKContentView handleKeyEntry:withCompletionHandler:handleAsyncKeyEvent:withCompletionHandler:]): (-[WKContentView replaceText:withText:options:completionHandler:replaceText:withText:options:withCompletionHandler:]): (-[WKContentView moveInStorageDirection:byGranularity:moveInDirection:byGranularity:]): (-[WKContentView extendInStorageDirection:byGranularity:extendInDirection:byGranularity:]): (-[WKContentView adjustSelectionByRange:completionHandler:adjustSelection:completionHandler:]): (-[WKContentView transposeCharacters]): (-[WKContentView shiftKeyStateChangedFromState:toState:shiftKeyStateChangedFrom:to:]): (-[WKContentView systemWillChangeSelectionForInteraction:selectionWillChange:]): (-[WKContentView systemDidChangeSelectionForInteraction:selectionDidChange:]): (-[WKContentView _showDictionary:]): Deleted. Remove this altogether, since it's now just dead code with recent versions of UIKit. (toWKSESelectionTouch): Deleted. (-[WKContentView setAsyncSystemInputDelegate:]): Deleted. (-[WKContentView handleAsyncKeyEvent:withCompletionHandler:]): Deleted. (-[WKContentView replaceText:withText:options:withCompletionHandler:]): Deleted. (-[WKContentView moveInDirection:byGranularity:]): Deleted. (-[WKContentView extendInDirection:byGranularity:]): Deleted. (-[WKContentView adjustSelection:completionHandler:]): Deleted. (-[WKContentView shiftKeyStateChangedFrom:to:]): Deleted. (-[WKContentView selectionWillChange:]): Deleted. (-[WKContentView selectionDidChange:]): Deleted. * Source/WebKit/UIProcess/ios/WKExtendedTextInputTraits.h: * Source/WebKit/UIProcess/ios/WKExtendedTextInputTraits.mm: (-[WKExtendedTextInputTraits setSelectionHandleColor:]): (-[WKExtendedTextInputTraits selectionHandleColor]): (-[WKExtendedTextInputTraits setSelectionBarColor:]): (-[WKExtendedTextInputTraits selectionBarColor]): (-[WKExtendedTextInputTraits setSelectionColorsToMatchTintColor:]): * Source/WebKit/UIProcess/ios/WKSEDefinitions.h: * Source/WebKit/UIProcess/ios/WKTextInteractionWrapper.h: * Source/WebKit/UIProcess/ios/WKTextInteractionWrapper.mm: (-[WKTextInteractionWrapper initWithView:]): (-[WKTextInteractionWrapper selectionChanged]): (-[WKTextInteractionWrapper selectionChangedWithGestureAt:withGesture:withState:withFlags:]): (-[WKTextInteractionWrapper selectionChangedWithTouchAt:withSelectionTouch:withFlags:]): (-[WKTextInteractionWrapper lookup:withRange:fromRect:]): (-[WKTextInteractionWrapper showShareSheetFor:fromRect:]): (-[WKTextInteractionWrapper showTextServiceFor:fromRect:]): (-[WKTextInteractionWrapper scheduleReplacementsForText:]): (-[WKTextInteractionWrapper scheduleChineseTransliterationForText:]): (-[WKTextInteractionWrapper translate:fromRect:]): (-[WKTextInteractionWrapper showDictionaryFor:fromRect:]): Deleted. * Source/WebKit/UIProcess/ios/WebDataListSuggestionsDropdownIOS.h: * Tools/TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm: * Tools/TestWebKitAPI/Tests/ios/AutocorrectionTestsIOS.mm: (TEST): * Tools/TestWebKitAPI/cocoa/TestWKWebView.mm: (-[WKWebView moveSelectionToStartOfParagraph]): (-[WKWebView extendSelectionToStartOfParagraph]): (-[WKWebView moveSelectionToEndOfParagraph]): (-[WKWebView extendSelectionToEndOfParagraph]): (-[WKWebView extendedTextInputTraits]): (-[WKWebView autocorrectionContext]): (-[WKWebView replaceText:withText:shouldUnderline:completion:]): (wrap): (unwrap): Update `TestWKWebView` API testing helpers to use the new API shape when `SERVICE_EXTENSIONS_TEXT_INPUT_IS_AVAILABLE` is set. (-[WKWebView synchronouslyAdjustSelectionWithDelta:]): (-[WKWebView selectTextForContextMenuWithLocationInView:completion:]): (-[WKWebView handleKeyEvent:completion:]): * Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm: (WTR::UIScriptControllerIOS::applyAutocorrection): Canonical link: https://commits.webkit.org/273093@main
- Loading branch information