| Differences between
and this patch
- Source/WebKit/ChangeLog +19 lines
Lines 1-3 Source/WebKit/ChangeLog_sec1
1
2020-01-02  Alex Christensen  <achristensen@webkit.org>
2
3
        Deprecate _WKWebsitePolicies
4
        https://bugs.webkit.org/show_bug.cgi?id=205539
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        Its last use was removed in rdar://problem/58064847
9
        but we need to keep it in WebKit until the next Safari release
10
        to keep Safari working with built versions of open source WebKit with run-safari.
11
12
        * UIProcess/API/Cocoa/WKWebView.mm:
13
        (-[WKWebView _updateWebsitePolicies:]):
14
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
15
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
16
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
17
        * UIProcess/Cocoa/NavigationState.mm:
18
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
19
1
2020-01-02  Carlos Garcia Campos  <cgarcia@igalia.com>
20
2020-01-02  Carlos Garcia Campos  <cgarcia@igalia.com>
2
21
3
        [GTK] Make ondemand hardware acceleration policy never leave AC mode
22
        [GTK] Make ondemand hardware acceleration policy never leave AC mode
- Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm -1 lines
Lines 2142-2148 - (void)_evaluateJavaScriptWithoutUserGe Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm_sec1
2142
2142
2143
- (void)_updateWebsitePolicies:(_WKWebsitePolicies *)websitePolicies
2143
- (void)_updateWebsitePolicies:(_WKWebsitePolicies *)websitePolicies
2144
{
2144
{
2145
    [self _updateWebpagePreferences:websitePolicies.webpagePreferences];
2146
}
2145
}
2147
2146
2148
- (void)_updateWebpagePreferences:(WKWebpagePreferences *)webpagePreferences
2147
- (void)_updateWebpagePreferences:(WKWebpagePreferences *)webpagePreferences
- Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h -1 / +1 lines
Lines 187-193 typedef NS_OPTIONS(NSUInteger, _WKRectEd Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h_sec1
187
187
188
- (void)_close;
188
- (void)_close;
189
189
190
- (void)_updateWebsitePolicies:(_WKWebsitePolicies *)websitePolicies WK_API_AVAILABLE(macos(10.13), ios(11.0));
190
- (void)_updateWebsitePolicies:(_WKWebsitePolicies *)websitePolicies WK_API_DEPRECATED_WITH_REPLACEMENT("-_updateWebpagePreferences:", macos(10.13, WK_MAC_TBA), ios(11.3, WK_IOS_TBA));
191
- (void)_updateWebpagePreferences:(WKWebpagePreferences *)webpagePreferences WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
191
- (void)_updateWebpagePreferences:(WKWebpagePreferences *)webpagePreferences WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
192
192
193
- (void)_evaluateJavaScriptWithoutUserGesture:(NSString *)javaScriptString completionHandler:(void (^)(id, NSError *))completionHandler WK_API_AVAILABLE(macos(10.13), ios(11.0));
193
- (void)_evaluateJavaScriptWithoutUserGesture:(NSString *)javaScriptString completionHandler:(void (^)(id, NSError *))completionHandler WK_API_AVAILABLE(macos(10.13), ios(11.0));
- Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePolicies.h -1 / +1 lines
Lines 28-34 Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePolicies.h_sec1
28
28
29
@class WKWebsiteDataStore;
29
@class WKWebsiteDataStore;
30
30
31
WK_CLASS_AVAILABLE(macos(10.12.3), ios(10.3))
31
WK_API_DEPRECATED_WITH_REPLACEMENT("WKWebpagePreferences", macos(10.12.3, WK_MAC_TBA), ios(10.3, WK_IOS_TBA))
32
@interface _WKWebsitePolicies : NSObject
32
@interface _WKWebsitePolicies : NSObject
33
33
34
@property (nonatomic) BOOL contentBlockersEnabled;
34
@property (nonatomic) BOOL contentBlockersEnabled;
- Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePolicies.mm +2 lines
Lines 29-35 Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePolicies.mm_sec1
29
#import "WKWebsiteDataStoreInternal.h"
29
#import "WKWebsiteDataStoreInternal.h"
30
#import "_WKWebsitePoliciesInternal.h"
30
#import "_WKWebsitePoliciesInternal.h"
31
31
32
IGNORE_WARNINGS_BEGIN("deprecated-implementations")
32
@implementation _WKWebsitePolicies
33
@implementation _WKWebsitePolicies
34
IGNORE_WARNINGS_END
33
35
34
- (instancetype)init
36
- (instancetype)init
35
{
37
{
- Source/WebKit/UIProcess/Cocoa/NavigationState.mm +2 lines
Lines 581-590 void NavigationState::NavigationClient:: Source/WebKit/UIProcess/Cocoa/NavigationState.mm_sec1
581
        RefPtr<API::WebsitePolicies> apiWebsitePolicies;
581
        RefPtr<API::WebsitePolicies> apiWebsitePolicies;
582
        if ([policiesOrPreferences isKindOfClass:WKWebpagePreferences.self])
582
        if ([policiesOrPreferences isKindOfClass:WKWebpagePreferences.self])
583
            apiWebsitePolicies = ((WKWebpagePreferences *)policiesOrPreferences)->_websitePolicies.get();
583
            apiWebsitePolicies = ((WKWebpagePreferences *)policiesOrPreferences)->_websitePolicies.get();
584
ALLOW_DEPRECATED_DECLARATIONS_BEGIN
584
        else if ([policiesOrPreferences isKindOfClass:_WKWebsitePolicies.self])
585
        else if ([policiesOrPreferences isKindOfClass:_WKWebsitePolicies.self])
585
            apiWebsitePolicies = [policiesOrPreferences webpagePreferences]->_websitePolicies.get();
586
            apiWebsitePolicies = [policiesOrPreferences webpagePreferences]->_websitePolicies.get();
586
        else if (policiesOrPreferences)
587
        else if (policiesOrPreferences)
587
            [NSException raise:NSInvalidArgumentException format:@"Expected policies of class %@, but got %@", NSStringFromClass(_WKWebsitePolicies.self), [policiesOrPreferences class]];
588
            [NSException raise:NSInvalidArgumentException format:@"Expected policies of class %@, but got %@", NSStringFromClass(_WKWebsitePolicies.self), [policiesOrPreferences class]];
589
ALLOW_DEPRECATED_DECLARATIONS_END
588
        else
590
        else
589
            apiWebsitePolicies = defaultWebsitePolicies;
591
            apiWebsitePolicies = defaultWebsitePolicies;
590
592
- Tools/ChangeLog +30 lines
Lines 1-3 Tools/ChangeLog_sec1
1
2020-01-02  Alex Christensen  <achristensen@webkit.org>
2
3
        Deprecate _WKWebsitePolicies
4
        https://bugs.webkit.org/show_bug.cgi?id=205539
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
9
        * TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
10
        (-[SWCustomUserAgentDelegate _webView:decidePolicyForNavigationAction:preferences:userInfo:decisionHandler:]):
11
        (-[SWCustomUserAgentDelegate _webView:decidePolicyForNavigationAction:userInfo:decisionHandler:]): Deleted.
12
        * TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:
13
        (-[ContentBlockingWebsitePoliciesDelegate webView:decidePolicyForNavigationAction:preferences:decisionHandler:]):
14
        (TEST):
15
        (-[AutoplayPoliciesDelegate webView:decidePolicyForNavigationAction:preferences:decisionHandler:]):
16
        (-[AsyncAutoplayPoliciesDelegate webView:decidePolicyForNavigationAction:preferences:decisionHandler:]):
17
        (-[WebsitePoliciesNavigationDelegate _webView:decidePolicyForNavigationAction:preferences:userInfo:decisionHandler:]):
18
        (-[CustomUserAgentDelegate _webView:decidePolicyForNavigationAction:userInfo:decisionHandler:]):
19
        (-[CustomJavaScriptUserAgentDelegate _webView:decidePolicyForNavigationAction:userInfo:decisionHandler:]):
20
        (-[CustomNavigatorPlatformDelegate _webView:decidePolicyForNavigationAction:userInfo:decisionHandler:]):
21
        (-[WebsitePoliciesDeviceOrientationDelegate _webView:decidePolicyForNavigationAction:preferences:userInfo:decisionHandler:]):
22
        (-[PopUpPoliciesDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]):
23
        (-[WebsitePoliciesWebsiteDataStoreDelegate webView:decidePolicyForNavigationAction:preferences:decisionHandler:]):
24
        (-[ContentBlockingWebsitePoliciesDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]): Deleted.
25
        (-[AutoplayPoliciesDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]): Deleted.
26
        (-[AsyncAutoplayPoliciesDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]): Deleted.
27
        (-[WebsitePoliciesNavigationDelegate _webView:decidePolicyForNavigationAction:userInfo:decisionHandler:]): Deleted.
28
        (-[WebsitePoliciesDeviceOrientationDelegate _webView:decidePolicyForNavigationAction:userInfo:decisionHandler:]): Deleted.
29
        (-[WebsitePoliciesWebsiteDataStoreDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]): Deleted.
30
1
2019-12-31  Carlos Alberto Lopez Perez  <clopez@igalia.com>
31
2019-12-31  Carlos Alberto Lopez Perez  <clopez@igalia.com>
2
32
3
        [WPE] OpenJPEG missing in install dependencies script.
33
        [WPE] OpenJPEG missing in install dependencies script.
- Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm -1 / +1 lines
Lines 40-45 Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm_sec1
40
#import <WebKit/WKURLSchemeTaskPrivate.h>
40
#import <WebKit/WKURLSchemeTaskPrivate.h>
41
#import <WebKit/WKWebViewConfigurationPrivate.h>
41
#import <WebKit/WKWebViewConfigurationPrivate.h>
42
#import <WebKit/WKWebViewPrivateForTesting.h>
42
#import <WebKit/WKWebViewPrivateForTesting.h>
43
#import <WebKit/WKWebpagePreferences.h>
43
#import <WebKit/WKWebsiteDataStorePrivate.h>
44
#import <WebKit/WKWebsiteDataStorePrivate.h>
44
#import <WebKit/WKWebsiteDataStoreRef.h>
45
#import <WebKit/WKWebsiteDataStoreRef.h>
45
#import <WebKit/WebKit.h>
46
#import <WebKit/WebKit.h>
Lines 47-53 Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm_sec2
47
#import <WebKit/_WKInspector.h>
48
#import <WebKit/_WKInspector.h>
48
#import <WebKit/_WKProcessPoolConfiguration.h>
49
#import <WebKit/_WKProcessPoolConfiguration.h>
49
#import <WebKit/_WKWebsiteDataStoreConfiguration.h>
50
#import <WebKit/_WKWebsiteDataStoreConfiguration.h>
50
#import <WebKit/_WKWebsitePolicies.h>
51
#import <wtf/BlockPtr.h>
51
#import <wtf/BlockPtr.h>
52
#import <wtf/Deque.h>
52
#import <wtf/Deque.h>
53
#import <wtf/HashMap.h>
53
#import <wtf/HashMap.h>
- Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm -4 / +4 lines
Lines 37-48 Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm_sec1
37
#import <WebKit/WKURLSchemeTaskPrivate.h>
37
#import <WebKit/WKURLSchemeTaskPrivate.h>
38
#import <WebKit/WKWebViewConfigurationPrivate.h>
38
#import <WebKit/WKWebViewConfigurationPrivate.h>
39
#import <WebKit/WKWebViewPrivateForTesting.h>
39
#import <WebKit/WKWebViewPrivateForTesting.h>
40
#import <WebKit/WKWebpagePreferencesPrivate.h>
40
#import <WebKit/WKWebsiteDataStorePrivate.h>
41
#import <WebKit/WKWebsiteDataStorePrivate.h>
41
#import <WebKit/WKWebsiteDataStoreRef.h>
42
#import <WebKit/WKWebsiteDataStoreRef.h>
42
#import <WebKit/WebKit.h>
43
#import <WebKit/WebKit.h>
43
#import <WebKit/_WKExperimentalFeature.h>
44
#import <WebKit/_WKExperimentalFeature.h>
44
#import <WebKit/_WKWebsiteDataStoreConfiguration.h>
45
#import <WebKit/_WKWebsiteDataStoreConfiguration.h>
45
#import <WebKit/_WKWebsitePolicies.h>
46
#import <wtf/Deque.h>
46
#import <wtf/Deque.h>
47
#import <wtf/HashMap.h>
47
#import <wtf/HashMap.h>
48
#import <wtf/RetainPtr.h>
48
#import <wtf/RetainPtr.h>
Lines 476-486 - (instancetype)initWithUserAgent:(NSStr Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm_sec2
476
    return self;
476
    return self;
477
}
477
}
478
478
479
- (void)_webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction userInfo:(id <NSSecureCoding>)userInfo decisionHandler:(void (^)(WKNavigationActionPolicy, _WKWebsitePolicies *))decisionHandler
479
- (void)_webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction preferences:(WKWebpagePreferences *)preferences userInfo:(id <NSSecureCoding>)userInfo decisionHandler:(void (^)(WKNavigationActionPolicy, WKWebpagePreferences *))decisionHandler
480
{
480
{
481
    _WKWebsitePolicies *websitePolicies = [[[_WKWebsitePolicies alloc] init] autorelease];
481
    WKWebpagePreferences *websitePolicies = [[[WKWebpagePreferences alloc] init] autorelease];
482
    if (navigationAction.targetFrame.mainFrame)
482
    if (navigationAction.targetFrame.mainFrame)
483
        [websitePolicies setCustomUserAgent:_userAgent];
483
        [websitePolicies _setCustomUserAgent:_userAgent];
484
484
485
    decisionHandler(WKNavigationActionPolicyAllow, websitePolicies);
485
    decisionHandler(WKNavigationActionPolicyAllow, websitePolicies);
486
}
486
}
- Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm -84 / +80 lines
Lines 38-49 Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec1
38
#import <WebKit/WKURLSchemeTaskPrivate.h>
38
#import <WebKit/WKURLSchemeTaskPrivate.h>
39
#import <WebKit/WKUserContentControllerPrivate.h>
39
#import <WebKit/WKUserContentControllerPrivate.h>
40
#import <WebKit/WKWebViewPrivate.h>
40
#import <WebKit/WKWebViewPrivate.h>
41
#import <WebKit/WKWebpagePreferencesPrivate.h>
41
#import <WebKit/WKWebsiteDataStorePrivate.h>
42
#import <WebKit/WKWebsiteDataStorePrivate.h>
42
#import <WebKit/WKWebsitePolicies.h>
43
#import <WebKit/WKWebsitePolicies.h>
43
#import <WebKit/_WKCustomHeaderFields.h>
44
#import <WebKit/_WKCustomHeaderFields.h>
44
#import <WebKit/_WKUserContentExtensionStorePrivate.h>
45
#import <WebKit/_WKUserContentExtensionStorePrivate.h>
45
#import <WebKit/_WKWebsiteDataStoreConfiguration.h>
46
#import <WebKit/_WKWebsiteDataStoreConfiguration.h>
46
#import <WebKit/_WKWebsitePolicies.h>
47
#import <wtf/Function.h>
47
#import <wtf/Function.h>
48
#import <wtf/HashMap.h>
48
#import <wtf/HashMap.h>
49
#import <wtf/MainThread.h>
49
#import <wtf/MainThread.h>
Lines 104-112 - (void)webView:(WKWebView *)webView run Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec2
104
    completionHandler();
104
    completionHandler();
105
}
105
}
106
106
107
- (void)_webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy, _WKWebsitePolicies *))decisionHandler
107
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction preferences:(WKWebpagePreferences *)preferences decisionHandler:(void (^)(WKNavigationActionPolicy, WKWebpagePreferences *))decisionHandler
108
{
108
{
109
    _WKWebsitePolicies *websitePolicies = [[[_WKWebsitePolicies alloc] init] autorelease];
109
    WKWebpagePreferences *websitePolicies = [[[WKWebpagePreferences alloc] init] autorelease];
110
    switch (alertCount) {
110
    switch (alertCount) {
111
    case 0:
111
    case 0:
112
        // Verify the content blockers behave correctly with the default behavior.
112
        // Verify the content blockers behave correctly with the default behavior.
Lines 114-124 - (void)_webView:(WKWebView *)webView de Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec3
114
    case 1:
114
    case 1:
115
        {
115
        {
116
            // Verify disabling content blockers works correctly.
116
            // Verify disabling content blockers works correctly.
117
            websitePolicies.contentBlockersEnabled = false;
117
            websitePolicies._contentBlockersEnabled = false;
118
            
118
            
119
            // Verify calling the decisionHandler asynchronously works correctly.
119
            // Verify calling the decisionHandler asynchronously works correctly.
120
            auto decisionHandlerCopy = Block_copy(decisionHandler);
120
            auto decisionHandlerCopy = Block_copy(decisionHandler);
121
            callOnMainThread([decisionHandlerCopy, websitePolicies = RetainPtr<_WKWebsitePolicies>(websitePolicies)] {
121
            callOnMainThread([decisionHandlerCopy, websitePolicies = retainPtr(websitePolicies)] {
122
                decisionHandlerCopy(WKNavigationActionPolicyAllow, websitePolicies.get());
122
                decisionHandlerCopy(WKNavigationActionPolicyAllow, websitePolicies.get());
123
                Block_release(decisionHandlerCopy);
123
                Block_release(decisionHandlerCopy);
124
            });
124
            });
Lines 126-132 - (void)_webView:(WKWebView *)webView de Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec4
126
        return;
126
        return;
127
    case 2:
127
    case 2:
128
        // Verify enabling content blockers has no effect when reloading without content blockers.
128
        // Verify enabling content blockers has no effect when reloading without content blockers.
129
        websitePolicies.contentBlockersEnabled = true;
129
        websitePolicies._contentBlockersEnabled = true;
130
        break;
130
        break;
131
    default:
131
    default:
132
        EXPECT_TRUE(false);
132
        EXPECT_TRUE(false);
Lines 136-142 - (void)_webView:(WKWebView *)webView de Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec5
136
136
137
@end
137
@end
138
138
139
TEST(WebKit, WebsitePoliciesContentBlockersEnabled)
139
TEST(WebpagePreferences, WebsitePoliciesContentBlockersEnabled)
140
{
140
{
141
    [[_WKUserContentExtensionStore defaultStore] _removeAllContentExtensions];
141
    [[_WKUserContentExtensionStore defaultStore] _removeAllContentExtensions];
142
142
Lines 188-200 - (void)webView:(WKWebView *)webView dec Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec6
188
    decisionHandler(WKNavigationActionPolicyAllow);
188
    decisionHandler(WKNavigationActionPolicyAllow);
189
}
189
}
190
190
191
- (void)_webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy, _WKWebsitePolicies *))decisionHandler
191
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction preferences:(WKWebpagePreferences *)preferences decisionHandler:(void (^)(WKNavigationActionPolicy, WKWebpagePreferences *))decisionHandler
192
{
192
{
193
    _WKWebsitePolicies *websitePolicies = [[[_WKWebsitePolicies alloc] init] autorelease];
193
    WKWebpagePreferences *websitePolicies = [[[WKWebpagePreferences alloc] init] autorelease];
194
    if (_allowedAutoplayQuirksForURL)
194
    if (_allowedAutoplayQuirksForURL)
195
        websitePolicies.allowedAutoplayQuirks = _allowedAutoplayQuirksForURL(navigationAction.request.URL);
195
        websitePolicies._allowedAutoplayQuirks = _allowedAutoplayQuirksForURL(navigationAction.request.URL);
196
    if (_autoplayPolicyForURL)
196
    if (_autoplayPolicyForURL)
197
        websitePolicies.autoplayPolicy = _autoplayPolicyForURL(navigationAction.request.URL);
197
        websitePolicies._autoplayPolicy = _autoplayPolicyForURL(navigationAction.request.URL);
198
    decisionHandler(WKNavigationActionPolicyAllow, websitePolicies);
198
    decisionHandler(WKNavigationActionPolicyAllow, websitePolicies);
199
}
199
}
200
200
Lines 222-235 - (void)webView:(WKWebView *)webView dec Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec7
222
    decisionHandler(WKNavigationActionPolicyAllow);
222
    decisionHandler(WKNavigationActionPolicyAllow);
223
}
223
}
224
224
225
- (void)_webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy, _WKWebsitePolicies *))decisionHandler
225
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction preferences:(WKWebpagePreferences *)preferences decisionHandler:(void (^)(WKNavigationActionPolicy, WKWebpagePreferences *))decisionHandler
226
{
226
{
227
    dispatch_async(dispatch_get_main_queue(), ^{
227
    dispatch_async(dispatch_get_main_queue(), ^{
228
        _WKWebsitePolicies *websitePolicies = [[[_WKWebsitePolicies alloc] init] autorelease];
228
        WKWebpagePreferences *websitePolicies = [[[WKWebpagePreferences alloc] init] autorelease];
229
        if (_allowedAutoplayQuirksForURL)
229
        if (_allowedAutoplayQuirksForURL)
230
            websitePolicies.allowedAutoplayQuirks = _allowedAutoplayQuirksForURL(navigationAction.request.URL);
230
            websitePolicies._allowedAutoplayQuirks = _allowedAutoplayQuirksForURL(navigationAction.request.URL);
231
        if (_autoplayPolicyForURL)
231
        if (_autoplayPolicyForURL)
232
            websitePolicies.autoplayPolicy = _autoplayPolicyForURL(navigationAction.request.URL);
232
            websitePolicies._autoplayPolicy = _autoplayPolicyForURL(navigationAction.request.URL);
233
        decisionHandler(WKNavigationActionPolicyAllow, websitePolicies);
233
        decisionHandler(WKNavigationActionPolicyAllow, websitePolicies);
234
    });
234
    });
235
}
235
}
Lines 245-268 - (void)_webView:(WKWebView *)webView ha Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec8
245
@end
245
@end
246
246
247
@interface WebsitePoliciesNavigationDelegate : TestNavigationDelegate <WKNavigationDelegatePrivate>
247
@interface WebsitePoliciesNavigationDelegate : TestNavigationDelegate <WKNavigationDelegatePrivate>
248
@property (nonatomic, copy) void (^decidePolicyForNavigationActionWithWebsitePolicies)(WKNavigationAction *, id <NSSecureCoding>, void (^)(WKNavigationActionPolicy, _WKWebsitePolicies *));
248
@property (nonatomic, copy) void (^decidePolicyForNavigationActionWithWebsitePolicies)(WKNavigationAction *, WKWebpagePreferences *, id <NSSecureCoding>, void (^)(WKNavigationActionPolicy, WKWebpagePreferences *));
249
@end
249
@end
250
250
251
@implementation WebsitePoliciesNavigationDelegate
251
@implementation WebsitePoliciesNavigationDelegate
252
252
253
IGNORE_WARNINGS_BEGIN("deprecated-implementations")
253
- (void)_webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction preferences:(WKWebpagePreferences *)preferences userInfo:(id <NSSecureCoding>)userInfo decisionHandler:(void (^)(WKNavigationActionPolicy, WKWebpagePreferences *))decisionHandler
254
- (void)_webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction userInfo:(id <NSSecureCoding>)userInfo decisionHandler:(void (^)(WKNavigationActionPolicy, _WKWebsitePolicies *))decisionHandler
255
IGNORE_WARNINGS_END
256
{
254
{
257
    if (_decidePolicyForNavigationActionWithWebsitePolicies)
255
    if (_decidePolicyForNavigationActionWithWebsitePolicies)
258
        _decidePolicyForNavigationActionWithWebsitePolicies(navigationAction, userInfo, decisionHandler);
256
        _decidePolicyForNavigationActionWithWebsitePolicies(navigationAction, preferences, userInfo, decisionHandler);
259
    else
257
    else
260
        decisionHandler(WKNavigationActionPolicyAllow, nil);
258
        decisionHandler(WKNavigationActionPolicyAllow, nil);
261
}
259
}
262
260
263
@end
261
@end
264
262
265
TEST(WebKit, WebsitePoliciesAutoplayEnabled)
263
TEST(WebpagePreferences, WebsitePoliciesAutoplayEnabled)
266
{
264
{
267
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
265
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
268
266
Lines 310-318 TEST(WebKit, WebsitePoliciesAutoplayEnab Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec9
310
    [webView waitForMessage:@"did-not-play"];
308
    [webView waitForMessage:@"did-not-play"];
311
309
312
    // Test updating website policies.
310
    // Test updating website policies.
313
    _WKWebsitePolicies *websitePolicies = [[[_WKWebsitePolicies alloc] init] autorelease];
311
    WKWebpagePreferences *websitePolicies = [[[WKWebpagePreferences alloc] init] autorelease];
314
    websitePolicies.autoplayPolicy = _WKWebsiteAutoplayPolicyAllow;
312
    websitePolicies._autoplayPolicy = _WKWebsiteAutoplayPolicyAllow;
315
    [webView _updateWebsitePolicies:websitePolicies];
313
    [webView _updateWebpagePreferences:websitePolicies];
316
    [webView stringByEvaluatingJavaScript:@"playVideo()"];
314
    [webView stringByEvaluatingJavaScript:@"playVideo()"];
317
    [webView waitForMessage:@"autoplayed"];
315
    [webView waitForMessage:@"autoplayed"];
318
316
Lines 363-369 static void runUntilReceivesAutoplayEven Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec10
363
        CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.1, true);
361
        CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.1, true);
364
}
362
}
365
363
366
TEST(WebKit, WebsitePoliciesPlayAfterPreventedAutoplay)
364
TEST(WebpagePreferences, WebsitePoliciesPlayAfterPreventedAutoplay)
367
{
365
{
368
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
366
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
369
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 336, 276) configuration:configuration.get()]);
367
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 336, 276) configuration:configuration.get()]);
Lines 434-440 TEST(WebKit, WebsitePoliciesPlayAfterPre Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec11
434
    ASSERT_TRUE(*receivedAutoplayEventFlags & kWKAutoplayEventFlagsPlaybackWasPrevented);
432
    ASSERT_TRUE(*receivedAutoplayEventFlags & kWKAutoplayEventFlagsPlaybackWasPrevented);
435
}
433
}
436
434
437
TEST(WebKit, WebsitePoliciesPlayingWithUserGesture)
435
TEST(WebpagePreferences, WebsitePoliciesPlayingWithUserGesture)
438
{
436
{
439
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
437
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
440
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
438
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
Lines 473-479 TEST(WebKit, WebsitePoliciesPlayingWithU Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec12
473
    ASSERT_TRUE(*receivedAutoplayEventFlags & kWKAutoplayEventFlagsMediaIsMainContent);
471
    ASSERT_TRUE(*receivedAutoplayEventFlags & kWKAutoplayEventFlagsMediaIsMainContent);
474
}
472
}
475
473
476
TEST(WebKit, WebsitePoliciesPlayingWithoutInterference)
474
TEST(WebpagePreferences, WebsitePoliciesPlayingWithoutInterference)
477
{
475
{
478
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
476
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
479
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 336, 276) configuration:configuration.get()]);
477
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 336, 276) configuration:configuration.get()]);
Lines 492-498 TEST(WebKit, WebsitePoliciesPlayingWitho Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec13
492
    ASSERT_TRUE(*receivedAutoplayEventFlags & kWKAutoplayEventFlagsHasAudio);
490
    ASSERT_TRUE(*receivedAutoplayEventFlags & kWKAutoplayEventFlagsHasAudio);
493
}
491
}
494
492
495
TEST(WebKit, WebsitePoliciesUserInterferenceWithPlaying)
493
TEST(WebpagePreferences, WebsitePoliciesUserInterferenceWithPlaying)
496
{
494
{
497
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
495
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
498
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 336, 276) configuration:configuration.get()]);
496
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 336, 276) configuration:configuration.get()]);
Lines 537-543 TEST(WebKit, WebsitePoliciesUserInterfer Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec14
537
    ASSERT_TRUE(*receivedAutoplayEventFlags & kWKAutoplayEventFlagsHasAudio);
535
    ASSERT_TRUE(*receivedAutoplayEventFlags & kWKAutoplayEventFlagsHasAudio);
538
}
536
}
539
537
540
TEST(WebKit, WebsitePoliciesPerDocumentAutoplayBehaviorMediaLoading)
538
TEST(WebpagePreferences, WebsitePoliciesPerDocumentAutoplayBehaviorMediaLoading)
541
{
539
{
542
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
540
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
543
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
541
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
Lines 577-592 TEST(WebKit, WebsitePoliciesPerDocumentA Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec15
577
    TestWebKitAPI::Util::run(&receivedLoadedEvent);
575
    TestWebKitAPI::Util::run(&receivedLoadedEvent);
578
}
576
}
579
577
580
TEST(WebKit, WebsitePoliciesWithBridgingCast)
578
TEST(WebpagePreferences, WebsitePoliciesWithBridgingCast)
581
{
579
{
582
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
580
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
583
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 336, 276) configuration:configuration.get()]);
581
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 336, 276) configuration:configuration.get()]);
584
    auto delegate = adoptNS([[WebsitePoliciesNavigationDelegate alloc] init]);
582
    auto delegate = adoptNS([[WebsitePoliciesNavigationDelegate alloc] init]);
585
583
586
    __block bool didInvokeDecisionHandler = false;
584
    __block bool didInvokeDecisionHandler = false;
587
    [delegate setDecidePolicyForNavigationActionWithWebsitePolicies:^(WKNavigationAction *, id <NSSecureCoding>, void (^decisionHandler)(WKNavigationActionPolicy, _WKWebsitePolicies *)) {
585
    [delegate setDecidePolicyForNavigationActionWithWebsitePolicies:^(WKNavigationAction *, WKWebpagePreferences *, id <NSSecureCoding>, void (^decisionHandler)(WKNavigationActionPolicy, WKWebpagePreferences *)) {
588
        auto policies = adoptWK(WKWebsitePoliciesCreate());
586
        auto policies = adoptWK(WKWebsitePoliciesCreate());
589
        decisionHandler(WKNavigationActionPolicyAllow, (__bridge _WKWebsitePolicies *)policies.get());
587
        decisionHandler(WKNavigationActionPolicyAllow, (__bridge WKWebpagePreferences *)policies.get());
590
        didInvokeDecisionHandler = true;
588
        didInvokeDecisionHandler = true;
591
    }];
589
    }];
592
590
Lines 596-612 TEST(WebKit, WebsitePoliciesWithBridging Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec16
596
    EXPECT_TRUE(didInvokeDecisionHandler);
594
    EXPECT_TRUE(didInvokeDecisionHandler);
597
}
595
}
598
596
599
TEST(WebKit, WebsitePoliciesWithUnexpectedType)
597
TEST(WebpagePreferences, WebsitePoliciesWithUnexpectedType)
600
{
598
{
601
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
599
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
602
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 336, 276) configuration:configuration.get()]);
600
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 336, 276) configuration:configuration.get()]);
603
    auto delegate = adoptNS([[WebsitePoliciesNavigationDelegate alloc] init]);
601
    auto delegate = adoptNS([[WebsitePoliciesNavigationDelegate alloc] init]);
604
602
605
    __block bool didCatchException = false;
603
    __block bool didCatchException = false;
606
    [delegate setDecidePolicyForNavigationActionWithWebsitePolicies:^(WKNavigationAction *, id <NSSecureCoding>, void (^decisionHandler)(WKNavigationActionPolicy, _WKWebsitePolicies *)) {
604
    [delegate setDecidePolicyForNavigationActionWithWebsitePolicies:^(WKNavigationAction *, WKWebpagePreferences *, id <NSSecureCoding>, void (^decisionHandler)(WKNavigationActionPolicy, WKWebpagePreferences *)) {
607
        @try {
605
        @try {
608
            id fakePolicies = @"Hello";
606
            id fakePolicies = @"Hello";
609
            decisionHandler(WKNavigationActionPolicyAllow, (_WKWebsitePolicies *)fakePolicies);
607
            decisionHandler(WKNavigationActionPolicyAllow, (WKWebpagePreferences *)fakePolicies);
610
        } @catch (NSException *exception) {
608
        } @catch (NSException *exception) {
611
            didCatchException = true;
609
            didCatchException = true;
612
        }
610
        }
Lines 696-702 - (void)webView:(WKWebView *)webView sto Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec17
696
694
697
@end
695
@end
698
696
699
TEST(WebKit, WebsitePoliciesDuringRedirect)
697
TEST(WebpagePreferences, WebsitePoliciesDuringRedirect)
700
{
698
{
701
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
699
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
702
    auto videoData = adoptNS([[NSData alloc] initWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"test" withExtension:@"mp4" subdirectory:@"TestWebKitAPI.resources"]]);
700
    auto videoData = adoptNS([[NSData alloc] initWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"test" withExtension:@"mp4" subdirectory:@"TestWebKitAPI.resources"]]);
Lines 716-722 TEST(WebKit, WebsitePoliciesDuringRedire Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec18
716
    [webView waitForMessage:@"autoplayed"];
714
    [webView waitForMessage:@"autoplayed"];
717
}
715
}
718
716
719
TEST(WebKit, WebsitePoliciesUpdates)
717
TEST(WebpagePreferences, WebsitePoliciesUpdates)
720
{
718
{
721
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
719
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
722
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
720
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
Lines 732-740 TEST(WebKit, WebsitePoliciesUpdates) Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec19
732
    [webView loadRequest:requestWithAudio];
730
    [webView loadRequest:requestWithAudio];
733
    [webView waitForMessage:@"did-not-play"];
731
    [webView waitForMessage:@"did-not-play"];
734
732
735
    _WKWebsitePolicies *policies = [[[_WKWebsitePolicies alloc] init] autorelease];
733
    WKWebpagePreferences *policies = [[[WKWebpagePreferences alloc] init] autorelease];
736
    policies.autoplayPolicy = _WKWebsiteAutoplayPolicyAllow;
734
    policies._autoplayPolicy = _WKWebsiteAutoplayPolicyAllow;
737
    [webView _updateWebsitePolicies:policies];
735
    [webView _updateWebpagePreferences:policies];
738
736
739
    // Now that we updated our policies, a script should be able to autoplay media.
737
    // Now that we updated our policies, a script should be able to autoplay media.
740
    [webView stringByEvaluatingJavaScript:@"playVideo()"];
738
    [webView stringByEvaluatingJavaScript:@"playVideo()"];
Lines 752-758 TEST(WebKit, WebsitePoliciesUpdates) Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec20
752
    runUntilReceivesAutoplayEvent(kWKAutoplayEventDidPreventFromAutoplaying);
750
    runUntilReceivesAutoplayEvent(kWKAutoplayEventDidPreventFromAutoplaying);
753
}
751
}
754
752
755
TEST(WebKit, WebsitePoliciesArbitraryUserGestureQuirk)
753
TEST(WebpagePreferences, WebsitePoliciesArbitraryUserGestureQuirk)
756
{
754
{
757
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
755
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
758
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
756
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
Lines 785-791 TEST(WebKit, WebsitePoliciesArbitraryUse Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec21
785
    [webView waitForMessage:@"autoplayed"];
783
    [webView waitForMessage:@"autoplayed"];
786
}
784
}
787
785
788
TEST(WebKit, WebsitePoliciesAutoplayQuirks)
786
TEST(WebpagePreferences, WebsitePoliciesAutoplayQuirks)
789
{
787
{
790
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
788
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
791
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
789
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
Lines 843-849 TEST(WebKit, WebsitePoliciesAutoplayQuir Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec22
843
    [webView waitForMessage:@"playing"];
841
    [webView waitForMessage:@"playing"];
844
}
842
}
845
843
846
TEST(WebKit, WebsitePoliciesPerDocumentAutoplayBehaviorQuirks)
844
TEST(WebpagePreferences, WebsitePoliciesPerDocumentAutoplayBehaviorQuirks)
847
{
845
{
848
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
846
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
849
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
847
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
Lines 906-912 TEST(WebKit, WebsitePoliciesPerDocumentA Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec23
906
    [webView waitForMessage:@"did-not-play-video2"];
904
    [webView waitForMessage:@"did-not-play-video2"];
907
}
905
}
908
906
909
TEST(WebKit, WebsitePoliciesAutoplayQuirksAsyncPolicyDelegate)
907
TEST(WebpagePreferences, WebsitePoliciesAutoplayQuirksAsyncPolicyDelegate)
910
{
908
{
911
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
909
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
912
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
910
    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
Lines 950-956 TEST(WebKit, WebsitePoliciesAutoplayQuir Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec24
950
}
948
}
951
#endif // PLATFORM(MAC)
949
#endif // PLATFORM(MAC)
952
950
953
TEST(WebKit, InvalidCustomHeaders)
951
TEST(WebpagePreferences, InvalidCustomHeaders)
954
{
952
{
955
    auto customHeaderFields = adoptNS([[_WKCustomHeaderFields alloc] init]);
953
    auto customHeaderFields = adoptNS([[_WKCustomHeaderFields alloc] init]);
956
    [customHeaderFields setFields:@{@"invalidheader" : @"", @"noncustom" : @"header", @"    x-Custom ":@"  Needs Canonicalization\t ", @"x-other" : @"other value"}];
954
    [customHeaderFields setFields:@{@"invalidheader" : @"", @"noncustom" : @"header", @"    x-Custom ":@"  Needs Canonicalization\t ", @"x-other" : @"other value"}];
Lines 1097-1103 - (void)webView:(WKWebView *)webView sto Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec25
1097
1095
1098
@end
1096
@end
1099
1097
1100
TEST(WebKit, CustomHeaderFields)
1098
TEST(WebpagePreferences, CustomHeaderFields)
1101
{
1099
{
1102
    auto delegate = adoptNS([[CustomHeaderFieldsDelegate alloc] init]);
1100
    auto delegate = adoptNS([[CustomHeaderFieldsDelegate alloc] init]);
1103
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
1101
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
Lines 1170-1181 @interface CustomUserAgentDelegate : NSO Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec26
1170
@implementation CustomUserAgentDelegate
1168
@implementation CustomUserAgentDelegate
1171
1169
1172
IGNORE_WARNINGS_BEGIN("deprecated-implementations")
1170
IGNORE_WARNINGS_BEGIN("deprecated-implementations")
1173
- (void)_webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction userInfo:(id <NSSecureCoding>)userInfo decisionHandler:(void (^)(WKNavigationActionPolicy, _WKWebsitePolicies *))decisionHandler
1171
- (void)_webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction userInfo:(id <NSSecureCoding>)userInfo decisionHandler:(void (^)(WKNavigationActionPolicy, WKWebpagePreferences *))decisionHandler
1174
IGNORE_WARNINGS_END
1172
IGNORE_WARNINGS_END
1175
{
1173
{
1176
    _WKWebsitePolicies *websitePolicies = [[[_WKWebsitePolicies alloc] init] autorelease];
1174
    WKWebpagePreferences *websitePolicies = [[[WKWebpagePreferences alloc] init] autorelease];
1177
    if (navigationAction.targetFrame.mainFrame)
1175
    if (navigationAction.targetFrame.mainFrame)
1178
        [websitePolicies setCustomUserAgent:@"Foo Custom UserAgent"];
1176
        [websitePolicies _setCustomUserAgent:@"Foo Custom UserAgent"];
1179
1177
1180
    decisionHandler(WKNavigationActionPolicyAllow, websitePolicies);
1178
    decisionHandler(WKNavigationActionPolicyAllow, websitePolicies);
1181
}
1179
}
Lines 1217-1223 onload = () => { Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec27
1217
</script>
1215
</script>
1218
)TESTRESOURCE";
1216
)TESTRESOURCE";
1219
1217
1220
TEST(WebKit, WebsitePoliciesCustomUserAgent)
1218
TEST(WebpagePreferences, WebsitePoliciesCustomUserAgent)
1221
{
1219
{
1222
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
1220
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
1223
1221
Lines 1261-1273 @interface CustomJavaScriptUserAgentDele Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec28
1261
1259
1262
@implementation CustomJavaScriptUserAgentDelegate
1260
@implementation CustomJavaScriptUserAgentDelegate
1263
1261
1264
- (void)_webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction userInfo:(id <NSSecureCoding>)userInfo decisionHandler:(void (^)(WKNavigationActionPolicy, _WKWebsitePolicies *))decisionHandler
1262
- (void)_webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction userInfo:(id <NSSecureCoding>)userInfo decisionHandler:(void (^)(WKNavigationActionPolicy, WKWebpagePreferences *))decisionHandler
1265
{
1263
{
1266
    _WKWebsitePolicies *websitePolicies = [[[_WKWebsitePolicies alloc] init] autorelease];
1264
    WKWebpagePreferences *websitePolicies = [[[WKWebpagePreferences alloc] init] autorelease];
1267
    if (navigationAction.targetFrame.mainFrame) {
1265
    if (navigationAction.targetFrame.mainFrame) {
1268
        [websitePolicies setCustomUserAgentAsSiteSpecificQuirks:@"Foo Site Specific Quriks UserAgent"];
1266
        [websitePolicies _setCustomUserAgentAsSiteSpecificQuirks:@"Foo Site Specific Quriks UserAgent"];
1269
        if (_setCustomUserAgent)
1267
        if (_setCustomUserAgent)
1270
            [websitePolicies setCustomUserAgent:@"Foo Custom Request UserAgent"];
1268
            [websitePolicies _setCustomUserAgent:@"Foo Custom Request UserAgent"];
1271
    }
1269
    }
1272
1270
1273
    decisionHandler(WKNavigationActionPolicyAllow, websitePolicies);
1271
    decisionHandler(WKNavigationActionPolicyAllow, websitePolicies);
Lines 1280-1286 - (void)webView:(WKWebView *)webView did Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec29
1280
1278
1281
@end
1279
@end
1282
1280
1283
TEST(WebKit, WebsitePoliciesCustomUserAgentAsSiteSpecificQuirksDisabled)
1281
TEST(WebpagePreferences, WebsitePoliciesCustomUserAgentAsSiteSpecificQuirksDisabled)
1284
{
1282
{
1285
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
1283
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
1286
1284
Lines 1319-1325 TEST(WebKit, WebsitePoliciesCustomUserAg Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec30
1319
    EXPECT_TRUE([userAgentString containsString:@"(KHTML, like Gecko)"]);
1317
    EXPECT_TRUE([userAgentString containsString:@"(KHTML, like Gecko)"]);
1320
}
1318
}
1321
1319
1322
TEST(WebKit, WebsitePoliciesCustomUserAgentAsSiteSpecificQuirks)
1320
TEST(WebpagePreferences, WebsitePoliciesCustomUserAgentAsSiteSpecificQuirks)
1323
{
1321
{
1324
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
1322
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
1325
1323
Lines 1358-1368 @interface CustomNavigatorPlatformDelega Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec31
1358
1356
1359
@implementation CustomNavigatorPlatformDelegate
1357
@implementation CustomNavigatorPlatformDelegate
1360
1358
1361
- (void)_webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction userInfo:(id <NSSecureCoding>)userInfo decisionHandler:(void (^)(WKNavigationActionPolicy, _WKWebsitePolicies *))decisionHandler
1359
- (void)_webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction userInfo:(id <NSSecureCoding>)userInfo decisionHandler:(void (^)(WKNavigationActionPolicy, WKWebpagePreferences *))decisionHandler
1362
{
1360
{
1363
    _WKWebsitePolicies *websitePolicies = [[[_WKWebsitePolicies alloc] init] autorelease];
1361
    WKWebpagePreferences *websitePolicies = [[[WKWebpagePreferences alloc] init] autorelease];
1364
    if (navigationAction.targetFrame.mainFrame)
1362
    if (navigationAction.targetFrame.mainFrame)
1365
        [websitePolicies setCustomNavigatorPlatform:@"Test Custom Platform"];
1363
        [websitePolicies _setCustomNavigatorPlatform:@"Test Custom Platform"];
1366
1364
1367
    decisionHandler(WKNavigationActionPolicyAllow, websitePolicies);
1365
    decisionHandler(WKNavigationActionPolicyAllow, websitePolicies);
1368
}
1366
}
Lines 1374-1380 - (void)webView:(WKWebView *)webView did Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec32
1374
1372
1375
@end
1373
@end
1376
1374
1377
TEST(WebKit, WebsitePoliciesCustomNavigatorPlatform)
1375
TEST(WebpagePreferences, WebsitePoliciesCustomNavigatorPlatform)
1378
{
1376
{
1379
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
1377
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
1380
    
1378
    
Lines 1417-1426 - (instancetype)initWithDeviceOrientatio Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec33
1417
    return self;
1415
    return self;
1418
}
1416
}
1419
1417
1420
- (void)_webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction userInfo:(id <NSSecureCoding>)userInfo decisionHandler:(void (^)(WKNavigationActionPolicy, _WKWebsitePolicies *))decisionHandler
1418
- (void)_webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction preferences:(WKWebpagePreferences *)preferences userInfo:(id <NSSecureCoding>)userInfo decisionHandler:(void (^)(WKNavigationActionPolicy, WKWebpagePreferences *))decisionHandler
1421
{
1419
{
1422
    _WKWebsitePolicies *websitePolicies = [[[_WKWebsitePolicies alloc] init] autorelease];
1420
    WKWebpagePreferences *websitePolicies = [[[WKWebpagePreferences alloc] init] autorelease];
1423
    [websitePolicies setDeviceOrientationAndMotionAccessPolicy:_accessPolicy];
1421
    [websitePolicies _setDeviceOrientationAndMotionAccessPolicy:_accessPolicy];
1424
1422
1425
    decisionHandler(WKNavigationActionPolicyAllow, websitePolicies);
1423
    decisionHandler(WKNavigationActionPolicyAllow, websitePolicies);
1426
}
1424
}
Lines 1494-1510 static void runWebsitePoliciesDeviceOrie Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec34
1494
    }
1492
    }
1495
}
1493
}
1496
1494
1497
TEST(WebKit, WebsitePoliciesDeviceOrientationGrantAccess)
1495
TEST(WebpagePreferences, WebsitePoliciesDeviceOrientationGrantAccess)
1498
{
1496
{
1499
    runWebsitePoliciesDeviceOrientationEventTest(_WKWebsiteDeviceOrientationAndMotionAccessPolicyGrant);
1497
    runWebsitePoliciesDeviceOrientationEventTest(_WKWebsiteDeviceOrientationAndMotionAccessPolicyGrant);
1500
}
1498
}
1501
1499
1502
TEST(WebKit, WebsitePoliciesDeviceOrientationDenyAccess)
1500
TEST(WebpagePreferences, WebsitePoliciesDeviceOrientationDenyAccess)
1503
{
1501
{
1504
    runWebsitePoliciesDeviceOrientationEventTest(_WKWebsiteDeviceOrientationAndMotionAccessPolicyDeny);
1502
    runWebsitePoliciesDeviceOrientationEventTest(_WKWebsiteDeviceOrientationAndMotionAccessPolicyDeny);
1505
}
1503
}
1506
1504
1507
TEST(WebKit, WebsitePoliciesDeviceOrientationAskAccess)
1505
TEST(WebpagePreferences, WebsitePoliciesDeviceOrientationAskAccess)
1508
{
1506
{
1509
    runWebsitePoliciesDeviceOrientationEventTest(_WKWebsiteDeviceOrientationAndMotionAccessPolicyAsk);
1507
    runWebsitePoliciesDeviceOrientationEventTest(_WKWebsiteDeviceOrientationAndMotionAccessPolicyAsk);
1510
}
1508
}
Lines 1524-1534 - (void)webView:(WKWebView *)webView dec Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec35
1524
    decisionHandler(WKNavigationActionPolicyAllow);
1522
    decisionHandler(WKNavigationActionPolicyAllow);
1525
}
1523
}
1526
1524
1527
- (void)_webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy, _WKWebsitePolicies *))decisionHandler
1525
- (void)_webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy, WKWebpagePreferences *))decisionHandler
1528
{
1526
{
1529
    _WKWebsitePolicies *websitePolicies = [[[_WKWebsitePolicies alloc] init] autorelease];
1527
    WKWebpagePreferences *websitePolicies = [[[WKWebpagePreferences alloc] init] autorelease];
1530
    if (_popUpPolicyForURL)
1528
    if (_popUpPolicyForURL)
1531
        websitePolicies.popUpPolicy = _popUpPolicyForURL(navigationAction.request.URL);
1529
        websitePolicies._popUpPolicy = _popUpPolicyForURL(navigationAction.request.URL);
1532
    decisionHandler(WKNavigationActionPolicyAllow, websitePolicies);
1530
    decisionHandler(WKNavigationActionPolicyAllow, websitePolicies);
1533
}
1531
}
1534
1532
Lines 1539-1545 - (nullable WKWebView *)webView:(WKWebVi Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec36
1539
1537
1540
@end
1538
@end
1541
1539
1542
TEST(WebKit, WebsitePoliciesPopUp)
1540
TEST(WebpagePreferences, WebsitePoliciesPopUp)
1543
{
1541
{
1544
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
1542
    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
1545
1543
Lines 1573-1586 @interface WebsitePoliciesWebsiteDataSto Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec37
1573
1571
1574
@implementation WebsitePoliciesWebsiteDataStoreDelegate
1572
@implementation WebsitePoliciesWebsiteDataStoreDelegate
1575
1573
1576
IGNORE_WARNINGS_BEGIN("deprecated-implementations")
1574
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction preferences:(WKWebpagePreferences *)preferences decisionHandler:(void (^)(WKNavigationActionPolicy, WKWebpagePreferences *))decisionHandler
1577
- (void)_webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy, _WKWebsitePolicies *))decisionHandler
1578
IGNORE_WARNINGS_END
1579
{
1575
{
1580
    NSURL *url = navigationAction.request.URL;
1576
    NSURL *url = navigationAction.request.URL;
1581
    if ([url.path isEqualToString:@"/invalid"]) {
1577
    if ([url.path isEqualToString:@"/invalid"]) {
1582
        _WKWebsitePolicies *websitePolicies = [[[_WKWebsitePolicies alloc] init] autorelease];
1578
        WKWebpagePreferences *websitePolicies = [[[WKWebpagePreferences alloc] init] autorelease];
1583
        websitePolicies.websiteDataStore = [[[WKWebsiteDataStore alloc] _initWithConfiguration:[[[_WKWebsiteDataStoreConfiguration alloc] init] autorelease]] autorelease];
1579
        websitePolicies._websiteDataStore = [[[WKWebsiteDataStore alloc] _initWithConfiguration:[[[_WKWebsiteDataStoreConfiguration alloc] init] autorelease]] autorelease];
1584
1580
1585
        bool sawException = false;
1581
        bool sawException = false;
1586
        @try {
1582
        @try {
Lines 1595-1607 IGNORE_WARNINGS_END Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec38
1595
    if ([url.path isEqualToString:@"/checkStorage"]
1591
    if ([url.path isEqualToString:@"/checkStorage"]
1596
        || [url.path isEqualToString:@"/checkCookies"]
1592
        || [url.path isEqualToString:@"/checkCookies"]
1597
        || [url.path isEqualToString:@"/mainFrame"]) {
1593
        || [url.path isEqualToString:@"/mainFrame"]) {
1598
        _WKWebsitePolicies *websitePolicies = [[[_WKWebsitePolicies alloc] init] autorelease];
1594
        WKWebpagePreferences *websitePolicies = [[[WKWebpagePreferences alloc] init] autorelease];
1599
        websitePolicies.websiteDataStore = [WKWebsiteDataStore nonPersistentDataStore];
1595
        websitePolicies._websiteDataStore = [WKWebsiteDataStore nonPersistentDataStore];
1600
        decisionHandler(WKNavigationActionPolicyAllow, websitePolicies);
1596
        decisionHandler(WKNavigationActionPolicyAllow, websitePolicies);
1601
    }
1597
    }
1602
    if ([url.path isEqualToString:@"/subFrame"]) {
1598
    if ([url.path isEqualToString:@"/subFrame"]) {
1603
        _WKWebsitePolicies *websitePolicies = [[[_WKWebsitePolicies alloc] init] autorelease];
1599
        WKWebpagePreferences *websitePolicies = [[[WKWebpagePreferences alloc] init] autorelease];
1604
        websitePolicies.websiteDataStore = [WKWebsiteDataStore nonPersistentDataStore];
1600
        websitePolicies._websiteDataStore = [WKWebsiteDataStore nonPersistentDataStore];
1605
        bool sawException = false;
1601
        bool sawException = false;
1606
        @try {
1602
        @try {
1607
            decisionHandler(WKNavigationActionPolicyCancel, websitePolicies);
1603
            decisionHandler(WKNavigationActionPolicyCancel, websitePolicies);
Lines 1649-1662 RetainPtr<WKWebView> websiteDataStoreTes Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec39
1649
    return webView;
1645
    return webView;
1650
}
1646
}
1651
1647
1652
TEST(WebKit, UpdateWebsitePoliciesInvalid)
1648
TEST(WebpagePreferences, UpdateWebsitePoliciesInvalid)
1653
{
1649
{
1654
    auto webView = websiteDataStoreTestWebView();
1650
    auto webView = websiteDataStoreTestWebView();
1655
    auto policies = adoptNS([[_WKWebsitePolicies alloc] init]);
1651
    auto policies = adoptNS([[WKWebpagePreferences alloc] init]);
1656
    [policies setWebsiteDataStore:[WKWebsiteDataStore nonPersistentDataStore]];
1652
    [policies _setWebsiteDataStore:[WKWebsiteDataStore nonPersistentDataStore]];
1657
    bool sawException = false;
1653
    bool sawException = false;
1658
    @try {
1654
    @try {
1659
        [webView _updateWebsitePolicies:policies.get()];
1655
        [webView _updateWebpagePreferences:policies.get()];
1660
    } @catch (NSException *exception) {
1656
    } @catch (NSException *exception) {
1661
        sawException = true;
1657
        sawException = true;
1662
    }
1658
    }
Lines 1670-1676 TEST(WebKit, UpdateWebsitePoliciesInvali Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm_sec40
1670
    TestWebKitAPI::Util::run(&done);
1666
    TestWebKitAPI::Util::run(&done);
1671
}
1667
}
1672
1668
1673
TEST(WebKit, WebsitePoliciesDataStore)
1669
TEST(WebpagePreferences, WebsitePoliciesDataStore)
1674
{
1670
{
1675
    auto cookieWebView = websiteDataStoreTestWebView();
1671
    auto cookieWebView = websiteDataStoreTestWebView();
1676
    NSString *alertOldCookie = @"<script>var oldCookie = document.cookie; document.cookie = 'key=value'; alert('old value: <' + oldCookie + '>');</script>";
1672
    NSString *alertOldCookie = @"<script>var oldCookie = document.cookie; document.cookie = 'key=value'; alert('old value: <' + oldCookie + '>');</script>";

Return to Bug 205539