WebKit Bugzilla
Attachment 346110 Details for
Bug 187379
: Add support for fetching and remove type _WKWebsiteDataTypeHSTSCache
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch for landing
bug-187379-20180730154320.patch (text/plain), 21.32 KB, created by
Sihui Liu
on 2018-07-30 15:43:21 PDT
(
hide
)
Description:
Patch for landing
Filename:
MIME Type:
Creator:
Sihui Liu
Created:
2018-07-30 15:43:21 PDT
Size:
21.32 KB
patch
obsolete
>Subversion Revision: 234383 >diff --git a/Source/WebCore/PAL/ChangeLog b/Source/WebCore/PAL/ChangeLog >index 4f46472e61d36ccdc689dccbe0971b9b1c113db5..d7bbd969f070ee808326da3344a138addb9bed99 100644 >--- a/Source/WebCore/PAL/ChangeLog >+++ b/Source/WebCore/PAL/ChangeLog >@@ -1,3 +1,13 @@ >+2018-07-30 Sihui Liu <sihui_liu@apple.com> >+ >+ Add support for fetching and remove type _WKWebsiteDataTypeHSTSCache >+ https://bugs.webkit.org/show_bug.cgi?id=187379 >+ <rdar://problem/41879559> >+ >+ Reviewed by Geoffrey Garen. >+ >+ * pal/spi/cf/CFNetworkSPI.h: >+ > 2018-07-30 Devin Rousso <webkit@devinrousso.com> > > Add missing CoreGraphics SPI >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 3cde204d32f42dd0f8d43e6bb265d375b735c5ab..a21372b5faafc37f9fdbfc54465d1ef220e89a90 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,40 @@ >+2018-07-30 Sihui Liu <sihui_liu@apple.com> >+ >+ Add support for fetching and remove type _WKWebsiteDataTypeHSTSCache >+ https://bugs.webkit.org/show_bug.cgi?id=187379 >+ <rdar://problem/41879559> >+ >+ WKWebsiteDataStore should support _WKWebsiteDataTypeHSTSCache so Safari could list HSTS cache entries >+ and be able to remove them on a per-domain basis. >+ >+ Reviewed by Geoffrey Garen. >+ >+ * NetworkProcess/NetworkProcess.cpp: >+ (WebKit::NetworkProcess::fetchWebsiteData): >+ (WebKit::NetworkProcess::deleteWebsiteDataForOrigins): >+ * NetworkProcess/NetworkProcess.h: >+ * NetworkProcess/NetworkProcess.messages.in: >+ * NetworkProcess/cocoa/NetworkProcessCocoa.mm: >+ (WebKit::filterPreloadHSTSEntry): >+ (WebKit::NetworkProcess::getHostNamesWithHSTSCache): >+ (WebKit::NetworkProcess::deleteHSTSCacheForHostNames): >+ * Shared/WebsiteData/WebsiteData.cpp: >+ (WebKit::WebsiteData::encode const): >+ (WebKit::WebsiteData::decode): >+ * Shared/WebsiteData/WebsiteData.h: >+ * UIProcess/Network/NetworkProcessProxy.cpp: >+ (WebKit::NetworkProcessProxy::deleteWebsiteDataForOrigins): >+ * UIProcess/Network/NetworkProcessProxy.h: >+ * UIProcess/WebsiteData/WebsiteDataRecord.cpp: >+ (WebKit::WebsiteDataRecord::displayNameForCookieHostName): >+ (WebKit::WebsiteDataRecord::displayNameForHostName): >+ (WebKit::WebsiteDataRecord::addHSTSCacheHostname): >+ (WebKit::WebsiteDataRecord::displayNameForPluginDataHostName): Deleted. >+ * UIProcess/WebsiteData/WebsiteDataRecord.h: >+ * UIProcess/WebsiteData/WebsiteDataStore.cpp: >+ (WebKit::WebsiteDataStore::fetchDataAndApply): >+ (WebKit::WebsiteDataStore::removeData): >+ > 2018-07-30 Devin Rousso <webkit@devinrousso.com> > > Add missing CoreGraphics SPI >diff --git a/Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h b/Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h >index b07a0a5c5a6a2d521704d7ab1186081c936270e8..d9ba909b7fb6f8fbd0d8d2915f3183b223376554 100644 >--- a/Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h >+++ b/Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h >@@ -197,11 +197,6 @@ CFIndex CFURLCacheMemoryCapacity(CFURLCacheRef); > void CFURLCacheSetDiskCapacity(CFURLCacheRef, CFIndex); > CFCachedURLResponseRef CFURLCacheCopyResponseForRequest(CFURLCacheRef, CFURLRequestRef); > >-#if PLATFORM(COCOA) >-Boolean _CFNetworkIsKnownHSTSHostWithSession(CFURLRef, CFURLStorageSessionRef); >-void _CFNetworkResetHSTSHostsWithSession(CFURLStorageSessionRef); >-#endif >- > void CFHTTPCookieStorageDeleteAllCookies(CFHTTPCookieStorageRef); > void _CFHTTPCookieStorageFlushCookieStores(); > >@@ -301,7 +296,12 @@ CFDataRef _CFNetworkCopyATSContext(void); > Boolean _CFNetworkSetATSContext(CFDataRef); > > #if PLATFORM(COCOA) >+extern const CFStringRef _kCFNetworkHSTSPreloaded; >+CFDictionaryRef _CFNetworkCopyHSTSPolicies(CFURLStorageSessionRef); >+void _CFNetworkResetHSTS(CFURLRef, CFURLStorageSessionRef); > void _CFNetworkResetHSTSHostsSinceDate(CFURLStorageSessionRef, CFDateRef); >+Boolean _CFNetworkIsKnownHSTSHostWithSession(CFURLRef, CFURLStorageSessionRef); >+void _CFNetworkResetHSTSHostsWithSession(CFURLStorageSessionRef); > #endif > > CFDataRef CFHTTPCookieStorageCreateIdentifyingData(CFAllocatorRef inAllocator, CFHTTPCookieStorageRef inStorage); >diff --git a/Source/WebKit/NetworkProcess/NetworkProcess.cpp b/Source/WebKit/NetworkProcess/NetworkProcess.cpp >index 5a124c8cc8eab79781222caead4b873b28b9b316..3a039e676f00179a23e184f16b22f93cd7eb9d3c 100644 >--- a/Source/WebKit/NetworkProcess/NetworkProcess.cpp >+++ b/Source/WebKit/NetworkProcess/NetworkProcess.cpp >@@ -551,6 +551,13 @@ void NetworkProcess::fetchWebsiteData(PAL::SessionID sessionID, OptionSet<Websit > callbackAggregator->m_websiteData.entries.appendVector(entries); > }); > } >+ >+#if PLATFORM(COCOA) >+ if (websiteDataTypes.contains(WebsiteDataType::HSTSCache)) { >+ if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID)) >+ getHostNamesWithHSTSCache(*networkStorageSession, callbackAggregator->m_websiteData.hostNamesWithHSTSCache); >+ } >+#endif > } > > void NetworkProcess::deleteWebsiteData(PAL::SessionID sessionID, OptionSet<WebsiteDataType> websiteDataTypes, WallTime modifiedSince, uint64_t callbackID) >@@ -608,13 +615,20 @@ static void clearDiskCacheEntries(const Vector<SecurityOriginData>& origins, Fun > RunLoop::main().dispatch(WTFMove(completionHandler)); > } > >-void NetworkProcess::deleteWebsiteDataForOrigins(PAL::SessionID sessionID, OptionSet<WebsiteDataType> websiteDataTypes, const Vector<SecurityOriginData>& originDatas, const Vector<String>& cookieHostNames, uint64_t callbackID) >+void NetworkProcess::deleteWebsiteDataForOrigins(PAL::SessionID sessionID, OptionSet<WebsiteDataType> websiteDataTypes, const Vector<SecurityOriginData>& originDatas, const Vector<String>& cookieHostNames, const Vector<String>& HSTSCacheHostNames, uint64_t callbackID) > { > if (websiteDataTypes.contains(WebsiteDataType::Cookies)) { > if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID)) > networkStorageSession->deleteCookiesForHostnames(cookieHostNames); > } > >+#if PLATFORM(COCOA) >+ if (websiteDataTypes.contains(WebsiteDataType::HSTSCache)) { >+ if (auto* networkStorageSession = NetworkStorageSession::storageSession(sessionID)) >+ deleteHSTSCacheForHostNames(*networkStorageSession, HSTSCacheHostNames); >+ } >+#endif >+ > auto clearTasksHandler = WTF::CallbackAggregator::create([this, callbackID] { > parentProcessConnection()->send(Messages::NetworkProcessProxy::DidDeleteWebsiteDataForOrigins(callbackID), 0); > }); >diff --git a/Source/WebKit/NetworkProcess/NetworkProcess.h b/Source/WebKit/NetworkProcess/NetworkProcess.h >index 879d5136a20a57fed74d557ade68ace606e9768e..d2917d8147f507be76b52b8c3c725f8622cd8be9 100644 >--- a/Source/WebKit/NetworkProcess/NetworkProcess.h >+++ b/Source/WebKit/NetworkProcess/NetworkProcess.h >@@ -114,6 +114,8 @@ public: > > #if PLATFORM(COCOA) > RetainPtr<CFDataRef> sourceApplicationAuditData() const; >+ void getHostNamesWithHSTSCache(WebCore::NetworkStorageSession&, HashSet<String>&); >+ void deleteHSTSCacheForHostNames(WebCore::NetworkStorageSession&, const Vector<String>&); > void clearHSTSCache(WebCore::NetworkStorageSession&, WallTime modifiedSince); > bool suppressesConnectionTerminationOnSystemChange() const { return m_suppressesConnectionTerminationOnSystemChange; } > #endif >@@ -208,7 +210,7 @@ private: > > void fetchWebsiteData(PAL::SessionID, OptionSet<WebsiteDataType>, OptionSet<WebsiteDataFetchOption>, uint64_t callbackID); > void deleteWebsiteData(PAL::SessionID, OptionSet<WebsiteDataType>, WallTime modifiedSince, uint64_t callbackID); >- void deleteWebsiteDataForOrigins(PAL::SessionID, OptionSet<WebsiteDataType>, const Vector<WebCore::SecurityOriginData>& origins, const Vector<String>& cookieHostNames, uint64_t callbackID); >+ void deleteWebsiteDataForOrigins(PAL::SessionID, OptionSet<WebsiteDataType>, const Vector<WebCore::SecurityOriginData>& origins, const Vector<String>& cookieHostNames, const Vector<String>& HSTSCacheHostnames, uint64_t callbackID); > > void clearCachedCredentials(); > >diff --git a/Source/WebKit/NetworkProcess/NetworkProcess.messages.in b/Source/WebKit/NetworkProcess/NetworkProcess.messages.in >index 2d6eb2c99e770a3824d4cc633c9e27d15bf593e6..ac5a81933d382183dd32e24c68d0aa0150084101 100644 >--- a/Source/WebKit/NetworkProcess/NetworkProcess.messages.in >+++ b/Source/WebKit/NetworkProcess/NetworkProcess.messages.in >@@ -40,7 +40,7 @@ messages -> NetworkProcess LegacyReceiver { > > FetchWebsiteData(PAL::SessionID sessionID, OptionSet<WebKit::WebsiteDataType> websiteDataTypes, OptionSet<WebKit::WebsiteDataFetchOption> fetchOptions, uint64_t callbackID) > DeleteWebsiteData(PAL::SessionID sessionID, OptionSet<WebKit::WebsiteDataType> websiteDataTypes, WallTime modifiedSince, uint64_t callbackID) >- DeleteWebsiteDataForOrigins(PAL::SessionID sessionID, OptionSet<WebKit::WebsiteDataType> websiteDataTypes, Vector<WebCore::SecurityOriginData> origins, Vector<String> cookieHostNames, uint64_t callbackID) >+ DeleteWebsiteDataForOrigins(PAL::SessionID sessionID, OptionSet<WebKit::WebsiteDataType> websiteDataTypes, Vector<WebCore::SecurityOriginData> origins, Vector<String> cookieHostNames, Vector<String> HSTSCacheHostNames, uint64_t callbackID) > > DownloadRequest(PAL::SessionID sessionID, WebKit::DownloadID downloadID, WebCore::ResourceRequest request, String suggestedFilename) > ResumeDownload(PAL::SessionID sessionID, WebKit::DownloadID downloadID, IPC::DataReference resumeData, String path, WebKit::SandboxExtension::Handle sandboxExtensionHandle) >diff --git a/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm b/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm >index 330ae446524716d0603a498f91d1997716ffa0a5..39f0011505cc3ada8e6bf666ccff50acdf4ee214 100644 >--- a/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm >+++ b/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm >@@ -150,6 +150,26 @@ RetainPtr<CFDataRef> NetworkProcess::sourceApplicationAuditData() const > #endif > } > >+static void filterPreloadHSTSEntry(const void* key, const void* value, void* context) >+{ >+ HashSet<String>* hostnames = static_cast<HashSet<String>*>(context); >+ auto val = static_cast<CFDictionaryRef>(value); >+ if (CFDictionaryGetValue(val, _kCFNetworkHSTSPreloaded) != kCFBooleanTrue) >+ hostnames->add((CFStringRef)key); >+} >+ >+void NetworkProcess::getHostNamesWithHSTSCache(WebCore::NetworkStorageSession& session, HashSet<String>& hostNames) >+{ >+ auto HSTSPolicies = adoptCF(_CFNetworkCopyHSTSPolicies(session.platformSession())); >+ CFDictionaryApplyFunction(HSTSPolicies.get(), filterPreloadHSTSEntry, &hostNames); >+} >+ >+void NetworkProcess::deleteHSTSCacheForHostNames(WebCore::NetworkStorageSession& session, const Vector<String>& hostNames) >+{ >+ for (auto& hostName : hostNames) >+ _CFNetworkResetHSTS(CFURLCreateWithString(kCFAllocatorDefault, hostName.createCFString().get(), NULL), session.platformSession()); >+} >+ > void NetworkProcess::clearHSTSCache(WebCore::NetworkStorageSession& session, WallTime modifiedSince) > { > NSTimeInterval timeInterval = modifiedSince.secondsSinceEpoch().seconds(); >diff --git a/Source/WebKit/Shared/WebsiteData/WebsiteData.cpp b/Source/WebKit/Shared/WebsiteData/WebsiteData.cpp >index 57c49ea1ca7fae57e0918168c2daae602e71253e..bf014a69ddf26293d9619cfc745ea042df36eaad 100644 >--- a/Source/WebKit/Shared/WebsiteData/WebsiteData.cpp >+++ b/Source/WebKit/Shared/WebsiteData/WebsiteData.cpp >@@ -66,6 +66,7 @@ void WebsiteData::encode(IPC::Encoder& encoder) const > encoder << hostNamesWithPluginData; > #endif > encoder << originsWithCredentials; >+ encoder << hostNamesWithHSTSCache; > } > > bool WebsiteData::decode(IPC::Decoder& decoder, WebsiteData& result) >@@ -80,6 +81,8 @@ bool WebsiteData::decode(IPC::Decoder& decoder, WebsiteData& result) > #endif > if (!decoder.decode(result.originsWithCredentials)) > return false; >+ if (!decoder.decode(result.hostNamesWithHSTSCache)) >+ return false; > return true; > } > >diff --git a/Source/WebKit/Shared/WebsiteData/WebsiteData.h b/Source/WebKit/Shared/WebsiteData/WebsiteData.h >index 748fb14ba05018e9b9d9d07994b6b643b2b961d3..df1ef8bb3cac12e7c120826b8700f738c6829294 100644 >--- a/Source/WebKit/Shared/WebsiteData/WebsiteData.h >+++ b/Source/WebKit/Shared/WebsiteData/WebsiteData.h >@@ -58,6 +58,8 @@ struct WebsiteData { > > HashSet<String> originsWithCredentials; > >+ HashSet<String> hostNamesWithHSTSCache; >+ > void encode(IPC::Encoder&) const; > static bool decode(IPC::Decoder&, WebsiteData&); > }; >diff --git a/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp b/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp >index eaef5e30d7d49d9563acc6c79610a80bb577d89b..27622147248f5481789c1ee0b676f36886c024c8 100644 >--- a/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp >+++ b/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp >@@ -178,7 +178,7 @@ void NetworkProcessProxy::deleteWebsiteData(PAL::SessionID sessionID, OptionSet< > send(Messages::NetworkProcess::DeleteWebsiteData(sessionID, dataTypes, modifiedSince, callbackID), 0); > } > >-void NetworkProcessProxy::deleteWebsiteDataForOrigins(PAL::SessionID sessionID, OptionSet<WebsiteDataType> dataTypes, const Vector<WebCore::SecurityOriginData>& origins, const Vector<String>& cookieHostNames, CompletionHandler<void()>&& completionHandler) >+void NetworkProcessProxy::deleteWebsiteDataForOrigins(PAL::SessionID sessionID, OptionSet<WebsiteDataType> dataTypes, const Vector<WebCore::SecurityOriginData>& origins, const Vector<String>& cookieHostNames, const Vector<String>& HSTSCacheHostNames, CompletionHandler<void()>&& completionHandler) > { > ASSERT(canSendMessage()); > >@@ -194,7 +194,7 @@ void NetworkProcessProxy::deleteWebsiteDataForOrigins(PAL::SessionID sessionID, > RELEASE_LOG_IF(sessionID.isAlwaysOnLoggingAllowed(), ProcessSuspension, "%p - NetworkProcessProxy is releasing a background assertion because the Network process is done deleting Website data for several origins", this); > }); > >- send(Messages::NetworkProcess::DeleteWebsiteDataForOrigins(sessionID, dataTypes, origins, cookieHostNames, callbackID), 0); >+ send(Messages::NetworkProcess::DeleteWebsiteDataForOrigins(sessionID, dataTypes, origins, cookieHostNames, HSTSCacheHostNames, callbackID), 0); > } > > void NetworkProcessProxy::networkProcessCrashed() >diff --git a/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h b/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h >index 3698fc611123ab816c2090247a09076362229706..2fa9b1bce3f7c8f0123a301e6039ca67fd732a16 100644 >--- a/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h >+++ b/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h >@@ -75,7 +75,7 @@ public: > > void fetchWebsiteData(PAL::SessionID, OptionSet<WebsiteDataType>, OptionSet<WebsiteDataFetchOption>, CompletionHandler<void(WebsiteData)>&&); > void deleteWebsiteData(PAL::SessionID, OptionSet<WebsiteDataType>, WallTime modifiedSince, CompletionHandler<void()>&& completionHandler); >- void deleteWebsiteDataForOrigins(PAL::SessionID, OptionSet<WebKit::WebsiteDataType>, const Vector<WebCore::SecurityOriginData>& origins, const Vector<String>& cookieHostNames, CompletionHandler<void()>&&); >+ void deleteWebsiteDataForOrigins(PAL::SessionID, OptionSet<WebKit::WebsiteDataType>, const Vector<WebCore::SecurityOriginData>& origins, const Vector<String>& cookieHostNames, const Vector<String>& HSTSCacheHostNames, CompletionHandler<void()>&&); > > #if HAVE(CFNETWORK_STORAGE_PARTITIONING) > void updatePrevalentDomainsToPartitionOrBlockCookies(PAL::SessionID, const Vector<String>& domainsToPartition, const Vector<String>& domainsToBlock, const Vector<String>& domainsToNeitherPartitionNorBlock, ShouldClearFirst, CompletionHandler<void()>&&); >diff --git a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataRecord.cpp b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataRecord.cpp >index c51af2f78c9fd6a78703a1c41d09c9927fe19369..f280c563e77539643999543f96db6631b69e0a94 100644 >--- a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataRecord.cpp >+++ b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataRecord.cpp >@@ -46,20 +46,11 @@ String WebsiteDataRecord::displayNameForCookieHostName(const String& hostName) > #if PLATFORM(COCOA) > if (hostName == String(kCFHTTPCookieLocalFileDomain)) > return displayNameForLocalFiles(); >-#else >- if (hostName == "localhost") >- return hostName; > #endif >- >-#if ENABLE(PUBLIC_SUFFIX_LIST) >- return WebCore::topPrivatelyControlledDomain(hostName.startsWith('.') ? hostName.substring(1) : hostName); >-#endif >- >- return String(); >+ return displayNameForHostName(hostName); > } > >-#if ENABLE(NETSCAPE_PLUGIN_API) >-String WebsiteDataRecord::displayNameForPluginDataHostName(const String& hostName) >+String WebsiteDataRecord::displayNameForHostName(const String& hostName) > { > #if ENABLE(PUBLIC_SUFFIX_LIST) > return WebCore::topPrivatelyControlledDomain(hostName); >@@ -67,7 +58,6 @@ String WebsiteDataRecord::displayNameForPluginDataHostName(const String& hostNam > > return String(); > } >-#endif > > String WebsiteDataRecord::displayNameForOrigin(const WebCore::SecurityOriginData& securityOrigin) > { >@@ -107,6 +97,12 @@ void WebsiteDataRecord::addPluginDataHostName(const String& hostName) > } > #endif > >+void WebsiteDataRecord::addHSTSCacheHostname(const String& hostName) >+{ >+ types |= WebsiteDataType::HSTSCache; >+ HSTSCacheHostNames.add(hostName); >+} >+ > static inline bool hostIsInDomain(StringView host, StringView domain) > { > if (!host.endsWithIgnoringASCIICase(domain)) >diff --git a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataRecord.h b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataRecord.h >index 24e6be414300f6f8cb2d814cd95a0c9b3bcffc79..61749a7b2c3bd5d2c5f9f4c0fa995a7be6d90624 100644 >--- a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataRecord.h >+++ b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataRecord.h >@@ -43,9 +43,8 @@ namespace WebKit { > > struct WebsiteDataRecord { > static String displayNameForCookieHostName(const String& hostName); >-#if ENABLE(NETSCAPE_PLUGIN_API) >- static String displayNameForPluginDataHostName(const String& hostName); >-#endif >+ static String displayNameForHostName(const String& hostName); >+ > static String displayNameForOrigin(const WebCore::SecurityOriginData&); > > void add(WebsiteDataType, const WebCore::SecurityOriginData&); >@@ -54,6 +53,7 @@ struct WebsiteDataRecord { > void addPluginDataHostName(const String& hostName); > #endif > void addOriginWithCredential(const String&); >+ void addHSTSCacheHostname(const String& hostName); > > String displayName; > OptionSet<WebsiteDataType> types; >@@ -70,6 +70,7 @@ struct WebsiteDataRecord { > HashSet<String> pluginDataHostNames; > #endif > HashSet<String> originsWithCredentials; >+ HashSet<String> HSTSCacheHostNames; > > bool matchesTopPrivatelyControlledDomain(const String&) const; > String topPrivatelyControlledDomain(); >diff --git a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp >index 4bd7978325d53399fd0f9e0b0204f85d6bdd8f89..17a5890981ad7597cdbde95615d4fd1a6cdaa2b8 100644 >--- a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp >+++ b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp >@@ -312,7 +312,7 @@ void WebsiteDataStore::fetchDataAndApply(OptionSet<WebsiteDataType> dataTypes, O > > #if ENABLE(NETSCAPE_PLUGIN_API) > for (auto& hostName : websiteData.hostNamesWithPluginData) { >- auto displayName = WebsiteDataRecord::displayNameForPluginDataHostName(hostName); >+ auto displayName = WebsiteDataRecord::displayNameForHostName(hostName); > if (!displayName) > continue; > >@@ -330,6 +330,18 @@ void WebsiteDataStore::fetchDataAndApply(OptionSet<WebsiteDataType> dataTypes, O > record.addOriginWithCredential(origin); > } > >+ for (auto& hostName : websiteData.hostNamesWithHSTSCache) { >+ auto displayName = WebsiteDataRecord::displayNameForHostName(hostName); >+ if (!displayName) >+ continue; >+ >+ auto& record = m_websiteDataRecords.add(displayName, WebsiteDataRecord { }).iterator->value; >+ if (!record.displayName) >+ record.displayName = WTFMove(displayName); >+ >+ record.addHSTSCacheHostname(hostName); >+ } >+ > callIfNeeded(); > } > >@@ -1014,13 +1026,16 @@ void WebsiteDataStore::removeData(OptionSet<WebsiteDataType> dataTypes, const Ve > } > > Vector<String> cookieHostNames; >+ Vector<String> HSTSCacheHostNames; > for (const auto& dataRecord : dataRecords) { > for (auto& hostName : dataRecord.cookieHostNames) > cookieHostNames.append(hostName); >+ for (auto& hostName : dataRecord.HSTSCacheHostNames) >+ HSTSCacheHostNames.append(hostName); > } > > callbackAggregator->addPendingCallback(); >- processPool->networkProcess()->deleteWebsiteDataForOrigins(m_sessionID, dataTypes, origins, cookieHostNames, [callbackAggregator, processPool] { >+ processPool->networkProcess()->deleteWebsiteDataForOrigins(m_sessionID, dataTypes, origins, cookieHostNames, HSTSCacheHostNames, [callbackAggregator, processPool] { > callbackAggregator->removePendingCallback(); > }); > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 187379
:
344403
|
344405
|
344673
|
345829
| 346110