Changeset 258932 in webkit
- Timestamp:
- Mar 24, 2020 1:14:06 PM (4 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r258928 r258932 1 2020-03-24 Chris Dumez <cdumez@apple.com> 2 3 Unreviewed, reverting r258928. 4 5 Broke the build 6 7 Reverted changeset: 8 9 "Refactor 10 ResourceLoadStatisticsStore::registrableDomainsToDeleteOrRestrictWebsiteDataFor() 11 to return a struct instead of a Vector of pairs" 12 https://bugs.webkit.org/show_bug.cgi?id=209463 13 https://trac.webkit.org/changeset/258928 14 1 15 2020-03-24 John Wilander <wilander@apple.com> 2 16 -
trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp
r258928 r258932 2354 2354 } 2355 2355 2356 RegistrableDomainsToDeleteOrRestrictWebsiteDataFor ResourceLoadStatisticsDatabaseStore::registrableDomainsToDeleteOrRestrictWebsiteDataFor()2356 Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>> ResourceLoadStatisticsDatabaseStore::registrableDomainsToRemoveWebsiteDataFor() 2357 2357 { 2358 2358 ASSERT(!RunLoop::isMain()); … … 2368 2368 auto now = WallTime::now(); 2369 2369 auto oldestUserInteraction = now; 2370 RegistrableDomainsToDeleteOrRestrictWebsiteDataFor toDeleteOrRestrictFor;2370 Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>> domainsToRemoveWebsiteDataFor; 2371 2371 2372 2372 Vector<DomainData> domains = this->domains(); … … 2374 2374 for (auto& statistic : domains) { 2375 2375 oldestUserInteraction = std::min(oldestUserInteraction, statistic.mostRecentUserInteractionTime); 2376 if (shouldRemoveAllWebsiteDataFor(statistic, shouldCheckForGrandfathering)) { 2377 toDeleteOrRestrictFor.domainsToDeleteAllCookiesFor.append(statistic.registrableDomain); 2378 toDeleteOrRestrictFor.domainsToDeleteAllNonCookieWebsiteDataFor.append(statistic.registrableDomain); 2379 } else if (shouldRemoveAllButCookiesFor(statistic, shouldCheckForGrandfathering)) { 2380 toDeleteOrRestrictFor.domainsToDeleteAllNonCookieWebsiteDataFor.append(statistic.registrableDomain); 2376 if (shouldRemoveAllWebsiteDataFor(statistic, shouldCheckForGrandfathering)) 2377 domainsToRemoveWebsiteDataFor.append(std::make_pair(statistic.registrableDomain, WebsiteDataToRemove::All)); 2378 else if (shouldRemoveAllButCookiesFor(statistic, shouldCheckForGrandfathering)) { 2379 domainsToRemoveWebsiteDataFor.append(std::make_pair(statistic.registrableDomain, WebsiteDataToRemove::AllButCookies)); 2381 2380 setIsScheduledForAllButCookieDataRemoval(statistic.registrableDomain, false); 2382 2381 } … … 2386 2385 2387 2386 // Give the user enough time to interact with websites until we remove non-cookie website data. 2388 if (!parameters().isRunningTest && now - oldestUserInteraction > parameters().minimumTimeBetweenDataRecordsRemoval) 2389 toDeleteOrRestrictFor.domainsToDeleteAllNonCookieWebsiteDataFor.clear(); 2387 if (!parameters().isRunningTest && now - oldestUserInteraction > parameters().minimumTimeBetweenDataRecordsRemoval) { 2388 domainsToRemoveWebsiteDataFor.removeAllMatching([&] (auto& pair) { 2389 return pair.second == WebsiteDataToRemove::AllButCookies; 2390 }); 2391 } 2390 2392 2391 2393 clearGrandfathering(WTFMove(domainIDsToClearGrandfathering)); 2392 2394 2393 return toDeleteOrRestrictFor;2395 return domainsToRemoveWebsiteDataFor; 2394 2396 } 2395 2397 -
trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h
r258928 r258932 216 216 bool shouldRemoveAllWebsiteDataFor(const DomainData&, bool shouldCheckForGrandfathering); 217 217 bool shouldRemoveAllButCookiesFor(const DomainData&, bool shouldCheckForGrandfathering); 218 RegistrableDomainsToDeleteOrRestrictWebsiteDataFor registrableDomainsToDeleteOrRestrictWebsiteDataFor() override;218 Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>> registrableDomainsToRemoveWebsiteDataFor() override; 219 219 bool isDatabaseStore() const final { return true; } 220 220 -
trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp
r258928 r258932 915 915 } 916 916 917 RegistrableDomainsToDeleteOrRestrictWebsiteDataFor ResourceLoadStatisticsMemoryStore::registrableDomainsToDeleteOrRestrictWebsiteDataFor()917 Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>> ResourceLoadStatisticsMemoryStore::registrableDomainsToRemoveWebsiteDataFor() 918 918 { 919 919 ASSERT(!RunLoop::isMain()); … … 927 927 auto now = WallTime::now(); 928 928 auto oldestUserInteraction = now; 929 RegistrableDomainsToDeleteOrRestrictWebsiteDataFor toDeleteOrRestrictFor;929 Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>> domainsToRemoveWebsiteDataFor; 930 930 for (auto& statistic : m_resourceStatisticsMap.values()) { 931 931 oldestUserInteraction = std::min(oldestUserInteraction, statistic.mostRecentUserInteractionTime); 932 if (shouldRemoveAllWebsiteDataFor(statistic, shouldCheckForGrandfathering)) { 933 toDeleteOrRestrictFor.domainsToDeleteAllCookiesFor.append(statistic.registrableDomain); 934 toDeleteOrRestrictFor.domainsToDeleteAllNonCookieWebsiteDataFor.append(statistic.registrableDomain); 935 } else if (shouldRemoveAllButCookiesFor(statistic, shouldCheckForGrandfathering)) { 936 toDeleteOrRestrictFor.domainsToDeleteAllNonCookieWebsiteDataFor.append(statistic.registrableDomain); 932 if (shouldRemoveAllWebsiteDataFor(statistic, shouldCheckForGrandfathering)) 933 domainsToRemoveWebsiteDataFor.append(std::make_pair(statistic.registrableDomain, WebsiteDataToRemove::All)); 934 else if (shouldRemoveAllButCookiesFor(statistic, shouldCheckForGrandfathering)) { 935 domainsToRemoveWebsiteDataFor.append(std::make_pair(statistic.registrableDomain, WebsiteDataToRemove::AllButCookies)); 937 936 statistic.gotLinkDecorationFromPrevalentResource = false; 938 937 } … … 943 942 944 943 // Give the user enough time to interact with websites until we remove non-cookie website data. 945 if (!parameters().isRunningTest && now - oldestUserInteraction > parameters().minimumTimeBetweenDataRecordsRemoval) 946 toDeleteOrRestrictFor.domainsToDeleteAllNonCookieWebsiteDataFor.clear(); 947 948 return toDeleteOrRestrictFor; 944 if (!parameters().isRunningTest && now - oldestUserInteraction > parameters().minimumTimeBetweenDataRecordsRemoval) { 945 domainsToRemoveWebsiteDataFor.removeAllMatching([&] (auto& pair) { 946 return pair.second == WebsiteDataToRemove::AllButCookies; 947 }); 948 } 949 950 return domainsToRemoveWebsiteDataFor; 949 951 } 950 952 -
trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h
r258928 r258932 131 131 void pruneStatisticsIfNeeded() override; 132 132 ResourceLoadStatistics& ensureResourceStatisticsForRegistrableDomain(const RegistrableDomain&); 133 RegistrableDomainsToDeleteOrRestrictWebsiteDataFor registrableDomainsToDeleteOrRestrictWebsiteDataFor() override;133 Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>> registrableDomainsToRemoveWebsiteDataFor() override; 134 134 bool isMemoryStore() const final { return true; } 135 135 -
trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp
r258928 r258932 68 68 } 69 69 70 static String domainsToString(const RegistrableDomainsToDeleteOrRestrictWebsiteDataFor& domainsToRemoveOrRestrictWebsiteDataFor)70 static String domainsToString(const Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>>& domainsToRemoveWebsiteDataFor) 71 71 { 72 72 StringBuilder builder; 73 for (auto& domain : domainsToRemoveOrRestrictWebsiteDataFor.domainsToDeleteAllCookiesFor) { 73 for (auto& pair : domainsToRemoveWebsiteDataFor) { 74 auto& domain = pair.first; 75 auto& dataToRemove = pair.second; 74 76 if (!builder.isEmpty()) 75 77 builder.appendLiteral(", "); 76 78 builder.append(domain.string()); 77 builder.appendLiteral("(all data)"); 78 } 79 for (auto& domain : domainsToRemoveOrRestrictWebsiteDataFor.domainsToDeleteAllButHttpOnlyCookiesFor) { 80 if (!builder.isEmpty()) 81 builder.appendLiteral(", "); 82 builder.append(domain.string()); 83 builder.appendLiteral("(all but HttpOnly cookies)"); 84 } 85 for (auto& domain : domainsToRemoveOrRestrictWebsiteDataFor.domainsToDeleteAllNonCookieWebsiteDataFor) { 86 if (!builder.isEmpty()) 87 builder.appendLiteral(", "); 88 builder.append(domain.string()); 89 builder.appendLiteral("(all but cookies)"); 79 switch (dataToRemove) { 80 case WebsiteDataToRemove::All: 81 builder.appendLiteral("(all data)"); 82 break; 83 case WebsiteDataToRemove::AllButHttpOnlyCookies: 84 builder.appendLiteral("(all but HttpOnly cookies)"); 85 break; 86 case WebsiteDataToRemove::AllButCookies: 87 builder.appendLiteral("(all but cookies)"); 88 break; 89 } 90 90 } 91 91 return builder.toString(); … … 200 200 #endif 201 201 202 auto domainsTo DeleteOrRestrictWebsiteDataFor = registrableDomainsToDeleteOrRestrictWebsiteDataFor();203 if (domainsTo DeleteOrRestrictWebsiteDataFor.isEmpty()) {202 auto domainsToRemoveWebsiteDataFor = registrableDomainsToRemoveWebsiteDataFor(); 203 if (domainsToRemoveWebsiteDataFor.isEmpty()) { 204 204 completionHandler(); 205 205 return; 206 206 } 207 207 208 RELEASE_LOG_INFO_IF(m_debugLoggingEnabled, ITPDebug, "About to remove data records for %" PUBLIC_LOG_STRING ".", domainsToString(domainsTo DeleteOrRestrictWebsiteDataFor).utf8().data());208 RELEASE_LOG_INFO_IF(m_debugLoggingEnabled, ITPDebug, "About to remove data records for %" PUBLIC_LOG_STRING ".", domainsToString(domainsToRemoveWebsiteDataFor).utf8().data()); 209 209 210 210 setDataRecordsBeingRemoved(true); 211 211 212 RunLoop::main().dispatch([store = makeRef(m_store), domainsTo DeleteOrRestrictWebsiteDataFor = crossThreadCopy(domainsToDeleteOrRestrictWebsiteDataFor), completionHandler = WTFMove(completionHandler), weakThis = makeWeakPtr(*this), shouldNotifyPagesWhenDataRecordsWereScanned = m_parameters.shouldNotifyPagesWhenDataRecordsWereScanned, workQueue = m_workQueue.copyRef()] () mutable {213 store->delete AndRestrictWebsiteDataForRegistrableDomains(WebResourceLoadStatisticsStore::monitoredDataTypes(), WTFMove(domainsToDeleteOrRestrictWebsiteDataFor), shouldNotifyPagesWhenDataRecordsWereScanned, [completionHandler = WTFMove(completionHandler), weakThis = WTFMove(weakThis), workQueue = workQueue.copyRef()](const HashSet<RegistrableDomain>& domainsWithDeletedWebsiteData) mutable {212 RunLoop::main().dispatch([store = makeRef(m_store), domainsToRemoveWebsiteDataFor = crossThreadCopy(domainsToRemoveWebsiteDataFor), completionHandler = WTFMove(completionHandler), weakThis = makeWeakPtr(*this), shouldNotifyPagesWhenDataRecordsWereScanned = m_parameters.shouldNotifyPagesWhenDataRecordsWereScanned, workQueue = m_workQueue.copyRef()] () mutable { 213 store->deleteWebsiteDataForRegistrableDomains(WebResourceLoadStatisticsStore::monitoredDataTypes(), WTFMove(domainsToRemoveWebsiteDataFor), shouldNotifyPagesWhenDataRecordsWereScanned, [completionHandler = WTFMove(completionHandler), weakThis = WTFMove(weakThis), workQueue = workQueue.copyRef()](const HashSet<RegistrableDomain>& domainsWithDeletedWebsiteData) mutable { 214 214 workQueue->dispatch([domainsWithDeletedWebsiteData = crossThreadCopy(domainsWithDeletedWebsiteData), completionHandler = WTFMove(completionHandler), weakThis = WTFMove(weakThis)] () mutable { 215 215 if (!weakThis) { -
trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h
r258928 r258932 204 204 void mergeOperatingDates(Vector<OperatingDate>&&); 205 205 virtual Vector<RegistrableDomain> ensurePrevalentResourcesForDebugMode() = 0; 206 virtual RegistrableDomainsToDeleteOrRestrictWebsiteDataFor registrableDomainsToDeleteOrRestrictWebsiteDataFor() = 0;206 virtual Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>> registrableDomainsToRemoveWebsiteDataFor() = 0; 207 207 virtual void pruneStatisticsIfNeeded() = 0; 208 208 -
trunk/Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp
r258928 r258932 1249 1249 } 1250 1250 1251 void WebResourceLoadStatisticsStore::delete AndRestrictWebsiteDataForRegistrableDomains(OptionSet<WebsiteDataType> dataTypes, RegistrableDomainsToDeleteOrRestrictWebsiteDataFor&& domainsToDeleteAndRestrictWebsiteDataFor, bool shouldNotifyPage, CompletionHandler<void(const HashSet<RegistrableDomain>&)>&& completionHandler)1251 void WebResourceLoadStatisticsStore::deleteWebsiteDataForRegistrableDomains(OptionSet<WebsiteDataType> dataTypes, Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>>&& domainsToRemoveWebsiteDataFor, bool shouldNotifyPage, CompletionHandler<void(const HashSet<RegistrableDomain>&)>&& completionHandler) 1252 1252 { 1253 1253 ASSERT(RunLoop::isMain()); 1254 1254 1255 1255 if (m_networkSession) { 1256 m_networkSession->delete AndRestrictWebsiteDataForRegistrableDomains(dataTypes, WTFMove(domainsToDeleteAndRestrictWebsiteDataFor), shouldNotifyPage, WTFMove(completionHandler));1256 m_networkSession->deleteWebsiteDataForRegistrableDomains(dataTypes, WTFMove(domainsToRemoveWebsiteDataFor), shouldNotifyPage, WTFMove(completionHandler)); 1257 1257 return; 1258 1258 } -
trunk/Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h
r258928 r258932 71 71 enum class ShouldIncludeLocalhost : bool { No, Yes }; 72 72 enum class EnableResourceLoadStatisticsDebugMode : bool { No, Yes }; 73 enum class WebsiteDataToRemove : uint8_t { 74 All, 75 AllButHttpOnlyCookies, 76 AllButCookies 77 }; 73 78 struct RegistrableDomainsToBlockCookiesFor { 74 79 Vector<WebCore::RegistrableDomain> domainsToBlockAndDeleteCookiesFor; … … 76 81 Vector<WebCore::RegistrableDomain> domainsWithUserInteractionAsFirstParty; 77 82 RegistrableDomainsToBlockCookiesFor isolatedCopy() const { return { domainsToBlockAndDeleteCookiesFor.isolatedCopy(), domainsToBlockButKeepCookiesFor.isolatedCopy(), domainsWithUserInteractionAsFirstParty.isolatedCopy() }; } 78 };79 struct RegistrableDomainsToDeleteOrRestrictWebsiteDataFor {80 Vector<WebCore::RegistrableDomain> domainsToDeleteAllCookiesFor;81 Vector<WebCore::RegistrableDomain> domainsToDeleteAllButHttpOnlyCookiesFor;82 Vector<WebCore::RegistrableDomain> domainsToDeleteAllNonCookieWebsiteDataFor;83 RegistrableDomainsToDeleteOrRestrictWebsiteDataFor isolatedCopy() const { return { domainsToDeleteAllCookiesFor.isolatedCopy(), domainsToDeleteAllButHttpOnlyCookiesFor.isolatedCopy(), domainsToDeleteAllNonCookieWebsiteDataFor.isolatedCopy() }; }84 bool isEmpty() const { return domainsToDeleteAllCookiesFor.isEmpty() && domainsToDeleteAllButHttpOnlyCookiesFor.isEmpty() && domainsToDeleteAllNonCookieWebsiteDataFor.isEmpty(); }85 83 }; 86 84 … … 218 216 void logCrossSiteLoadWithLinkDecoration(const NavigatedFromDomain&, const NavigatedToDomain&, CompletionHandler<void()>&&); 219 217 void clearUserInteraction(const TopFrameDomain&, CompletionHandler<void()>&&); 220 void delete AndRestrictWebsiteDataForRegistrableDomains(OptionSet<WebsiteDataType>, RegistrableDomainsToDeleteOrRestrictWebsiteDataFor&&, bool shouldNotifyPage, CompletionHandler<void(const HashSet<RegistrableDomain>&)>&&);218 void deleteWebsiteDataForRegistrableDomains(OptionSet<WebsiteDataType>, Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>>&&, bool shouldNotifyPage, CompletionHandler<void(const HashSet<RegistrableDomain>&)>&&); 221 219 void registrableDomainsWithWebsiteData(OptionSet<WebsiteDataType>, bool shouldNotifyPage, CompletionHandler<void(HashSet<RegistrableDomain>&&)>&&); 222 220 StorageAccessWasGranted grantStorageAccess(const SubFrameDomain&, const TopFrameDomain&, Optional<WebCore::FrameIdentifier>, WebCore::PageIdentifier); -
trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp
r258928 r258932 1710 1710 } 1711 1711 1712 void NetworkProcess::delete AndRestrictWebsiteDataForRegistrableDomains(PAL::SessionID sessionID, OptionSet<WebsiteDataType> websiteDataTypes, RegistrableDomainsToDeleteOrRestrictWebsiteDataFor&& domains, bool shouldNotifyPage, CompletionHandler<void(const HashSet<RegistrableDomain>&)>&& completionHandler)1712 void NetworkProcess::deleteWebsiteDataForRegistrableDomains(PAL::SessionID sessionID, OptionSet<WebsiteDataType> websiteDataTypes, Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>>&& domains, bool shouldNotifyPage, CompletionHandler<void(const HashSet<RegistrableDomain>&)>&& completionHandler) 1713 1713 { 1714 1714 OptionSet<WebsiteDataFetchOption> fetchOptions = WebsiteDataFetchOption::DoNotCreateProcesses; … … 1742 1742 HashSet<String> hostNamesWithCookies; 1743 1743 HashSet<String> hostNamesWithHSTSCache; 1744 1745 Vector<RegistrableDomain> domainsToDeleteCookiesFor; 1746 Vector<RegistrableDomain> domainsToDeleteAllButHttpOnlyCookiesFor; 1747 Vector<RegistrableDomain> domainsToDeleteAllButCookiesFor; 1744 1748 Vector<String> hostnamesWithCookiesToDelete; 1745 auto domainsToDeleteAllNonCookieWebsiteDataFor = domains.domainsToDeleteAllNonCookieWebsiteDataFor;1746 1749 if (websiteDataTypes.contains(WebsiteDataType::Cookies)) { 1750 for (auto& pair : domains) { 1751 auto& domain = pair.first; 1752 auto& dataToRemove = pair.second; 1753 domainsToDeleteAllButCookiesFor.append(domain); 1754 switch (dataToRemove) { 1755 case WebsiteDataToRemove::All: 1756 domainsToDeleteCookiesFor.append(domain); 1757 break; 1758 case WebsiteDataToRemove::AllButHttpOnlyCookies: 1759 domainsToDeleteAllButHttpOnlyCookiesFor.append(domain); 1760 break; 1761 case WebsiteDataToRemove::AllButCookies: 1762 // Already added. 1763 break; 1764 } 1765 } 1747 1766 if (auto* networkStorageSession = storageSession(sessionID)) { 1748 1767 networkStorageSession->getHostnamesWithCookies(hostNamesWithCookies); 1749 1768 1750 hostnamesWithCookiesToDelete = filterForRegistrableDomains(domains .domainsToDeleteAllCookiesFor, hostNamesWithCookies);1769 hostnamesWithCookiesToDelete = filterForRegistrableDomains(domainsToDeleteCookiesFor, hostNamesWithCookies); 1751 1770 networkStorageSession->deleteCookiesForHostnames(hostnamesWithCookiesToDelete, WebCore::IncludeHttpOnlyCookies::Yes); 1752 1771 … … 1754 1773 callbackAggregator->m_domains.add(RegistrableDomain::uncheckedCreateFromHost(host)); 1755 1774 1756 hostnamesWithCookiesToDelete = filterForRegistrableDomains(domains .domainsToDeleteAllButHttpOnlyCookiesFor, hostNamesWithCookies);1775 hostnamesWithCookiesToDelete = filterForRegistrableDomains(domainsToDeleteAllButHttpOnlyCookiesFor, hostNamesWithCookies); 1757 1776 networkStorageSession->deleteCookiesForHostnames(hostnamesWithCookiesToDelete, WebCore::IncludeHttpOnlyCookies::No); 1758 1777 … … 1760 1779 callbackAggregator->m_domains.add(RegistrableDomain::uncheckedCreateFromHost(host)); 1761 1780 } 1781 } else { 1782 for (auto& domain : domains) 1783 domainsToDeleteAllButCookiesFor.append(domain.first); 1762 1784 } 1763 1785 … … 1767 1789 if (auto* networkStorageSession = storageSession(sessionID)) { 1768 1790 getHostNamesWithHSTSCache(*networkStorageSession, hostNamesWithHSTSCache); 1769 hostnamesWithHSTSToDelete = filterForRegistrableDomains(domainsToDeleteAll NonCookieWebsiteDataFor, hostNamesWithHSTSCache);1791 hostnamesWithHSTSToDelete = filterForRegistrableDomains(domainsToDeleteAllButCookiesFor, hostNamesWithHSTSCache); 1770 1792 1771 1793 for (const auto& host : hostnamesWithHSTSToDelete) … … 1792 1814 if (auto* session = storageSession(sessionID)) { 1793 1815 auto origins = session->credentialStorage().originsWithCredentials(); 1794 auto originsToDelete = filterForRegistrableDomains(origins, domainsToDeleteAll NonCookieWebsiteDataFor, callbackAggregator->m_domains);1816 auto originsToDelete = filterForRegistrableDomains(origins, domainsToDeleteAllButCookiesFor, callbackAggregator->m_domains); 1795 1817 for (auto& origin : originsToDelete) 1796 1818 session->credentialStorage().removeCredentialsWithOrigin(origin); … … 1798 1820 1799 1821 auto origins = WebCore::CredentialStorage::originsWithSessionCredentials(); 1800 auto originsToDelete = filterForRegistrableDomains(origins, domainsToDeleteAll NonCookieWebsiteDataFor, callbackAggregator->m_domains);1822 auto originsToDelete = filterForRegistrableDomains(origins, domainsToDeleteAllButCookiesFor, callbackAggregator->m_domains); 1801 1823 WebCore::CredentialStorage::removeSessionCredentialsWithOrigins(originsToDelete); 1802 1824 } 1803 1825 1804 1826 if (websiteDataTypes.contains(WebsiteDataType::DOMCache)) { 1805 CacheStorage::Engine::fetchEntries(*this, sessionID, fetchOptions.contains(WebsiteDataFetchOption::ComputeSizes), [this, domainsToDeleteAll NonCookieWebsiteDataFor, sessionID, callbackAggregator = callbackAggregator.copyRef()](auto entries) mutable {1827 CacheStorage::Engine::fetchEntries(*this, sessionID, fetchOptions.contains(WebsiteDataFetchOption::ComputeSizes), [this, domainsToDeleteAllButCookiesFor, sessionID, callbackAggregator = callbackAggregator.copyRef()](auto entries) mutable { 1806 1828 1807 auto entriesToDelete = filterForRegistrableDomains(domainsToDeleteAll NonCookieWebsiteDataFor, entries);1829 auto entriesToDelete = filterForRegistrableDomains(domainsToDeleteAllButCookiesFor, entries); 1808 1830 1809 1831 for (const auto& entry : entriesToDelete) … … 1817 1839 if (m_storageManagerSet->contains(sessionID)) { 1818 1840 if (websiteDataTypes.contains(WebsiteDataType::SessionStorage)) { 1819 m_storageManagerSet->getSessionStorageOrigins(sessionID, [protectedThis = makeRef(*this), this, sessionID, callbackAggregator = callbackAggregator.copyRef(), domainsToDeleteAll NonCookieWebsiteDataFor](auto&& origins) {1820 auto originsToDelete = filterForRegistrableDomains(origins, domainsToDeleteAll NonCookieWebsiteDataFor, callbackAggregator->m_domains);1841 m_storageManagerSet->getSessionStorageOrigins(sessionID, [protectedThis = makeRef(*this), this, sessionID, callbackAggregator = callbackAggregator.copyRef(), domainsToDeleteAllButCookiesFor](auto&& origins) { 1842 auto originsToDelete = filterForRegistrableDomains(origins, domainsToDeleteAllButCookiesFor, callbackAggregator->m_domains); 1821 1843 m_storageManagerSet->deleteSessionStorageForOrigins(sessionID, originsToDelete, [callbackAggregator = callbackAggregator.copyRef()] { }); 1822 1844 }); … … 1824 1846 1825 1847 if (websiteDataTypes.contains(WebsiteDataType::LocalStorage)) { 1826 m_storageManagerSet->getLocalStorageOrigins(sessionID, [protectedThis = makeRef(*this), this, sessionID, callbackAggregator = callbackAggregator.copyRef(), domainsToDeleteAll NonCookieWebsiteDataFor](auto&& origins) {1827 auto originsToDelete = filterForRegistrableDomains(origins, domainsToDeleteAll NonCookieWebsiteDataFor, callbackAggregator->m_domains);1848 m_storageManagerSet->getLocalStorageOrigins(sessionID, [protectedThis = makeRef(*this), this, sessionID, callbackAggregator = callbackAggregator.copyRef(), domainsToDeleteAllButCookiesFor](auto&& origins) { 1849 auto originsToDelete = filterForRegistrableDomains(origins, domainsToDeleteAllButCookiesFor, callbackAggregator->m_domains); 1828 1850 m_storageManagerSet->deleteLocalStorageForOrigins(sessionID, originsToDelete, [callbackAggregator = callbackAggregator.copyRef()] { }); 1829 1851 }); … … 1835 1857 if (!path.isEmpty() && websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases)) { 1836 1858 // FIXME: Pick the right database store based on the session ID. 1837 postStorageTask(CrossThreadTask([this, sessionID, callbackAggregator = callbackAggregator.copyRef(), path = crossThreadCopy(path), domainsToDeleteAll NonCookieWebsiteDataFor = crossThreadCopy(domainsToDeleteAllNonCookieWebsiteDataFor)]() mutable {1838 RunLoop::main().dispatch([this, sessionID, domainsToDeleteAll NonCookieWebsiteDataFor = WTFMove(domainsToDeleteAllNonCookieWebsiteDataFor), callbackAggregator = callbackAggregator.copyRef(), securityOrigins = indexedDatabaseOrigins(path)] {1859 postStorageTask(CrossThreadTask([this, sessionID, callbackAggregator = callbackAggregator.copyRef(), path = crossThreadCopy(path), domainsToDeleteAllButCookiesFor = crossThreadCopy(domainsToDeleteAllButCookiesFor)]() mutable { 1860 RunLoop::main().dispatch([this, sessionID, domainsToDeleteAllButCookiesFor = WTFMove(domainsToDeleteAllButCookiesFor), callbackAggregator = callbackAggregator.copyRef(), securityOrigins = indexedDatabaseOrigins(path)] { 1839 1861 Vector<SecurityOriginData> entriesToDelete; 1840 1862 for (const auto& securityOrigin : securityOrigins) { 1841 1863 auto domain = RegistrableDomain::uncheckedCreateFromHost(securityOrigin.host); 1842 if (!domainsToDeleteAll NonCookieWebsiteDataFor.contains(domain))1864 if (!domainsToDeleteAllButCookiesFor.contains(domain)) 1843 1865 continue; 1844 1866 … … 1856 1878 path = m_serviceWorkerInfo.get(sessionID).databasePath; 1857 1879 if (!path.isEmpty() && websiteDataTypes.contains(WebsiteDataType::ServiceWorkerRegistrations)) { 1858 swServerForSession(sessionID).getOriginsWithRegistrations([this, sessionID, domainsToDeleteAll NonCookieWebsiteDataFor, callbackAggregator = callbackAggregator.copyRef()](const HashSet<SecurityOriginData>& securityOrigins) mutable {1880 swServerForSession(sessionID).getOriginsWithRegistrations([this, sessionID, domainsToDeleteAllButCookiesFor, callbackAggregator = callbackAggregator.copyRef()](const HashSet<SecurityOriginData>& securityOrigins) mutable { 1859 1881 for (auto& securityOrigin : securityOrigins) { 1860 if (!domainsToDeleteAll NonCookieWebsiteDataFor.contains(RegistrableDomain::uncheckedCreateFromHost(securityOrigin.host)))1882 if (!domainsToDeleteAllButCookiesFor.contains(RegistrableDomain::uncheckedCreateFromHost(securityOrigin.host))) 1861 1883 continue; 1862 1884 callbackAggregator->m_domains.add(RegistrableDomain::uncheckedCreateFromHost(securityOrigin.host)); … … 1868 1890 1869 1891 if (websiteDataTypes.contains(WebsiteDataType::DiskCache)) { 1870 forEachNetworkSession([sessionID, fetchOptions, &domainsToDeleteAll NonCookieWebsiteDataFor, &callbackAggregator](auto& session) {1871 fetchDiskCacheEntries(session.cache(), sessionID, fetchOptions, [domainsToDeleteAll NonCookieWebsiteDataFor, callbackAggregator = callbackAggregator.copyRef(), session = makeWeakPtr(&session)](auto entries) mutable {1892 forEachNetworkSession([sessionID, fetchOptions, &domainsToDeleteAllButCookiesFor, &callbackAggregator](auto& session) { 1893 fetchDiskCacheEntries(session.cache(), sessionID, fetchOptions, [domainsToDeleteAllButCookiesFor, callbackAggregator = callbackAggregator.copyRef(), session = makeWeakPtr(&session)](auto entries) mutable { 1872 1894 if (!session) 1873 1895 return; … … 1875 1897 Vector<SecurityOriginData> entriesToDelete; 1876 1898 for (auto& entry : entries) { 1877 if (!domainsToDeleteAll NonCookieWebsiteDataFor.contains(RegistrableDomain::uncheckedCreateFromHost(entry.origin.host)))1899 if (!domainsToDeleteAllButCookiesFor.contains(RegistrableDomain::uncheckedCreateFromHost(entry.origin.host))) 1878 1900 continue; 1879 1901 entriesToDelete.append(entry.origin); … … 1886 1908 1887 1909 auto dataTypesForUIProcess = WebsiteData::filter(websiteDataTypes, WebsiteDataProcessType::UI); 1888 if (!dataTypesForUIProcess.isEmpty() && !domainsToDeleteAll NonCookieWebsiteDataFor.isEmpty()) {1910 if (!dataTypesForUIProcess.isEmpty() && !domainsToDeleteAllButCookiesFor.isEmpty()) { 1889 1911 CompletionHandler<void(const HashSet<RegistrableDomain>&)> completionHandler = [callbackAggregator = callbackAggregator.copyRef()] (const HashSet<RegistrableDomain>& domains) { 1890 1912 for (auto& domain : domains) 1891 1913 callbackAggregator->m_domains.add(domain); 1892 1914 }; 1893 parentProcessConnection()->sendWithAsyncReply(Messages::NetworkProcessProxy::DeleteWebsiteDataInUIProcessForRegistrableDomains(sessionID, dataTypesForUIProcess, fetchOptions, domainsToDeleteAll NonCookieWebsiteDataFor), WTFMove(completionHandler));1915 parentProcessConnection()->sendWithAsyncReply(Messages::NetworkProcessProxy::DeleteWebsiteDataInUIProcessForRegistrableDomains(sessionID, dataTypesForUIProcess, fetchOptions, domainsToDeleteAllButCookiesFor), WTFMove(completionHandler)); 1894 1916 } 1895 1917 } … … 1898 1920 { 1899 1921 OptionSet<WebsiteDataType> cookieType = WebsiteDataType::Cookies; 1900 RegistrableDomainsToDeleteOrRestrictWebsiteDataFor toDeleteFor; 1901 if (includeHttpOnlyCookies) 1902 toDeleteFor.domainsToDeleteAllCookiesFor.append(domain); 1903 else 1904 toDeleteFor.domainsToDeleteAllButHttpOnlyCookiesFor.append(domain); 1905 1906 deleteAndRestrictWebsiteDataForRegistrableDomains(sessionID, cookieType, WTFMove(toDeleteFor), true, [completionHandler = WTFMove(completionHandler)] (const HashSet<RegistrableDomain>& domainsDeletedFor) mutable { 1922 Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>> toDeleteFor = { 1923 std::make_pair(domain, includeHttpOnlyCookies ? WebsiteDataToRemove::All : WebsiteDataToRemove::AllButHttpOnlyCookies) 1924 }; 1925 deleteWebsiteDataForRegistrableDomains(sessionID, cookieType, WTFMove(toDeleteFor), true, [completionHandler = WTFMove(completionHandler)] (const HashSet<RegistrableDomain>& domainsDeletedFor) mutable { 1907 1926 UNUSED_PARAM(domainsDeletedFor); 1908 1927 completionHandler(); -
trunk/Source/WebKit/NetworkProcess/NetworkProcess.h
r258928 r258932 206 206 void clearPrevalentResource(PAL::SessionID, const RegistrableDomain&, CompletionHandler<void()>&&); 207 207 void clearUserInteraction(PAL::SessionID, const RegistrableDomain&, CompletionHandler<void()>&&); 208 void delete AndRestrictWebsiteDataForRegistrableDomains(PAL::SessionID, OptionSet<WebsiteDataType>, RegistrableDomainsToDeleteOrRestrictWebsiteDataFor&&, bool shouldNotifyPage, CompletionHandler<void(const HashSet<RegistrableDomain>&)>&&);208 void deleteWebsiteDataForRegistrableDomains(PAL::SessionID, OptionSet<WebsiteDataType>, Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>>&&, bool shouldNotifyPage, CompletionHandler<void(const HashSet<RegistrableDomain>&)>&&); 209 209 void deleteCookiesForTesting(PAL::SessionID, RegistrableDomain, bool includeHttpOnlyCookies, CompletionHandler<void()>&&); 210 210 void dumpResourceLoadStatistics(PAL::SessionID, CompletionHandler<void(String)>&&); -
trunk/Source/WebKit/NetworkProcess/NetworkSession.cpp
r258928 r258932 214 214 } 215 215 216 void NetworkSession::delete AndRestrictWebsiteDataForRegistrableDomains(OptionSet<WebsiteDataType> dataTypes, RegistrableDomainsToDeleteOrRestrictWebsiteDataFor&& domains, bool shouldNotifyPage, CompletionHandler<void(const HashSet<RegistrableDomain>&)>&& completionHandler)217 { 218 m_networkProcess->delete AndRestrictWebsiteDataForRegistrableDomains(m_sessionID, dataTypes, WTFMove(domains), shouldNotifyPage, WTFMove(completionHandler));216 void NetworkSession::deleteWebsiteDataForRegistrableDomains(OptionSet<WebsiteDataType> dataTypes, Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>>&& domains, bool shouldNotifyPage, CompletionHandler<void(const HashSet<RegistrableDomain>&)>&& completionHandler) 217 { 218 m_networkProcess->deleteWebsiteDataForRegistrableDomains(m_sessionID, dataTypes, WTFMove(domains), shouldNotifyPage, WTFMove(completionHandler)); 219 219 } 220 220 -
trunk/Source/WebKit/NetworkProcess/NetworkSession.h
r258928 r258932 94 94 bool isResourceLoadStatisticsEnabled() const; 95 95 void notifyResourceLoadStatisticsProcessed(); 96 void delete AndRestrictWebsiteDataForRegistrableDomains(OptionSet<WebsiteDataType>, RegistrableDomainsToDeleteOrRestrictWebsiteDataFor&&, bool shouldNotifyPage, CompletionHandler<void(const HashSet<WebCore::RegistrableDomain>&)>&&);96 void deleteWebsiteDataForRegistrableDomains(OptionSet<WebsiteDataType>, Vector<std::pair<WebCore::RegistrableDomain, WebsiteDataToRemove>>&&, bool shouldNotifyPage, CompletionHandler<void(const HashSet<WebCore::RegistrableDomain>&)>&&); 97 97 void registrableDomainsWithWebsiteData(OptionSet<WebsiteDataType>, bool shouldNotifyPage, CompletionHandler<void(HashSet<WebCore::RegistrableDomain>&&)>&&); 98 98 void logDiagnosticMessageWithValue(const String& message, const String& description, unsigned value, unsigned significantFigures, WebCore::ShouldSample);
Note: See TracChangeset
for help on using the changeset viewer.