[webkit-changes] [WebKit/WebKit] 943ff8: [iOS] Refactor some `UIViewController`-related cod...

Wenson Hsieh noreply at github.com
Wed Sep 20 00:00:34 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 943ff888b0fde28477028c8d533a69b0f1f2dd80
      https://github.com/WebKit/WebKit/commit/943ff888b0fde28477028c8d533a69b0f1f2dd80
  Author: Wenson Hsieh <wenson_hsieh at apple.com>
  Date:   2023-09-19 (Tue, 19 Sep 2023)

  Changed paths:
    M Source/WebCore/PAL/pal/spi/ios/UIKitSPI.h
    M Source/WebCore/SourcesCocoa.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    A Source/WebCore/platform/ios/UIViewControllerUtilities.h
    A Source/WebCore/platform/ios/UIViewControllerUtilities.mm
    M Source/WebCore/platform/ios/ValidationBubbleIOS.mm
    M Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm
    M Source/WebKit/Platform/spi/ios/UIKitSPI.h
    M Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm
    M Source/WebKit/UIProcess/ApplicationStateTracker.mm
    M Source/WebKit/UIProcess/Cocoa/MediaPermissionUtilities.mm
    M Source/WebKit/UIProcess/Cocoa/WKContactPicker.mm
    M Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm
    M Source/WebKit/UIProcess/Cocoa/WKStorageAccessAlert.mm
    M Source/WebKit/UIProcess/ios/UIKitUtilities.h
    M Source/WebKit/UIProcess/ios/UIKitUtilities.mm
    M Source/WebKit/UIProcess/ios/WKActionSheet.mm
    M Source/WebKit/UIProcess/ios/WKActionSheetAssistant.mm
    M Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
    M Source/WebKit/UIProcess/ios/WKWebGeolocationPolicyDeciderIOS.mm
    M Source/WebKit/UIProcess/ios/forms/WKAirPlayRoutePicker.mm
    M Source/WebKit/UIProcess/ios/forms/WKDatePickerPopoverController.mm
    M Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.mm
    M Source/WebKit/UIProcess/ios/forms/WKFormColorControl.mm
    M Source/WebKit/UIProcess/ios/forms/WKFormSelectPicker.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm
    M Tools/TestWebKitAPI/Tests/ios/ActionSheetTests.mm
    M Tools/TestWebKitAPI/ios/UIKitSPI.h

  Log Message:
  -----------
  [iOS] Refactor some `UIViewController`-related code to make testing easier
https://bugs.webkit.org/show_bug.cgi?id=261781
rdar://115762143

Reviewed by Aditya Keerthi.

Refactor some logic to:

1.  Walk the presenting view controller chain in search for a `UIViewController` suitable for
    presenting popovers and other modal view controllers, and
2.  Find the corresponding `UIViewController` for a given `UIView`.

...by pulling these out into helper functions in `UIKitUtilities` and `UIViewControllerUtilities`,
respectively. Adopt them everywhere they're needed in WebCore and WebKit, in lieu of the existing
UIKit APIs.

* Source/WebCore/PAL/pal/spi/ios/UIKitSPI.h:
* Source/WebCore/SourcesCocoa.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/platform/ios/UIViewControllerUtilities.h: Copied from Source/WebKit/UIProcess/ios/UIKitUtilities.h.
* Source/WebCore/platform/ios/UIViewControllerUtilities.mm: Copied from Source/WebKit/UIProcess/ios/UIKitUtilities.h.
(WebCore::viewController):

Maintain compatibility with both Safari and system apps by preserving the existing call to
`+viewControllerForView:`.

* Source/WebCore/platform/ios/ValidationBubbleIOS.mm:
(WebCore::fallbackViewController):
* Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm:
(fallbackViewController):
* Source/WebKit/Platform/spi/ios/UIKitSPI.h:
* Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:
(-[WKWebView _contentInsetsFromSystemMinimumLayoutMargins]):
(-[WKWebView _presentLockdownMode]):
* Source/WebKit/UIProcess/ApplicationStateTracker.mm:
(WebKit::ApplicationStateTracker::ApplicationStateTracker):
* Source/WebKit/UIProcess/Cocoa/MediaPermissionUtilities.mm:
(WebKit::alertForPermission):
* Source/WebKit/UIProcess/Cocoa/WKContactPicker.mm:
(-[WKContactPicker presentWithRequestData:completionHandler:]):
* Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:
(-[WKShareSheet presentWithShareDataArray:inRect:]):
* Source/WebKit/UIProcess/Cocoa/WKStorageAccessAlert.mm:
(WebKit::displayStorageAccessAlert):
* Source/WebKit/UIProcess/ios/UIKitUtilities.h:
* Source/WebKit/UIProcess/ios/UIKitUtilities.mm:
(-[UIView _wk_viewControllerForFullScreenPresentation]):
* Source/WebKit/UIProcess/ios/WKActionSheet.mm:
(-[WKActionSheet presentSheetFromRect:]):
(-[WKActionSheet willRotate]):
* Source/WebKit/UIProcess/ios/WKActionSheetAssistant.mm:
(-[WKActionSheetAssistant superviewForSheet]):
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView endEditingAndUpdateFocusAppearanceWithReason:]):
(-[WKContentView presentViewControllerForCurrentFocusedElement]):
(-[WKContentView presentVisualSearchPreviewControllerForImage:imageURL:title:imageBounds:appearanceActions:]):
(-[WKContentView updateImageAnalysisForContextMenuPresentation:]):
* Source/WebKit/UIProcess/ios/WKWebGeolocationPolicyDeciderIOS.mm:
(-[WKWebGeolocationPolicyDecider _executeNextChallenge]):
* Source/WebKit/UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
(-[WKAirPlayRoutePicker showFromView:routeSharingPolicy:routingContextUID:hasVideo:]):
* Source/WebKit/UIProcess/ios/forms/WKDatePickerPopoverController.mm:
(-[WKDatePickerPopoverController presentInView:sourceRect:interactionBounds:completion:]):
* Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.mm:
(-[WKFileUploadPanel dismiss]):
* Source/WebKit/UIProcess/ios/forms/WKFormColorControl.mm:
(-[WKColorPicker controlBeginEditing]):
* Source/WebKit/UIProcess/ios/forms/WKFormSelectPicker.mm:
(-[WKSelectMultiplePicker controlBeginEditing]):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
* Tools/TestWebKitAPI/Tests/ios/ActionSheetTests.mm:
(TestWebKitAPI::TEST):
* Tools/TestWebKitAPI/ios/UIKitSPI.h:

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




More information about the webkit-changes mailing list