Title: [267619] trunk/Source/WebKit
Revision
267619
Author
[email protected]
Date
2020-09-25 23:48:32 -0700 (Fri, 25 Sep 2020)

Log Message

Add -[WKWebView _loadRequest:shouldOpenExternalURLsPolicy:] to provide a way to allow app link
https://bugs.webkit.org/show_bug.cgi?id=216977

Patch by Hoa Dinh <[email protected]> on 2020-09-25
Reviewed by Alex Christensen.

The method -[WKWebView _loadRequest:shouldOpenExternalURLs:] would only allow opening external or not.
It wasn't providing the ability to allow external URL but not app links.
This patch adds -[WKWebView _loadRequest:shouldOpenExternalURLsPolicy:]. The parameters value for
shouldOpenExternalURLsPolicy has the same meaning than WebCore::ShouldOpenExternalURLsPolicy.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _loadRequest:shouldOpenExternalURLsPolicy:]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h: Added enum _WKShouldOpenExternalURLsPolicy,

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (267618 => 267619)


--- trunk/Source/WebKit/ChangeLog	2020-09-26 06:39:41 UTC (rev 267618)
+++ trunk/Source/WebKit/ChangeLog	2020-09-26 06:48:32 UTC (rev 267619)
@@ -1,3 +1,19 @@
+2020-09-25  Hoa Dinh  <[email protected]>
+
+        Add -[WKWebView _loadRequest:shouldOpenExternalURLsPolicy:] to provide a way to allow app link
+        https://bugs.webkit.org/show_bug.cgi?id=216977
+
+        Reviewed by Alex Christensen.
+
+        The method -[WKWebView _loadRequest:shouldOpenExternalURLs:] would only allow opening external or not.
+        It wasn't providing the ability to allow external URL but not app links.
+        This patch adds -[WKWebView _loadRequest:shouldOpenExternalURLsPolicy:]. The parameters value for
+        shouldOpenExternalURLsPolicy has the same meaning than WebCore::ShouldOpenExternalURLsPolicy.
+
+        * UIProcess/API/Cocoa/WKWebView.mm:
+        (-[WKWebView _loadRequest:shouldOpenExternalURLsPolicy:]):
+        * UIProcess/API/Cocoa/WKWebViewPrivate.h: Added enum _WKShouldOpenExternalURLsPolicy, 
+
 2020-09-25  Alex Christensen  <[email protected]>
 
         Unreviewed, reverting r267608.

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (267618 => 267619)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm	2020-09-26 06:39:41 UTC (rev 267618)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm	2020-09-26 06:48:32 UTC (rev 267619)
@@ -1927,9 +1927,27 @@
 
 - (WKNavigation *)_loadRequest:(NSURLRequest *)request shouldOpenExternalURLs:(BOOL)shouldOpenExternalURLs
 {
-    return wrapper(_page->loadRequest(request, shouldOpenExternalURLs ? WebCore::ShouldOpenExternalURLsPolicy::ShouldAllow : WebCore::ShouldOpenExternalURLsPolicy::ShouldNotAllow));
+    _WKShouldOpenExternalURLsPolicy policy = shouldOpenExternalURLs ? _WKShouldOpenExternalURLsPolicyAllow : _WKShouldOpenExternalURLsPolicyNotAllow;
+    return [self _loadRequest:request shouldOpenExternalURLsPolicy:policy];
 }
 
+- (WKNavigation *)_loadRequest:(NSURLRequest *)request shouldOpenExternalURLsPolicy:(_WKShouldOpenExternalURLsPolicy)shouldOpenExternalURLsPolicy
+{
+    WebCore::ShouldOpenExternalURLsPolicy policy;
+    switch (shouldOpenExternalURLsPolicy) {
+    case _WKShouldOpenExternalURLsPolicyNotAllow:
+        policy = WebCore::ShouldOpenExternalURLsPolicy::ShouldNotAllow;
+        break;
+    case _WKShouldOpenExternalURLsPolicyAllow:
+        policy = WebCore::ShouldOpenExternalURLsPolicy::ShouldAllow;
+        break;
+    case _WKShouldOpenExternalURLsPolicyAllowExternalSchemesButNotAppLinks:
+        policy = WebCore::ShouldOpenExternalURLsPolicy::ShouldAllowExternalSchemesButNotAppLinks;
+        break;
+    }
+    return wrapper(_page->loadRequest(request, policy));
+}
+
 - (NSArray *)_certificateChain
 {
     if (WebKit::WebFrameProxy* mainFrame = _page->mainFrame())

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h (267618 => 267619)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h	2020-09-26 06:39:41 UTC (rev 267618)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h	2020-09-26 06:48:32 UTC (rev 267619)
@@ -68,6 +68,12 @@
     _WKSelectionAttributeAtStartOfSentence = 1 << 2,
 } WK_API_AVAILABLE(macos(10.15), ios(13.0));
 
+typedef NS_ENUM(NSInteger, _WKShouldOpenExternalURLsPolicy) {
+    _WKShouldOpenExternalURLsPolicyNotAllow,
+    _WKShouldOpenExternalURLsPolicyAllow,
+    _WKShouldOpenExternalURLsPolicyAllowExternalSchemesButNotAppLinks,
+} WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
+
 #if TARGET_OS_IPHONE
 
 typedef NS_ENUM(NSUInteger, _WKDragInteractionPolicy) {
@@ -148,6 +154,7 @@
 - (void)_loadAlternateHTMLString:(NSString *)string baseURL:(NSURL *)baseURL forUnreachableURL:(NSURL *)unreachableURL;
 - (WKNavigation *)_loadData:(NSData *)data MIMEType:(NSString *)MIMEType characterEncodingName:(NSString *)characterEncodingName baseURL:(NSURL *)baseURL userData:(id)userData WK_API_AVAILABLE(macos(10.12), ios(10.0));
 - (WKNavigation *)_loadRequest:(NSURLRequest *)request shouldOpenExternalURLs:(BOOL)shouldOpenExternalURLs WK_API_AVAILABLE(macos(10.13), ios(11.0));
+- (WKNavigation *)_loadRequest:(NSURLRequest *)request shouldOpenExternalURLsPolicy:(_WKShouldOpenExternalURLsPolicy)shouldOpenExternalURLsPolicy WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
 
 @property (nonatomic, readonly) NSArray *_certificateChain WK_API_DEPRECATED_WITH_REPLACEMENT("certificateChain", macos(10.10, 10.11), ios(8.0, 9.0));
 @property (nonatomic, readonly) NSURL *_committedURL;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to