Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 1358c81b18526a7f44d21b66983c82e59ba44056
https://github.com/WebKit/WebKit/commit/1358c81b18526a7f44d21b66983c82e59ba44056
Author: Aditya Keerthi <[email protected]>
Date: 2024-05-15 (Wed, 15 May 2024)
Changed paths:
A Source/WebKit/UIProcess/Cocoa/PickerDismissalReason.h
M Source/WebKit/UIProcess/Cocoa/WKContactPicker.h
M Source/WebKit/UIProcess/Cocoa/WKContactPicker.mm
M Source/WebKit/UIProcess/Cocoa/WKShareSheet.h
M Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm
M Source/WebKit/UIProcess/ios/UIKitUtilities.h
M Source/WebKit/UIProcess/ios/UIKitUtilities.mm
M Source/WebKit/UIProcess/ios/WKContentView.mm
M Source/WebKit/UIProcess/ios/WKContentViewInteraction.h
M Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
M Source/WebKit/UIProcess/ios/WKPDFView.mm
M Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.h
M Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.mm
M Source/WebKit/UIProcess/mac/WebViewImpl.mm
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
Log Message:
-----------
REGRESSION (272448.703@safari-7618-branch): [iOS] <input type=file> camera
capture instantly dismisses
rdar://125046135
Reviewed by Abrar Rahman Protyasha and Wenson Hsieh.
272448.703@safari-7618-branch added logic to dismiss presented pickers, such as
the file upload panel, when the `WKWebView` was removed from the hierarchy. The
behavior is necessary to avoid scenarios where a picker can be displayed over a
site that's unrelated to the one requesting the information.
While that solution is correct for modal presentations, it is incorrect for
fullscreen presentations, which remove views from the hierarchy following
presentation. The camera view controller uses a fullscreen presentation.
Consequently, once it gets presented, the web view is removed from the
hierarchy, and following 272448.703@safari-7618-branch, it is instantly
dismissed.
To fix, reduce the scope of the previous fix to exclude fullscreen
presentations.
In this case, there is no need to dismiss presented view controllers, as the
web view content is already hidden.
Note that there is no way to detect whether a view was removed from the
hierarchy
due to a fullscreen presentation. Consequently, the solution checks the status
of various presented pickers.
* Source/WebKit/UIProcess/Cocoa/PickerDismissalReason.h:
Introduce `PickerDismissalReason`s to control the dimissal behavior.
In particular, `ViewRemoved` now checks for fullscreen presentations, to avoid
instant dismissal.
* Source/WebKit/UIProcess/Cocoa/WKContactPicker.h:
* Source/WebKit/UIProcess/Cocoa/WKContactPicker.mm:
(-[WKContactPicker dismissIfNeededWithReason:]):
* Source/WebKit/UIProcess/Cocoa/WKShareSheet.h:
* Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:
(-[WKShareSheet dismissIfNeededWithReason:]):
* Source/WebKit/UIProcess/ios/UIKitUtilities.h:
* Source/WebKit/UIProcess/ios/UIKitUtilities.mm:
(-[UIViewController _wk_isInFullscreenPresentation]):
* Source/WebKit/UIProcess/ios/WKContentView.mm:
(-[WKContentView willMoveToWindow:]):
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView cleanUpInteraction]):
(-[WKContentView dismissFilePicker]):
(-[WKContentView _showShareSheet:inRect:completionHandler:]):
(-[WKContentView dismissPickersIfNeededWithReason:]):
(-[WKContentView dismissPickers]): Deleted.
* Source/WebKit/UIProcess/ios/WKPDFView.mm:
(-[WKPDFView dealloc]):
`ProcessExited` is used here, since it has the desired semantics.
In effect, the remote process of the host view controller is exited here.
(-[WKPDFView actionSheetAssistant:shareElementWithURL:rect:]):
* Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.h:
* Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.mm:
(-[WKFileUploadPanel dismissIfNeededWithReason:]):
* Source/WebKit/UIProcess/mac/WebViewImpl.mm:
(WebKit::WebViewImpl::showShareSheet):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
Originally-landed-as: 272448.818@safari-7618-branch (1db2f6a6a042).
rdar://128086989
Canonical link: https://commits.webkit.org/278827@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes