[webkit-changes] [WebKit/WebKit] 6defc2: Upstream adoption of UIKit and keyboard-related Br...

Wenson Hsieh noreply at github.com
Fri Jan 26 15:31:51 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6defc289ffaf04d88c88c6aee6f29b0652ddd5fa
      https://github.com/WebKit/WebKit/commit/6defc289ffaf04d88c88c6aee6f29b0652ddd5fa
  Author: Wenson Hsieh <wenson_hsieh at apple.com>
  Date:   2024-01-26 (Fri, 26 Jan 2024)

  Changed paths:
    M Source/WTF/wtf/PlatformHave.h
    M Source/WTF/wtf/PlatformUse.h
    M Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj
    A Source/WebCore/PAL/pal/spi/ios/BrowserEngineKitSPI.h
    M Source/WebCore/PAL/pal/spi/ios/UIKitSPI.h
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/editing/cocoa/AlternativeTextContextController.h
    M Source/WebCore/platform/cocoa/PlatformTextAlternatives.h
    M Source/WebCore/platform/ios/WebEvent.mm
    M Source/WebCore/platform/ios/WebEventPrivate.h
    R Source/WebCore/platform/ios/WebSEDefinitions.h
    M Source/WebKit/Configurations/WebKit.xcconfig
    M Source/WebKit/Platform/spi/ios/UIKitSPI.h
    M Source/WebKit/Shared/DocumentEditingContext.h
    M Source/WebKit/Shared/DocumentEditingContext.mm
    M Source/WebKit/Shared/ios/WebIOSEventFactory.h
    M Source/WebKit/Shared/ios/WebIOSEventFactory.mm
    M Source/WebKit/Shared/ios/WebPreferencesDefaultValuesIOS.mm
    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/API/ios/WKWebViewPrivateForTestingIOS.h
    M Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm
    M Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.mm
    M Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm
    M Source/WebKit/UIProcess/PageClient.h
    M Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h
    M Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm
    M Source/WebKit/UIProcess/ios/PageClientImplIOS.h
    M Source/WebKit/UIProcess/ios/PageClientImplIOS.mm
    M Source/WebKit/UIProcess/ios/WKBaseScrollView.h
    M Source/WebKit/UIProcess/ios/WKBaseScrollView.mm
    A Source/WebKit/UIProcess/ios/WKBrowserEngineDefinitions.h
    M Source/WebKit/UIProcess/ios/WKContentViewInteraction.h
    M Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
    M Source/WebKit/UIProcess/ios/WKExtendedTextInputTraits.h
    M Source/WebKit/UIProcess/ios/WKExtendedTextInputTraits.mm
    R Source/WebKit/UIProcess/ios/WKSEDefinitions.h
    M Source/WebKit/UIProcess/ios/WKScrollView.h
    M Source/WebKit/UIProcess/ios/WKScrollView.mm
    M Source/WebKit/UIProcess/ios/WKTextInteractionWrapper.h
    M Source/WebKit/UIProcess/ios/WKTextInteractionWrapper.mm
    M Source/WebKit/UIProcess/ios/WebDataListSuggestionsDropdownIOS.h
    M Source/WebKit/UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Source/WebKitLegacy/mac/WebView/WebView.mm
    M Tools/TestRunnerShared/spi/UIKitSPIForTesting.h
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEditActions.mm
    M Tools/TestWebKitAPI/Tests/ios/AutocorrectionTestsIOS.mm
    M Tools/TestWebKitAPI/Tests/ios/WKScrollViewTests.mm
    M Tools/TestWebKitAPI/Tests/ios/WKWebViewAutofillTests.mm
    M Tools/TestWebKitAPI/cocoa/TestWKWebView.h
    M Tools/TestWebKitAPI/cocoa/TestWKWebView.mm
    M Tools/WebKitTestRunner/ios/UIScriptControllerIOS.h
    M Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm

  Log Message:
  -----------
  Upstream adoption of UIKit and keyboard-related BrowserEngineKit APIs
https://bugs.webkit.org/show_bug.cgi?id=268043
rdar://121560918

Reviewed by Aditya Keerthi.

Upstream all support for UIKit and keyboard/editing-related APIs, using the BrowserEngineKit
framework in iOS 17.4. This covers the following APIs and symbol names:

• Editing and keyboard

    BEAutoFillTextSuggestion
    BEDirectionalTextRange
    BEExtendedTextInputTraits
    BEKeyEntry
    BEKeyEntryContext
    BEKeyModifierFlags
    BETextAlternatives
    BETextInput
    BETextInputDelegate
    BETextReplacementOptions
    BETextSuggestion

• Text selection and interaction

    BEGestureType
    BESelectionFlags
    BESelectionTouchPhase
    BETextDocumentContext
    BETextDocumentRequest
    BETextInteraction
    BETextInteractionDelegate

• Drag interaction

    BEDragInteraction
    BEDragInteractionDelegate

• Context menu

    BEContextMenuConfiguration

• Scroll view APIs

    BEScrollView
    BEScrollViewDelegate
    BEScrollViewScrollUpdate
    BEScrollViewScrollUpdatePhase

This removes all WebKitAdditions header imports that previously declared these symbols with `WKSE-`
prefixed macros, and replaces them with either:

1.  …the original BE-prefixed symbols, in the case where these APIs are only used in code that's
    guarded inside `USE(BROWSERENGINEKIT)` — (e.g. `BETextInput`, `BEContextMenuConfiguration`).

2.  …`WKBE`-prefixed symbols, in the case where the APIs are used in code alongside with legacy
    UIKit symbols (e.g. `BEScrollView`, `BETextDocumentContext`, `BETextDocumentRequest`).

For the latter, the `WKBE` prefix will allow us to easily replace these with only the `BE` variants
once BrowserEngineKit is used across all iOS-family ports.

No change in behavior.

* Source/WTF/wtf/PlatformUse.h:
* Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj:
* Source/WebCore/PAL/pal/spi/ios/BrowserEngineKitSPI.h: Copied from Source/WebCore/platform/cocoa/PlatformTextAlternatives.h.
* Source/WebCore/PAL/pal/spi/ios/UIKitSPI.h:
* Source/WebCore/editing/cocoa/AlternativeTextContextController.h:
* Source/WebCore/platform/cocoa/PlatformTextAlternatives.h:
* Source/WebCore/platform/ios/WebEvent.mm:
(webEventType):
(isChangingKeyModifiers):
(-[WebEvent initWithKeyEntry:]):
(-[WebEvent originalKeyEntry]):
* Source/WebCore/platform/ios/WebEventPrivate.h:
* Source/WebCore/platform/ios/WebSEDefinitions.h:
* Source/WebKit/Configurations/WebKit.xcconfig:

Link against BrowserEngineKit instead of ServiceExtensions on iOS 17.4+.

* Source/WebKit/Platform/spi/ios/UIKitSPI.h:
* Source/WebKit/Shared/DocumentEditingContext.h:
* Source/WebKit/Shared/DocumentEditingContext.mm:
(WebKit::DocumentEditingContext::toPlatformContext):
* Source/WebKit/Shared/ios/WebIOSEventFactory.h:
* Source/WebKit/Shared/ios/WebIOSEventFactory.mm:
(WebKit::toWebPhase):
(WebKit::WebIOSEventFactory::translationInView):
(WebKit::WebIOSEventFactory::createWebWheelEvent):
* Source/WebKit/Shared/ios/WebPreferencesDefaultValuesIOS.mm:
(WebKit::isAsyncTextInputFeatureFlagEnabled):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:
* Source/WebKit/UIProcess/API/ios/WKWebViewIOS.h:
* Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:
(-[WKWebView _scrollView:asynchronouslyHandleScrollEvent:completion:]):
(-[WKWebView scrollView:handleScrollUpdate:completion:]):
* Source/WebKit/UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h:
* Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm:
* Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.mm:
(WebKit::VideoPresentationManagerProxy::createLayerHostViewWithID):

Soft link the `_SEHostingView` class, so that we can stop statically linking ServiceExtensions.

* Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:
* Source/WebKit/UIProcess/PageClient.h:
* Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
* Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
(-[WKScrollingNodeScrollViewDelegate parentScrollViewForScrollView:]):
(-[WKScrollingNodeScrollViewDelegate _scrollView:asynchronouslyHandleScrollEvent:completion:]):
(-[WKScrollingNodeScrollViewDelegate scrollView:handleScrollUpdate:completion:]):
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::handleAsynchronousCancelableScrollEvent):
* Source/WebKit/UIProcess/ios/PageClientImplIOS.h:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::handleAsynchronousCancelableScrollEvent):
* Source/WebKit/UIProcess/ios/WKBaseScrollView.h:
* Source/WebKit/UIProcess/ios/WKBaseScrollView.mm:
(-[WKBaseScrollView initWithFrame:]):
* Source/WebKit/UIProcess/ios/WKBrowserEngineDefinitions.h: Added.
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _shouldUseUIContextMenuAsyncConfiguration]):
(-[WKContentView _shouldUseTextCursorDragAnimator]):
(-[WKContentView _updateRuntimeProtocolConformanceIfNeeded]):
(-[WKContentView _requiresKeyboardWhenFirstResponder]):
(-[WKContentView _requiresKeyboardResetOnReload]):
(-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):
(-[WKContentView alternativesForSelectedText]):
(-[WKContentView replaceForWebView:]):
(-[WKContentView insertionPointColor]):
(-[WKContentView selectionBarColor]):
(-[WKContentView selectionHighlightColor]):
(-[WKContentView canPerformAction:withSender:]):
(toGestureType):
(toWKBEGestureType):
(toSelectionTouch):
(toWKBESelectionTouchPhase):
(toWKBESelectionFlags):
(toSelectionFlags):
(selectionChangedWithGesture):
(selectionChangedWithTouch):
(-[WKContentView changeSelectionWithGestureAt:withGesture:withState:]):
(-[WKContentView changeSelectionWithGestureAt:withGesture:withState:withFlags:]):
(-[WKContentView changeSelectionWithTouchAt:withSelectionTouch:baseIsStart:withFlags:]):
(-[WKContentView changeSelectionWithTouchesFrom:to:withGesture:withState:]):
(logTextInteraction):
(-[WKContentView _internalBeginSelectionChange]):
(-[WKContentView _internalEndSelectionChange]):
(-[WKContentView insertTextSuggestion:]):
(-[WKContentView insertText:alternatives:style:]):
(-[WKContentView addTextAlternatives:]):
(-[WKContentView removeEmojiAlternatives]):
(-[WKContentView _updateTextInputTraits:]):
(-[WKContentView modifierFlagsDidChangeFrom:to:]):
(-[WKContentView _deferKeyEventToInputMethodEditing:]):
(-[WKContentView _interpretKeyEvent:isCharEvent:]):
(-[WKContentView _transpose]):
(-[WKContentView _updateInputContextAfterBlurringAndRefocusingElement]):
(-[WKContentView _selectionChanged]):
(-[WKContentView dataListTextSuggestions]):
(-[WKContentView setDataListTextSuggestions:]):
(-[WKContentView _provideSuggestionsToInputDelegate:]):
(-[WKContentView _provideUITextSuggestionsToInputDelegate:]):
(-[WKContentView _dragInteractionClass]):
(-[WKContentView _insertDropCaret:]):
(toWebDocumentRequestOptions):
(toWebRequest):
(-[WKContentView selectPositionAtPoint:withContextRequest:completionHandler:]):
(-[WKContentView dragInteraction:prepareDragSession:completion:]):
(-[WKContentView dragInteraction:itemsForAddingToSession:forTouchAtPoint:completion:]):
(-[WKContentView asBETextInput]):
(-[WKContentView updateCurrentSelectionTo:fromGesture:inState:]):
(-[WKContentView setSelectionFromPoint:toPoint:gesture:state:]):
(-[WKContentView adjustSelectionBoundaryToPoint:touchPhase:baseIsStart:flags:]):
(-[WKContentView extendedTextInputTraits]):
(-[WKContentView asyncInputDelegate]):
(-[WKContentView setAsyncInputDelegate:]):
(-[WKContentView handleKeyEntry:withCompletionHandler:]):
(-[WKContentView replaceText:withText:options:completionHandler:]):
(-[WKContentView requestTextContextForAutocorrectionWithCompletionHandler:]):
(-[WKContentView moveInStorageDirection:byGranularity:]):
(-[WKContentView extendInStorageDirection:byGranularity:]):
(-[WKContentView adjustSelectionByRange:completionHandler:]):
(-[WKContentView extendedTraitsDelegate]):
(-[WKContentView transposeCharactersAroundSelection]):
(-[WKContentView shiftKeyStateChangedFromState:toState:]):
(-[WKContentView systemWillChangeSelectionForInteraction:]):
(-[WKContentView systemDidChangeSelectionForInteraction:]):
(-[WKContentView textContentTypeForTesting]):
(-[WKContentView contextMenuInteraction:configurationForMenuAtLocation:]):
(toWKSEGestureType): Deleted.
(toWKSESelectionTouchPhase): Deleted.
(toWKSESelectionFlags): Deleted.
(shiftKeyState): Deleted.
(-[WKContentView dragInteraction:prepareDragSession:completion:_asyncDragInteraction:prepareDragSession:completion:]): Deleted.
(-[WKContentView dragInteraction:itemsForAddingToSession:forTouchAtPoint:completion:_asyncDragInteraction:itemsForAddingToSession:withTouchAtPoint:completion:]): Deleted.
(-[WKContentView asWKSETextInput]): Deleted.
(-[WKContentView asyncSystemInputDelegate]): Deleted.
(-[WKContentView setAsyncInputDelegate:setAsyncSystemInputDelegate:]): Deleted.
(-[WKContentView handleKeyEntry:withCompletionHandler:handleAsyncKeyEvent:withCompletionHandler:]): Deleted.
(-[WKContentView replaceText:withText:options:completionHandler:replaceText:withText:options:withCompletionHandler:]): Deleted.
(-[WKContentView moveInStorageDirection:byGranularity:moveInDirection:byGranularity:]): Deleted.
(-[WKContentView extendInStorageDirection:byGranularity:extendInDirection:byGranularity:]): Deleted.
(-[WKContentView adjustSelectionByRange:completionHandler:adjustSelection:completionHandler:]): Deleted.
(-[WKContentView transposeCharacters]): Deleted.
(-[WKContentView shiftKeyStateChangedFromState:toState:shiftKeyStateChangedFrom:to:]): Deleted.
(-[WKContentView systemWillChangeSelectionForInteraction:selectionWillChange:]): Deleted.
(-[WKContentView systemDidChangeSelectionForInteraction:selectionDidChange:]): Deleted.
* Source/WebKit/UIProcess/ios/WKExtendedTextInputTraits.h:
* Source/WebKit/UIProcess/ios/WKExtendedTextInputTraits.mm:
(-[WKExtendedTextInputTraits setSelectionColorsToMatchTintColor:]):
* Source/WebKit/UIProcess/ios/WKSEDefinitions.h: Removed.
* Source/WebKit/UIProcess/ios/WKScrollView.h:
* Source/WebKit/UIProcess/ios/WKScrollView.mm:
(-[WKScrollViewDelegateForwarder initWithInternalDelegate:externalDelegate:]):
(-[WKScrollView _updateDelegate]):
* Source/WebKit/UIProcess/ios/WKTextInteractionWrapper.h:
* Source/WebKit/UIProcess/ios/WKTextInteractionWrapper.mm:
(-[WKTextInteractionWrapper initWithView:]):
(-[WKTextInteractionWrapper dealloc]):
(-[WKTextInteractionWrapper activateSelection]):
(-[WKTextInteractionWrapper deactivateSelection]):
(-[WKTextInteractionWrapper selectionChanged]):
(-[WKTextInteractionWrapper setGestureRecognizers]):
(-[WKTextInteractionWrapper willStartScrollingOverflow]):
(-[WKTextInteractionWrapper didEndScrollingOverflow]):
(-[WKTextInteractionWrapper willStartScrollingOrZooming]):
(-[WKTextInteractionWrapper didEndScrollingOrZooming]):
(-[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 selectWord]):
(-[WKTextInteractionWrapper selectAll:]):
(-[WKTextInteractionWrapper contextMenuInteraction]):
(-[WKTextInteractionWrapper setExternalContextMenuInteractionDelegate:]):
* Source/WebKit/UIProcess/ios/WebDataListSuggestionsDropdownIOS.h:
* Source/WebKit/UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm:
(+[WKDataListTextSuggestion textSuggestionWithInputText:]):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKitLegacy/mac/WebView/WebView.mm:
* Source/WebKitLegacy/mac/WebView/WebViewInternal.h:
* Tools/TestRunnerShared/spi/UIKitSPIForTesting.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEditActions.mm:
(TestWebKitAPI::TEST):
* Tools/TestWebKitAPI/Tests/ios/AutocorrectionTestsIOS.mm:
(TEST):
* Tools/TestWebKitAPI/Tests/ios/WKScrollViewTests.mm:
(legacyScrollPhase):
(createScrollUpdate):
(TEST):
* Tools/TestWebKitAPI/Tests/ios/WKWebViewAutofillTests.mm:
* Tools/TestWebKitAPI/cocoa/TestWKWebView.h:
* Tools/TestWebKitAPI/cocoa/TestWKWebView.mm:
(-[WKWebView defineSelection]):
(-[WKWebView shareSelection]):
(-[WKWebView hasAsyncTextInput]):
(-[WKWebView selectionClipRect]):
(-[WKWebView moveSelectionToStartOfParagraph]):
(-[WKWebView extendSelectionToStartOfParagraph]):
(-[WKWebView moveSelectionToEndOfParagraph]):
(-[WKWebView extendSelectionToEndOfParagraph]):
(-[WKWebView asyncTextInput]):
(-[WKWebView extendedTextInputTraits]):
(-[WKWebView autocorrectionRectsForString:]):
(-[WKWebView autocorrectionContext]):
(-[WKWebView effectiveTextInputTraits]):
(-[WKWebView replaceText:withText:shouldUnderline:completion:]):
(wrap):
(unwrap):
(-[WKWebView synchronouslyAdjustSelectionWithDelta:]):
(-[WKWebView selectTextForContextMenuWithLocationInView:completion:]):
(-[WKWebView handleKeyEvent:completion:]):
* Tools/WebKitTestRunner/ios/UIScriptControllerIOS.h:
* Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptControllerIOS::applyAutocorrection):
(WTR::UIScriptControllerIOS::clipSelectionViewRectToContentView const):
(WTR::UIScriptControllerIOS::asyncTextInput const):

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




More information about the webkit-changes mailing list