Diff
Modified: trunk/Source/WebKit/ChangeLog (221336 => 221337)
--- trunk/Source/WebKit/ChangeLog 2017-08-30 02:40:03 UTC (rev 221336)
+++ trunk/Source/WebKit/ChangeLog 2017-08-30 02:54:31 UTC (rev 221337)
@@ -1,3 +1,25 @@
+2017-08-29 Brent Fulgham <bfulg...@apple.com>
+
+ ResourceLoadStatistics logic does not understand custom WebsiteData stores
+ https://bugs.webkit.org/show_bug.cgi?id=176037
+ <rdar://problem/33338238>
+
+ Reviewed by Alex Christensen.
+
+ The NetworkProcess::updateCookiePartitioningForTopPrivatelyOwnedDomains always notifies the default website
+ data store about observations it has made. This should be revised so that WebKit clients that register
+ custom data stores through the WKWebsiteDataStores API can be assured that observations made in one session
+ do not manipulate data from another session.
+
+ * NetworkProcess/NetworkProcess.cpp:
+ (WebKit::NetworkProcess::updateCookiePartitioningForTopPrivatelyOwnedDomains): Use the passed sessionID to locate
+ the correct NetworkStorageSession to notify about the new partitioning data.
+ * NetworkProcess/NetworkProcess.h:
+ * NetworkProcess/NetworkProcess.messages.in: Accept new argument.
+ * UIProcess/WebsiteData/WebsiteDataStore.cpp:
+ (WebKit::WebsiteDataStore::updateCookiePartitioningForTopPrivatelyOwnedDomains): Include the WebsiteDataStore's
+ session ID in the message to update cookie partition data.
+
2017-08-29 Alex Christensen <achristen...@webkit.org>
Automatically determine if a class has a modern decoder
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (221336 => 221337)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2017-08-30 02:40:03 UTC (rev 221336)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2017-08-30 02:54:31 UTC (rev 221337)
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012-2015 Apple Inc. All rights reserved.
+ * Copyright (C) 2012-2017 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -319,9 +319,10 @@
}
#if HAVE(CFNETWORK_STORAGE_PARTITIONING)
-void NetworkProcess::updateCookiePartitioningForTopPrivatelyOwnedDomains(const Vector<String>& domainsToRemove, const Vector<String>& domainsToAdd, bool shouldClearFirst)
+void NetworkProcess::updateCookiePartitioningForTopPrivatelyOwnedDomains(PAL::SessionID sessionID, const Vector<String>& domainsToRemove, const Vector<String>& domainsToAdd, bool shouldClearFirst)
{
- NetworkStorageSession::defaultStorageSession().setShouldPartitionCookiesForHosts(domainsToRemove, domainsToAdd, shouldClearFirst);
+ if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID))
+ networkStorageSession->setShouldPartitionCookiesForHosts(domainsToRemove, domainsToAdd, shouldClearFirst);
}
#endif
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.h (221336 => 221337)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2017-08-30 02:40:03 UTC (rev 221336)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2017-08-30 02:54:31 UTC (rev 221337)
@@ -130,7 +130,7 @@
void grantSandboxExtensionsToStorageProcessForBlobs(const Vector<String>& filenames, Function<void ()>&& completionHandler);
#if HAVE(CFNETWORK_STORAGE_PARTITIONING)
- void updateCookiePartitioningForTopPrivatelyOwnedDomains(const Vector<String>& domainsToRemove, const Vector<String>& domainsToAdd, bool shouldClearFirst);
+ void updateCookiePartitioningForTopPrivatelyOwnedDomains(PAL::SessionID, const Vector<String>& domainsToRemove, const Vector<String>& domainsToAdd, bool shouldClearFirst);
#endif
Seconds loadThrottleLatency() const { return m_loadThrottleLatency; }
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in (221336 => 221337)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in 2017-08-30 02:40:03 UTC (rev 221336)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in 2017-08-30 02:54:31 UTC (rev 221337)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012 Apple Inc. All rights reserved.
+# Copyright (C) 2012-2017 Apple Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
@@ -83,6 +83,6 @@
DidGrantSandboxExtensionsToStorageProcessForBlobs(uint64_t requestID)
#if HAVE(CFNETWORK_STORAGE_PARTITIONING)
- UpdateCookiePartitioningForTopPrivatelyOwnedDomains(Vector<String> domainsToRemove, Vector<String> domainsToAdd, bool shouldClearFirst)
+ UpdateCookiePartitioningForTopPrivatelyOwnedDomains(PAL::SessionID sessionID, Vector<String> domainsToRemove, Vector<String> domainsToAdd, bool shouldClearFirst)
#endif
}
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm (221336 => 221337)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm 2017-08-30 02:40:03 UTC (rev 221336)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm 2017-08-30 02:54:31 UTC (rev 221337)
@@ -189,6 +189,8 @@
config.indexedDBDatabaseDirectory = configuration._indexedDBDatabaseDirectory.path;
if (configuration._cookieStorageFile)
config.cookieStorageFile = configuration._cookieStorageFile.path;
+ if (configuration._resourceLoadStatisticsDirectory)
+ config.resourceLoadStatisticsDirectory = configuration._resourceLoadStatisticsDirectory.path;
API::Object::constructInWrapper<API::WebsiteDataStore>(self, config, PAL::SessionID::generatePersistentSessionID());
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h (221336 => 221337)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h 2017-08-30 02:40:03 UTC (rev 221336)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h 2017-08-30 02:54:31 UTC (rev 221337)
@@ -38,6 +38,7 @@
@property (nonatomic, copy, setter=_setIndexedDBDatabaseDirectory:) NSURL *_indexedDBDatabaseDirectory;
@property (nonatomic, copy, setter=_setWebSQLDatabaseDirectory:) NSURL *_webSQLDatabaseDirectory;
@property (nonatomic, copy, setter=_setCookieStorageFile:) NSURL *_cookieStorageFile;
+@property (nonatomic, copy, setter=_setResourceLoadStatisticsDirectory:) NSURL *_resourceLoadStatisticsDirectory;
@end
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm (221336 => 221337)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm 2017-08-30 02:40:03 UTC (rev 221336)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm 2017-08-30 02:54:31 UTC (rev 221337)
@@ -41,6 +41,7 @@
RetainPtr<NSURL> _indexedDBDatabaseDirectoryURL;
RetainPtr<NSURL> _webSQLDatabaseDirectoryURL;
RetainPtr<NSURL> _cookieStorageFileURL;
+ RetainPtr<NSURL> _resourceLoadStatisticsDirectoryURL;
}
-(NSURL *)_webStorageDirectory {
@@ -82,6 +83,15 @@
_cookieStorageFileURL = adoptNS([url copy]);
}
+-(NSURL *)_resourceLoadStatisticsDirectory {
+ return _resourceLoadStatisticsDirectoryURL.get();
+}
+
+-(void)_setResourceLoadStatisticsDirectory:(NSURL *)url {
+ checkURLArgument(url);
+ _resourceLoadStatisticsDirectoryURL = adoptNS([url copy]);
+}
+
@end
#endif
Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp (221336 => 221337)
--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp 2017-08-30 02:40:03 UTC (rev 221336)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp 2017-08-30 02:54:31 UTC (rev 221337)
@@ -1126,7 +1126,7 @@
void WebsiteDataStore::updateCookiePartitioningForTopPrivatelyOwnedDomains(const Vector<String>& domainsToRemove, const Vector<String>& domainsToAdd, ShouldClearFirst shouldClearFirst)
{
for (auto& processPool : processPools())
- processPool->sendToNetworkingProcess(Messages::NetworkProcess::UpdateCookiePartitioningForTopPrivatelyOwnedDomains(domainsToRemove, domainsToAdd, shouldClearFirst == ShouldClearFirst::Yes));
+ processPool->sendToNetworkingProcess(Messages::NetworkProcess::UpdateCookiePartitioningForTopPrivatelyOwnedDomains(m_sessionID, domainsToRemove, domainsToAdd, shouldClearFirst == ShouldClearFirst::Yes));
}
#endif
Modified: trunk/Tools/ChangeLog (221336 => 221337)
--- trunk/Tools/ChangeLog 2017-08-30 02:40:03 UTC (rev 221336)
+++ trunk/Tools/ChangeLog 2017-08-30 02:54:31 UTC (rev 221337)
@@ -1,3 +1,14 @@
+2017-08-29 Brent Fulgham <bfulg...@apple.com>
+
+ ResourceLoadStatistics logic does not understand custom WebsiteData stores
+ https://bugs.webkit.org/show_bug.cgi?id=176037
+ <rdar://problem/33338238>
+
+ Reviewed by Alex Christensen.
+
+ * TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:
+ (TEST): Update for ResourceLoadStatistics directories.
+
2017-08-29 Brady Eidson <beid...@apple.com>
Rename "potentionally trustworthy" to "potentially trustworthy"
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm (221336 => 221337)
--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm 2017-08-30 02:40:03 UTC (rev 221336)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm 2017-08-30 02:54:31 UTC (rev 221337)
@@ -78,26 +78,32 @@
NSURL *idbPath = [NSURL fileURLWithPath:[@"~/Library/WebKit/TestWebKitAPI/CustomWebsiteData/IndexedDB/" stringByExpandingTildeInPath] isDirectory:YES];
NSURL *localStoragePath = [NSURL fileURLWithPath:[@"~/Library/WebKit/TestWebKitAPI/CustomWebsiteData/LocalStorage/" stringByExpandingTildeInPath] isDirectory:YES];
NSURL *cookieStorageFile = [NSURL fileURLWithPath:[@"~/Library/WebKit/TestWebKitAPI/CustomWebsiteData/CookieStorage/Cookie.File" stringByExpandingTildeInPath] isDirectory:NO];
+ NSURL *resourceLoadStatisticsPath = [NSURL fileURLWithPath:[@"~/Library/WebKit/TestWebKitAPI/CustomWebsiteData/ResourceLoadStatistics/" stringByExpandingTildeInPath] isDirectory:YES];
NSURL *defaultSQLPath = [NSURL fileURLWithPath:[@"~/Library/WebKit/TestWebKitAPI/WebsiteData/WebSQL/" stringByExpandingTildeInPath] isDirectory:YES];
NSURL *defaultIDBPath = [NSURL fileURLWithPath:[@"~/Library/WebKit/TestWebKitAPI/WebsiteData/IndexedDB/" stringByExpandingTildeInPath] isDirectory:YES];
NSURL *defaultLocalStoragePath = [NSURL fileURLWithPath:[@"~/Library/WebKit/TestWebKitAPI/WebsiteData/LocalStorage/" stringByExpandingTildeInPath] isDirectory:YES];
+ NSURL *defaultResourceLoadStatisticsPath = [NSURL fileURLWithPath:[@"~/Library/WebKit/TestWebKitAPI/WebsiteData/ResourceLoadStatistics/" stringByExpandingTildeInPath] isDirectory:YES];
[[NSFileManager defaultManager] removeItemAtURL:sqlPath error:nil];
[[NSFileManager defaultManager] removeItemAtURL:idbPath error:nil];
[[NSFileManager defaultManager] removeItemAtURL:localStoragePath error:nil];
[[NSFileManager defaultManager] removeItemAtURL:cookieStorageFile error:nil];
+ [[NSFileManager defaultManager] removeItemAtURL:resourceLoadStatisticsPath error:nil];
[[NSFileManager defaultManager] removeItemAtURL:defaultSQLPath error:nil];
[[NSFileManager defaultManager] removeItemAtURL:defaultIDBPath error:nil];
[[NSFileManager defaultManager] removeItemAtURL:defaultLocalStoragePath error:nil];
+ [[NSFileManager defaultManager] removeItemAtURL:defaultResourceLoadStatisticsPath error:nil];
EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:sqlPath.path]);
EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:idbPath.path]);
EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:localStoragePath.path]);
EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:cookieStorageFile.path]);
+ EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:resourceLoadStatisticsPath.path]);
EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:defaultSQLPath.path]);
EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:defaultIDBPath.path]);
EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:defaultLocalStoragePath.path]);
+ EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:defaultResourceLoadStatisticsPath.path]);
RetainPtr<_WKWebsiteDataStoreConfiguration> websiteDataStoreConfiguration = adoptNS([[_WKWebsiteDataStoreConfiguration alloc] init]);
websiteDataStoreConfiguration.get()._webSQLDatabaseDirectory = sqlPath;
@@ -104,6 +110,7 @@
websiteDataStoreConfiguration.get()._indexedDBDatabaseDirectory = idbPath;
websiteDataStoreConfiguration.get()._webStorageDirectory = localStoragePath;
websiteDataStoreConfiguration.get()._cookieStorageFile = cookieStorageFile;
+ websiteDataStoreConfiguration.get()._resourceLoadStatisticsDirectory = resourceLoadStatisticsPath;
configuration.get().websiteDataStore = [[[WKWebsiteDataStore alloc] _initWithConfiguration:websiteDataStoreConfiguration.get()] autorelease];