Changeset 243726 in webkit
- Timestamp:
- Apr 1, 2019, 5:01:05 PM (7 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 9 edited
- 4 copied
-
ChangeLog (modified) (1 diff)
-
Shared/Cocoa/APIObject.mm (modified) (3 diffs)
-
SourcesCocoa.txt (modified) (1 diff)
-
UIProcess/API/Cocoa/WKWebView.mm (modified) (2 diffs)
-
UIProcess/API/Cocoa/WKWebpagePreferences.h (copied) (copied from trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h ) (2 diffs)
-
UIProcess/API/Cocoa/WKWebpagePreferences.mm (copied) (copied from trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePolicies.mm ) (12 diffs)
-
UIProcess/API/Cocoa/WKWebpagePreferencesInternal.h (copied) (copied from trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h ) (2 diffs)
-
UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h (copied) (copied from trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePolicies.h ) (3 diffs)
-
UIProcess/API/Cocoa/_WKWebsitePolicies.h (modified) (1 diff)
-
UIProcess/API/Cocoa/_WKWebsitePolicies.mm (modified) (2 diffs)
-
UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h (modified) (1 diff)
-
UIProcess/Cocoa/NavigationState.mm (modified) (2 diffs)
-
WebKit.xcodeproj/project.pbxproj (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r243713 r243726 1 2019-04-01 Wenson Hsieh <wenson_hsieh@apple.com> 2 3 [WebKit2] Introduce a public version of WKWebsitePolicies 4 https://bugs.webkit.org/show_bug.cgi?id=195989 5 <rdar://problem/47228232> 6 7 Reviewed by Tim Horton. 8 9 Expose the existing _WKWebsitePolicies object as WKWebpagePreferences, in what will eventually become a public 10 header in the WebKit SDK (WKWebpagePreferences.h). Following a similar transitioning strategy as 11 _WKWebsiteDataStore and WKWebsiteDataStore, we move existing logic from _WKWebsitePolicies to WKWebpagePreferences 12 and make _WKWebsitePolicies a wrapper around WKWebpagePreferences. 13 14 No change in behavior. 15 16 * Shared/Cocoa/APIObject.mm: 17 (API::Object::newObject): 18 19 Wrap API::WebsitePolicies with WKWebpagePreferences. 20 21 * SourcesCocoa.txt: 22 * UIProcess/API/Cocoa/WKWebView.mm: 23 (-[WKWebView _updateWebsitePolicies:]): 24 * UIProcess/API/Cocoa/WKWebpagePreferences.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h. 25 * UIProcess/API/Cocoa/WKWebpagePreferences.mm: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePolicies.mm. 26 27 Introduce WKWebpagePreferences. 28 29 (+[WKWebpagePreferences defaultPreferences]): 30 (-[WKWebpagePreferences dealloc]): 31 (-[WKWebpagePreferences init]): 32 (-[WKWebpagePreferences _setContentBlockersEnabled:]): 33 (-[WKWebpagePreferences _contentBlockersEnabled]): 34 (-[WKWebpagePreferences _setAllowedAutoplayQuirks:]): 35 (-[WKWebpagePreferences _allowedAutoplayQuirks]): 36 (-[WKWebpagePreferences _setAutoplayPolicy:]): 37 (-[WKWebpagePreferences _autoplayPolicy]): 38 (-[WKWebpagePreferences _setDeviceOrientationAndMotionAccessPolicy:]): 39 (-[WKWebpagePreferences _deviceOrientationAndMotionAccessPolicy]): 40 (-[WKWebpagePreferences _setPopUpPolicy:]): 41 (-[WKWebpagePreferences _popUpPolicy]): 42 (-[WKWebpagePreferences _customHeaderFields]): 43 (-[WKWebpagePreferences _setCustomHeaderFields:]): 44 (-[WKWebpagePreferences _websiteDataStore]): 45 (-[WKWebpagePreferences _setWebsiteDataStore:]): 46 (-[WKWebpagePreferences _setCustomUserAgent:]): 47 (-[WKWebpagePreferences _customUserAgent]): 48 (-[WKWebpagePreferences _setCustomJavaScriptUserAgentAsSiteSpecificQuirks:]): 49 (-[WKWebpagePreferences _customJavaScriptUserAgentAsSiteSpecificQuirks]): 50 (-[WKWebpagePreferences _setCustomNavigatorPlatform:]): 51 (-[WKWebpagePreferences _customNavigatorPlatform]): 52 (-[WKWebpagePreferences _apiObject]): 53 * UIProcess/API/Cocoa/WKWebpagePreferencesInternal.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h. 54 * UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePolicies.h. 55 56 Reintroduce all the interfaces currently available on _WKWebsitePolicies as underscore-prefixed SPI on 57 WKWebpagePreferences. 58 59 * UIProcess/API/Cocoa/_WKWebsitePolicies.h: 60 * UIProcess/API/Cocoa/_WKWebsitePolicies.mm: 61 62 Make _WKWebsitePolicies wrap WKWebpagePreferences, and plumb all existing SPI on WKWebsitePolicies through to 63 WKWebpagePreferences. 64 65 (-[_WKWebsitePolicies init]): 66 (-[_WKWebsitePolicies webpagePreferences]): 67 (-[_WKWebsitePolicies setContentBlockersEnabled:]): 68 (-[_WKWebsitePolicies contentBlockersEnabled]): 69 (-[_WKWebsitePolicies setAllowedAutoplayQuirks:]): 70 (-[_WKWebsitePolicies allowedAutoplayQuirks]): 71 (-[_WKWebsitePolicies setAutoplayPolicy:]): 72 (-[_WKWebsitePolicies autoplayPolicy]): 73 (-[_WKWebsitePolicies setDeviceOrientationAndMotionAccessPolicy:]): 74 (-[_WKWebsitePolicies deviceOrientationAndMotionAccessPolicy]): 75 (-[_WKWebsitePolicies setPopUpPolicy:]): 76 (-[_WKWebsitePolicies popUpPolicy]): 77 (-[_WKWebsitePolicies customHeaderFields]): 78 (-[_WKWebsitePolicies setCustomHeaderFields:]): 79 (-[_WKWebsitePolicies websiteDataStore]): 80 (-[_WKWebsitePolicies setWebsiteDataStore:]): 81 (-[_WKWebsitePolicies setCustomUserAgent:]): 82 (-[_WKWebsitePolicies customUserAgent]): 83 (-[_WKWebsitePolicies setCustomJavaScriptUserAgentAsSiteSpecificQuirks:]): 84 (-[_WKWebsitePolicies customJavaScriptUserAgentAsSiteSpecificQuirks]): 85 (-[_WKWebsitePolicies setCustomNavigatorPlatform:]): 86 (-[_WKWebsitePolicies customNavigatorPlatform]): 87 (-[_WKWebsitePolicies description]): 88 (-[_WKWebsitePolicies _apiObject]): 89 (-[_WKWebsitePolicies dealloc]): Deleted. 90 * UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h: 91 * UIProcess/Cocoa/NavigationState.mm: 92 (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction): 93 * WebKit.xcodeproj/project.pbxproj: 94 1 95 2019-04-01 Wenson Hsieh <wenson_hsieh@apple.com> 2 96 -
trunk/Source/WebKit/Shared/Cocoa/APIObject.mm
r243319 r243726 64 64 #import "WKWebProcessPlugInRangeHandleInternal.h" 65 65 #import "WKWebProcessPlugInScriptWorldInternal.h" 66 #import "WKWebpagePreferencesInternal.h" 66 67 #import "WKWebsiteDataRecordInternal.h" 67 68 #import "WKWebsiteDataStoreInternal.h" … … 83 84 #import "_WKVisitedLinkStoreInternal.h" 84 85 #import "_WKWebsiteDataStoreConfigurationInternal.h" 85 #import "_WKWebsitePoliciesInternal.h"86 86 87 87 #if ENABLE(APPLICATION_MANIFEST) … … 347 347 348 348 case Type::WebsitePolicies: 349 wrapper = [ _WKWebsitePolicies alloc];349 wrapper = [WKWebpagePreferences alloc]; 350 350 break; 351 351 -
trunk/Source/WebKit/SourcesCocoa.txt
r243553 r243726 307 307 UIProcess/API/Cocoa/WKWebView.mm 308 308 UIProcess/API/Cocoa/WKWebViewConfiguration.mm 309 UIProcess/API/Cocoa/WKWebpagePreferences.mm 309 310 UIProcess/API/Cocoa/WKWindowFeatures.mm 310 311 -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
r243682 r243726 78 78 #import "WKWebViewConfigurationInternal.h" 79 79 #import "WKWebViewContentProvider.h" 80 #import "WKWebpagePreferencesInternal.h" 80 81 #import "WKWebsiteDataStoreInternal.h" 81 82 #import "WebBackForwardList.h" … … 5129 5130 - (void)_updateWebsitePolicies:(_WKWebsitePolicies *)websitePolicies 5130 5131 { 5131 auto data = websitePolicies ->_websitePolicies->data();5132 auto data = websitePolicies.webpagePreferences->_websitePolicies->data(); 5132 5133 if (data.websiteDataStoreParameters) 5133 5134 [NSException raise:NSInvalidArgumentException format:@"Updating WKWebsiteDataStore is only supported during decidePolicyForNavigationAction."]; -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferences.h
r243722 r243726 1 1 /* 2 * Copyright (C) 201 6Apple Inc. All rights reserved.2 * Copyright (C) 2019 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 24 24 */ 25 25 26 #import "_WKWebsitePolicies.h"26 #import <WebKit/WKFoundation.h> 27 27 28 #import "APIWebsitePolicies.h" 29 #import "WKObject.h" 28 /*! A WKWebpagePreferences object is a collection of properties that 29 determine the preferences to use when loading and rendering a page. 30 @discussion Contains properties used to determine webpage preferences. 31 */ 32 WK_CLASS_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)) 33 @interface WKWebpagePreferences : NSObject 30 34 31 namespace WebKit {32 33 template<> struct WrapperTraits<API::WebsitePolicies> {34 using WrapperClass = _WKWebsitePolicies;35 };36 37 }38 39 @interface _WKWebsitePolicies () <WKObject> {40 @package41 API::ObjectStorage<API::WebsitePolicies> _websitePolicies;42 }43 35 @end -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferences.mm
r243722 r243726 1 1 /* 2 * Copyright (C) 201 6Apple Inc. All rights reserved.2 * Copyright (C) 2019 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 25 25 26 26 #import "config.h" 27 #import "WKWebpagePreferences.h" 28 29 #import "WKWebpagePreferencesInternal.h" 30 #import "WKWebsiteDataStoreInternal.h" 27 31 #import "_WKWebsitePoliciesInternal.h" 28 29 #import "WKWebsiteDataStoreInternal.h" 30 31 @implementation _WKWebsitePolicies 32 #import <wtf/RetainPtr.h> 33 34 @implementation WKWebpagePreferences 35 36 + (instancetype)defaultPreferences 37 { 38 return [[[self alloc] init] autorelease]; 39 } 32 40 33 41 - (void)dealloc 34 42 { 35 43 _websitePolicies->API::WebsitePolicies::~WebsitePolicies(); 36 44 37 45 [super dealloc]; 38 46 } … … 42 50 if (!(self = [super init])) 43 51 return nil; 44 52 45 53 API::Object::constructInWrapper<API::WebsitePolicies>(self); 46 54 47 55 return self; 48 56 } 49 57 50 - (void) setContentBlockersEnabled:(BOOL)contentBlockersEnabled58 - (void)_setContentBlockersEnabled:(BOOL)contentBlockersEnabled 51 59 { 52 60 _websitePolicies->setContentBlockersEnabled(contentBlockersEnabled); 53 61 } 54 62 55 - (BOOL) contentBlockersEnabled63 - (BOOL)_contentBlockersEnabled 56 64 { 57 65 return _websitePolicies->contentBlockersEnabled(); 58 66 } 59 67 60 - (void) setAllowedAutoplayQuirks:(_WKWebsiteAutoplayQuirk)allowedQuirks68 - (void)_setAllowedAutoplayQuirks:(_WKWebsiteAutoplayQuirk)allowedQuirks 61 69 { 62 70 OptionSet<WebKit::WebsiteAutoplayQuirk> quirks; … … 77 85 } 78 86 79 - (_WKWebsiteAutoplayQuirk) allowedAutoplayQuirks87 - (_WKWebsiteAutoplayQuirk)_allowedAutoplayQuirks 80 88 { 81 89 _WKWebsiteAutoplayQuirk quirks = 0; … … 97 105 } 98 106 99 - (void) setAutoplayPolicy:(_WKWebsiteAutoplayPolicy)policy107 - (void)_setAutoplayPolicy:(_WKWebsiteAutoplayPolicy)policy 100 108 { 101 109 switch (policy) { … … 115 123 } 116 124 117 - (_WKWebsiteAutoplayPolicy) autoplayPolicy125 - (_WKWebsiteAutoplayPolicy)_autoplayPolicy 118 126 { 119 127 switch (_websitePolicies->autoplayPolicy()) { … … 129 137 } 130 138 131 - (void) setDeviceOrientationAndMotionAccessPolicy:(_WKWebsiteDeviceOrientationAndMotionAccessPolicy)policy139 - (void)_setDeviceOrientationAndMotionAccessPolicy:(_WKWebsiteDeviceOrientationAndMotionAccessPolicy)policy 132 140 { 133 141 switch (policy) { … … 144 152 } 145 153 146 - (_WKWebsiteDeviceOrientationAndMotionAccessPolicy) deviceOrientationAndMotionAccessPolicy154 - (_WKWebsiteDeviceOrientationAndMotionAccessPolicy)_deviceOrientationAndMotionAccessPolicy 147 155 { 148 156 if (!_websitePolicies->deviceOrientationAndMotionAccessState()) … … 151 159 } 152 160 153 - (void) setPopUpPolicy:(_WKWebsitePopUpPolicy)policy161 - (void)_setPopUpPolicy:(_WKWebsitePopUpPolicy)policy 154 162 { 155 163 switch (policy) { … … 166 174 } 167 175 168 - (_WKWebsitePopUpPolicy) popUpPolicy176 - (_WKWebsitePopUpPolicy)_popUpPolicy 169 177 { 170 178 switch (_websitePolicies->popUpPolicy()) { … … 178 186 } 179 187 180 - (NSDictionary<NSString *, NSString *> *) customHeaderFields188 - (NSDictionary<NSString *, NSString *> *)_customHeaderFields 181 189 { 182 190 const auto& fields = _websitePolicies->customHeaderFields(); 183 NSMutableDictionary *dictionary = [[[NSMutableDictionary alloc] initWithCapacity:fields.size()] autorelease];191 auto dictionary = adoptNS([[NSMutableDictionary alloc] initWithCapacity:fields.size()]); 184 192 for (const auto& field : fields) 185 193 [dictionary setObject:field.value() forKey:field.name()]; 186 return dictionary ;187 } 188 189 - (void) setCustomHeaderFields:(NSDictionary<NSString *, NSString *> *)fields194 return dictionary.autorelease(); 195 } 196 197 - (void)_setCustomHeaderFields:(NSDictionary<NSString *, NSString *> *)fields 190 198 { 191 199 Vector<WebCore::HTTPHeaderField> parsedFields; 192 200 parsedFields.reserveInitialCapacity(fields.count); 193 194 for (NSString *name in fields) {201 202 for (NSString *name in fields) { 195 203 auto field = WebCore::HTTPHeaderField::create(name, [fields objectForKey:name]); 196 204 if (field && startsWithLettersIgnoringASCIICase(field->name(), "x-")) … … 200 208 } 201 209 202 - (WKWebsiteDataStore *) websiteDataStore210 - (WKWebsiteDataStore *)_websiteDataStore 203 211 { 204 212 return wrapper(_websitePolicies->websiteDataStore()); 205 213 } 206 214 207 - (void) setWebsiteDataStore:(WKWebsiteDataStore *)websiteDataStore215 - (void)_setWebsiteDataStore:(WKWebsiteDataStore *)websiteDataStore 208 216 { 209 217 _websitePolicies->setWebsiteDataStore(websiteDataStore->_websiteDataStore.get()); 210 218 } 211 219 212 - (void) setCustomUserAgent:(NSString *)customUserAgent220 - (void)_setCustomUserAgent:(NSString *)customUserAgent 213 221 { 214 222 _websitePolicies->setCustomUserAgent(customUserAgent); 215 223 } 216 224 217 - (NSString *) customUserAgent225 - (NSString *)_customUserAgent 218 226 { 219 227 return _websitePolicies->customUserAgent(); 220 228 } 221 229 222 - (void) setCustomJavaScriptUserAgentAsSiteSpecificQuirks:(NSString *)customUserAgent230 - (void)_setCustomJavaScriptUserAgentAsSiteSpecificQuirks:(NSString *)customUserAgent 223 231 { 224 232 _websitePolicies->setCustomJavaScriptUserAgentAsSiteSpecificQuirks(customUserAgent); 225 233 } 226 234 227 - (NSString *) customJavaScriptUserAgentAsSiteSpecificQuirks235 - (NSString *)_customJavaScriptUserAgentAsSiteSpecificQuirks 228 236 { 229 237 return _websitePolicies->customJavaScriptUserAgentAsSiteSpecificQuirks(); 230 238 } 231 239 232 - (void) setCustomNavigatorPlatform:(NSString *)customNavigatorPlatform240 - (void)_setCustomNavigatorPlatform:(NSString *)customNavigatorPlatform 233 241 { 234 242 _websitePolicies->setCustomNavigatorPlatform(customNavigatorPlatform); 235 243 } 236 244 237 - (NSString *) customNavigatorPlatform245 - (NSString *)_customNavigatorPlatform 238 246 { 239 247 return _websitePolicies->customNavigatorPlatform(); 240 248 } 241 249 242 - (NSString *)description243 {244 return [NSString stringWithFormat:@"<%@: %p; contentBlockersEnabled = %d>", NSStringFromClass(self.class), self, self.contentBlockersEnabled];245 }246 247 250 - (API::Object&)_apiObject 248 251 { -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferencesInternal.h
r243722 r243726 1 1 /* 2 * Copyright (C) 201 6Apple Inc. All rights reserved.2 * Copyright (C) 2019 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 24 24 */ 25 25 26 # import "_WKWebsitePolicies.h"26 #pragma once 27 27 28 28 #import "APIWebsitePolicies.h" 29 29 #import "WKObject.h" 30 #import "WKWebpagePreferencesPrivate.h" 31 #import "_WKWebsitePolicies.h" 30 32 31 33 namespace WebKit { 32 34 33 35 template<> struct WrapperTraits<API::WebsitePolicies> { 34 using WrapperClass = _WKWebsitePolicies;36 using WrapperClass = WKWebpagePreferences; 35 37 }; 36 38 37 39 } 38 40 39 @interface _WKWebsitePolicies () <WKObject> {41 @interface WKWebpagePreferences () <WKObject> { 40 42 @package 41 43 API::ObjectStorage<API::WebsitePolicies> _websitePolicies; 42 44 } 45 46 @property (class, nonatomic, readonly) WKWebpagePreferences *defaultPreferences; 43 47 @end -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h
r243722 r243726 1 1 /* 2 * Copyright (C) 201 6Apple Inc. All rights reserved.2 * Copyright (C) 2019 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 24 24 */ 25 25 26 #pragma once 27 26 28 #import <WebKit/WKFoundation.h> 29 #import <WebKit/WKWebpagePreferences.h> 30 #import <WebKit/WKWebsiteDataStore.h> 27 31 28 32 typedef NS_ENUM(NSInteger, _WKWebsiteAutoplayPolicy) { … … 52 56 } WK_API_AVAILABLE(macos(10.14), ios(12.0)); 53 57 54 @ class WKWebsiteDataStore;58 @interface WKWebpagePreferences (WKPrivate) 55 59 56 WK_CLASS_AVAILABLE(macos(10.12.3), ios(10.3)) 57 @interface _WKWebsitePolicies : NSObject 58 59 @property (nonatomic) BOOL contentBlockersEnabled; 60 @property (nonatomic) _WKWebsiteAutoplayQuirk allowedAutoplayQuirks WK_API_AVAILABLE(macos(10.13), ios(11.0)); 61 @property (nonatomic) _WKWebsiteAutoplayPolicy autoplayPolicy WK_API_AVAILABLE(macos(10.13), ios(11.0)); 62 @property (nonatomic, copy) NSDictionary<NSString *, NSString *> *customHeaderFields WK_API_AVAILABLE(macos(10.13.4), ios(11.3)); 63 @property (nonatomic) _WKWebsitePopUpPolicy popUpPolicy WK_API_AVAILABLE(macos(10.14), ios(12.0)); 64 @property (nonatomic, strong) WKWebsiteDataStore *websiteDataStore WK_API_AVAILABLE(macos(10.13.4), ios(11.3)); 65 @property (nonatomic, copy) NSString *customUserAgent WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 66 @property (nonatomic, copy) NSString *customJavaScriptUserAgentAsSiteSpecificQuirks WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 67 @property (nonatomic, copy) NSString *customNavigatorPlatform WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 68 @property (nonatomic) _WKWebsiteDeviceOrientationAndMotionAccessPolicy deviceOrientationAndMotionAccessPolicy WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 60 @property (nonatomic, setter=_setContentBlockersEnabled:) BOOL _contentBlockersEnabled; 61 @property (nonatomic, setter=_setAllowedAutoplayQuirks:) _WKWebsiteAutoplayQuirk _allowedAutoplayQuirks; 62 @property (nonatomic, setter=_setAutoplayPolicy:) _WKWebsiteAutoplayPolicy _autoplayPolicy; 63 @property (nonatomic, copy, setter=_setCustomHeaderFields:) NSDictionary<NSString *, NSString *> *_customHeaderFields; 64 @property (nonatomic, setter=_setPopUpPolicy:) _WKWebsitePopUpPolicy _popUpPolicy; 65 @property (nonatomic, strong, setter=_setWebsiteDataStore:) WKWebsiteDataStore *_websiteDataStore; 66 @property (nonatomic, copy, setter=_setCustomUserAgent:) NSString *_customUserAgent; 67 @property (nonatomic, copy, setter=_setCustomJavaScriptUserAgentAsSiteSpecificQuirks:) NSString *_customJavaScriptUserAgentAsSiteSpecificQuirks; 68 @property (nonatomic, copy, setter=_setCustomNavigatorPlatform:) NSString *_customNavigatorPlatform; 69 @property (nonatomic, setter=_setDeviceOrientationAndMotionAccessPolicy:) _WKWebsiteDeviceOrientationAndMotionAccessPolicy _deviceOrientationAndMotionAccessPolicy; 69 70 70 71 @end -
trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePolicies.h
r243376 r243726 25 25 26 26 #import <WebKit/WKFoundation.h> 27 28 typedef NS_ENUM(NSInteger, _WKWebsiteAutoplayPolicy) { 29 _WKWebsiteAutoplayPolicyDefault, 30 _WKWebsiteAutoplayPolicyAllow, 31 _WKWebsiteAutoplayPolicyAllowWithoutSound, 32 _WKWebsiteAutoplayPolicyDeny 33 } WK_API_AVAILABLE(macos(10.13), ios(11.0)); 34 35 typedef NS_OPTIONS(NSUInteger, _WKWebsiteAutoplayQuirk) { 36 _WKWebsiteAutoplayQuirkSynthesizedPauseEvents = 1 << 0, 37 _WKWebsiteAutoplayQuirkInheritedUserGestures = 1 << 1, 38 _WKWebsiteAutoplayQuirkArbitraryUserGestures = 1 << 2, 39 _WKWebsiteAutoplayQuirkPerDocumentAutoplayBehavior = 1 << 3, 40 } WK_API_AVAILABLE(macos(10.13), ios(11.0)); 41 42 typedef NS_OPTIONS(NSUInteger, _WKWebsitePopUpPolicy) { 43 _WKWebsitePopUpPolicyDefault, 44 _WKWebsitePopUpPolicyAllow, 45 _WKWebsitePopUpPolicyBlock, 46 } WK_API_AVAILABLE(macos(10.14), ios(12.0)); 47 48 typedef NS_OPTIONS(NSUInteger, _WKWebsiteDeviceOrientationAndMotionAccessPolicy) { 49 _WKWebsiteDeviceOrientationAndMotionAccessPolicyAsk, 50 _WKWebsiteDeviceOrientationAndMotionAccessPolicyGrant, 51 _WKWebsiteDeviceOrientationAndMotionAccessPolicyDeny, 52 } WK_API_AVAILABLE(macos(10.14), ios(12.0)); 27 #import <WebKit/WKWebpagePreferencesPrivate.h> 53 28 54 29 @class WKWebsiteDataStore; -
trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePolicies.mm
r242960 r243726 25 25 26 26 #import "config.h" 27 28 #import "WKWebpagePreferencesInternal.h" 29 #import "WKWebsiteDataStoreInternal.h" 27 30 #import "_WKWebsitePoliciesInternal.h" 28 31 29 #import "WKWebsiteDataStoreInternal.h"30 31 32 @implementation _WKWebsitePolicies 32 33 - (void)dealloc34 {35 _websitePolicies->API::WebsitePolicies::~WebsitePolicies();36 37 [super dealloc];38 }39 33 40 34 - (instancetype)init … … 42 36 if (!(self = [super init])) 43 37 return nil; 44 45 API::Object::constructInWrapper<API::WebsitePolicies>(self); 46 38 39 _webpagePreferences = adoptNS([[WKWebpagePreferences alloc] init]); 47 40 return self; 41 } 42 43 - (WKWebpagePreferences *)webpagePreferences 44 { 45 return _webpagePreferences.get(); 48 46 } 49 47 50 48 - (void)setContentBlockersEnabled:(BOOL)contentBlockersEnabled 51 49 { 52 _websitePolicies->setContentBlockersEnabled(contentBlockersEnabled);50 [_webpagePreferences _setContentBlockersEnabled:contentBlockersEnabled]; 53 51 } 54 52 55 53 - (BOOL)contentBlockersEnabled 56 54 { 57 return _websitePolicies->contentBlockersEnabled();55 return [_webpagePreferences _contentBlockersEnabled]; 58 56 } 59 57 60 58 - (void)setAllowedAutoplayQuirks:(_WKWebsiteAutoplayQuirk)allowedQuirks 61 59 { 62 OptionSet<WebKit::WebsiteAutoplayQuirk> quirks; 63 64 if (allowedQuirks & _WKWebsiteAutoplayQuirkInheritedUserGestures) 65 quirks.add(WebKit::WebsiteAutoplayQuirk::InheritedUserGestures); 66 67 if (allowedQuirks & _WKWebsiteAutoplayQuirkSynthesizedPauseEvents) 68 quirks.add(WebKit::WebsiteAutoplayQuirk::SynthesizedPauseEvents); 69 70 if (allowedQuirks & _WKWebsiteAutoplayQuirkArbitraryUserGestures) 71 quirks.add(WebKit::WebsiteAutoplayQuirk::ArbitraryUserGestures); 72 73 if (allowedQuirks & _WKWebsiteAutoplayQuirkPerDocumentAutoplayBehavior) 74 quirks.add(WebKit::WebsiteAutoplayQuirk::PerDocumentAutoplayBehavior); 75 76 _websitePolicies->setAllowedAutoplayQuirks(quirks); 60 [_webpagePreferences _setAllowedAutoplayQuirks:allowedQuirks]; 77 61 } 78 62 79 63 - (_WKWebsiteAutoplayQuirk)allowedAutoplayQuirks 80 64 { 81 _WKWebsiteAutoplayQuirk quirks = 0; 82 auto allowedQuirks = _websitePolicies->allowedAutoplayQuirks(); 83 84 if (allowedQuirks.contains(WebKit::WebsiteAutoplayQuirk::InheritedUserGestures)) 85 quirks |= _WKWebsiteAutoplayQuirkInheritedUserGestures; 86 87 if (allowedQuirks.contains(WebKit::WebsiteAutoplayQuirk::SynthesizedPauseEvents)) 88 quirks |= _WKWebsiteAutoplayQuirkSynthesizedPauseEvents; 89 90 if (allowedQuirks.contains(WebKit::WebsiteAutoplayQuirk::ArbitraryUserGestures)) 91 quirks |= _WKWebsiteAutoplayQuirkArbitraryUserGestures; 92 93 if (allowedQuirks.contains(WebKit::WebsiteAutoplayQuirk::PerDocumentAutoplayBehavior)) 94 quirks |= _WKWebsiteAutoplayQuirkPerDocumentAutoplayBehavior; 95 96 return quirks; 65 return [_webpagePreferences _allowedAutoplayQuirks]; 97 66 } 98 67 99 68 - (void)setAutoplayPolicy:(_WKWebsiteAutoplayPolicy)policy 100 69 { 101 switch (policy) { 102 case _WKWebsiteAutoplayPolicyDefault: 103 _websitePolicies->setAutoplayPolicy(WebKit::WebsiteAutoplayPolicy::Default); 104 break; 105 case _WKWebsiteAutoplayPolicyAllow: 106 _websitePolicies->setAutoplayPolicy(WebKit::WebsiteAutoplayPolicy::Allow); 107 break; 108 case _WKWebsiteAutoplayPolicyAllowWithoutSound: 109 _websitePolicies->setAutoplayPolicy(WebKit::WebsiteAutoplayPolicy::AllowWithoutSound); 110 break; 111 case _WKWebsiteAutoplayPolicyDeny: 112 _websitePolicies->setAutoplayPolicy(WebKit::WebsiteAutoplayPolicy::Deny); 113 break; 114 } 70 [_webpagePreferences _setAutoplayPolicy:policy]; 115 71 } 116 72 117 73 - (_WKWebsiteAutoplayPolicy)autoplayPolicy 118 74 { 119 switch (_websitePolicies->autoplayPolicy()) { 120 case WebKit::WebsiteAutoplayPolicy::Default: 121 return _WKWebsiteAutoplayPolicyDefault; 122 case WebKit::WebsiteAutoplayPolicy::Allow: 123 return _WKWebsiteAutoplayPolicyAllow; 124 case WebKit::WebsiteAutoplayPolicy::AllowWithoutSound: 125 return _WKWebsiteAutoplayPolicyAllowWithoutSound; 126 case WebKit::WebsiteAutoplayPolicy::Deny: 127 return _WKWebsiteAutoplayPolicyDeny; 128 } 75 return [_webpagePreferences _autoplayPolicy]; 129 76 } 130 77 131 78 - (void)setDeviceOrientationAndMotionAccessPolicy:(_WKWebsiteDeviceOrientationAndMotionAccessPolicy)policy 132 79 { 133 switch (policy) { 134 case _WKWebsiteDeviceOrientationAndMotionAccessPolicyAsk: 135 _websitePolicies->setDeviceOrientationAndMotionAccessState(WTF::nullopt); 136 break; 137 case _WKWebsiteDeviceOrientationAndMotionAccessPolicyGrant: 138 _websitePolicies->setDeviceOrientationAndMotionAccessState(true); 139 break; 140 case _WKWebsiteDeviceOrientationAndMotionAccessPolicyDeny: 141 _websitePolicies->setDeviceOrientationAndMotionAccessState(false); 142 break; 143 } 80 [_webpagePreferences _setDeviceOrientationAndMotionAccessPolicy:policy]; 144 81 } 145 82 146 83 - (_WKWebsiteDeviceOrientationAndMotionAccessPolicy)deviceOrientationAndMotionAccessPolicy 147 84 { 148 if (!_websitePolicies->deviceOrientationAndMotionAccessState()) 149 return _WKWebsiteDeviceOrientationAndMotionAccessPolicyAsk; 150 return *_websitePolicies->deviceOrientationAndMotionAccessState() ? _WKWebsiteDeviceOrientationAndMotionAccessPolicyGrant : _WKWebsiteDeviceOrientationAndMotionAccessPolicyDeny; 85 return [_webpagePreferences _deviceOrientationAndMotionAccessPolicy]; 151 86 } 152 87 153 88 - (void)setPopUpPolicy:(_WKWebsitePopUpPolicy)policy 154 89 { 155 switch (policy) { 156 case _WKWebsitePopUpPolicyDefault: 157 _websitePolicies->setPopUpPolicy(WebKit::WebsitePopUpPolicy::Default); 158 break; 159 case _WKWebsitePopUpPolicyAllow: 160 _websitePolicies->setPopUpPolicy(WebKit::WebsitePopUpPolicy::Allow); 161 break; 162 case _WKWebsitePopUpPolicyBlock: 163 _websitePolicies->setPopUpPolicy(WebKit::WebsitePopUpPolicy::Block); 164 break; 165 } 90 [_webpagePreferences _setPopUpPolicy:policy]; 166 91 } 167 92 168 93 - (_WKWebsitePopUpPolicy)popUpPolicy 169 94 { 170 switch (_websitePolicies->popUpPolicy()) { 171 case WebKit::WebsitePopUpPolicy::Default: 172 return _WKWebsitePopUpPolicyDefault; 173 case WebKit::WebsitePopUpPolicy::Allow: 174 return _WKWebsitePopUpPolicyAllow; 175 case WebKit::WebsitePopUpPolicy::Block: 176 return _WKWebsitePopUpPolicyBlock; 177 } 95 return [_webpagePreferences _popUpPolicy]; 178 96 } 179 97 180 98 - (NSDictionary<NSString *, NSString *> *)customHeaderFields 181 99 { 182 const auto& fields = _websitePolicies->customHeaderFields(); 183 NSMutableDictionary *dictionary = [[[NSMutableDictionary alloc] initWithCapacity:fields.size()] autorelease]; 184 for (const auto& field : fields) 185 [dictionary setObject:field.value() forKey:field.name()]; 186 return dictionary; 100 return [_webpagePreferences _customHeaderFields]; 187 101 } 188 102 189 103 - (void)setCustomHeaderFields:(NSDictionary<NSString *, NSString *> *)fields 190 104 { 191 Vector<WebCore::HTTPHeaderField> parsedFields; 192 parsedFields.reserveInitialCapacity(fields.count); 193 194 for (NSString* name in fields) { 195 auto field = WebCore::HTTPHeaderField::create(name, [fields objectForKey:name]); 196 if (field && startsWithLettersIgnoringASCIICase(field->name(), "x-")) 197 parsedFields.uncheckedAppend(WTFMove(*field)); 198 } 199 _websitePolicies->setCustomHeaderFields(WTFMove(parsedFields)); 105 [_webpagePreferences _setCustomHeaderFields:fields]; 200 106 } 201 107 202 108 - (WKWebsiteDataStore *)websiteDataStore 203 109 { 204 return wrapper(_websitePolicies->websiteDataStore());110 return [_webpagePreferences _websiteDataStore]; 205 111 } 206 112 207 113 - (void)setWebsiteDataStore:(WKWebsiteDataStore *)websiteDataStore 208 114 { 209 _websitePolicies->setWebsiteDataStore(websiteDataStore->_websiteDataStore.get());115 [_webpagePreferences _setWebsiteDataStore:websiteDataStore]; 210 116 } 211 117 212 118 - (void)setCustomUserAgent:(NSString *)customUserAgent 213 119 { 214 _websitePolicies->setCustomUserAgent(customUserAgent);120 [_webpagePreferences _setCustomUserAgent:customUserAgent]; 215 121 } 216 122 217 123 - (NSString *)customUserAgent 218 124 { 219 return _websitePolicies->customUserAgent();125 return [_webpagePreferences _customUserAgent]; 220 126 } 221 127 222 128 - (void)setCustomJavaScriptUserAgentAsSiteSpecificQuirks:(NSString *)customUserAgent 223 129 { 224 _websitePolicies->setCustomJavaScriptUserAgentAsSiteSpecificQuirks(customUserAgent);130 [_webpagePreferences _setCustomJavaScriptUserAgentAsSiteSpecificQuirks:customUserAgent]; 225 131 } 226 132 227 133 - (NSString *)customJavaScriptUserAgentAsSiteSpecificQuirks 228 134 { 229 return _websitePolicies->customJavaScriptUserAgentAsSiteSpecificQuirks();135 return [_webpagePreferences _customJavaScriptUserAgentAsSiteSpecificQuirks]; 230 136 } 231 137 232 138 - (void)setCustomNavigatorPlatform:(NSString *)customNavigatorPlatform 233 139 { 234 _websitePolicies->setCustomNavigatorPlatform(customNavigatorPlatform);140 [_webpagePreferences _setCustomNavigatorPlatform:customNavigatorPlatform]; 235 141 } 236 142 237 143 - (NSString *)customNavigatorPlatform 238 144 { 239 return _websitePolicies->customNavigatorPlatform();145 return [_webpagePreferences _customNavigatorPlatform]; 240 146 } 241 147 242 148 - (NSString *)description 243 149 { 244 return [NSString stringWithFormat:@"<%@ : %p; contentBlockersEnabled = %d>", NSStringFromClass(self.class), self, self.contentBlockersEnabled];150 return [NSString stringWithFormat:@"<%@ %@>", self.class, [_webpagePreferences description]]; 245 151 } 246 152 247 153 - (API::Object&)_apiObject 248 154 { 249 return *_websitePolicies;155 return [_webpagePreferences _apiObject]; 250 156 } 251 157 -
trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h
r242339 r243726 25 25 26 26 #import "_WKWebsitePolicies.h" 27 #import <wtf/RetainPtr.h> 27 28 28 #import "APIWebsitePolicies.h" 29 #import "WKObject.h" 29 @class WKWebpagePreferences; 30 30 31 namespace WebKit { 32 33 template<> struct WrapperTraits<API::WebsitePolicies> { 34 using WrapperClass = _WKWebsitePolicies; 35 }; 36 31 @interface _WKWebsitePolicies () 32 { 33 @package 34 RetainPtr<WKWebpagePreferences> _webpagePreferences; 37 35 } 38 36 39 @interface _WKWebsitePolicies () <WKObject> { 40 @package 41 API::ObjectStorage<API::WebsitePolicies> _websitePolicies; 42 } 37 @property (nonatomic, readonly) WKWebpagePreferences *webpagePreferences; 38 43 39 @end -
trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.mm
r243319 r243726 55 55 #import "WKReloadFrameErrorRecoveryAttempter.h" 56 56 #import "WKWebViewInternal.h" 57 #import "WKWebpagePreferencesInternal.h" 57 58 #import "WebCredential.h" 58 59 #import "WebFrameProxy.h" … … 557 558 checker->didCallCompletionHandler(); 558 559 559 RefPtr<API::WebsitePolicies> apiWebsitePolicies = websitePolicies ? websitePolicies->_websitePolicies.get() : nullptr;560 RefPtr<API::WebsitePolicies> apiWebsitePolicies = [websitePolicies webpagePreferences] ? [websitePolicies webpagePreferences]->_websitePolicies.get() : nullptr; 560 561 if (apiWebsitePolicies) { 561 562 if (auto* websiteDataStore = apiWebsitePolicies->websiteDataStore()) { -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r243671 r243726 1635 1635 ED82A7F2128C6FAF004477B3 /* WKBundlePageOverlay.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A22F0FF1289FCD90085E74F /* WKBundlePageOverlay.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1636 1636 F409BA181E6E64BC009DA28E /* WKDragDestinationAction.h in Headers */ = {isa = PBXBuildFile; fileRef = F409BA171E6E64B3009DA28E /* WKDragDestinationAction.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1637 F438CD1C2241421400DE6DDA /* WKWebpagePreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = F438CD1B224140A600DE6DDA /* WKWebpagePreferences.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1638 F438CD1F22414D4000DE6DDA /* WKWebpagePreferencesInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F438CD1E22414D4000DE6DDA /* WKWebpagePreferencesInternal.h */; }; 1639 F438CD212241F69500DE6DDA /* WKWebpagePreferencesPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F438CD202241F69500DE6DDA /* WKWebpagePreferencesPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1637 1640 F44291921FA591C9002CC93E /* _WKAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = F44291911FA59107002CC93E /* _WKAttachment.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1638 1641 F44291961FA5942A002CC93E /* _WKAttachmentInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F44291951FA5942A002CC93E /* _WKAttachmentInternal.h */; }; … … 4565 4568 F40D1B68220BDC0F00B49A01 /* WebAutocorrectionContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WebAutocorrectionContext.h; path = ios/WebAutocorrectionContext.h; sourceTree = "<group>"; }; 4566 4569 F41056612130699A0092281D /* APIAttachmentCocoa.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = APIAttachmentCocoa.mm; sourceTree = "<group>"; }; 4570 F438CD1B224140A600DE6DDA /* WKWebpagePreferences.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WKWebpagePreferences.h; sourceTree = "<group>"; }; 4571 F438CD1D22414AD600DE6DDA /* WKWebpagePreferences.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = WKWebpagePreferences.mm; sourceTree = "<group>"; }; 4572 F438CD1E22414D4000DE6DDA /* WKWebpagePreferencesInternal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WKWebpagePreferencesInternal.h; sourceTree = "<group>"; }; 4573 F438CD202241F69500DE6DDA /* WKWebpagePreferencesPrivate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WKWebpagePreferencesPrivate.h; sourceTree = "<group>"; }; 4567 4574 F44291911FA59107002CC93E /* _WKAttachment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = _WKAttachment.h; sourceTree = "<group>"; }; 4568 4575 F44291931FA59311002CC93E /* _WKAttachment.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = _WKAttachment.mm; sourceTree = "<group>"; }; … … 6253 6260 1AAF089C19267FC800B6390C /* WKUserScriptInternal.h */, 6254 6261 7C882DF61C7E995E006BF731 /* WKUserScriptPrivate.h */, 6262 F438CD1B224140A600DE6DDA /* WKWebpagePreferences.h */, 6263 F438CD1D22414AD600DE6DDA /* WKWebpagePreferences.mm */, 6264 F438CD1E22414D4000DE6DDA /* WKWebpagePreferencesInternal.h */, 6265 F438CD202241F69500DE6DDA /* WKWebpagePreferencesPrivate.h */, 6255 6266 1A4832CA1A9BC465008B4DFE /* WKWebsiteDataRecord.h */, 6256 6267 1A4832C91A9BC465008B4DFE /* WKWebsiteDataRecord.mm */, … … 10038 10049 C5E1AFEB16B20B7E006CC1F2 /* WKWebArchiveResource.h in Headers */, 10039 10050 2D1E8223216FFF5100A15265 /* WKWebEvent.h in Headers */, 10051 F438CD1C2241421400DE6DDA /* WKWebpagePreferences.h in Headers */, 10052 F438CD1F22414D4000DE6DDA /* WKWebpagePreferencesInternal.h in Headers */, 10053 F438CD212241F69500DE6DDA /* WKWebpagePreferencesPrivate.h in Headers */, 10040 10054 5CADDE05215046BD0067D309 /* WKWebProcess.h in Headers */, 10041 10055 1AA2E56718D77508003814BD /* WKWebProcessBundleParameters.h in Headers */,
Note:
See TracChangeset
for help on using the changeset viewer.