Changeset 267619 in webkit


Ignore:
Timestamp:
Sep 25, 2020 11:48:32 PM (4 years ago)
Author:
commit-queue@webkit.org
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 <dvh@apple.com> 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,
Location:
trunk/Source/WebKit
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r267618 r267619  
     12020-09-25  Hoa Dinh  <dvh@apple.com>
     2
     3        Add -[WKWebView _loadRequest:shouldOpenExternalURLsPolicy:] to provide a way to allow app link
     4        https://bugs.webkit.org/show_bug.cgi?id=216977
     5
     6        Reviewed by Alex Christensen.
     7
     8        The method -[WKWebView _loadRequest:shouldOpenExternalURLs:] would only allow opening external or not.
     9        It wasn't providing the ability to allow external URL but not app links.
     10        This patch adds -[WKWebView _loadRequest:shouldOpenExternalURLsPolicy:]. The parameters value for
     11        shouldOpenExternalURLsPolicy has the same meaning than WebCore::ShouldOpenExternalURLsPolicy.
     12
     13        * UIProcess/API/Cocoa/WKWebView.mm:
     14        (-[WKWebView _loadRequest:shouldOpenExternalURLsPolicy:]):
     15        * UIProcess/API/Cocoa/WKWebViewPrivate.h: Added enum _WKShouldOpenExternalURLsPolicy,
     16
    1172020-09-25  Alex Christensen  <achristensen@webkit.org>
    218
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm

    r267563 r267619  
    19281928- (WKNavigation *)_loadRequest:(NSURLRequest *)request shouldOpenExternalURLs:(BOOL)shouldOpenExternalURLs
    19291929{
    1930     return wrapper(_page->loadRequest(request, shouldOpenExternalURLs ? WebCore::ShouldOpenExternalURLsPolicy::ShouldAllow : WebCore::ShouldOpenExternalURLsPolicy::ShouldNotAllow));
     1930    _WKShouldOpenExternalURLsPolicy policy = shouldOpenExternalURLs ? _WKShouldOpenExternalURLsPolicyAllow : _WKShouldOpenExternalURLsPolicyNotAllow;
     1931    return [self _loadRequest:request shouldOpenExternalURLsPolicy:policy];
     1932}
     1933
     1934- (WKNavigation *)_loadRequest:(NSURLRequest *)request shouldOpenExternalURLsPolicy:(_WKShouldOpenExternalURLsPolicy)shouldOpenExternalURLsPolicy
     1935{
     1936    WebCore::ShouldOpenExternalURLsPolicy policy;
     1937    switch (shouldOpenExternalURLsPolicy) {
     1938    case _WKShouldOpenExternalURLsPolicyNotAllow:
     1939        policy = WebCore::ShouldOpenExternalURLsPolicy::ShouldNotAllow;
     1940        break;
     1941    case _WKShouldOpenExternalURLsPolicyAllow:
     1942        policy = WebCore::ShouldOpenExternalURLsPolicy::ShouldAllow;
     1943        break;
     1944    case _WKShouldOpenExternalURLsPolicyAllowExternalSchemesButNotAppLinks:
     1945        policy = WebCore::ShouldOpenExternalURLsPolicy::ShouldAllowExternalSchemesButNotAppLinks;
     1946        break;
     1947    }
     1948    return wrapper(_page->loadRequest(request, policy));
    19311949}
    19321950
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h

    r267279 r267619  
    6969} WK_API_AVAILABLE(macos(10.15), ios(13.0));
    7070
     71typedef NS_ENUM(NSInteger, _WKShouldOpenExternalURLsPolicy) {
     72    _WKShouldOpenExternalURLsPolicyNotAllow,
     73    _WKShouldOpenExternalURLsPolicyAllow,
     74    _WKShouldOpenExternalURLsPolicyAllowExternalSchemesButNotAppLinks,
     75} WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
     76
    7177#if TARGET_OS_IPHONE
    7278
     
    149155- (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));
    150156- (WKNavigation *)_loadRequest:(NSURLRequest *)request shouldOpenExternalURLs:(BOOL)shouldOpenExternalURLs WK_API_AVAILABLE(macos(10.13), ios(11.0));
     157- (WKNavigation *)_loadRequest:(NSURLRequest *)request shouldOpenExternalURLsPolicy:(_WKShouldOpenExternalURLsPolicy)shouldOpenExternalURLsPolicy WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
    151158
    152159@property (nonatomic, readonly) NSArray *_certificateChain WK_API_DEPRECATED_WITH_REPLACEMENT("certificateChain", macos(10.10, 10.11), ios(8.0, 9.0));
Note: See TracChangeset for help on using the changeset viewer.