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