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

Changeset 276160 in webkit


Ignore:
Timestamp:
Apr 16, 2021, 12:39:03 PM (5 years ago)
Author:
commit-queue@webkit.org
Message:

Add WKUIDelegate SPI for starting XR session
https://bugs.webkit.org/show_bug.cgi?id=224634

Patch by Ada Chan <ada.chan@apple.com> on 2021-04-16
Reviewed by Tim Horton.

  • UIProcess/API/APIUIClient.h:

(API::UIClient::startXRSession):

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::startXRSession):

Location:
trunk/Source/WebKit
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r276153 r276160  
     12021-04-16  Ada Chan  <ada.chan@apple.com>
     2
     3        Add WKUIDelegate SPI for starting XR session
     4        https://bugs.webkit.org/show_bug.cgi?id=224634
     5
     6        Reviewed by Tim Horton.
     7
     8        * UIProcess/API/APIUIClient.h:
     9        (API::UIClient::startXRSession):
     10        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
     11        * UIProcess/Cocoa/UIDelegate.h:
     12        * UIProcess/Cocoa/UIDelegate.mm:
     13        (WebKit::UIDelegate::setDelegate):
     14        (WebKit::UIDelegate::UIClient::startXRSession):
     15
    1162021-04-16  Chris Dumez  <cdumez@apple.com>
    217
  • trunk/Source/WebKit/UIProcess/API/APIUIClient.h

    r274815 r276160  
    209209    virtual void decidePolicyForMediaKeySystemPermissionRequest(WebKit::WebPageProxy& page, API::SecurityOrigin& origin, const WTF::String& keySystem, CompletionHandler<void(bool)>&& completionHandler) { page.requestMediaKeySystemPermissionByDefaultAction(origin.securityOrigin(), WTFMove(completionHandler)); }
    210210
     211#if ENABLE(WEBXR) && PLATFORM(COCOA)
     212    virtual void startXRSession(WebKit::WebPageProxy&, CompletionHandler<void(RetainPtr<id>)>&& completionHandler) { completionHandler(nil); }
     213#endif
    211214};
    212215
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h

    r276125 r276160  
    157157- (void)_webViewDidEnableInspectorBrowserDomain:(WKWebView *)webView WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
    158158- (void)_webViewDidDisableInspectorBrowserDomain:(WKWebView *)webView WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
     159
     160- (void)_webView:(WKWebView *)webView startXRSessionWithCompletionHandler:(void (^)(id))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
    159161
    160162#if TARGET_OS_IPHONE
  • trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h

    r274815 r276160  
    167167        void didDisableInspectorBrowserDomain(WebPageProxy&) final;
    168168
     169#if ENABLE(WEBXR) && PLATFORM(COCOA)
     170        void startXRSession(WebPageProxy&, CompletionHandler<void(RetainPtr<id>)>&&) final;
     171#endif
     172
    169173        WeakPtr<UIDelegate> m_uiDelegate;
    170174    };
     
    256260        bool webViewDidEnableInspectorBrowserDomain : 1;
    257261        bool webViewDidDisableInspectorBrowserDomain : 1;
     262#if ENABLE(WEBXR) && PLATFORM(COCOA)
     263        bool webViewStartXRSessionWithCompletionHandler : 1;
     264#endif
    258265    } m_delegateMethods;
    259266};
  • trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm

    r276125 r276160  
    188188    m_delegateMethods.webViewDidEnableInspectorBrowserDomain = [delegate respondsToSelector:@selector(_webViewDidEnableInspectorBrowserDomain:)];
    189189    m_delegateMethods.webViewDidDisableInspectorBrowserDomain = [delegate respondsToSelector:@selector(_webViewDidDisableInspectorBrowserDomain:)];
     190
     191#if ENABLE(WEBXR) && PLATFORM(COCOA)
     192    m_delegateMethods.webViewStartXRSessionWithCompletionHandler = [delegate respondsToSelector:@selector(_webView:startXRSessionWithCompletionHandler:)];
     193#endif
    190194}
    191195
     
    16551659}
    16561660
     1661#if ENABLE(WEBXR) && PLATFORM(COCOA)
     1662void UIDelegate::UIClient::startXRSession(WebPageProxy&, CompletionHandler<void(RetainPtr<id>)>&& completionHandler)
     1663{
     1664    if (!m_uiDelegate || !m_uiDelegate->m_delegateMethods.webViewStartXRSessionWithCompletionHandler) {
     1665        completionHandler(nil);
     1666        return;
     1667    }
     1668
     1669    auto delegate = (id <WKUIDelegatePrivate>)m_uiDelegate->m_delegate.get();
     1670    if (!delegate) {
     1671        completionHandler(nil);
     1672        return;
     1673    }
     1674
     1675    auto checker = CompletionHandlerCallChecker::create(delegate, @selector(_webView:startXRSessionWithCompletionHandler:));
     1676    [delegate _webView:m_uiDelegate->m_webView.get().get() startXRSessionWithCompletionHandler:makeBlockPtr([completionHandler = WTFMove(completionHandler), checker = WTFMove(checker)] (id result) mutable {
     1677        if (checker->completionHandlerHasBeenCalled())
     1678            return;
     1679        checker->didCallCompletionHandler();
     1680        completionHandler(result);
     1681    }).get()];
     1682}
     1683#endif
     1684
    16571685} // namespace WebKit
Note: See TracChangeset for help on using the changeset viewer.