Title: [276125] trunk
Revision
276125
Author
[email protected]
Date
2021-04-16 01:47:23 -0700 (Fri, 16 Apr 2021)

Log Message

Promote WKWebView device orientation permission delegate to API
https://bugs.webkit.org/show_bug.cgi?id=223919

Reviewed by Alex Christensen.

Source/WebKit:

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):

Tools:

* 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:]):

Modified Paths

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);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to