Unreviewed, reverting r263724.
https://bugs.webkit.org/show_bug.cgi?id=213781
Reverted changeset:
"Make _WKWebsiteDataStoreConfiguration SPI for HSTS storage to
replace _WKProcessPoolConfiguration.hstsStorageDirectory"
https://bugs.webkit.org/show_bug.cgi?id=213048
https://trac.webkit.org/changeset/263724
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@263736 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WTF/ChangeLog b/Source/WTF/ChangeLog
index 310b192..a2c63f4 100644
--- a/Source/WTF/ChangeLog
+++ b/Source/WTF/ChangeLog
@@ -1,3 +1,16 @@
+2020-06-30 Commit Queue <commit-queue@webkit.org>
+
+ Unreviewed, reverting r263724.
+ https://bugs.webkit.org/show_bug.cgi?id=213781
+
+
+ Reverted changeset:
+
+ "Make _WKWebsiteDataStoreConfiguration SPI for HSTS storage to
+ replace _WKProcessPoolConfiguration.hstsStorageDirectory"
+ https://bugs.webkit.org/show_bug.cgi?id=213048
+ https://trac.webkit.org/changeset/263724
+
2020-06-29 Geoffrey Garen <ggaren@apple.com>
Unreviewed, rolling out an accidental change from r263723.
diff --git a/Source/WTF/wtf/PlatformHave.h b/Source/WTF/wtf/PlatformHave.h
index 1f4bc4a..48c0df3 100644
--- a/Source/WTF/wtf/PlatformHave.h
+++ b/Source/WTF/wtf/PlatformHave.h
@@ -407,13 +407,6 @@
#define HAVE_BROKEN_DOWNLOAD_RESUME_UNLINK 1
#endif
-#if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101600) \
- || ((PLATFORM(IOS) || PLATFORM(MACCATALYST)) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 140000) \
- || (PLATFORM(WATCHOS) && __WATCH_OS_VERSION_MIN_REQUIRED >= 70000) \
- || (PLATFORM(APPLETV) && __TV_OS_VERSION_MIN_REQUIRED >= 140000)
-#define HAVE_HSTS_STORAGE 1
-#endif
-
#if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101600) || (PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 140000)
#define HAVE_CFNETWORK_METRICS_APIS_V4 1
#endif
diff --git a/Source/WebCore/PAL/ChangeLog b/Source/WebCore/PAL/ChangeLog
index a4ee50f..f799dc0 100644
--- a/Source/WebCore/PAL/ChangeLog
+++ b/Source/WebCore/PAL/ChangeLog
@@ -1,3 +1,16 @@
+2020-06-30 Commit Queue <commit-queue@webkit.org>
+
+ Unreviewed, reverting r263724.
+ https://bugs.webkit.org/show_bug.cgi?id=213781
+
+
+ Reverted changeset:
+
+ "Make _WKWebsiteDataStoreConfiguration SPI for HSTS storage to
+ replace _WKProcessPoolConfiguration.hstsStorageDirectory"
+ https://bugs.webkit.org/show_bug.cgi?id=213048
+ https://trac.webkit.org/changeset/263724
+
2020-06-29 Alex Christensen <achristensen@webkit.org>
Make _WKWebsiteDataStoreConfiguration SPI for HSTS storage to replace _WKProcessPoolConfiguration.hstsStorageDirectory
diff --git a/Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h b/Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h
index b8c467f..6570fb9 100644
--- a/Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h
+++ b/Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h
@@ -407,7 +407,7 @@
CFDataRef _CFNetworkCopyATSContext(void);
Boolean _CFNetworkSetATSContext(CFDataRef);
-#if PLATFORM(COCOA) && !HAVE(HSTS_STORAGE)
+#if PLATFORM(COCOA)
extern const CFStringRef _kCFNetworkHSTSPreloaded;
CFDictionaryRef _CFNetworkCopyHSTSPolicies(CFURLStorageSessionRef);
void _CFNetworkResetHSTS(CFURLRef, CFURLStorageSessionRef);
@@ -458,22 +458,9 @@
- (void)_setMIMEType:(NSString *)type;
@end
-#if HAVE(HSTS_STORAGE)
-@interface _NSHSTSStorage : NSObject
--(instancetype)initPersistentStoreWithURL:(nullable NSURL*)path;
--(BOOL)shouldPromoteHostToHTTPS:(NSString *)host;
--(NSArray<NSString *> *)nonPreloadedHosts;
--(void)resetHSTSForHost:(NSString *)host;
--(void)resetHSTSHostsSinceDate:(NSDate *)date;
-@end
-#endif
-
@interface NSURLSessionConfiguration ()
// FIXME: Remove this once rdar://problem/40650244 is in a build.
@property (copy) NSDictionary *_socketStreamProperties;
-#if HAVE(HSTS_STORAGE)
-@property (nullable, retain) _NSHSTSStorage *_hstsStorage;
-#endif
@end
@interface NSURLSessionTask ()
diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog
index b950599..66727fd 100644
--- a/Source/WebKit/ChangeLog
+++ b/Source/WebKit/ChangeLog
@@ -1,3 +1,16 @@
+2020-06-30 Commit Queue <commit-queue@webkit.org>
+
+ Unreviewed, reverting r263724.
+ https://bugs.webkit.org/show_bug.cgi?id=213781
+
+
+ Reverted changeset:
+
+ "Make _WKWebsiteDataStoreConfiguration SPI for HSTS storage to
+ replace _WKProcessPoolConfiguration.hstsStorageDirectory"
+ https://bugs.webkit.org/show_bug.cgi?id=213048
+ https://trac.webkit.org/changeset/263724
+
2020-06-30 Youenn Fablet <youenn@apple.com>
Add VP9 WebRTC codec runtime flag
diff --git a/Source/WebKit/NetworkProcess/NetworkProcess.cpp b/Source/WebKit/NetworkProcess/NetworkProcess.cpp
index 9daf226..f123b20 100644
--- a/Source/WebKit/NetworkProcess/NetworkProcess.cpp
+++ b/Source/WebKit/NetworkProcess/NetworkProcess.cpp
@@ -1534,8 +1534,10 @@
}
#if PLATFORM(COCOA) || USE(SOUP)
- if (websiteDataTypes.contains(WebsiteDataType::HSTSCache))
- callbackAggregator->m_websiteData.hostNamesWithHSTSCache = hostNamesWithHSTSCache(sessionID);
+ if (websiteDataTypes.contains(WebsiteDataType::HSTSCache)) {
+ if (auto* networkStorageSession = storageSession(sessionID))
+ getHostNamesWithHSTSCache(*networkStorageSession, callbackAggregator->m_websiteData.hostNamesWithHSTSCache);
+ }
#endif
#if ENABLE(INDEXED_DATABASE)
@@ -1594,8 +1596,10 @@
void NetworkProcess::deleteWebsiteData(PAL::SessionID sessionID, OptionSet<WebsiteDataType> websiteDataTypes, WallTime modifiedSince, CallbackID callbackID)
{
#if PLATFORM(COCOA) || USE(SOUP)
- if (websiteDataTypes.contains(WebsiteDataType::HSTSCache))
- clearHSTSCache(sessionID, modifiedSince);
+ if (websiteDataTypes.contains(WebsiteDataType::HSTSCache)) {
+ if (auto* networkStorageSession = storageSession(sessionID))
+ clearHSTSCache(*networkStorageSession, modifiedSince);
+ }
#endif
if (websiteDataTypes.contains(WebsiteDataType::Cookies)) {
@@ -1697,8 +1701,10 @@
}
#if PLATFORM(COCOA) || USE(SOUP)
- if (websiteDataTypes.contains(WebsiteDataType::HSTSCache))
- deleteHSTSCacheForHostNames(sessionID, HSTSCacheHostNames);
+ if (websiteDataTypes.contains(WebsiteDataType::HSTSCache)) {
+ if (auto* networkStorageSession = storageSession(sessionID))
+ deleteHSTSCacheForHostNames(*networkStorageSession, HSTSCacheHostNames);
+ }
#endif
#if HAVE(CFNETWORK_ALTERNATIVE_SERVICE)
@@ -1866,13 +1872,15 @@
Vector<String> hostnamesWithHSTSToDelete;
#if PLATFORM(COCOA) || USE(SOUP)
if (websiteDataTypes.contains(WebsiteDataType::HSTSCache)) {
- hostNamesWithHSTSCache = this->hostNamesWithHSTSCache(sessionID);
- hostnamesWithHSTSToDelete = filterForRegistrableDomains(domainsToDeleteAllNonCookieWebsiteDataFor, hostNamesWithHSTSCache);
+ if (auto* networkStorageSession = storageSession(sessionID)) {
+ getHostNamesWithHSTSCache(*networkStorageSession, hostNamesWithHSTSCache);
+ hostnamesWithHSTSToDelete = filterForRegistrableDomains(domainsToDeleteAllNonCookieWebsiteDataFor, hostNamesWithHSTSCache);
- for (const auto& host : hostnamesWithHSTSToDelete)
- callbackAggregator->m_domains.add(RegistrableDomain::uncheckedCreateFromHost(host));
+ for (const auto& host : hostnamesWithHSTSToDelete)
+ callbackAggregator->m_domains.add(RegistrableDomain::uncheckedCreateFromHost(host));
- deleteHSTSCacheForHostNames(sessionID, hostnamesWithHSTSToDelete);
+ deleteHSTSCacheForHostNames(*networkStorageSession, hostnamesWithHSTSToDelete);
+ }
}
#endif
@@ -2049,16 +2057,18 @@
});
}));
- auto& websiteData = callbackAggregator->m_websiteData;
+ auto& websiteDataStore = callbackAggregator->m_websiteData;
if (websiteDataTypes.contains(WebsiteDataType::Cookies)) {
if (auto* networkStorageSession = storageSession(sessionID))
- networkStorageSession->getHostnamesWithCookies(websiteData.hostNamesWithCookies);
+ networkStorageSession->getHostnamesWithCookies(websiteDataStore.hostNamesWithCookies);
}
#if PLATFORM(COCOA) || USE(SOUP)
- if (websiteDataTypes.contains(WebsiteDataType::HSTSCache))
- websiteData.hostNamesWithHSTSCache = hostNamesWithHSTSCache(sessionID);
+ if (websiteDataTypes.contains(WebsiteDataType::HSTSCache)) {
+ if (auto* networkStorageSession = storageSession(sessionID))
+ getHostNamesWithHSTSCache(*networkStorageSession, websiteDataStore.hostNamesWithHSTSCache);
+ }
#endif
if (websiteDataTypes.contains(WebsiteDataType::Credentials)) {
diff --git a/Source/WebKit/NetworkProcess/NetworkProcess.h b/Source/WebKit/NetworkProcess/NetworkProcess.h
index 3239c4b..7fb9f7b 100644
--- a/Source/WebKit/NetworkProcess/NetworkProcess.h
+++ b/Source/WebKit/NetworkProcess/NetworkProcess.h
@@ -193,9 +193,9 @@
RetainPtr<CFDataRef> sourceApplicationAuditData() const;
#endif
#if PLATFORM(COCOA) || USE(SOUP)
- HashSet<String> hostNamesWithHSTSCache(PAL::SessionID) const;
- void deleteHSTSCacheForHostNames(PAL::SessionID, const Vector<String>&);
- void clearHSTSCache(PAL::SessionID, WallTime modifiedSince);
+ void getHostNamesWithHSTSCache(WebCore::NetworkStorageSession&, HashSet<String>&);
+ void deleteHSTSCacheForHostNames(WebCore::NetworkStorageSession&, const Vector<String>&);
+ void clearHSTSCache(WebCore::NetworkStorageSession&, WallTime modifiedSince);
#endif
void findPendingDownloadLocation(NetworkDataTask&, ResponseCompletionHandler&&, const WebCore::ResourceResponse&);
diff --git a/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp b/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp
index e2edbce..3d83cd2 100644
--- a/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp
+++ b/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp
@@ -57,8 +57,6 @@
encoder << alternativeServiceDirectoryExtensionHandle;
encoder << http3Enabled;
#endif
- encoder << hstsStorageDirectory;
- encoder << hstsStorageDirectoryExtensionHandle;
#if USE(SOUP)
encoder << cookiePersistentStoragePath;
encoder << cookiePersistentStorageType;
@@ -155,16 +153,6 @@
return WTF::nullopt;
#endif
- Optional<String> hstsStorageDirectory;
- decoder >> hstsStorageDirectory;
- if (!hstsStorageDirectory)
- return WTF::nullopt;
-
- Optional<SandboxExtension::Handle> hstsStorageDirectoryExtensionHandle;
- decoder >> hstsStorageDirectoryExtensionHandle;
- if (!hstsStorageDirectoryExtensionHandle)
- return WTF::nullopt;
-
#if USE(SOUP)
Optional<String> cookiePersistentStoragePath;
decoder >> cookiePersistentStoragePath;
@@ -287,8 +275,6 @@
, WTFMove(*alternativeServiceDirectoryExtensionHandle)
, WTFMove(*http3Enabled)
#endif
- , WTFMove(*hstsStorageDirectory)
- , WTFMove(*hstsStorageDirectoryExtensionHandle)
#if USE(SOUP)
, WTFMove(*cookiePersistentStoragePath)
, WTFMove(*cookiePersistentStorageType)
diff --git a/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h b/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h
index c342933..f677455 100644
--- a/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h
+++ b/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h
@@ -69,8 +69,6 @@
SandboxExtension::Handle alternativeServiceDirectoryExtensionHandle;
bool http3Enabled { false };
#endif
- String hstsStorageDirectory;
- SandboxExtension::Handle hstsStorageDirectoryExtensionHandle;
#if USE(SOUP)
String cookiePersistentStoragePath;
SoupCookiePersistentStorageType cookiePersistentStorageType { SoupCookiePersistentStorageType::Text };
diff --git a/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm b/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm
index d940b75..afbd930 100644
--- a/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm
+++ b/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm
@@ -134,7 +134,6 @@
#endif
}
-#if !HAVE(HSTS_STORAGE)
static void filterPreloadHSTSEntry(const void* key, const void* value, void* context)
{
RELEASE_ASSERT(context);
@@ -153,53 +152,27 @@
if (CFDictionaryGetValue(val, _kCFNetworkHSTSPreloaded) != kCFBooleanTrue)
hostnames->add((CFStringRef)key);
}
-#endif
-HashSet<String> NetworkProcess::hostNamesWithHSTSCache(PAL::SessionID sessionID) const
+void NetworkProcess::getHostNamesWithHSTSCache(WebCore::NetworkStorageSession& session, HashSet<String>& hostNames)
{
- HashSet<String> hostNames;
-#if HAVE(HSTS_STORAGE)
- if (auto* networkSession = static_cast<NetworkSessionCocoa*>(this->networkSession(sessionID))) {
- for (NSString *host in networkSession->hstsStorage().nonPreloadedHosts)
- hostNames.add(host);
- }
-#else
- if (auto* session = storageSession(sessionID)) {
- if (auto HSTSPolicies = adoptCF(_CFNetworkCopyHSTSPolicies(session->platformSession())))
- CFDictionaryApplyFunction(HSTSPolicies.get(), filterPreloadHSTSEntry, &hostNames);
- }
-#endif
- return hostNames;
+ if (auto HSTSPolicies = adoptCF(_CFNetworkCopyHSTSPolicies(session.platformSession())))
+ CFDictionaryApplyFunction(HSTSPolicies.get(), filterPreloadHSTSEntry, &hostNames);
}
-void NetworkProcess::deleteHSTSCacheForHostNames(PAL::SessionID sessionID, const Vector<String>& hostNames)
+void NetworkProcess::deleteHSTSCacheForHostNames(WebCore::NetworkStorageSession& session, const Vector<String>& hostNames)
{
-#if HAVE(HSTS_STORAGE)
- if (auto* networkSession = static_cast<NetworkSessionCocoa*>(this->networkSession(sessionID))) {
- for (auto& hostName : hostNames)
- [networkSession->hstsStorage() resetHSTSForHost:hostName];
+ for (auto& hostName : hostNames) {
+ auto url = URL({ }, makeString("https://", hostName));
+ _CFNetworkResetHSTS(url.createCFURL().get(), session.platformSession());
}
-#else
- if (auto* session = storageSession(sessionID)) {
- for (auto& hostName : hostNames) {
- auto url = URL({ }, makeString("https://", hostName));
- _CFNetworkResetHSTS(url.createCFURL().get(), session->platformSession());
- }
- }
-#endif
}
-void NetworkProcess::clearHSTSCache(PAL::SessionID sessionID, WallTime modifiedSince)
+void NetworkProcess::clearHSTSCache(WebCore::NetworkStorageSession& session, WallTime modifiedSince)
{
NSTimeInterval timeInterval = modifiedSince.secondsSinceEpoch().seconds();
NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeInterval];
-#if HAVE(HSTS_STORAGE)
- if (auto* networkSession = static_cast<NetworkSessionCocoa*>(this->networkSession(sessionID)))
- [networkSession->hstsStorage() resetHSTSHostsSinceDate:date];
-#else
- if (auto* session = storageSession(sessionID))
- _CFNetworkResetHSTSHostsSinceDate(session->platformSession(), (__bridge CFDateRef)date);
-#endif
+
+ _CFNetworkResetHSTSHostsSinceDate(session.platformSession(), (__bridge CFDateRef)date);
}
void NetworkProcess::clearDiskCache(WallTime modifiedSince, CompletionHandler<void()>&& completionHandler)
diff --git a/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h b/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h
index aa03921..9ca8fa6 100644
--- a/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h
+++ b/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h
@@ -33,7 +33,6 @@
OBJC_CLASS NSOperationQueue;
OBJC_CLASS WKNetworkSessionDelegate;
OBJC_CLASS WKNetworkSessionWebSocketDelegate;
-OBJC_CLASS _NSHSTSStorage;
#include "DownloadID.h"
#include "NetworkDataTaskCocoa.h"
@@ -105,7 +104,6 @@
void taskServerConnectionSucceeded(NetworkDataTaskCocoa::TaskIdentifier);
void taskFailed(NetworkDataTaskCocoa::TaskIdentifier);
NSURLCredential *successfulClientCertificateForHost(const String& host, uint16_t port) const;
- _NSHSTSStorage *hstsStorage() const;
private:
void invalidateAndCancel() override;
diff --git a/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm b/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm
index 75a045a..78fd2d2 100644
--- a/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm
+++ b/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm
@@ -68,10 +68,6 @@
#import "DeviceManagementSoftLink.h"
-// FIXME: Remove this soft link once rdar://problem/50109631 is in a build and bots are updated.
-SOFT_LINK_FRAMEWORK(CFNetwork)
-SOFT_LINK_CLASS_OPTIONAL(CFNetwork, _NSHSTSStorage)
-
using namespace WebKit;
CFStringRef const WebKit2HTTPProxyDefaultsKey = static_cast<CFStringRef>(@"WebKit2HTTPProxy");
@@ -1096,17 +1092,6 @@
return m_successfulClientCertificates.get(key).get();
}
-_NSHSTSStorage *NetworkSessionCocoa::hstsStorage() const
-{
-#if HAVE(HSTS_STORAGE)
- NSURLSessionConfiguration *configuration = m_sessionWithCredentialStorage.session.get().configuration;
- // FIXME: Remove this respondsToSelector check once rdar://problem/50109631 is in a build and bots are updated.
- if ([configuration respondsToSelector:@selector(_hstsStorage)])
- return m_sessionWithCredentialStorage.session.get().configuration._hstsStorage;
-#endif
- return nil;
-}
-
const String& NetworkSessionCocoa::boundInterfaceIdentifier() const
{
return m_boundInterfaceIdentifier;
@@ -1187,15 +1172,6 @@
NSURLSessionConfiguration *configuration = configurationForSessionID(m_sessionID);
-#if HAVE(HSTS_STORAGE)
- if (!!parameters.hstsStorageDirectory && !m_sessionID.isEphemeral()) {
- SandboxExtension::consumePermanently(parameters.hstsStorageDirectoryExtensionHandle);
- // FIXME: Remove this respondsToSelector check once rdar://problem/50109631 is in a build and bots are updated.
- if ([configuration respondsToSelector:@selector(_hstsStorage)])
- configuration._hstsStorage = [[alloc_NSHSTSStorageInstance() initPersistentStoreWithURL:[NSURL fileURLWithPath:parameters.hstsStorageDirectory isDirectory:YES]] autorelease];
- }
-#endif
-
#if HAVE(APP_SSO) || PLATFORM(MACCATALYST)
configuration._preventsAppSSO = true;
#endif
diff --git a/Source/WebKit/NetworkProcess/soup/NetworkProcessSoup.cpp b/Source/WebKit/NetworkProcess/soup/NetworkProcessSoup.cpp
index baf9bb9..60fa556 100644
--- a/Source/WebKit/NetworkProcess/soup/NetworkProcessSoup.cpp
+++ b/Source/WebKit/NetworkProcess/soup/NetworkProcessSoup.cpp
@@ -94,23 +94,21 @@
return builder.toString().utf8();
}
-HashSet<String> NetworkProcess::hostNamesWithHSTSCache(PAL::SessionID sessionID) const
+void NetworkProcess::getHostNamesWithHSTSCache(WebCore::NetworkStorageSession& storageSession, HashSet<String>& hostNames)
{
- HashSet<String> hostNames;
- const auto* session = static_cast<NetworkSessionSoup*>(networkSession(sessionID));
+ const auto* session = static_cast<NetworkSessionSoup*>(networkSession(storageSession.sessionID()));
session->soupNetworkSession().getHostNamesWithHSTSCache(hostNames);
- return hostNames;
}
-void NetworkProcess::deleteHSTSCacheForHostNames(PAL::SessionID sessionID, const Vector<String>& hostNames)
+void NetworkProcess::deleteHSTSCacheForHostNames(WebCore::NetworkStorageSession& storageSession, const Vector<String>& hostNames)
{
- const auto* session = static_cast<NetworkSessionSoup*>(networkSession(sessionID));
+ const auto* session = static_cast<NetworkSessionSoup*>(networkSession(storageSession.sessionID()));
session->soupNetworkSession().deleteHSTSCacheForHostNames(hostNames);
}
-void NetworkProcess::clearHSTSCache(PAL::SessionID sessionID, WallTime modifiedSince)
+void NetworkProcess::clearHSTSCache(WebCore::NetworkStorageSession& storageSession, WallTime modifiedSince)
{
- const auto* session = static_cast<NetworkSessionSoup*>(networkSession(sessionID));
+ const auto* session = static_cast<NetworkSessionSoup*>(networkSession(storageSession.sessionID()));
session->soupNetworkSession().clearHSTSCache(modifiedSince);
}
diff --git a/Source/WebKit/UIProcess/API/C/mac/WKContextPrivateMac.h b/Source/WebKit/UIProcess/API/C/mac/WKContextPrivateMac.h
index e98f5fd..4686e3b 100644
--- a/Source/WebKit/UIProcess/API/C/mac/WKContextPrivateMac.h
+++ b/Source/WebKit/UIProcess/API/C/mac/WKContextPrivateMac.h
@@ -27,7 +27,6 @@
#define WKContextPrivateMac_h
#include <WebKit/WKBase.h>
-#include <WebKit/WKDeprecated.h>
#include <WebKit/WKPluginLoadPolicy.h>
#ifdef __cplusplus
@@ -44,8 +43,10 @@
typedef void (^WKContextGetInfoForInstalledPlugInsBlock)(WKArrayRef, WKErrorRef);
WK_EXPORT void WKContextGetInfoForInstalledPlugIns(WKContextRef context, WKContextGetInfoForInstalledPlugInsBlock block);
-WK_EXPORT void WKContextResetHSTSHosts(WKContextRef context) WK_C_API_DEPRECATED;
-WK_EXPORT void WKContextResetHSTSHostsAddedAfterDate(WKContextRef context, double startDateIntervalSince1970) WK_C_API_DEPRECATED;
+WK_EXPORT void WKContextResetHSTSHosts(WKContextRef context);
+
+// The time here is relative to the Unix epoch.
+WK_EXPORT void WKContextResetHSTSHostsAddedAfterDate(WKContextRef context, double startDateIntervalSince1970);
WK_EXPORT void WKContextRegisterSchemeForCustomProtocol(WKContextRef context, WKStringRef scheme);
WK_EXPORT void WKContextUnregisterSchemeForCustomProtocol(WKContextRef context, WKStringRef scheme);
diff --git a/Source/WebKit/UIProcess/API/C/mac/WKContextPrivateMac.mm b/Source/WebKit/UIProcess/API/C/mac/WKContextPrivateMac.mm
index d3a0717..13c0c6f 100644
--- a/Source/WebKit/UIProcess/API/C/mac/WKContextPrivateMac.mm
+++ b/Source/WebKit/UIProcess/API/C/mac/WKContextPrivateMac.mm
@@ -101,12 +101,14 @@
#endif
}
-void WKContextResetHSTSHosts(WKContextRef)
+void WKContextResetHSTSHosts(WKContextRef context)
{
+ return WebKit::toImpl(context)->resetHSTSHosts();
}
-void WKContextResetHSTSHostsAddedAfterDate(WKContextRef, double)
+void WKContextResetHSTSHostsAddedAfterDate(WKContextRef context, double startDateIntervalSince1970)
{
+ return WebKit::toImpl(context)->resetHSTSHostsAddedAfterDate(startDateIntervalSince1970);
}
void WKContextRegisterSchemeForCustomProtocol(WKContextRef context, WKStringRef scheme)
diff --git a/Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h b/Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h
index 7226cc2..df2b919 100644
--- a/Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h
+++ b/Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h
@@ -68,7 +68,7 @@
@property (nonatomic) BOOL usesWebProcessCache WK_API_AVAILABLE(macos(10.14.4), ios(12.2));
@property (nonatomic) BOOL pageCacheEnabled WK_API_AVAILABLE(macos(10.14), ios(12.0));
@property (nonatomic, getter=isJITEnabled) BOOL JITEnabled WK_API_AVAILABLE(macos(10.14.4), ios(12.2));
-@property (nonatomic, nullable, copy, setter=setHSTSStorageDirectory:) NSURL *hstsStorageDirectory WK_API_DEPRECATED_WITH_REPLACEMENT("_WKWebsiteDataStoreConfiguration.hstsStorageDirectory", macos(10.15, WK_MAC_TBA), ios(13.0, WK_IOS_TBA));
+@property (nonatomic, nullable, copy, setter=setHSTSStorageDirectory:) NSURL *hstsStorageDirectory WK_API_AVAILABLE(macos(10.15), ios(13.0));
@property (nonatomic) BOOL configureJSCForTesting WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
diff --git a/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h b/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h
index 71c13d8..29d8c59 100644
--- a/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h
+++ b/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h
@@ -72,7 +72,6 @@
@property (nonatomic) NSUInteger testSpeedMultiplier WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
@property (nonatomic) BOOL suppressesConnectionTerminationOnSystemChange WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
@property (nonatomic) BOOL allowsServerPreconnect WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
-@property (nonatomic, nullable, copy, setter=setHSTSStorageDirectory:) NSURL *hstsStorageDirectory WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
@property (nonatomic, nullable, copy) NSURL *alternativeServicesStorageDirectory WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
diff --git a/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm b/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm
index bb97273..0153116 100644
--- a/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm
+++ b/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm
@@ -290,19 +290,6 @@
_configuration->setMediaKeysStorageDirectory(url.path);
}
-- (NSURL *)hstsStorageDirectory
-{
- return [NSURL fileURLWithPath:_configuration->hstsStorageDirectory() isDirectory:YES];
-}
-
-- (void)setHSTSStorageDirectory:(NSURL *)url
-{
- if (!_configuration->isPersistent())
- [NSException raise:NSInvalidArgumentException format:@"Cannot set mediaKeysStorageDirectory on a non-persistent _WKWebsiteDataStoreConfiguration."];
- checkURLArgument(url);
- _configuration->setHSTSStorageDirectory(url.path);
-}
-
- (NSURL *)alternativeServicesStorageDirectory
{
return [NSURL fileURLWithPath:_configuration->alternativeServicesDirectory() isDirectory:YES];
diff --git a/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm b/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm
index a1760f8..1fa6031 100644
--- a/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm
+++ b/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm
@@ -728,6 +728,18 @@
[[NSNotificationCenter defaultCenter] removeObserver:m_activationObserver.get()];
}
+static CFURLStorageSessionRef privateBrowsingSession()
+{
+ static CFURLStorageSessionRef session;
+ static dispatch_once_t once;
+ dispatch_once(&once, ^{
+ NSString *identifier = [NSString stringWithFormat:@"%@.PrivateBrowsing", [[NSBundle mainBundle] bundleIdentifier]];
+ session = createPrivateStorageSession((__bridge CFStringRef)identifier);
+ });
+
+ return session;
+}
+
bool WebProcessPool::isURLKnownHSTSHost(const String& urlString) const
{
RetainPtr<CFURLRef> url = URL(URL(), urlString).createCFURL();
@@ -735,6 +747,19 @@
return _CFNetworkIsKnownHSTSHostWithSession(url.get(), nullptr);
}
+void WebProcessPool::resetHSTSHosts()
+{
+ _CFNetworkResetHSTSHostsWithSession(nullptr);
+ _CFNetworkResetHSTSHostsWithSession(privateBrowsingSession());
+}
+
+void WebProcessPool::resetHSTSHostsAddedAfterDate(double startDateIntervalSince1970)
+{
+ NSDate *startDate = [NSDate dateWithTimeIntervalSince1970:startDateIntervalSince1970];
+ _CFNetworkResetHSTSHostsSinceDate(nullptr, (__bridge CFDateRef)startDate);
+ _CFNetworkResetHSTSHostsSinceDate(privateBrowsingSession(), (__bridge CFDateRef)startDate);
+}
+
#if PLATFORM(MAC) && ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING)
Optional<unsigned> WebProcessPool::nominalFramesPerSecondForDisplay(WebCore::PlatformDisplayID displayID)
{
diff --git a/Source/WebKit/UIProcess/WebProcessPool.h b/Source/WebKit/UIProcess/WebProcessPool.h
index 40bd8c1..bf2d8c7 100644
--- a/Source/WebKit/UIProcess/WebProcessPool.h
+++ b/Source/WebKit/UIProcess/WebProcessPool.h
@@ -422,6 +422,8 @@
static void didReceiveInvalidMessage(IPC::MessageName);
bool isURLKnownHSTSHost(const String& urlString) const;
+ void resetHSTSHosts();
+ void resetHSTSHostsAddedAfterDate(double startDateIntervalSince1970);
static void registerGlobalURLSchemeAsHavingCustomProtocolHandlers(const String&);
static void unregisterGlobalURLSchemeAsHavingCustomProtocolHandlers(const String&);
diff --git a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
index d6ae1c8..ce9bd7f 100644
--- a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
+++ b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
@@ -232,8 +232,6 @@
m_resolvedConfiguration->setJavaScriptConfigurationDirectory(resolvePathForSandboxExtension(m_configuration->javaScriptConfigurationDirectory()));
if (!m_configuration->cacheStorageDirectory().isEmpty() && m_resolvedConfiguration->cacheStorageDirectory().isEmpty())
m_resolvedConfiguration->setCacheStorageDirectory(resolvePathForSandboxExtension(m_configuration->cacheStorageDirectory()));
- if (!m_configuration->hstsStorageDirectory().isEmpty() && m_resolvedConfiguration->hstsStorageDirectory().isEmpty())
- m_resolvedConfiguration->setHSTSStorageDirectory(resolvePathForSandboxExtension(m_configuration->hstsStorageDirectory()));
// Resolve directories for file paths.
if (!m_configuration->cookieStorageFile().isEmpty()) {
@@ -2261,11 +2259,6 @@
if (!networkCacheDirectory.isEmpty())
SandboxExtension::createHandleForReadWriteDirectory(networkCacheDirectory, networkCacheDirectoryExtensionHandle);
- auto hstsStorageDirectory = resolvedHSTSStorageDirectory();
- SandboxExtension::Handle hstsStorageDirectoryExtensionHandle;
- if (!hstsStorageDirectory.isEmpty())
- SandboxExtension::createHandleForReadWriteDirectory(hstsStorageDirectory, hstsStorageDirectoryExtensionHandle);
-
bool shouldIncludeLocalhostInResourceLoadStatistics = false;
bool enableResourceLoadStatisticsDebugMode = false;
auto firstPartyWebsiteDataRemovalMode = WebCore::FirstPartyWebsiteDataRemovalMode::AllButCookies;
@@ -2307,8 +2300,6 @@
networkSessionParameters.allLoadsBlockedByDeviceManagementRestrictionsForTesting = m_configuration->allLoadsBlockedByDeviceManagementRestrictionsForTesting();
networkSessionParameters.networkCacheDirectory = WTFMove(networkCacheDirectory);
networkSessionParameters.networkCacheDirectoryExtensionHandle = WTFMove(networkCacheDirectoryExtensionHandle);
- networkSessionParameters.hstsStorageDirectory = WTFMove(hstsStorageDirectory);
- networkSessionParameters.hstsStorageDirectoryExtensionHandle = WTFMove(hstsStorageDirectoryExtensionHandle);
networkSessionParameters.dataConnectionServiceType = m_configuration->dataConnectionServiceType();
networkSessionParameters.fastServerTrustEvaluationEnabled = m_configuration->fastServerTrustEvaluationEnabled();
networkSessionParameters.networkCacheSpeculativeValidationEnabled = m_configuration->networkCacheSpeculativeValidationEnabled();
diff --git a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h
index 200558e..e422adc 100644
--- a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h
+++ b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h
@@ -224,7 +224,6 @@
const String& resolvedIndexedDatabaseDirectory() const { return m_resolvedConfiguration->indexedDBDatabaseDirectory(); }
const String& resolvedServiceWorkerRegistrationDirectory() const { return m_resolvedConfiguration->serviceWorkerRegistrationDirectory(); }
const String& resolvedResourceLoadStatisticsDirectory() const { return m_resolvedConfiguration->resourceLoadStatisticsDirectory(); }
- const String& resolvedHSTSStorageDirectory() const { return m_resolvedConfiguration->hstsStorageDirectory(); }
DeviceIdHashSaltStorage& deviceIdHashSaltStorage() { return m_deviceIdHashSaltStorage.get(); }
diff --git a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp
index 1b1bfa9..a75a790 100644
--- a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp
+++ b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp
@@ -67,7 +67,9 @@
copy->m_indexedDBDatabaseDirectory = this->m_indexedDBDatabaseDirectory;
copy->m_serviceWorkerRegistrationDirectory = this->m_serviceWorkerRegistrationDirectory;
copy->m_webSQLDatabaseDirectory = this->m_webSQLDatabaseDirectory;
+#if USE(GLIB)
copy->m_hstsStorageDirectory = this->m_hstsStorageDirectory;
+#endif
copy->m_localStorageDirectory = this->m_localStorageDirectory;
copy->m_mediaKeysStorageDirectory = this->m_mediaKeysStorageDirectory;
copy->m_alternativeServicesDirectory = this->m_alternativeServicesDirectory;
diff --git a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h
index cbb7edc..5dc7221 100644
--- a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h
+++ b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h
@@ -66,10 +66,10 @@
const String& webSQLDatabaseDirectory() const { return m_webSQLDatabaseDirectory; }
void setWebSQLDatabaseDirectory(String&& directory) { m_webSQLDatabaseDirectory = WTFMove(directory); }
-
+#if USE(GLIB) // According to r245075 this will eventually move here.
const String& hstsStorageDirectory() const { return m_hstsStorageDirectory; }
void setHSTSStorageDirectory(String&& directory) { m_hstsStorageDirectory = WTFMove(directory); }
-
+#endif
const String& localStorageDirectory() const { return m_localStorageDirectory; }
void setLocalStorageDirectory(String&& directory) { m_localStorageDirectory = WTFMove(directory); }
@@ -174,8 +174,8 @@
String m_indexedDBDatabaseDirectory;
String m_serviceWorkerRegistrationDirectory;
String m_webSQLDatabaseDirectory;
- String m_hstsStorageDirectory;
#if USE(GLIB)
+ String m_hstsStorageDirectory;
bool m_networkCacheSpeculativeValidationEnabled { true };
#else
bool m_networkCacheSpeculativeValidationEnabled { false };