Title: [276160] trunk/Source/WebKit
Revision
276160
Author
[email protected]
Date
2021-04-16 12:39:03 -0700 (Fri, 16 Apr 2021)

Log Message

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

Patch by Ada Chan <[email protected]> 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):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (276159 => 276160)


--- trunk/Source/WebKit/ChangeLog	2021-04-16 19:28:28 UTC (rev 276159)
+++ trunk/Source/WebKit/ChangeLog	2021-04-16 19:39:03 UTC (rev 276160)
@@ -1,3 +1,18 @@
+2021-04-16  Ada Chan  <[email protected]>
+
+        Add WKUIDelegate SPI for starting XR session
+        https://bugs.webkit.org/show_bug.cgi?id=224634
+
+        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):
+
 2021-04-16  Chris Dumez  <[email protected]>
 
         Unreviewed, reverting r275839.

Modified: trunk/Source/WebKit/UIProcess/API/APIUIClient.h (276159 => 276160)


--- trunk/Source/WebKit/UIProcess/API/APIUIClient.h	2021-04-16 19:28:28 UTC (rev 276159)
+++ trunk/Source/WebKit/UIProcess/API/APIUIClient.h	2021-04-16 19:39:03 UTC (rev 276160)
@@ -208,6 +208,9 @@
 
     virtual void decidePolicyForMediaKeySystemPermissionRequest(WebKit::WebPageProxy& page, API::SecurityOrigin& origin, const WTF::String& keySystem, CompletionHandler<void(bool)>&& completionHandler) { page.requestMediaKeySystemPermissionByDefaultAction(origin.securityOrigin(), WTFMove(completionHandler)); }
 
+#if ENABLE(WEBXR) && PLATFORM(COCOA)
+    virtual void startXRSession(WebKit::WebPageProxy&, CompletionHandler<void(RetainPtr<id>)>&& completionHandler) { completionHandler(nil); }
+#endif
 };
 
 } // namespace API

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h (276159 => 276160)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h	2021-04-16 19:28:28 UTC (rev 276159)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h	2021-04-16 19:39:03 UTC (rev 276160)
@@ -157,6 +157,8 @@
 - (void)_webViewDidEnableInspectorBrowserDomain:(WKWebView *)webView WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
 - (void)_webViewDidDisableInspectorBrowserDomain:(WKWebView *)webView WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
 
+- (void)_webView:(WKWebView *)webView startXRSessionWithCompletionHandler:(void (^)(id))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
+
 #if TARGET_OS_IPHONE
 
 - (BOOL)_webView:(WKWebView *)webView shouldIncludeAppLinkActionsForElement:(_WKActivatedElementInfo *)element WK_API_AVAILABLE(ios(9.0));

Modified: trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h (276159 => 276160)


--- trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h	2021-04-16 19:28:28 UTC (rev 276159)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h	2021-04-16 19:39:03 UTC (rev 276160)
@@ -166,6 +166,10 @@
         void didEnableInspectorBrowserDomain(WebPageProxy&) final;
         void didDisableInspectorBrowserDomain(WebPageProxy&) final;
 
+#if ENABLE(WEBXR) && PLATFORM(COCOA)
+        void startXRSession(WebPageProxy&, CompletionHandler<void(RetainPtr<id>)>&&) final;
+#endif
+
         WeakPtr<UIDelegate> m_uiDelegate;
     };
 
@@ -255,6 +259,9 @@
 #endif
         bool webViewDidEnableInspectorBrowserDomain : 1;
         bool webViewDidDisableInspectorBrowserDomain : 1;
+#if ENABLE(WEBXR) && PLATFORM(COCOA)
+        bool webViewStartXRSessionWithCompletionHandler : 1;
+#endif
     } m_delegateMethods;
 };
 

Modified: trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm (276159 => 276160)


--- trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm	2021-04-16 19:28:28 UTC (rev 276159)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm	2021-04-16 19:39:03 UTC (rev 276160)
@@ -187,6 +187,10 @@
     
     m_delegateMethods.webViewDidEnableInspectorBrowserDomain = [delegate respondsToSelector:@selector(_webViewDidEnableInspectorBrowserDomain:)];
     m_delegateMethods.webViewDidDisableInspectorBrowserDomain = [delegate respondsToSelector:@selector(_webViewDidDisableInspectorBrowserDomain:)];
+
+#if ENABLE(WEBXR) && PLATFORM(COCOA)
+    m_delegateMethods.webViewStartXRSessionWithCompletionHandler = [delegate respondsToSelector:@selector(_webView:startXRSessionWithCompletionHandler:)];
+#endif
 }
 
 #if ENABLE(CONTEXT_MENUS)
@@ -1654,4 +1658,28 @@
     [delegate _webViewDidDisableInspectorBrowserDomain:m_uiDelegate->m_webView.get().get()];
 }
 
+#if ENABLE(WEBXR) && PLATFORM(COCOA)
+void UIDelegate::UIClient::startXRSession(WebPageProxy&, CompletionHandler<void(RetainPtr<id>)>&& completionHandler)
+{
+    if (!m_uiDelegate || !m_uiDelegate->m_delegateMethods.webViewStartXRSessionWithCompletionHandler) {
+        completionHandler(nil);
+        return;
+    }
+
+    auto delegate = (id <WKUIDelegatePrivate>)m_uiDelegate->m_delegate.get();
+    if (!delegate) {
+        completionHandler(nil);
+        return;
+    }
+
+    auto checker = CompletionHandlerCallChecker::create(delegate, @selector(_webView:startXRSessionWithCompletionHandler:));
+    [delegate _webView:m_uiDelegate->m_webView.get().get() startXRSessionWithCompletionHandler:makeBlockPtr([completionHandler = WTFMove(completionHandler), checker = WTFMove(checker)] (id result) mutable {
+        if (checker->completionHandlerHasBeenCalled())
+            return;
+        checker->didCallCompletionHandler();
+        completionHandler(result);
+    }).get()];
+}
+#endif
+
 } // namespace WebKit
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to