Diff
Modified: trunk/Source/WebKit/ChangeLog (276124 => 276125)
--- trunk/Source/WebKit/ChangeLog 2021-04-16 08:39:15 UTC (rev 276124)
+++ trunk/Source/WebKit/ChangeLog 2021-04-16 08:47:23 UTC (rev 276125)
@@ -1,3 +1,23 @@
+2021-04-16 Youenn Fablet <[email protected]>
+
+ Promote WKWebView device orientation permission delegate to API
+ https://bugs.webkit.org/show_bug.cgi?id=223919
+
+ Reviewed by Alex Christensen.
+
+ Move corresponding SPI to API.
+ Introduce WK_API_UNAVAILABLE to make that API not available in certain OSes.
+
+ Covered by existing tests.
+
+ * Scripts/postprocess-header-rule:
+ * Shared/API/Cocoa/WKFoundation.h:
+ * UIProcess/API/Cocoa/WKUIDelegate.h:
+ * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
+ * UIProcess/Cocoa/UIDelegate.mm:
+ (WebKit::UIDelegate::setDelegate):
+ (WebKit::UIDelegate::UIClient::shouldAllowDeviceOrientationAndMotionAccess):
+
2021-04-15 Commit Queue <[email protected]>
Unreviewed, reverting r276107.
Modified: trunk/Source/WebKit/Scripts/postprocess-header-rule (276124 => 276125)
--- trunk/Source/WebKit/Scripts/postprocess-header-rule 2021-04-16 08:39:15 UTC (rev 276124)
+++ trunk/Source/WebKit/Scripts/postprocess-header-rule 2021-04-16 08:47:23 UTC (rev 276125)
@@ -66,6 +66,7 @@
-e s/WK_MAC_TBA/${OSX_VERSION}/g
-e s/WK_IOS_TBA/${IOS_VERSION}/g
-e s/WK_API_AVAILABLE/API_AVAILABLE/
+ -e s/WK_API_UNAVAILABLE/API_UNAVAILABLE/
-e s/WK_API_DEPRECATED/API_DEPRECATED/
-e "s/^WK_CLASS_AVAILABLE/WK_EXTERN API_AVAILABLE/"
-e "s/^WK_CLASS_DEPRECATED/WK_EXTERN API_DEPRECATED/"
@@ -73,6 +74,7 @@
else
SED_OPTIONS+=(
-e 's/WK_(API_|CLASS_)AVAILABLE\(.*\)\s*\)//g'
+ -e 's/WK_API_UNAVAILABLE\(.*\)//g'
-e 's/WK_(API_|CLASS_)DEPRECATED(_WITH_REPLACEMENT)?\(.*\)\s*\)//g'
)
fi
Modified: trunk/Source/WebKit/Shared/API/Cocoa/WKFoundation.h (276124 => 276125)
--- trunk/Source/WebKit/Shared/API/Cocoa/WKFoundation.h 2021-04-16 08:39:15 UTC (rev 276124)
+++ trunk/Source/WebKit/Shared/API/Cocoa/WKFoundation.h 2021-04-16 08:47:23 UTC (rev 276125)
@@ -35,6 +35,7 @@
#ifndef WK_FRAMEWORK_HEADER_POSTPROCESSING_ENABLED
#define WK_API_AVAILABLE(...)
+#define WK_API_UNAVAILABLE(...)
#define WK_CLASS_AVAILABLE(...) __attribute__((visibility("default")))
#define WK_API_DEPRECATED(_message, ...) __attribute__((deprecated(_message)))
#define WK_API_DEPRECATED_WITH_REPLACEMENT(_replacement, ...) __attribute__((deprecated("use " #_replacement)))
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegate.h (276124 => 276125)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegate.h 2021-04-16 08:39:15 UTC (rev 276124)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegate.h 2021-04-16 08:47:23 UTC (rev 276125)
@@ -146,6 +146,13 @@
*/
- (void)webView:(WKWebView *)webView requestMediaCapturePermissionForOrigin:(WKSecurityOrigin *)origin initiatedByFrame:(WKFrameInfo *)frame type:(WKMediaCaptureType)type decisionHandler:(void (^)(WKPermissionDecision decision))decisionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
+/*! @abstract Allows your app to determine whether or not the given security origin should have access to the device's orientation and motion.
+ @param securityOrigin The security origin which requested access to the device's orientation and motion.
+ @param frame The frame that initiated the request.
+ @param decisionHandler The decision handler to call once the app has made its decision.
+ */
+- (void)webView:(WKWebView *)webView requestDeviceOrientationAndMotionPermissionForOrigin:(WKSecurityOrigin *)origin initiatedByFrame:(WKFrameInfo *)frame decisionHandler:(void (^)(WKPermissionDecision decision))decisionHandler WK_API_AVAILABLE(ios(WK_IOS_TBA)) WK_API_UNAVAILABLE(macos);
+
#if TARGET_OS_IPHONE
/*! @abstract Allows your app to determine whether or not the given element should show a preview.
@@ -180,7 +187,6 @@
@param previewingViewController The view controller that is being popped.
*/
- (void)webView:(WKWebView *)webView commitPreviewingViewController:(UIViewController *)previewingViewController WK_API_DEPRECATED_WITH_REPLACEMENT("webView:contextMenuForElement:willCommitWithAnimator:", ios(10.0, 13.0));
-
#endif // TARGET_OS_IPHONE
#if TARGET_OS_IOS
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h (276124 => 276125)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h 2021-04-16 08:39:15 UTC (rev 276124)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h 2021-04-16 08:47:23 UTC (rev 276125)
@@ -216,13 +216,6 @@
- (void)_webView:(WKWebView *)webView didDismissFocusedElementViewController:(UIViewController *)controller WK_API_AVAILABLE(ios(12.0));
- (BOOL)_webView:(WKWebView *)webView gestureRecognizerCouldPinch:(UIGestureRecognizer *)gestureRecognizer WK_API_AVAILABLE(ios(13.0));
-/*! @abstract Allows your app to determine whether or not the given security origin should have access to the device's orientation and motion.
- @param securityOrigin The security origin which requested access to the device's orientation and motion.
- @param frame The frame that initiated the request.
- @param decisionHandler The decision handler to call once the app has made its decision.
- */
-- (void)_webView:(WKWebView *)webView requestDeviceOrientationAndMotionPermissionForOrigin:(WKSecurityOrigin*)origin initiatedByFrame:(WKFrameInfo *)frame decisionHandler:(void (^)(WKPermissionDecision decision))decisionHandler WK_API_AVAILABLE(ios(WK_IOS_TBA));
-
- (BOOL)_webViewCanBecomeFocused:(WKWebView *)webView WK_API_AVAILABLE(ios(WK_IOS_TBA));
#else // !TARGET_OS_IPHONE
Modified: trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm (276124 => 276125)
--- trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm 2021-04-16 08:39:15 UTC (rev 276124)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm 2021-04-16 08:47:23 UTC (rev 276125)
@@ -139,7 +139,7 @@
m_delegateMethods.webViewWillCloseLocalInspector = [delegate respondsToSelector:@selector(_webView:willCloseLocalInspector:)];
#endif
#if ENABLE(DEVICE_ORIENTATION)
- m_delegateMethods.webViewRequestDeviceOrientationAndMotionPermissionForOriginDecisionHandler = [delegate respondsToSelector:@selector(_webView:requestDeviceOrientationAndMotionPermissionForOrigin:initiatedByFrame:decisionHandler:)];
+ m_delegateMethods.webViewRequestDeviceOrientationAndMotionPermissionForOriginDecisionHandler = [delegate respondsToSelector:@selector(webView:requestDeviceOrientationAndMotionPermissionForOrigin:initiatedByFrame:decisionHandler:)];
#endif
m_delegateMethods.webViewDecideDatabaseQuotaForSecurityOriginCurrentQuotaCurrentOriginUsageCurrentDatabaseUsageExpectedUsageDecisionHandler = [delegate respondsToSelector:@selector(_webView:decideDatabaseQuotaForSecurityOrigin:currentQuota:currentOriginUsage:currentDatabaseUsage:expectedUsage:decisionHandler:)];
m_delegateMethods.webViewDecideDatabaseQuotaForSecurityOriginDatabaseNameDisplayNameCurrentQuotaCurrentOriginUsageCurrentDatabaseUsageExpectedUsageDecisionHandler = [delegate respondsToSelector:@selector(_webView:decideDatabaseQuotaForSecurityOrigin:databaseName:displayName:currentQuota:currentOriginUsage:currentDatabaseUsage:expectedUsage:decisionHandler:)];
@@ -1054,7 +1054,7 @@
}
auto delegate = m_uiDelegate->m_delegate.get();
- auto checker = CompletionHandlerCallChecker::create(delegate.get(), @selector(_webView:requestDeviceOrientationAndMotionPermissionForOrigin:initiatedByFrame:decisionHandler:));
+ auto checker = CompletionHandlerCallChecker::create(delegate.get(), @selector(webView:requestDeviceOrientationAndMotionPermissionForOrigin:initiatedByFrame:decisionHandler:));
auto decisionHandler = makeBlockPtr([completionHandler = WTFMove(completionHandler), securityOrigin = securityOrigin->data(), checker = WTFMove(checker), page = makeWeakPtr(page)](WKPermissionDecision decision) mutable {
if (checker->completionHandlerHasBeenCalled())
return;
@@ -1075,7 +1075,7 @@
break;
}
});
- [(id <WKUIDelegatePrivate>)delegate _webView:m_uiDelegate->m_webView.get().get() requestDeviceOrientationAndMotionPermissionForOrigin:wrapper(API::SecurityOrigin::create(securityOrigin.get())) initiatedByFrame:wrapper(API::FrameInfo::create(WTFMove(frameInfo), &page)) decisionHandler:decisionHandler.get()];
+ [delegate webView:m_uiDelegate->m_webView.get().get() requestDeviceOrientationAndMotionPermissionForOrigin:wrapper(API::SecurityOrigin::create(securityOrigin.get())) initiatedByFrame:wrapper(API::FrameInfo::create(WTFMove(frameInfo), &page)) decisionHandler:decisionHandler.get()];
}
#endif
Modified: trunk/Tools/ChangeLog (276124 => 276125)
--- trunk/Tools/ChangeLog 2021-04-16 08:39:15 UTC (rev 276124)
+++ trunk/Tools/ChangeLog 2021-04-16 08:47:23 UTC (rev 276125)
@@ -1,3 +1,16 @@
+2021-04-16 Youenn Fablet <[email protected]>
+
+ Promote WKWebView device orientation permission delegate to API
+ https://bugs.webkit.org/show_bug.cgi?id=223919
+
+ Reviewed by Alex Christensen.
+
+ * TestWebKitAPI/Tests/WebKitCocoa/DeviceOrientation.mm:
+ (-[DeviceOrientationPermissionUIDelegate webView:requestDeviceOrientationAndMotionPermissionForOrigin:initiatedByFrame:decisionHandler:]):
+ (-[DeviceOrientationPermissionValidationDelegate webView:requestDeviceOrientationAndMotionPermissionForOrigin:initiatedByFrame:decisionHandler:]):
+ * TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:
+ (-[WebsitePoliciesDeviceOrientationUIDelegate webView:requestDeviceOrientationAndMotionPermissionForOrigin:initiatedByFrame:decisionHandler:]):
+
2021-04-15 Aakash Jain <[email protected]>
Pass -d parameter to git clean in commit-queue
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/DeviceOrientation.mm (276124 => 276125)
--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/DeviceOrientation.mm 2021-04-16 08:39:15 UTC (rev 276124)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/DeviceOrientation.mm 2021-04-16 08:47:23 UTC (rev 276125)
@@ -76,7 +76,7 @@
return self;
}
-- (void)_webView:(WKWebView *)webView requestDeviceOrientationAndMotionPermissionForOrigin:(WKSecurityOrigin*)origin initiatedByFrame:(WKFrameInfo *)requestingFrame decisionHandler:(void (^)(WKPermissionDecision))decisionHandler
+- (void)webView:(WKWebView *)webView requestDeviceOrientationAndMotionPermissionForOrigin:(WKSecurityOrigin*)origin initiatedByFrame:(WKFrameInfo *)requestingFrame decisionHandler:(void (^)(WKPermissionDecision))decisionHandler
{
decisionHandler(_decisionHandler() ? WKPermissionDecisionGrant : WKPermissionDecisionDeny);
askedClientForPermission = true;
@@ -386,7 +386,7 @@
_validationHandler = WTFMove(validationHandler);
}
-- (void)_webView:(WKWebView *)webView requestDeviceOrientationAndMotionPermissionForOrigin:(WKSecurityOrigin*)origin initiatedByFrame:(WKFrameInfo *)frame decisionHandler:(void (^)(WKPermissionDecision decision))decisionHandler {
+- (void)webView:(WKWebView *)webView requestDeviceOrientationAndMotionPermissionForOrigin:(WKSecurityOrigin*)origin initiatedByFrame:(WKFrameInfo *)frame decisionHandler:(void (^)(WKPermissionDecision decision))decisionHandler {
if (_validationHandler)
_validationHandler(origin, frame);
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm (276124 => 276125)
--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm 2021-04-16 08:39:15 UTC (rev 276124)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm 2021-04-16 08:47:23 UTC (rev 276125)
@@ -1481,7 +1481,7 @@
@implementation WebsitePoliciesDeviceOrientationUIDelegate
-- (void)_webView:(WKWebView *)webView requestDeviceOrientationAndMotionPermissionForOrigin:(WKSecurityOrigin*)origin initiatedByFrame:(WKFrameInfo *)requestingFrame decisionHandler:(void (^)(WKPermissionDecision))decisionHandler
+- (void)webView:(WKWebView *)webView requestDeviceOrientationAndMotionPermissionForOrigin:(WKSecurityOrigin*)origin initiatedByFrame:(WKFrameInfo *)requestingFrame decisionHandler:(void (^)(WKPermissionDecision))decisionHandler
{
calledShouldAllowDeviceOrientationAndMotionAccessDelegate = true;
decisionHandler(WKPermissionDecisionGrant);