Title: [234396] trunk/Source
Revision
234396
Author
[email protected]
Date
2018-07-30 16:23:40 -0700 (Mon, 30 Jul 2018)

Log Message

Add support for fetching and remove type  _WKWebsiteDataTypeHSTSCache
https://bugs.webkit.org/show_bug.cgi?id=187379
<rdar://problem/41879559>

Source/WebCore/PAL:

Reviewed by Geoffrey Garen.

* pal/spi/cf/CFNetworkSPI.h:

Source/WebKit:

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):

Modified Paths

Diff

Modified: trunk/Source/WebCore/PAL/ChangeLog (234395 => 234396)


--- trunk/Source/WebCore/PAL/ChangeLog	2018-07-30 23:22:22 UTC (rev 234395)
+++ trunk/Source/WebCore/PAL/ChangeLog	2018-07-30 23:23:40 UTC (rev 234396)
@@ -1,3 +1,13 @@
+2018-07-30  Sihui Liu  <[email protected]>
+
+        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  <[email protected]>
 
         Add missing CoreGraphics SPI

Modified: trunk/Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h (234395 => 234396)


--- trunk/Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h	2018-07-30 23:22:22 UTC (rev 234395)
+++ trunk/Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h	2018-07-30 23:23:40 UTC (rev 234396)
@@ -197,11 +197,6 @@
 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 @@
 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);

Modified: trunk/Source/WebKit/ChangeLog (234395 => 234396)


--- trunk/Source/WebKit/ChangeLog	2018-07-30 23:22:22 UTC (rev 234395)
+++ trunk/Source/WebKit/ChangeLog	2018-07-30 23:23:40 UTC (rev 234396)
@@ -1,3 +1,40 @@
+2018-07-30  Sihui Liu  <[email protected]>
+
+        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  Simon Fraser  <[email protected]>
 
         Shrink GraphicsLayerCA

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (234395 => 234396)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2018-07-30 23:22:22 UTC (rev 234395)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2018-07-30 23:23:40 UTC (rev 234396)
@@ -551,6 +551,13 @@
             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,7 +615,7 @@
     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))
@@ -615,6 +622,13 @@
             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);
     });

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.h (234395 => 234396)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.h	2018-07-30 23:22:22 UTC (rev 234395)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.h	2018-07-30 23:23:40 UTC (rev 234396)
@@ -114,6 +114,8 @@
 
 #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 @@
 
     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();
 

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in (234395 => 234396)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in	2018-07-30 23:22:22 UTC (rev 234395)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in	2018-07-30 23:23:40 UTC (rev 234396)
@@ -40,7 +40,7 @@
 
     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)

Modified: trunk/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm (234395 => 234396)


--- trunk/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm	2018-07-30 23:22:22 UTC (rev 234395)
+++ trunk/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm	2018-07-30 23:23:40 UTC (rev 234396)
@@ -150,6 +150,26 @@
 #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();

Modified: trunk/Source/WebKit/Shared/WebsiteData/WebsiteData.cpp (234395 => 234396)


--- trunk/Source/WebKit/Shared/WebsiteData/WebsiteData.cpp	2018-07-30 23:22:22 UTC (rev 234395)
+++ trunk/Source/WebKit/Shared/WebsiteData/WebsiteData.cpp	2018-07-30 23:23:40 UTC (rev 234396)
@@ -66,6 +66,7 @@
     encoder << hostNamesWithPluginData;
 #endif
     encoder << originsWithCredentials;
+    encoder << hostNamesWithHSTSCache;
 }
 
 bool WebsiteData::decode(IPC::Decoder& decoder, WebsiteData& result)
@@ -80,6 +81,8 @@
 #endif
     if (!decoder.decode(result.originsWithCredentials))
         return false;
+    if (!decoder.decode(result.hostNamesWithHSTSCache))
+        return false;
     return true;
 }
 

Modified: trunk/Source/WebKit/Shared/WebsiteData/WebsiteData.h (234395 => 234396)


--- trunk/Source/WebKit/Shared/WebsiteData/WebsiteData.h	2018-07-30 23:22:22 UTC (rev 234395)
+++ trunk/Source/WebKit/Shared/WebsiteData/WebsiteData.h	2018-07-30 23:23:40 UTC (rev 234396)
@@ -58,6 +58,8 @@
 
     HashSet<String> originsWithCredentials;
 
+    HashSet<String> hostNamesWithHSTSCache;
+
     void encode(IPC::Encoder&) const;
     static bool decode(IPC::Decoder&, WebsiteData&);
 };

Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp (234395 => 234396)


--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp	2018-07-30 23:22:22 UTC (rev 234395)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp	2018-07-30 23:23:40 UTC (rev 234396)
@@ -178,7 +178,7 @@
     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 @@
         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()

Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h (234395 => 234396)


--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h	2018-07-30 23:22:22 UTC (rev 234395)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h	2018-07-30 23:23:40 UTC (rev 234396)
@@ -75,7 +75,7 @@
 
     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()>&&);

Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataRecord.cpp (234395 => 234396)


--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataRecord.cpp	2018-07-30 23:22:22 UTC (rev 234395)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataRecord.cpp	2018-07-30 23:23:40 UTC (rev 234396)
@@ -46,20 +46,11 @@
 #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 @@
 
     return String();
 }
-#endif
 
 String WebsiteDataRecord::displayNameForOrigin(const WebCore::SecurityOriginData& securityOrigin)
 {
@@ -107,6 +97,12 @@
 }
 #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))

Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataRecord.h (234395 => 234396)


--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataRecord.h	2018-07-30 23:22:22 UTC (rev 234395)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataRecord.h	2018-07-30 23:23:40 UTC (rev 234396)
@@ -43,9 +43,8 @@
 
 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 @@
     void addPluginDataHostName(const String& hostName);
 #endif
     void addOriginWithCredential(const String&);
+    void addHSTSCacheHostname(const String& hostName);
 
     String displayName;
     OptionSet<WebsiteDataType> types;
@@ -70,6 +70,7 @@
     HashSet<String> pluginDataHostNames;
 #endif
     HashSet<String> originsWithCredentials;
+    HashSet<String> HSTSCacheHostNames;
 
     bool matchesTopPrivatelyControlledDomain(const String&) const;
     String topPrivatelyControlledDomain();

Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp (234395 => 234396)


--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp	2018-07-30 23:22:22 UTC (rev 234395)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp	2018-07-30 23:23:40 UTC (rev 234396)
@@ -312,7 +312,7 @@
 
 #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 @@
                 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 @@
             }
 
             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();
             });
         }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to