Changeset 258969 in webkit


Ignore:
Timestamp:
Mar 24, 2020 8:21:25 PM (4 years ago)
Author:
wilander@apple.com
Message:

Refactor ResourceLoadStatisticsStore::registrableDomainsToDeleteOrRestrictWebsiteDataFor() to return a struct instead of a Vector of pairs
https://bugs.webkit.org/show_bug.cgi?id=209463
<rdar://problem/60808759>

Reviewed by Alex Christensen.

This change does three things:

  1. Replaces the Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>> with a new struct called

RegistrableDomainsToDeleteOrRestrictWebsiteDataFor for sending around which domains to delete website data for.

  1. Removes the enum WebsiteDataToRemove, replacing its structure with the members of the above mentioned struct:
  • domainsToDeleteAllCookiesFor
  • domainsToDeleteAllButHttpOnlyCookiesFor
  • domainsToDeleteAllNonCookieWebsiteDataFor
  1. Consistently renames "domainsToDeleteFor" to "domainsToDeleteOrRestrictFor" in preparation for website data

policies that are not about deletion, see for instance recently landed https://trac.webkit.org/changeset/258884.

No new tests. No changed functionality. This code is covered by several existing tests.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::registrableDomainsToDeleteOrRestrictWebsiteDataFor):
(WebKit::ResourceLoadStatisticsMemoryStore::registrableDomainsToRemoveWebsiteDataFor): Deleted.

  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:

(WebKit::domainsToString):
(WebKit::ResourceLoadStatisticsStore::removeDataRecords):

  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::deleteAndRestrictWebsiteDataForRegistrableDomains):
(WebKit::WebResourceLoadStatisticsStore::deleteWebsiteDataForRegistrableDomains): Deleted.

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:

(WebKit::RegistrableDomainsToDeleteOrRestrictWebsiteDataFor::isolatedCopy const):
(WebKit::RegistrableDomainsToDeleteOrRestrictWebsiteDataFor::isEmpty const):

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::deleteAndRestrictWebsiteDataForRegistrableDomains):
(WebKit::NetworkProcess::deleteCookiesForTesting):
(WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains): Deleted.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::deleteAndRestrictWebsiteDataForRegistrableDomains):
(WebKit::NetworkSession::deleteWebsiteDataForRegistrableDomains): Deleted.

  • NetworkProcess/NetworkSession.h:
Location:
trunk/Source/WebKit
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r258961 r258969  
     12020-03-24  John Wilander  <wilander@apple.com>
     2
     3        Refactor ResourceLoadStatisticsStore::registrableDomainsToDeleteOrRestrictWebsiteDataFor() to return a struct instead of a Vector of pairs
     4        https://bugs.webkit.org/show_bug.cgi?id=209463
     5        <rdar://problem/60808759>
     6
     7        Reviewed by Alex Christensen.
     8
     9        This change does three things:
     10
     11        1. Replaces the Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>> with a new struct called
     12        RegistrableDomainsToDeleteOrRestrictWebsiteDataFor for sending around which domains to delete website data for.
     13
     14        2. Removes the enum WebsiteDataToRemove, replacing its structure with the members of the above mentioned struct:
     15        - domainsToDeleteAllCookiesFor
     16        - domainsToDeleteAllButHttpOnlyCookiesFor
     17        - domainsToDeleteAllNonCookieWebsiteDataFor
     18
     19        3. Consistently renames "domainsToDeleteFor" to "domainsToDeleteOrRestrictFor" in preparation for website data
     20        policies that are not about deletion, see for instance recently landed https://trac.webkit.org/changeset/258884.
     21
     22        No new tests. No changed functionality. This code is covered by several existing tests.
     23
     24        * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
     25        * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
     26        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
     27        (WebKit::ResourceLoadStatisticsMemoryStore::registrableDomainsToDeleteOrRestrictWebsiteDataFor):
     28        (WebKit::ResourceLoadStatisticsMemoryStore::registrableDomainsToRemoveWebsiteDataFor): Deleted.
     29        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
     30        * NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:
     31        (WebKit::domainsToString):
     32        (WebKit::ResourceLoadStatisticsStore::removeDataRecords):
     33        * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
     34        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
     35        (WebKit::WebResourceLoadStatisticsStore::deleteAndRestrictWebsiteDataForRegistrableDomains):
     36        (WebKit::WebResourceLoadStatisticsStore::deleteWebsiteDataForRegistrableDomains): Deleted.
     37        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
     38        (WebKit::RegistrableDomainsToDeleteOrRestrictWebsiteDataFor::isolatedCopy const):
     39        (WebKit::RegistrableDomainsToDeleteOrRestrictWebsiteDataFor::isEmpty const):
     40        * NetworkProcess/NetworkProcess.cpp:
     41        (WebKit::NetworkProcess::deleteAndRestrictWebsiteDataForRegistrableDomains):
     42        (WebKit::NetworkProcess::deleteCookiesForTesting):
     43        (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains): Deleted.
     44        * NetworkProcess/NetworkProcess.h:
     45        * NetworkProcess/NetworkSession.cpp:
     46        (WebKit::NetworkSession::deleteAndRestrictWebsiteDataForRegistrableDomains):
     47        (WebKit::NetworkSession::deleteWebsiteDataForRegistrableDomains): Deleted.
     48        * NetworkProcess/NetworkSession.h:
     49
    1502020-03-24  Jiewen Tan  <jiewen_tan@apple.com>
    251
  • trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp

    r258932 r258969  
    23542354}
    23552355
    2356 Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>> ResourceLoadStatisticsDatabaseStore::registrableDomainsToRemoveWebsiteDataFor()
     2356RegistrableDomainsToDeleteOrRestrictWebsiteDataFor ResourceLoadStatisticsDatabaseStore::registrableDomainsToDeleteOrRestrictWebsiteDataFor()
    23572357{
    23582358    ASSERT(!RunLoop::isMain());
     
    23682368    auto now = WallTime::now();
    23692369    auto oldestUserInteraction = now;
    2370     Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>> domainsToRemoveWebsiteDataFor;
     2370    RegistrableDomainsToDeleteOrRestrictWebsiteDataFor toDeleteOrRestrictFor;
    23712371
    23722372    Vector<DomainData> domains = this->domains();
     
    23742374    for (auto& statistic : domains) {
    23752375        oldestUserInteraction = std::min(oldestUserInteraction, statistic.mostRecentUserInteractionTime);
    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));
     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);
    23802381            setIsScheduledForAllButCookieDataRemoval(statistic.registrableDomain, false);
    23812382        }
     
    23852386
    23862387    // Give the user enough time to interact with websites until we remove non-cookie website data.
    2387     if (!parameters().isRunningTest && now - oldestUserInteraction > parameters().minimumTimeBetweenDataRecordsRemoval) {
    2388         domainsToRemoveWebsiteDataFor.removeAllMatching([&] (auto& pair) {
    2389             return pair.second == WebsiteDataToRemove::AllButCookies;
    2390         });
    2391     }
     2388    if (!parameters().isRunningTest && now - oldestUserInteraction > parameters().minimumTimeBetweenDataRecordsRemoval)
     2389        toDeleteOrRestrictFor.domainsToDeleteAllNonCookieWebsiteDataFor.clear();
    23922390
    23932391    clearGrandfathering(WTFMove(domainIDsToClearGrandfathering));
    23942392   
    2395     return domainsToRemoveWebsiteDataFor;
     2393    return toDeleteOrRestrictFor;
    23962394}
    23972395
  • trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h

    r258932 r258969  
    216216    bool shouldRemoveAllWebsiteDataFor(const DomainData&, bool shouldCheckForGrandfathering);
    217217    bool shouldRemoveAllButCookiesFor(const DomainData&, bool shouldCheckForGrandfathering);
    218     Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>> registrableDomainsToRemoveWebsiteDataFor() override;
     218    RegistrableDomainsToDeleteOrRestrictWebsiteDataFor registrableDomainsToDeleteOrRestrictWebsiteDataFor() override;
    219219    bool isDatabaseStore() const final { return true; }
    220220
  • trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp

    r258932 r258969  
    915915}
    916916
    917 Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>> ResourceLoadStatisticsMemoryStore::registrableDomainsToRemoveWebsiteDataFor()
     917RegistrableDomainsToDeleteOrRestrictWebsiteDataFor ResourceLoadStatisticsMemoryStore::registrableDomainsToDeleteOrRestrictWebsiteDataFor()
    918918{
    919919    ASSERT(!RunLoop::isMain());
     
    927927    auto now = WallTime::now();
    928928    auto oldestUserInteraction = now;
    929     Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>> domainsToRemoveWebsiteDataFor;
     929    RegistrableDomainsToDeleteOrRestrictWebsiteDataFor toDeleteOrRestrictFor;
    930930    for (auto& statistic : m_resourceStatisticsMap.values()) {
    931931        oldestUserInteraction = std::min(oldestUserInteraction, statistic.mostRecentUserInteractionTime);
    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));
     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);
    936937            statistic.gotLinkDecorationFromPrevalentResource = false;
    937938        }
     
    942943
    943944    // Give the user enough time to interact with websites until we remove non-cookie website data.
    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;
     945    if (!parameters().isRunningTest && now - oldestUserInteraction > parameters().minimumTimeBetweenDataRecordsRemoval)
     946        toDeleteOrRestrictFor.domainsToDeleteAllNonCookieWebsiteDataFor.clear();
     947
     948    return toDeleteOrRestrictFor;
    951949}
    952950
  • trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h

    r258932 r258969  
    131131    void pruneStatisticsIfNeeded() override;
    132132    ResourceLoadStatistics& ensureResourceStatisticsForRegistrableDomain(const RegistrableDomain&);
    133     Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>> registrableDomainsToRemoveWebsiteDataFor() override;
     133    RegistrableDomainsToDeleteOrRestrictWebsiteDataFor registrableDomainsToDeleteOrRestrictWebsiteDataFor() override;
    134134    bool isMemoryStore() const final { return true; }
    135135
  • trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp

    r258932 r258969  
    6868}
    6969
    70 static String domainsToString(const Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>>& domainsToRemoveWebsiteDataFor)
     70static String domainsToString(const RegistrableDomainsToDeleteOrRestrictWebsiteDataFor& domainsToRemoveOrRestrictWebsiteDataFor)
    7171{
    7272    StringBuilder builder;
    73     for (auto& pair : domainsToRemoveWebsiteDataFor) {
    74         auto& domain = pair.first;
    75         auto& dataToRemove = pair.second;
     73    for (auto& domain : domainsToRemoveOrRestrictWebsiteDataFor.domainsToDeleteAllCookiesFor) {
    7674        if (!builder.isEmpty())
    7775            builder.appendLiteral(", ");
    7876        builder.append(domain.string());
    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         }
     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)");
    9090    }
    9191    return builder.toString();
     
    200200#endif
    201201
    202     auto domainsToRemoveWebsiteDataFor = registrableDomainsToRemoveWebsiteDataFor();
    203     if (domainsToRemoveWebsiteDataFor.isEmpty()) {
     202    auto domainsToDeleteOrRestrictWebsiteDataFor = registrableDomainsToDeleteOrRestrictWebsiteDataFor();
     203    if (domainsToDeleteOrRestrictWebsiteDataFor.isEmpty()) {
    204204        completionHandler();
    205205        return;
    206206    }
    207207
    208     RELEASE_LOG_INFO_IF(m_debugLoggingEnabled, ITPDebug, "About to remove data records for %" PUBLIC_LOG_STRING ".", domainsToString(domainsToRemoveWebsiteDataFor).utf8().data());
     208    RELEASE_LOG_INFO_IF(m_debugLoggingEnabled, ITPDebug, "About to remove data records for %" PUBLIC_LOG_STRING ".", domainsToString(domainsToDeleteOrRestrictWebsiteDataFor).utf8().data());
    209209
    210210    setDataRecordsBeingRemoved(true);
    211211
    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 {
     212    RunLoop::main().dispatch([store = makeRef(m_store), domainsToDeleteOrRestrictWebsiteDataFor = crossThreadCopy(domainsToDeleteOrRestrictWebsiteDataFor), completionHandler = WTFMove(completionHandler), weakThis = makeWeakPtr(*this), shouldNotifyPagesWhenDataRecordsWereScanned = m_parameters.shouldNotifyPagesWhenDataRecordsWereScanned, workQueue = m_workQueue.copyRef()] () mutable {
     213        store->deleteAndRestrictWebsiteDataForRegistrableDomains(WebResourceLoadStatisticsStore::monitoredDataTypes(), WTFMove(domainsToDeleteOrRestrictWebsiteDataFor), shouldNotifyPagesWhenDataRecordsWereScanned, [completionHandler = WTFMove(completionHandler), weakThis = WTFMove(weakThis), workQueue = workQueue.copyRef()](const HashSet<RegistrableDomain>& domainsWithDeletedWebsiteData) mutable {
    214214            workQueue->dispatch([domainsWithDeletedWebsiteData = crossThreadCopy(domainsWithDeletedWebsiteData), completionHandler = WTFMove(completionHandler), weakThis = WTFMove(weakThis)] () mutable {
    215215                if (!weakThis) {
  • trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h

    r258932 r258969  
    204204    void mergeOperatingDates(Vector<OperatingDate>&&);
    205205    virtual Vector<RegistrableDomain> ensurePrevalentResourcesForDebugMode() = 0;
    206     virtual Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>> registrableDomainsToRemoveWebsiteDataFor() = 0;
     206    virtual RegistrableDomainsToDeleteOrRestrictWebsiteDataFor registrableDomainsToDeleteOrRestrictWebsiteDataFor() = 0;
    207207    virtual void pruneStatisticsIfNeeded() = 0;
    208208
  • trunk/Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp

    r258932 r258969  
    12491249}
    12501250
    1251 void WebResourceLoadStatisticsStore::deleteWebsiteDataForRegistrableDomains(OptionSet<WebsiteDataType> dataTypes, Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>>&& domainsToRemoveWebsiteDataFor, bool shouldNotifyPage, CompletionHandler<void(const HashSet<RegistrableDomain>&)>&& completionHandler)
     1251void WebResourceLoadStatisticsStore::deleteAndRestrictWebsiteDataForRegistrableDomains(OptionSet<WebsiteDataType> dataTypes, RegistrableDomainsToDeleteOrRestrictWebsiteDataFor&& domainsToDeleteAndRestrictWebsiteDataFor, bool shouldNotifyPage, CompletionHandler<void(const HashSet<RegistrableDomain>&)>&& completionHandler)
    12521252{
    12531253    ASSERT(RunLoop::isMain());
    12541254   
    12551255    if (m_networkSession) {
    1256         m_networkSession->deleteWebsiteDataForRegistrableDomains(dataTypes, WTFMove(domainsToRemoveWebsiteDataFor), shouldNotifyPage, WTFMove(completionHandler));
     1256        m_networkSession->deleteAndRestrictWebsiteDataForRegistrableDomains(dataTypes, WTFMove(domainsToDeleteAndRestrictWebsiteDataFor), shouldNotifyPage, WTFMove(completionHandler));
    12571257        return;
    12581258    }
  • trunk/Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h

    r258932 r258969  
    7171enum class ShouldIncludeLocalhost : bool { No, Yes };
    7272enum class EnableResourceLoadStatisticsDebugMode : bool { No, Yes };
    73 enum class WebsiteDataToRemove : uint8_t {
    74     All,
    75     AllButHttpOnlyCookies,
    76     AllButCookies
    77 };
    7873struct RegistrableDomainsToBlockCookiesFor {
    7974    Vector<WebCore::RegistrableDomain> domainsToBlockAndDeleteCookiesFor;
     
    8176    Vector<WebCore::RegistrableDomain> domainsWithUserInteractionAsFirstParty;
    8277    RegistrableDomainsToBlockCookiesFor isolatedCopy() const { return { domainsToBlockAndDeleteCookiesFor.isolatedCopy(), domainsToBlockButKeepCookiesFor.isolatedCopy(), domainsWithUserInteractionAsFirstParty.isolatedCopy() }; }
     78};
     79struct 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(); }
    8385};
    8486
     
    216218    void logCrossSiteLoadWithLinkDecoration(const NavigatedFromDomain&, const NavigatedToDomain&, CompletionHandler<void()>&&);
    217219    void clearUserInteraction(const TopFrameDomain&, CompletionHandler<void()>&&);
    218     void deleteWebsiteDataForRegistrableDomains(OptionSet<WebsiteDataType>, Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>>&&, bool shouldNotifyPage, CompletionHandler<void(const HashSet<RegistrableDomain>&)>&&);
     220    void deleteAndRestrictWebsiteDataForRegistrableDomains(OptionSet<WebsiteDataType>, RegistrableDomainsToDeleteOrRestrictWebsiteDataFor&&, bool shouldNotifyPage, CompletionHandler<void(const HashSet<RegistrableDomain>&)>&&);
    219221    void registrableDomainsWithWebsiteData(OptionSet<WebsiteDataType>, bool shouldNotifyPage, CompletionHandler<void(HashSet<RegistrableDomain>&&)>&&);
    220222    StorageAccessWasGranted grantStorageAccess(const SubFrameDomain&, const TopFrameDomain&, Optional<WebCore::FrameIdentifier>, WebCore::PageIdentifier);
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp

    r258932 r258969  
    17101710}
    17111711
    1712 void NetworkProcess::deleteWebsiteDataForRegistrableDomains(PAL::SessionID sessionID, OptionSet<WebsiteDataType> websiteDataTypes, Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>>&& domains, bool shouldNotifyPage, CompletionHandler<void(const HashSet<RegistrableDomain>&)>&& completionHandler)
     1712void NetworkProcess::deleteAndRestrictWebsiteDataForRegistrableDomains(PAL::SessionID sessionID, OptionSet<WebsiteDataType> websiteDataTypes, RegistrableDomainsToDeleteOrRestrictWebsiteDataFor&& domains, bool shouldNotifyPage, CompletionHandler<void(const HashSet<RegistrableDomain>&)>&& completionHandler)
    17131713{
    17141714    OptionSet<WebsiteDataFetchOption> fetchOptions = WebsiteDataFetchOption::DoNotCreateProcesses;
     
    17421742    HashSet<String> hostNamesWithCookies;
    17431743    HashSet<String> hostNamesWithHSTSCache;
    1744 
    1745     Vector<RegistrableDomain> domainsToDeleteCookiesFor;
    1746     Vector<RegistrableDomain> domainsToDeleteAllButHttpOnlyCookiesFor;
    1747     Vector<RegistrableDomain> domainsToDeleteAllButCookiesFor;
    17481744    Vector<String> hostnamesWithCookiesToDelete;
     1745    auto domainsToDeleteAllNonCookieWebsiteDataFor = domains.domainsToDeleteAllNonCookieWebsiteDataFor;
    17491746    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         }
    17661747        if (auto* networkStorageSession = storageSession(sessionID)) {
    17671748            networkStorageSession->getHostnamesWithCookies(hostNamesWithCookies);
    17681749
    1769             hostnamesWithCookiesToDelete = filterForRegistrableDomains(domainsToDeleteCookiesFor, hostNamesWithCookies);
     1750            hostnamesWithCookiesToDelete = filterForRegistrableDomains(domains.domainsToDeleteAllCookiesFor, hostNamesWithCookies);
    17701751            networkStorageSession->deleteCookiesForHostnames(hostnamesWithCookiesToDelete, WebCore::IncludeHttpOnlyCookies::Yes);
    17711752
     
    17731754                callbackAggregator->m_domains.add(RegistrableDomain::uncheckedCreateFromHost(host));
    17741755
    1775             hostnamesWithCookiesToDelete = filterForRegistrableDomains(domainsToDeleteAllButHttpOnlyCookiesFor, hostNamesWithCookies);
     1756            hostnamesWithCookiesToDelete = filterForRegistrableDomains(domains.domainsToDeleteAllButHttpOnlyCookiesFor, hostNamesWithCookies);
    17761757            networkStorageSession->deleteCookiesForHostnames(hostnamesWithCookiesToDelete, WebCore::IncludeHttpOnlyCookies::No);
    17771758
     
    17791760                callbackAggregator->m_domains.add(RegistrableDomain::uncheckedCreateFromHost(host));
    17801761        }
    1781     } else {
    1782         for (auto& domain : domains)
    1783             domainsToDeleteAllButCookiesFor.append(domain.first);
    17841762    }
    17851763
     
    17891767        if (auto* networkStorageSession = storageSession(sessionID)) {
    17901768            getHostNamesWithHSTSCache(*networkStorageSession, hostNamesWithHSTSCache);
    1791             hostnamesWithHSTSToDelete = filterForRegistrableDomains(domainsToDeleteAllButCookiesFor, hostNamesWithHSTSCache);
     1769            hostnamesWithHSTSToDelete = filterForRegistrableDomains(domainsToDeleteAllNonCookieWebsiteDataFor, hostNamesWithHSTSCache);
    17921770
    17931771            for (const auto& host : hostnamesWithHSTSToDelete)
     
    18031781        if (auto* networkSession = this->networkSession(sessionID)) {
    18041782            Vector<String> registrableDomainsToDelete;
    1805             registrableDomainsToDelete.reserveInitialCapacity(domains.size());
    1806             for (auto& domain : domains)
    1807                 registrableDomainsToDelete.uncheckedAppend(domain.first.string());
     1783            registrableDomainsToDelete.reserveInitialCapacity(domainsToDeleteAllNonCookieWebsiteDataFor.size());
     1784            for (auto& domain : domainsToDeleteAllNonCookieWebsiteDataFor)
     1785                registrableDomainsToDelete.uncheckedAppend(domain.string());
    18081786            networkSession->deleteAlternativeServicesForHostNames(registrableDomainsToDelete);
    18091787        }
     
    18141792        if (auto* session = storageSession(sessionID)) {
    18151793            auto origins = session->credentialStorage().originsWithCredentials();
    1816             auto originsToDelete = filterForRegistrableDomains(origins, domainsToDeleteAllButCookiesFor, callbackAggregator->m_domains);
     1794            auto originsToDelete = filterForRegistrableDomains(origins, domainsToDeleteAllNonCookieWebsiteDataFor, callbackAggregator->m_domains);
    18171795            for (auto& origin : originsToDelete)
    18181796                session->credentialStorage().removeCredentialsWithOrigin(origin);
     
    18201798
    18211799        auto origins = WebCore::CredentialStorage::originsWithSessionCredentials();
    1822         auto originsToDelete = filterForRegistrableDomains(origins, domainsToDeleteAllButCookiesFor, callbackAggregator->m_domains);
     1800        auto originsToDelete = filterForRegistrableDomains(origins, domainsToDeleteAllNonCookieWebsiteDataFor, callbackAggregator->m_domains);
    18231801        WebCore::CredentialStorage::removeSessionCredentialsWithOrigins(originsToDelete);
    18241802    }
    18251803   
    18261804    if (websiteDataTypes.contains(WebsiteDataType::DOMCache)) {
    1827         CacheStorage::Engine::fetchEntries(*this, sessionID, fetchOptions.contains(WebsiteDataFetchOption::ComputeSizes), [this, domainsToDeleteAllButCookiesFor, sessionID, callbackAggregator = callbackAggregator.copyRef()](auto entries) mutable {
     1805        CacheStorage::Engine::fetchEntries(*this, sessionID, fetchOptions.contains(WebsiteDataFetchOption::ComputeSizes), [this, domainsToDeleteAllNonCookieWebsiteDataFor, sessionID, callbackAggregator = callbackAggregator.copyRef()](auto entries) mutable {
    18281806           
    1829             auto entriesToDelete = filterForRegistrableDomains(domainsToDeleteAllButCookiesFor, entries);
     1807            auto entriesToDelete = filterForRegistrableDomains(domainsToDeleteAllNonCookieWebsiteDataFor, entries);
    18301808
    18311809            for (const auto& entry : entriesToDelete)
     
    18391817    if (m_storageManagerSet->contains(sessionID)) {
    18401818        if (websiteDataTypes.contains(WebsiteDataType::SessionStorage)) {
    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);
     1819            m_storageManagerSet->getSessionStorageOrigins(sessionID, [protectedThis = makeRef(*this), this, sessionID, callbackAggregator = callbackAggregator.copyRef(), domainsToDeleteAllNonCookieWebsiteDataFor](auto&& origins) {
     1820                auto originsToDelete = filterForRegistrableDomains(origins, domainsToDeleteAllNonCookieWebsiteDataFor, callbackAggregator->m_domains);
    18431821                m_storageManagerSet->deleteSessionStorageForOrigins(sessionID, originsToDelete, [callbackAggregator = callbackAggregator.copyRef()] { });
    18441822            });
     
    18461824
    18471825        if (websiteDataTypes.contains(WebsiteDataType::LocalStorage)) {
    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);
     1826            m_storageManagerSet->getLocalStorageOrigins(sessionID, [protectedThis = makeRef(*this), this, sessionID, callbackAggregator = callbackAggregator.copyRef(), domainsToDeleteAllNonCookieWebsiteDataFor](auto&& origins) {
     1827                auto originsToDelete = filterForRegistrableDomains(origins, domainsToDeleteAllNonCookieWebsiteDataFor, callbackAggregator->m_domains);
    18501828                m_storageManagerSet->deleteLocalStorageForOrigins(sessionID, originsToDelete, [callbackAggregator = callbackAggregator.copyRef()] { });
    18511829            });
     
    18571835    if (!path.isEmpty() && websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases)) {
    18581836        // FIXME: Pick the right database store based on the session ID.
    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)] {
     1837        postStorageTask(CrossThreadTask([this, sessionID, callbackAggregator = callbackAggregator.copyRef(), path = crossThreadCopy(path), domainsToDeleteAllNonCookieWebsiteDataFor = crossThreadCopy(domainsToDeleteAllNonCookieWebsiteDataFor)]() mutable {
     1838            RunLoop::main().dispatch([this, sessionID, domainsToDeleteAllNonCookieWebsiteDataFor = WTFMove(domainsToDeleteAllNonCookieWebsiteDataFor), callbackAggregator = callbackAggregator.copyRef(), securityOrigins = indexedDatabaseOrigins(path)] {
    18611839                Vector<SecurityOriginData> entriesToDelete;
    18621840                for (const auto& securityOrigin : securityOrigins) {
    18631841                    auto domain = RegistrableDomain::uncheckedCreateFromHost(securityOrigin.host);
    1864                     if (!domainsToDeleteAllButCookiesFor.contains(domain))
     1842                    if (!domainsToDeleteAllNonCookieWebsiteDataFor.contains(domain))
    18651843                        continue;
    18661844
     
    18781856    path = m_serviceWorkerInfo.get(sessionID).databasePath;
    18791857    if (!path.isEmpty() && websiteDataTypes.contains(WebsiteDataType::ServiceWorkerRegistrations)) {
    1880         swServerForSession(sessionID).getOriginsWithRegistrations([this, sessionID, domainsToDeleteAllButCookiesFor, callbackAggregator = callbackAggregator.copyRef()](const HashSet<SecurityOriginData>& securityOrigins) mutable {
     1858        swServerForSession(sessionID).getOriginsWithRegistrations([this, sessionID, domainsToDeleteAllNonCookieWebsiteDataFor, callbackAggregator = callbackAggregator.copyRef()](const HashSet<SecurityOriginData>& securityOrigins) mutable {
    18811859            for (auto& securityOrigin : securityOrigins) {
    1882                 if (!domainsToDeleteAllButCookiesFor.contains(RegistrableDomain::uncheckedCreateFromHost(securityOrigin.host)))
     1860                if (!domainsToDeleteAllNonCookieWebsiteDataFor.contains(RegistrableDomain::uncheckedCreateFromHost(securityOrigin.host)))
    18831861                    continue;
    18841862                callbackAggregator->m_domains.add(RegistrableDomain::uncheckedCreateFromHost(securityOrigin.host));
     
    18901868
    18911869    if (websiteDataTypes.contains(WebsiteDataType::DiskCache)) {
    1892         forEachNetworkSession([sessionID, fetchOptions, &domainsToDeleteAllButCookiesFor, &callbackAggregator](auto& session) {
    1893             fetchDiskCacheEntries(session.cache(), sessionID, fetchOptions, [domainsToDeleteAllButCookiesFor, callbackAggregator = callbackAggregator.copyRef(), session = makeWeakPtr(&session)](auto entries) mutable {
     1870        forEachNetworkSession([sessionID, fetchOptions, &domainsToDeleteAllNonCookieWebsiteDataFor, &callbackAggregator](auto& session) {
     1871            fetchDiskCacheEntries(session.cache(), sessionID, fetchOptions, [domainsToDeleteAllNonCookieWebsiteDataFor, callbackAggregator = callbackAggregator.copyRef(), session = makeWeakPtr(&session)](auto entries) mutable {
    18941872                if (!session)
    18951873                    return;
     
    18971875                Vector<SecurityOriginData> entriesToDelete;
    18981876                for (auto& entry : entries) {
    1899                     if (!domainsToDeleteAllButCookiesFor.contains(RegistrableDomain::uncheckedCreateFromHost(entry.origin.host)))
     1877                    if (!domainsToDeleteAllNonCookieWebsiteDataFor.contains(RegistrableDomain::uncheckedCreateFromHost(entry.origin.host)))
    19001878                        continue;
    19011879                    entriesToDelete.append(entry.origin);
     
    19081886
    19091887    auto dataTypesForUIProcess = WebsiteData::filter(websiteDataTypes, WebsiteDataProcessType::UI);
    1910     if (!dataTypesForUIProcess.isEmpty() && !domainsToDeleteAllButCookiesFor.isEmpty()) {
     1888    if (!dataTypesForUIProcess.isEmpty() && !domainsToDeleteAllNonCookieWebsiteDataFor.isEmpty()) {
    19111889        CompletionHandler<void(const HashSet<RegistrableDomain>&)> completionHandler = [callbackAggregator = callbackAggregator.copyRef()] (const HashSet<RegistrableDomain>& domains) {
    19121890            for (auto& domain : domains)
    19131891                callbackAggregator->m_domains.add(domain);
    19141892        };
    1915         parentProcessConnection()->sendWithAsyncReply(Messages::NetworkProcessProxy::DeleteWebsiteDataInUIProcessForRegistrableDomains(sessionID, dataTypesForUIProcess, fetchOptions, domainsToDeleteAllButCookiesFor), WTFMove(completionHandler));
     1893        parentProcessConnection()->sendWithAsyncReply(Messages::NetworkProcessProxy::DeleteWebsiteDataInUIProcessForRegistrableDomains(sessionID, dataTypesForUIProcess, fetchOptions, domainsToDeleteAllNonCookieWebsiteDataFor), WTFMove(completionHandler));
    19161894    }
    19171895}
     
    19201898{
    19211899    OptionSet<WebsiteDataType> cookieType = WebsiteDataType::Cookies;
    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 {
     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 {
    19261907        UNUSED_PARAM(domainsDeletedFor);
    19271908        completionHandler();
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.h

    r258932 r258969  
    206206    void clearPrevalentResource(PAL::SessionID, const RegistrableDomain&, CompletionHandler<void()>&&);
    207207    void clearUserInteraction(PAL::SessionID, const RegistrableDomain&, CompletionHandler<void()>&&);
    208     void deleteWebsiteDataForRegistrableDomains(PAL::SessionID, OptionSet<WebsiteDataType>, Vector<std::pair<RegistrableDomain, WebsiteDataToRemove>>&&, bool shouldNotifyPage, CompletionHandler<void(const HashSet<RegistrableDomain>&)>&&);
     208    void deleteAndRestrictWebsiteDataForRegistrableDomains(PAL::SessionID, OptionSet<WebsiteDataType>, RegistrableDomainsToDeleteOrRestrictWebsiteDataFor&&, bool shouldNotifyPage, CompletionHandler<void(const HashSet<RegistrableDomain>&)>&&);
    209209    void deleteCookiesForTesting(PAL::SessionID, RegistrableDomain, bool includeHttpOnlyCookies, CompletionHandler<void()>&&);
    210210    void dumpResourceLoadStatistics(PAL::SessionID, CompletionHandler<void(String)>&&);
  • trunk/Source/WebKit/NetworkProcess/NetworkSession.cpp

    r258932 r258969  
    214214}
    215215
    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));
     216void NetworkSession::deleteAndRestrictWebsiteDataForRegistrableDomains(OptionSet<WebsiteDataType> dataTypes, RegistrableDomainsToDeleteOrRestrictWebsiteDataFor&& domains, bool shouldNotifyPage, CompletionHandler<void(const HashSet<RegistrableDomain>&)>&& completionHandler)
     217{
     218    m_networkProcess->deleteAndRestrictWebsiteDataForRegistrableDomains(m_sessionID, dataTypes, WTFMove(domains), shouldNotifyPage, WTFMove(completionHandler));
    219219}
    220220
  • trunk/Source/WebKit/NetworkProcess/NetworkSession.h

    r258932 r258969  
    9494    bool isResourceLoadStatisticsEnabled() const;
    9595    void notifyResourceLoadStatisticsProcessed();
    96     void deleteWebsiteDataForRegistrableDomains(OptionSet<WebsiteDataType>, Vector<std::pair<WebCore::RegistrableDomain, WebsiteDataToRemove>>&&, bool shouldNotifyPage, CompletionHandler<void(const HashSet<WebCore::RegistrableDomain>&)>&&);
     96    void deleteAndRestrictWebsiteDataForRegistrableDomains(OptionSet<WebsiteDataType>, RegistrableDomainsToDeleteOrRestrictWebsiteDataFor&&, bool shouldNotifyPage, CompletionHandler<void(const HashSet<WebCore::RegistrableDomain>&)>&&);
    9797    void registrableDomainsWithWebsiteData(OptionSet<WebsiteDataType>, bool shouldNotifyPage, CompletionHandler<void(HashSet<WebCore::RegistrableDomain>&&)>&&);
    9898    void logDiagnosticMessageWithValue(const String& message, const String& description, unsigned value, unsigned significantFigures, WebCore::ShouldSample);
Note: See TracChangeset for help on using the changeset viewer.