Title: [247625] trunk
Revision
247625
Author
achristen...@apple.com
Date
2019-07-18 16:46:09 -0700 (Thu, 18 Jul 2019)

Log Message

Add and test _WKWebsiteDataStoreConfiguration.deviceIdHashSaltsStorageDirectory SPI
https://bugs.webkit.org/show_bug.cgi?id=199923

Reviewed by Youenn Fablet.

Source/WebKit:

This is a step towards us getting rid of WebsiteDataStore::legacyDefaultDataStoreConfiguration

* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _initWithConfiguration:]):
* UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
* UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
(-[_WKWebsiteDataStoreConfiguration deviceIdHashSaltsStorageDirectory]):
(-[_WKWebsiteDataStoreConfiguration setDeviceIdHashSaltsStorageDirectory:]):

Tools:

* TestWebKitAPI/Tests/WebKit/GetUserMediaNavigation.mm:
(TestWebKitAPI::TEST):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (247624 => 247625)


--- trunk/Source/WebKit/ChangeLog	2019-07-18 23:31:36 UTC (rev 247624)
+++ trunk/Source/WebKit/ChangeLog	2019-07-18 23:46:09 UTC (rev 247625)
@@ -1,5 +1,21 @@
 2019-07-18  Alex Christensen  <achristen...@webkit.org>
 
+        Add and test _WKWebsiteDataStoreConfiguration.deviceIdHashSaltsStorageDirectory SPI
+        https://bugs.webkit.org/show_bug.cgi?id=199923
+
+        Reviewed by Youenn Fablet.
+
+        This is a step towards us getting rid of WebsiteDataStore::legacyDefaultDataStoreConfiguration
+
+        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
+        (-[WKWebsiteDataStore _initWithConfiguration:]):
+        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
+        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
+        (-[_WKWebsiteDataStoreConfiguration deviceIdHashSaltsStorageDirectory]):
+        (-[_WKWebsiteDataStoreConfiguration setDeviceIdHashSaltsStorageDirectory:]):
+
+2019-07-18  Alex Christensen  <achristen...@webkit.org>
+
         Move NetworkCache ownership from NetworkProcess to NetworkSession
         https://bugs.webkit.org/show_bug.cgi?id=199817
 

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm (247624 => 247625)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm	2019-07-18 23:31:36 UTC (rev 247624)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm	2019-07-18 23:46:09 UTC (rev 247625)
@@ -250,6 +250,8 @@
             config->setServiceWorkerRegistrationDirectory(configuration._serviceWorkerRegistrationDirectory.path);
         if (configuration.networkCacheDirectory)
             config->setNetworkCacheDirectory(configuration.networkCacheDirectory.path);
+        if (configuration.deviceIdHashSaltsStorageDirectory)
+            config->setDeviceIdHashSaltsStorageDirectory(configuration.deviceIdHashSaltsStorageDirectory.path);
     } else {
         RELEASE_ASSERT(!configuration._webStorageDirectory);
         RELEASE_ASSERT(!configuration._webSQLDatabaseDirectory);
@@ -259,6 +261,7 @@
         RELEASE_ASSERT(!configuration._cacheStorageDirectory);
         RELEASE_ASSERT(!configuration._serviceWorkerRegistrationDirectory);
         RELEASE_ASSERT(!configuration.networkCacheDirectory);
+        RELEASE_ASSERT(!configuration.deviceIdHashSaltsStorageDirectory);
     }
 
     if (configuration.sourceApplicationBundleIdentifier)

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h (247624 => 247625)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h	2019-07-18 23:31:36 UTC (rev 247624)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h	2019-07-18 23:46:09 UTC (rev 247625)
@@ -54,6 +54,7 @@
 @property (nonatomic, copy, setter=_setCacheStorageDirectory:) NSURL *_cacheStorageDirectory WK_API_AVAILABLE(macos(10.13.4), ios(11.3));
 @property (nonatomic, copy, setter=_setServiceWorkerRegistrationDirectory:) NSURL *_serviceWorkerRegistrationDirectory WK_API_AVAILABLE(macos(10.13.4), ios(11.3));
 @property (nonatomic, nullable, copy) NSURL *networkCacheDirectory WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
+@property (nonatomic, nullable, copy) NSURL *deviceIdHashSaltsStorageDirectory WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
 
 // Testing only.
 @property (nonatomic) BOOL allLoadsBlockedByDeviceManagementRestrictionsForTesting WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm (247624 => 247625)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm	2019-07-18 23:31:36 UTC (rev 247624)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm	2019-07-18 23:46:09 UTC (rev 247625)
@@ -102,6 +102,19 @@
     _configuration->setNetworkCacheDirectory(url.path);
 }
 
+- (NSURL *)deviceIdHashSaltsStorageDirectory
+{
+    return [NSURL fileURLWithPath:_configuration->deviceIdHashSaltsStorageDirectory() isDirectory:YES];
+}
+
+- (void)setDeviceIdHashSaltsStorageDirectory:(NSURL *)url
+{
+    if (!_configuration->isPersistent())
+        [NSException raise:NSInvalidArgumentException format:@"Cannot set deviceIdHashSaltsStorageDirectory on a non-persistent _WKWebsiteDataStoreConfiguration."];
+    checkURLArgument(url);
+    _configuration->setDeviceIdHashSaltsStorageDirectory(url.path);
+}
+
 - (NSURL *)_webSQLDatabaseDirectory
 {
     return [NSURL fileURLWithPath:_configuration->webSQLDatabaseDirectory() isDirectory:YES];

Modified: trunk/Tools/ChangeLog (247624 => 247625)


--- trunk/Tools/ChangeLog	2019-07-18 23:31:36 UTC (rev 247624)
+++ trunk/Tools/ChangeLog	2019-07-18 23:46:09 UTC (rev 247625)
@@ -1,3 +1,13 @@
+2019-07-18  Alex Christensen  <achristen...@webkit.org>
+
+        Add and test _WKWebsiteDataStoreConfiguration.deviceIdHashSaltsStorageDirectory SPI
+        https://bugs.webkit.org/show_bug.cgi?id=199923
+
+        Reviewed by Youenn Fablet.
+
+        * TestWebKitAPI/Tests/WebKit/GetUserMediaNavigation.mm:
+        (TestWebKitAPI::TEST):
+
 2019-07-18  Aakash Jain  <aakash_j...@apple.com>
 
         [ews-build] Enable iOS WK2 tester queue on new EWS

Modified: trunk/Tools/TestWebKitAPI/Tests/WebKit/GetUserMediaNavigation.mm (247624 => 247625)


--- trunk/Tools/TestWebKitAPI/Tests/WebKit/GetUserMediaNavigation.mm	2019-07-18 23:31:36 UTC (rev 247624)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit/GetUserMediaNavigation.mm	2019-07-18 23:46:09 UTC (rev 247625)
@@ -34,7 +34,9 @@
 #import <WebKit/WKUIDelegatePrivate.h>
 #import <WebKit/WKWebView.h>
 #import <WebKit/WKWebViewConfiguration.h>
+#import <WebKit/WKWebsiteDataStorePrivate.h>
 #import <WebKit/_WKProcessPoolConfiguration.h>
+#import <WebKit/_WKWebsiteDataStoreConfiguration.h>
 
 static bool okToProceed = false;
 static bool shouldReleaseInEnumerate = false;
@@ -99,6 +101,36 @@
     TestWebKitAPI::Util::run(&okToProceed);
 }
 
+TEST(WebKit, DeviceIdHashSaltsDirectory)
+{
+    NSURL *tempDir = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"CustomPathsTest"] isDirectory:YES];
+    NSURL *hashSaltLocation = [tempDir URLByAppendingPathComponent:@"1"];
+    NSFileManager *fileManager = [NSFileManager defaultManager];
+    EXPECT_FALSE([fileManager fileExistsAtPath:hashSaltLocation.path]);
+    
+    auto websiteDataStoreConfiguration = adoptNS([[_WKWebsiteDataStoreConfiguration alloc] init]);
+    [websiteDataStoreConfiguration setDeviceIdHashSaltsStorageDirectory:tempDir];
+    
+    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
+    [configuration setWebsiteDataStore:[[[WKWebsiteDataStore alloc] _initWithConfiguration:websiteDataStoreConfiguration.get()] autorelease]];
+    auto processPoolConfig = adoptNS([[_WKProcessPoolConfiguration alloc] init]);
+    auto preferences = [configuration preferences];
+    preferences._mediaCaptureRequiresSecureConnection = NO;
+    preferences._mediaDevicesEnabled = YES;
+    preferences._mockCaptureDevicesEnabled = YES;
+    auto webView = [[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 500) configuration:configuration.get() processPoolConfiguration:processPoolConfig.get()];
+    auto delegate = adoptNS([[NavigationWhileGetUserMediaPromptDisplayedUIDelegate alloc] init]);
+    webView.UIDelegate = delegate.get();
+    
+    [webView loadTestPageNamed:@"enumerateMediaDevices"];
+    
+    while (![fileManager fileExistsAtPath:hashSaltLocation.path])
+        Util::spinRunLoop();
+    NSError *error = nil;
+    [fileManager removeItemAtPath:tempDir.path error:&error];
+    EXPECT_FALSE(error);
+}
+
 } // namespace TestWebKitAPI
 
 #endif // ENABLE(MEDIA_STREAM)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to