⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 276125 in webkit


Ignore:
Timestamp:
Apr 16, 2021, 1:47:23 AM (5 years ago)
Author:
youenn@apple.com
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:]):

Location:
trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r276120 r276125  
     12021-04-16  Youenn Fablet  <youenn@apple.com>
     2
     3        Promote WKWebView device orientation permission delegate to API
     4        https://bugs.webkit.org/show_bug.cgi?id=223919
     5
     6        Reviewed by Alex Christensen.
     7
     8        Move corresponding SPI to API.
     9        Introduce WK_API_UNAVAILABLE to make that API not available in certain OSes.
     10
     11        Covered by existing tests.
     12
     13        * Scripts/postprocess-header-rule:
     14        * Shared/API/Cocoa/WKFoundation.h:
     15        * UIProcess/API/Cocoa/WKUIDelegate.h:
     16        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
     17        * UIProcess/Cocoa/UIDelegate.mm:
     18        (WebKit::UIDelegate::setDelegate):
     19        (WebKit::UIDelegate::UIClient::shouldAllowDeviceOrientationAndMotionAccess):
     20
    1212021-04-15  Commit Queue  <commit-queue@webkit.org>
    222
  • trunk/Source/WebKit/Scripts/postprocess-header-rule

    r268163 r276125  
    6767                -e s/WK_IOS_TBA/${IOS_VERSION}/g
    6868                -e s/WK_API_AVAILABLE/API_AVAILABLE/
     69                -e s/WK_API_UNAVAILABLE/API_UNAVAILABLE/
    6970                -e s/WK_API_DEPRECATED/API_DEPRECATED/
    7071                -e "s/^WK_CLASS_AVAILABLE/WK_EXTERN API_AVAILABLE/"
     
    7475            SED_OPTIONS+=(
    7576                -e 's/WK_(API_|CLASS_)AVAILABLE\(.*\)\s*\)//g'
     77                -e 's/WK_API_UNAVAILABLE\(.*\)//g'
    7678                -e 's/WK_(API_|CLASS_)DEPRECATED(_WITH_REPLACEMENT)?\(.*\)\s*\)//g'
    7779            )
  • trunk/Source/WebKit/Shared/API/Cocoa/WKFoundation.h

    r260334 r276125  
    3636
    3737#define WK_API_AVAILABLE(...)
     38#define WK_API_UNAVAILABLE(...)
    3839#define WK_CLASS_AVAILABLE(...) __attribute__((visibility("default")))
    3940#define WK_API_DEPRECATED(_message, ...) __attribute__((deprecated(_message)))
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegate.h

    r275162 r276125  
    147147- (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));
    148148
     149/*! @abstract Allows your app to determine whether or not the given security origin should have access to the device's orientation and motion.
     150 @param securityOrigin The security origin which requested access to the device's orientation and motion.
     151 @param frame The frame that initiated the request.
     152 @param decisionHandler The decision handler to call once the app has made its decision.
     153 */
     154- (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);
     155
    149156#if TARGET_OS_IPHONE
    150157
     
    181188 */
    182189- (void)webView:(WKWebView *)webView commitPreviewingViewController:(UIViewController *)previewingViewController WK_API_DEPRECATED_WITH_REPLACEMENT("webView:contextMenuForElement:willCommitWithAnimator:", ios(10.0, 13.0));
    183 
    184190#endif // TARGET_OS_IPHONE
    185191
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h

    r276051 r276125  
    216216- (void)_webView:(WKWebView *)webView didDismissFocusedElementViewController:(UIViewController *)controller WK_API_AVAILABLE(ios(12.0));
    217217- (BOOL)_webView:(WKWebView *)webView gestureRecognizerCouldPinch:(UIGestureRecognizer *)gestureRecognizer WK_API_AVAILABLE(ios(13.0));
    218 
    219 /*! @abstract Allows your app to determine whether or not the given security origin should have access to the device's orientation and motion.
    220  @param securityOrigin The security origin which requested access to the device's orientation and motion.
    221  @param frame The frame that initiated the request.
    222  @param decisionHandler The decision handler to call once the app has made its decision.
    223  */
    224 - (void)_webView:(WKWebView *)webView requestDeviceOrientationAndMotionPermissionForOrigin:(WKSecurityOrigin*)origin initiatedByFrame:(WKFrameInfo *)frame decisionHandler:(void (^)(WKPermissionDecision decision))decisionHandler WK_API_AVAILABLE(ios(WK_IOS_TBA));
    225218
    226219- (BOOL)_webViewCanBecomeFocused:(WKWebView *)webView WK_API_AVAILABLE(ios(WK_IOS_TBA));
  • trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm

    r275485 r276125  
    140140#endif
    141141#if ENABLE(DEVICE_ORIENTATION)
    142     m_delegateMethods.webViewRequestDeviceOrientationAndMotionPermissionForOriginDecisionHandler = [delegate respondsToSelector:@selector(_webView:requestDeviceOrientationAndMotionPermissionForOrigin:initiatedByFrame:decisionHandler:)];
     142    m_delegateMethods.webViewRequestDeviceOrientationAndMotionPermissionForOriginDecisionHandler = [delegate respondsToSelector:@selector(webView:requestDeviceOrientationAndMotionPermissionForOrigin:initiatedByFrame:decisionHandler:)];
    143143#endif
    144144    m_delegateMethods.webViewDecideDatabaseQuotaForSecurityOriginCurrentQuotaCurrentOriginUsageCurrentDatabaseUsageExpectedUsageDecisionHandler = [delegate respondsToSelector:@selector(_webView:decideDatabaseQuotaForSecurityOrigin:currentQuota:currentOriginUsage:currentDatabaseUsage:expectedUsage:decisionHandler:)];
     
    10551055
    10561056    auto delegate = m_uiDelegate->m_delegate.get();
    1057     auto checker = CompletionHandlerCallChecker::create(delegate.get(), @selector(_webView:requestDeviceOrientationAndMotionPermissionForOrigin:initiatedByFrame:decisionHandler:));
     1057    auto checker = CompletionHandlerCallChecker::create(delegate.get(), @selector(webView:requestDeviceOrientationAndMotionPermissionForOrigin:initiatedByFrame:decisionHandler:));
    10581058    auto decisionHandler = makeBlockPtr([completionHandler = WTFMove(completionHandler), securityOrigin = securityOrigin->data(), checker = WTFMove(checker), page = makeWeakPtr(page)](WKPermissionDecision decision) mutable {
    10591059        if (checker->completionHandlerHasBeenCalled())
     
    10761076        }
    10771077    });
    1078     [(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()];
     1078    [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()];
    10791079}
    10801080#endif
  • trunk/Tools/ChangeLog

    r276100 r276125  
     12021-04-16  Youenn Fablet  <youenn@apple.com>
     2
     3        Promote WKWebView device orientation permission delegate to API
     4        https://bugs.webkit.org/show_bug.cgi?id=223919
     5
     6        Reviewed by Alex Christensen.
     7
     8        * TestWebKitAPI/Tests/WebKitCocoa/DeviceOrientation.mm:
     9        (-[DeviceOrientationPermissionUIDelegate webView:requestDeviceOrientationAndMotionPermissionForOrigin:initiatedByFrame:decisionHandler:]):
     10        (-[DeviceOrientationPermissionValidationDelegate webView:requestDeviceOrientationAndMotionPermissionForOrigin:initiatedByFrame:decisionHandler:]):
     11        * TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:
     12        (-[WebsitePoliciesDeviceOrientationUIDelegate webView:requestDeviceOrientationAndMotionPermissionForOrigin:initiatedByFrame:decisionHandler:]):
     13
    1142021-04-15  Aakash Jain  <aakash_jain@apple.com>
    215
  • trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/DeviceOrientation.mm

    r275162 r276125  
    7777}
    7878
    79 - (void)_webView:(WKWebView *)webView requestDeviceOrientationAndMotionPermissionForOrigin:(WKSecurityOrigin*)origin initiatedByFrame:(WKFrameInfo *)requestingFrame decisionHandler:(void (^)(WKPermissionDecision))decisionHandler
     79- (void)webView:(WKWebView *)webView requestDeviceOrientationAndMotionPermissionForOrigin:(WKSecurityOrigin*)origin initiatedByFrame:(WKFrameInfo *)requestingFrame decisionHandler:(void (^)(WKPermissionDecision))decisionHandler
    8080{
    8181    decisionHandler(_decisionHandler() ? WKPermissionDecisionGrant : WKPermissionDecisionDeny);
     
    387387}
    388388
    389 - (void)_webView:(WKWebView *)webView requestDeviceOrientationAndMotionPermissionForOrigin:(WKSecurityOrigin*)origin initiatedByFrame:(WKFrameInfo *)frame decisionHandler:(void (^)(WKPermissionDecision decision))decisionHandler {
     389- (void)webView:(WKWebView *)webView requestDeviceOrientationAndMotionPermissionForOrigin:(WKSecurityOrigin*)origin initiatedByFrame:(WKFrameInfo *)frame decisionHandler:(void (^)(WKPermissionDecision decision))decisionHandler {
    390390    if (_validationHandler)
    391391        _validationHandler(origin, frame);
  • trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm

    r275162 r276125  
    14821482@implementation WebsitePoliciesDeviceOrientationUIDelegate
    14831483
    1484 - (void)_webView:(WKWebView *)webView requestDeviceOrientationAndMotionPermissionForOrigin:(WKSecurityOrigin*)origin initiatedByFrame:(WKFrameInfo *)requestingFrame decisionHandler:(void (^)(WKPermissionDecision))decisionHandler
     1484- (void)webView:(WKWebView *)webView requestDeviceOrientationAndMotionPermissionForOrigin:(WKSecurityOrigin*)origin initiatedByFrame:(WKFrameInfo *)requestingFrame decisionHandler:(void (^)(WKPermissionDecision))decisionHandler
    14851485{
    14861486    calledShouldAllowDeviceOrientationAndMotionAccessDelegate = true;
Note: See TracChangeset for help on using the changeset viewer.