Changeset 242302 in webkit
- Timestamp:
- Mar 1, 2019 6:27:21 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r242297 r242302 1 2019-03-01 Alex Christensen <achristensen@webkit.org> 2 3 Add setters on WKWebsiteDataStore for sourceApplicationBundleIdentifier and sourceApplicationSecondaryIdentifier 4 https://bugs.webkit.org/show_bug.cgi?id=195229 5 <rdar://problem/48520362> 6 7 Reviewed by Chris Dumez. 8 9 Just like _setBoundInterfaceIdentifier, we need a way to set these properties after instantiation of a WKWebsiteDataStore, 10 but we need to make sure we don't set it after the parameters have been copied to the NetworkProcess. 11 12 Functionality verified by manual testing. See radar. 13 Added an API test that verifies the setter restrictions work as expected. 14 15 * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: 16 (-[WKWebsiteDataStore _sourceApplicationBundleIdentifier]): 17 (-[WKWebsiteDataStore _setSourceApplicationBundleIdentifier:]): 18 (-[WKWebsiteDataStore _sourceApplicationSecondaryIdentifier]): 19 (-[WKWebsiteDataStore _setSourceApplicationSecondaryIdentifier:]): 20 * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h: 21 * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: 22 (WebKit::toPKPaymentRequest): 23 * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: 24 (WebKit::WebsiteDataStore::parameters): 25 * UIProcess/WebsiteData/WebsiteDataStore.cpp: 26 (WebKit::WebsiteDataStore::WebsiteDataStore): 27 (WebKit::WebsiteDataStore::setSourceApplicationSecondaryIdentifier): 28 (WebKit::WebsiteDataStore::setSourceApplicationBundleIdentifier): 29 * UIProcess/WebsiteData/WebsiteDataStore.h: 30 (WebKit::WebsiteDataStore::sourceApplicationBundleIdentifier): 31 (WebKit::WebsiteDataStore::sourceApplicationSecondaryIdentifier): 32 1 33 2019-03-01 Antoine Quint <graouts@apple.com> 2 34 -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm
r242203 r242302 364 364 } 365 365 366 - (NSString *)_sourceApplicationBundleIdentifier 367 { 368 return _websiteDataStore->websiteDataStore().sourceApplicationBundleIdentifier(); 369 } 370 371 - (void)_setSourceApplicationBundleIdentifier:(NSString *)identifier 372 { 373 if (!_websiteDataStore->websiteDataStore().setSourceApplicationBundleIdentifier(identifier)) 374 [NSException raise:NSGenericException format:@"_setSourceApplicationBundleIdentifier cannot be called after networking has begun"]; 375 } 376 377 - (NSString *)_sourceApplicationSecondaryIdentifier 378 { 379 return _websiteDataStore->websiteDataStore().sourceApplicationSecondaryIdentifier(); 380 } 381 382 - (void)_setSourceApplicationSecondaryIdentifier:(NSString *)identifier 383 { 384 if (!_websiteDataStore->websiteDataStore().setSourceApplicationSecondaryIdentifier(identifier)) 385 [NSException raise:NSGenericException format:@"_setSourceApplicationSecondaryIdentifier cannot be called after networking has begun"]; 386 } 387 366 388 - (NSDictionary *)_proxyConfiguration 367 389 { -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h
r242203 r242302 58 58 @property (nonatomic, setter=_setAllowsCellularAccess:) BOOL _allowsCellularAccess WK_API_AVAILABLE(macosx(10.13.4), ios(11.3)); 59 59 @property (nonatomic, setter=_setProxyConfiguration:) NSDictionary *_proxyConfiguration WK_API_AVAILABLE(macosx(10.14), ios(12.0)); 60 @property (nonatomic, copy, setter=_setSourceApplicationBundleIdentifier:) NSString *_sourceApplicationBundleIdentifier WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA)); 61 @property (nonatomic, copy, setter=_setSourceApplicationSecondaryIdentifier:) NSString *_sourceApplicationSecondaryIdentifier WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA)); 60 62 61 63 @property (nonatomic, readonly) NSURL *_indexedDBDatabaseDirectory; -
trunk/Source/WebKit/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm
r239427 r242302 507 507 508 508 // FIXME: Instead of using respondsToSelector, this should use a proper #if version check. 509 auto& configuration = webPageProxy.websiteDataStore().configuration();510 511 if (! configuration.sourceApplicationBundleIdentifier().isEmpty() && [result respondsToSelector:@selector(setSourceApplicationBundleIdentifier:)])512 [result setSourceApplicationBundleIdentifier: configuration.sourceApplicationBundleIdentifier()];513 514 if (! configuration.sourceApplicationSecondaryIdentifier().isEmpty() && [result respondsToSelector:@selector(setSourceApplicationSecondaryIdentifier:)])515 [result setSourceApplicationSecondaryIdentifier: configuration.sourceApplicationSecondaryIdentifier()];509 auto& websiteDataStore = webPageProxy.websiteDataStore(); 510 511 if (!websiteDataStore.sourceApplicationBundleIdentifier().isEmpty() && [result respondsToSelector:@selector(setSourceApplicationBundleIdentifier:)]) 512 [result setSourceApplicationBundleIdentifier:websiteDataStore.sourceApplicationBundleIdentifier()]; 513 514 if (!websiteDataStore.sourceApplicationSecondaryIdentifier().isEmpty() && [result respondsToSelector:@selector(setSourceApplicationSecondaryIdentifier:)]) 515 [result setSourceApplicationSecondaryIdentifier:websiteDataStore.sourceApplicationSecondaryIdentifier()]; 516 516 517 517 #if PLATFORM(IOS_FAMILY) -
trunk/Source/WebKit/UIProcess/WebProcessPool.cpp
r242203 r242302 491 491 parameters.defaultDataStoreParameters.pendingCookies = copyToVector(m_websiteDataStore->websiteDataStore().pendingCookies()); 492 492 m_websiteDataStore->websiteDataStore().clearPendingCookies(); 493 parameters.defaultDataStoreParameters.networkSessionParameters.sourceApplicationBundleIdentifier = m_websiteDataStore->websiteDataStore().sourceApplicationBundleIdentifier(); 494 parameters.defaultDataStoreParameters.networkSessionParameters.sourceApplicationSecondaryIdentifier = m_websiteDataStore->websiteDataStore().sourceApplicationSecondaryIdentifier(); 495 m_websiteDataStore->websiteDataStore().finalizeApplicationIdentifiers(); 493 496 } 494 497 -
trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm
r240498 r242302 95 95 m_allowsCellularAccess, 96 96 m_proxyConfiguration, 97 m_ configuration->sourceApplicationBundleIdentifier(),98 m_ configuration->sourceApplicationSecondaryIdentifier(),97 m_sourceApplicationBundleIdentifier, 98 m_sourceApplicationSecondaryIdentifier, 99 99 shouldLogCookieInformation, 100 100 Seconds { [defaults integerForKey:WebKitNetworkLoadThrottleLatencyMillisecondsDefaultsKey] / 1000. }, … … 105 105 false 106 106 }; 107 finalizeApplicationIdentifiers(); 107 108 108 109 auto cookieFile = resolvedCookieStorageFile(); … … 116 117 117 118 parameters.uiProcessCookieStorageIdentifier = m_uiProcessCookieStorageIdentifier; 118 parameters.networkSessionParameters.sourceApplicationBundleIdentifier = m_ configuration->sourceApplicationBundleIdentifier();119 parameters.networkSessionParameters.sourceApplicationSecondaryIdentifier = m_ configuration->sourceApplicationSecondaryIdentifier();119 parameters.networkSessionParameters.sourceApplicationBundleIdentifier = m_sourceApplicationBundleIdentifier; 120 parameters.networkSessionParameters.sourceApplicationSecondaryIdentifier = m_sourceApplicationSecondaryIdentifier; 120 121 121 122 parameters.pendingCookies = copyToVector(m_pendingCookies); -
trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
r242288 r242302 99 99 , m_deviceIdHashSaltStorage(DeviceIdHashSaltStorage::create(isPersistent() ? m_configuration->deviceIdHashSaltsStorageDirectory() : String())) 100 100 , m_queue(WorkQueue::create("com.apple.WebKit.WebsiteDataStore")) 101 , m_sourceApplicationBundleIdentifier(m_configuration->sourceApplicationBundleIdentifier()) 102 , m_sourceApplicationSecondaryIdentifier(m_configuration->sourceApplicationSecondaryIdentifier()) 101 103 #if ENABLE(WEB_AUTHN) 102 104 , m_authenticatorManager(makeUniqueRef<AuthenticatorManager>()) … … 2102 2104 } 2103 2105 2104 } 2106 bool WebsiteDataStore::setSourceApplicationSecondaryIdentifier(String&& identifier) 2107 { 2108 if (!m_allowedToSetApplicationIdentifiers) 2109 return false; 2110 m_sourceApplicationSecondaryIdentifier = WTFMove(identifier); 2111 return true; 2112 } 2113 2114 bool WebsiteDataStore::setSourceApplicationBundleIdentifier(String&& identifier) 2115 { 2116 if (!m_allowedToSetApplicationIdentifiers) 2117 return false; 2118 m_sourceApplicationBundleIdentifier = WTFMove(identifier); 2119 return true; 2120 } 2121 2122 } -
trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h
r242288 r242302 201 201 void setBoundInterfaceIdentifier(String&& identifier) { m_boundInterfaceIdentifier = WTFMove(identifier); } 202 202 const String& boundInterfaceIdentifier() { return m_boundInterfaceIdentifier; } 203 204 const String& sourceApplicationBundleIdentifier() const { return m_sourceApplicationBundleIdentifier; } 205 bool setSourceApplicationBundleIdentifier(String&&); 206 207 const String& sourceApplicationSecondaryIdentifier() const { return m_sourceApplicationSecondaryIdentifier; } 208 bool setSourceApplicationSecondaryIdentifier(String&&); 209 210 void finalizeApplicationIdentifiers() { m_allowedToSetApplicationIdentifiers = false; } 203 211 204 212 void setAllowsCellularAccess(AllowsCellularAccess allows) { m_allowsCellularAccess = allows; } … … 305 313 String m_boundInterfaceIdentifier; 306 314 AllowsCellularAccess m_allowsCellularAccess { AllowsCellularAccess::Yes }; 315 String m_sourceApplicationBundleIdentifier; 316 String m_sourceApplicationSecondaryIdentifier; 317 bool m_allowedToSetApplicationIdentifiers { true }; 307 318 308 319 #if HAVE(SEC_KEY_PROXY) -
trunk/Tools/ChangeLog
r242294 r242302 1 2019-03-01 Alex Christensen <achristensen@webkit.org> 2 3 Add setters on WKWebsiteDataStore for sourceApplicationBundleIdentifier and sourceApplicationSecondaryIdentifier 4 https://bugs.webkit.org/show_bug.cgi?id=195229 5 <rdar://problem/48520362> 6 7 Reviewed by Chris Dumez. 8 9 * TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm: 10 (TEST): 11 1 12 2019-03-01 Simon Fraser <simon.fraser@apple.com> 2 13 -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm
r240025 r242302 29 29 #import "Test.h" 30 30 #import "TestNavigationDelegate.h" 31 #import "TestWKWebView.h" 31 32 #import <WebKit/WKPreferencesRef.h> 32 33 #import <WebKit/WKProcessPoolPrivate.h> … … 453 454 } 454 455 456 TEST(WebKit, ApplicationIdentifiers) 457 { 458 auto websiteDataStoreConfiguration = adoptNS([[_WKWebsiteDataStoreConfiguration alloc] init]); 459 [websiteDataStoreConfiguration setSourceApplicationBundleIdentifier:@"testidentifier"]; 460 461 auto webViewConfiguration = adoptNS([[WKWebViewConfiguration alloc] init]); 462 auto websiteDataStore = [[[WKWebsiteDataStore alloc] _initWithConfiguration:websiteDataStoreConfiguration.get()] autorelease]; 463 EXPECT_TRUE([websiteDataStore._sourceApplicationBundleIdentifier isEqualToString:@"testidentifier"]); 464 [websiteDataStore _setSourceApplicationBundleIdentifier:@"otheridentifier"]; 465 466 [webViewConfiguration setWebsiteDataStore:websiteDataStore]; 467 auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:webViewConfiguration.get()]); 468 [webView synchronouslyLoadTestPageNamed:@"simple"]; 469 470 RetainPtr<NSException> exception; 471 @try { 472 [websiteDataStore _setSourceApplicationBundleIdentifier:@"settingShouldFailNow"]; 473 } @catch(NSException *caught) { 474 exception = caught; 475 } 476 EXPECT_TRUE([[exception reason] isEqualToString:@"_setSourceApplicationBundleIdentifier cannot be called after networking has begun"]); 477 EXPECT_TRUE([websiteDataStore._sourceApplicationBundleIdentifier isEqualToString:@"otheridentifier"]); 478 EXPECT_TRUE([[websiteDataStoreConfiguration sourceApplicationBundleIdentifier] isEqualToString:@"testidentifier"]); 479 } 480 455 481 #endif
Note: See TracChangeset
for help on using the changeset viewer.