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