Title: [257893] trunk/Source/WebKit
Revision
257893
Author
cdu...@apple.com
Date
2020-03-04 18:04:49 -0800 (Wed, 04 Mar 2020)

Log Message

Construct fewer unnecessary temporary WebProcessPool objects in WebsiteDataStore implementation
https://bugs.webkit.org/show_bug.cgi?id=208610

Reviewed by Alex Christensen.

A lot of methods in WebsiteDataStore were calling ensureProcessPools() and then it a loop do something
if the pool already has a network process. When you construct a new process pool, the pool has initially
no network process. As a result, this code should be using processPools() instead of ensureProcessPools()
to avoid unnecessarily constructing a temporary WebProcessPool object.

* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchDataAndApply):
(WebKit::WebsiteDataStore::removeData):
(WebKit::WebsiteDataStore::dumpResourceLoadStatistics):
(WebKit::WebsiteDataStore::isPrevalentResource):
(WebKit::WebsiteDataStore::isGrandfathered):
(WebKit::WebsiteDataStore::setPrevalentResourceForDebugMode):
(WebKit::WebsiteDataStore::isVeryPrevalentResource):
(WebKit::WebsiteDataStore::setVeryPrevalentResource):
(WebKit::WebsiteDataStore::setSubframeUnderTopFrameDomain):
(WebKit::WebsiteDataStore::isRegisteredAsSubFrameUnder):
(WebKit::WebsiteDataStore::setSubresourceUnderTopFrameDomain):
(WebKit::WebsiteDataStore::isRegisteredAsSubresourceUnder):
(WebKit::WebsiteDataStore::setSubresourceUniqueRedirectTo):
(WebKit::WebsiteDataStore::setSubresourceUniqueRedirectFrom):
(WebKit::WebsiteDataStore::setTopFrameUniqueRedirectTo):
(WebKit::WebsiteDataStore::setTopFrameUniqueRedirectFrom):
(WebKit::WebsiteDataStore::isRegisteredAsRedirectingTo):
(WebKit::WebsiteDataStore::clearPrevalentResource):
(WebKit::WebsiteDataStore::resetParametersToDefaultValues):
(WebKit::WebsiteDataStore::submitTelemetry):
(WebKit::WebsiteDataStore::scheduleClearInMemoryAndPersistent):
(WebKit::WebsiteDataStore::getResourceLoadStatisticsDataSummary):
(WebKit::WebsiteDataStore::scheduleCookieBlockingUpdate):
(WebKit::WebsiteDataStore::scheduleStatisticsAndDataRecordsProcessing):
(WebKit::WebsiteDataStore::setLastSeen):
(WebKit::WebsiteDataStore::mergeStatisticForTesting):
(WebKit::WebsiteDataStore::logUserInteraction):
(WebKit::WebsiteDataStore::hasHadUserInteraction):
(WebKit::WebsiteDataStore::isRelationshipOnlyInDatabaseOnce):
(WebKit::WebsiteDataStore::clearUserInteraction):
(WebKit::WebsiteDataStore::setGrandfathered):
(WebKit::WebsiteDataStore::setUseITPDatabase):
(WebKit::WebsiteDataStore::setCrossSiteLoadWithLinkDecorationForTesting):
(WebKit::WebsiteDataStore::resetCrossSiteLoadsWithLinkDecorationForTesting):
(WebKit::WebsiteDataStore::deleteCookiesForTesting):
(WebKit::WebsiteDataStore::hasLocalStorageForTesting const):
(WebKit::WebsiteDataStore::hasIsolatedSessionForTesting const):
(WebKit::WebsiteDataStore::setResourceLoadStatisticsShouldDowngradeReferrerForTesting):
(WebKit::WebsiteDataStore::setResourceLoadStatisticsShouldBlockThirdPartyCookiesForTesting):
(WebKit::WebsiteDataStore::setResourceLoadStatisticsFirstPartyWebsiteDataRemovalModeForTesting):
(WebKit::WebsiteDataStore::resetCacheMaxAgeCapForPrevalentResources):
(WebKit::WebsiteDataStore::isResourceLoadStatisticsEphemeral const):
(WebKit::WebsiteDataStore::getLocalStorageDetails):
(WebKit::WebsiteDataStore::resetQuota):
(WebKit::WebsiteDataStore::hasAppBoundSession const):
(WebKit::WebsiteDataStore::setInAppBrowserPrivacyEnabled):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (257892 => 257893)


--- trunk/Source/WebKit/ChangeLog	2020-03-05 01:13:20 UTC (rev 257892)
+++ trunk/Source/WebKit/ChangeLog	2020-03-05 02:04:49 UTC (rev 257893)
@@ -1,3 +1,63 @@
+2020-03-04  Chris Dumez  <cdu...@apple.com>
+
+        Construct fewer unnecessary temporary WebProcessPool objects in WebsiteDataStore implementation
+        https://bugs.webkit.org/show_bug.cgi?id=208610
+
+        Reviewed by Alex Christensen.
+
+        A lot of methods in WebsiteDataStore were calling ensureProcessPools() and then it a loop do something
+        if the pool already has a network process. When you construct a new process pool, the pool has initially
+        no network process. As a result, this code should be using processPools() instead of ensureProcessPools()
+        to avoid unnecessarily constructing a temporary WebProcessPool object.
+
+        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
+        (WebKit::WebsiteDataStore::fetchDataAndApply):
+        (WebKit::WebsiteDataStore::removeData):
+        (WebKit::WebsiteDataStore::dumpResourceLoadStatistics):
+        (WebKit::WebsiteDataStore::isPrevalentResource):
+        (WebKit::WebsiteDataStore::isGrandfathered):
+        (WebKit::WebsiteDataStore::setPrevalentResourceForDebugMode):
+        (WebKit::WebsiteDataStore::isVeryPrevalentResource):
+        (WebKit::WebsiteDataStore::setVeryPrevalentResource):
+        (WebKit::WebsiteDataStore::setSubframeUnderTopFrameDomain):
+        (WebKit::WebsiteDataStore::isRegisteredAsSubFrameUnder):
+        (WebKit::WebsiteDataStore::setSubresourceUnderTopFrameDomain):
+        (WebKit::WebsiteDataStore::isRegisteredAsSubresourceUnder):
+        (WebKit::WebsiteDataStore::setSubresourceUniqueRedirectTo):
+        (WebKit::WebsiteDataStore::setSubresourceUniqueRedirectFrom):
+        (WebKit::WebsiteDataStore::setTopFrameUniqueRedirectTo):
+        (WebKit::WebsiteDataStore::setTopFrameUniqueRedirectFrom):
+        (WebKit::WebsiteDataStore::isRegisteredAsRedirectingTo):
+        (WebKit::WebsiteDataStore::clearPrevalentResource):
+        (WebKit::WebsiteDataStore::resetParametersToDefaultValues):
+        (WebKit::WebsiteDataStore::submitTelemetry):
+        (WebKit::WebsiteDataStore::scheduleClearInMemoryAndPersistent):
+        (WebKit::WebsiteDataStore::getResourceLoadStatisticsDataSummary):
+        (WebKit::WebsiteDataStore::scheduleCookieBlockingUpdate):
+        (WebKit::WebsiteDataStore::scheduleStatisticsAndDataRecordsProcessing):
+        (WebKit::WebsiteDataStore::setLastSeen):
+        (WebKit::WebsiteDataStore::mergeStatisticForTesting):
+        (WebKit::WebsiteDataStore::logUserInteraction):
+        (WebKit::WebsiteDataStore::hasHadUserInteraction):
+        (WebKit::WebsiteDataStore::isRelationshipOnlyInDatabaseOnce):
+        (WebKit::WebsiteDataStore::clearUserInteraction):
+        (WebKit::WebsiteDataStore::setGrandfathered):
+        (WebKit::WebsiteDataStore::setUseITPDatabase):
+        (WebKit::WebsiteDataStore::setCrossSiteLoadWithLinkDecorationForTesting):
+        (WebKit::WebsiteDataStore::resetCrossSiteLoadsWithLinkDecorationForTesting):
+        (WebKit::WebsiteDataStore::deleteCookiesForTesting):
+        (WebKit::WebsiteDataStore::hasLocalStorageForTesting const):
+        (WebKit::WebsiteDataStore::hasIsolatedSessionForTesting const):
+        (WebKit::WebsiteDataStore::setResourceLoadStatisticsShouldDowngradeReferrerForTesting):
+        (WebKit::WebsiteDataStore::setResourceLoadStatisticsShouldBlockThirdPartyCookiesForTesting):
+        (WebKit::WebsiteDataStore::setResourceLoadStatisticsFirstPartyWebsiteDataRemovalModeForTesting):
+        (WebKit::WebsiteDataStore::resetCacheMaxAgeCapForPrevalentResources):
+        (WebKit::WebsiteDataStore::isResourceLoadStatisticsEphemeral const):
+        (WebKit::WebsiteDataStore::getLocalStorageDetails):
+        (WebKit::WebsiteDataStore::resetQuota):
+        (WebKit::WebsiteDataStore::hasAppBoundSession const):
+        (WebKit::WebsiteDataStore::setInAppBrowserPrivacyEnabled):
+
 2020-03-04  Alex Christensen  <achristen...@webkit.org>
 
         Call globalObjectIsAvailableForFrame before evaluating _javascript_ in newly created worlds

Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp (257892 => 257893)


--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp	2020-03-05 01:13:20 UTC (rev 257892)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp	2020-03-05 02:04:49 UTC (rev 257893)
@@ -423,7 +423,8 @@
 
     auto networkProcessAccessType = computeNetworkProcessAccessTypeForDataFetch(dataTypes, !isPersistent());
     if (networkProcessAccessType != ProcessAccessType::None) {
-        for (auto& processPool : ensureProcessPools()) {
+        auto pools = networkProcessAccessType == ProcessAccessType::Launch ? ensureProcessPools() : processPools();
+        for (auto& processPool : pools) {
             switch (networkProcessAccessType) {
             case ProcessAccessType::OnlyIfLaunched:
                 if (!processPool->networkProcess())
@@ -706,7 +707,8 @@
 #endif
     auto networkProcessAccessType = computeNetworkProcessAccessTypeForDataRemoval(dataTypes, !isPersistent());
     if (networkProcessAccessType != ProcessAccessType::None) {
-        for (auto& processPool : ensureProcessPools()) {
+        auto pools = networkProcessAccessType == ProcessAccessType::Launch ? ensureProcessPools() : processPools();
+        for (auto& processPool : pools) {
             switch (networkProcessAccessType) {
             case ProcessAccessType::OnlyIfLaunched:
                 if (!processPool->networkProcess())
@@ -733,7 +735,7 @@
 
     auto webProcessAccessType = computeWebProcessAccessTypeForDataRemoval(dataTypes, !isPersistent());
     if (webProcessAccessType != ProcessAccessType::None) {
-        for (auto& processPool : ensureProcessPools()) {
+        for (auto& processPool : processPools()) {
             // Clear back/forward cache first as processes removed from the back/forward cache will likely
             // be added to the WebProcess cache.
             processPool->backForwardCache().removeEntriesForSession(sessionID());
@@ -873,7 +875,7 @@
 #if ENABLE(RESOURCE_LOAD_STATISTICS)
     if (dataTypes.contains(WebsiteDataType::ResourceLoadStatistics)) {
         if (!didNotifyNetworkProcessToDeleteWebsiteData) {
-            for (auto& processPool : ensureProcessPools()) {
+            for (auto& processPool : processPools()) {
                 if (auto* process = processPool->networkProcess()) {
                     callbackAggregator->addPendingCallback();
                     process->deleteWebsiteData(m_sessionID, dataTypes, modifiedSince, [callbackAggregator] {
@@ -970,7 +972,8 @@
     
     auto networkProcessAccessType = computeNetworkProcessAccessTypeForDataRemoval(dataTypes, !isPersistent());
     if (networkProcessAccessType != ProcessAccessType::None) {
-        for (auto& processPool : ensureProcessPools()) {
+        auto pools = networkProcessAccessType == ProcessAccessType::Launch ? ensureProcessPools() : processPools();
+        for (auto& processPool : pools) {
             switch (networkProcessAccessType) {
             case ProcessAccessType::OnlyIfLaunched:
                 if (!processPool->networkProcess())
@@ -1198,7 +1201,7 @@
 {
     ASSERT(RunLoop::isMain());
 
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess()) {
             process->dumpResourceLoadStatistics(m_sessionID, WTFMove(completionHandler));
             break;
@@ -1215,7 +1218,7 @@
         return;
     }
 
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess()) {
             process->isPrevalentResource(m_sessionID, WebCore::RegistrableDomain { url }, WTFMove(completionHandler));
             break;
@@ -1232,7 +1235,7 @@
         return;
     }
 
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess()) {
             process->isGrandfathered(m_sessionID, WebCore::RegistrableDomain { url }, WTFMove(completionHandler));
             break;
@@ -1267,7 +1270,7 @@
     
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
     
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->setPrevalentResourceForDebugMode(m_sessionID, WebCore::RegistrableDomain { url }, [processPool, callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1282,7 +1285,7 @@
         return;
     }
     
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess()) {
             process->isVeryPrevalentResource(m_sessionID, WebCore::RegistrableDomain { url }, WTFMove(completionHandler));
             break;
@@ -1301,7 +1304,7 @@
     
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
     
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->setVeryPrevalentResource(m_sessionID, WebCore::RegistrableDomain { url }, [processPool, callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1328,7 +1331,7 @@
 
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
     
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->setSubframeUnderTopFrameDomain(m_sessionID, WebCore::RegistrableDomain { subFrameURL }, WebCore::RegistrableDomain { topFrameURL }, [processPool, callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1338,7 +1341,7 @@
 {
     ASSERT(RunLoop::isMain());
 
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess()) {
             process->isRegisteredAsSubFrameUnder(m_sessionID, WebCore::RegistrableDomain { subFrameURL }, WebCore::RegistrableDomain { topFrameURL }, WTFMove(completionHandler));
             break;
@@ -1357,7 +1360,7 @@
 
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
     
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->setSubresourceUnderTopFrameDomain(m_sessionID, WebCore::RegistrableDomain { subresourceURL }, WebCore::RegistrableDomain { topFrameURL }, [processPool, callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1367,16 +1370,13 @@
 {
     ASSERT(RunLoop::isMain());
     
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess()) {
             process->isRegisteredAsSubresourceUnder(m_sessionID, WebCore::RegistrableDomain { subresourceURL }, WebCore::RegistrableDomain { topFrameURL }, WTFMove(completionHandler));
-            break;
-        } else {
-            ASSERT_NOT_REACHED();
-            completionHandler(false);
-            break;
+            return;
         }
     }
+    completionHandler(false);
 }
 
 void WebsiteDataStore::setSubresourceUniqueRedirectTo(const URL& subresourceURL, const URL& urlRedirectedTo, CompletionHandler<void()>&& completionHandler)
@@ -1390,7 +1390,7 @@
 
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
     
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->setSubresourceUniqueRedirectTo(m_sessionID, WebCore::RegistrableDomain { subresourceURL }, WebCore::RegistrableDomain { urlRedirectedTo }, [processPool, callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1407,7 +1407,7 @@
 
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
     
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->setSubresourceUniqueRedirectFrom(m_sessionID, WebCore::RegistrableDomain { subresourceURL }, WebCore::RegistrableDomain { urlRedirectedFrom }, [processPool, callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1424,7 +1424,7 @@
 
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
     
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->setTopFrameUniqueRedirectTo(m_sessionID, WebCore::RegistrableDomain { topFrameURL }, WebCore::RegistrableDomain { urlRedirectedTo }, [processPool, callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1441,7 +1441,7 @@
 
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
     
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->setTopFrameUniqueRedirectFrom(m_sessionID, WebCore::RegistrableDomain { topFrameURL }, WebCore::RegistrableDomain { urlRedirectedFrom }, [processPool, callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1451,12 +1451,13 @@
 {
     ASSERT(RunLoop::isMain());
     
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess()) {
             process->isRegisteredAsRedirectingTo(m_sessionID, WebCore::RegistrableDomain { urlRedirectedFrom }, WebCore::RegistrableDomain { urlRedirectedTo }, WTFMove(completionHandler));
-            break;
+            return;
         }
     }
+    completionHandler(false);
 }
 
 void WebsiteDataStore::clearPrevalentResource(const URL& url, CompletionHandler<void()>&& completionHandler)
@@ -1470,7 +1471,7 @@
 
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
 
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->clearPrevalentResource(m_sessionID, WebCore::RegistrableDomain { url }, [processPool, callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1482,7 +1483,7 @@
 
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
     
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->resetParametersToDefaultValues(m_sessionID, [processPool, callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1492,7 +1493,7 @@
 {
     ASSERT(RunLoop::isMain());
     
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->submitTelemetry(m_sessionID, [] { });
     }
@@ -1504,7 +1505,7 @@
     
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
 
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->scheduleClearInMemoryAndPersistent(m_sessionID, modifiedSince, shouldGrandfather, [processPool, callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1539,7 +1540,7 @@
 
     RefPtr<CallbackAggregator> callbackAggregator = adoptRef(new CallbackAggregator(WTFMove(completionHandler)));
 
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess()) {
             process->getResourceLoadStatisticsDataSummary(m_sessionID, [callbackAggregator = callbackAggregator.copyRef()](Vector<WebResourceLoadStatisticsStore::ThirdPartyData>&& data) {
                 callbackAggregator->addResult(WTFMove(data));
@@ -1554,7 +1555,7 @@
     
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
 
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->scheduleClearInMemoryAndPersistent(m_sessionID, { }, shouldGrandfather, [processPool, callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1564,7 +1565,7 @@
 {
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
 
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->scheduleCookieBlockingUpdate(m_sessionID, [processPool, callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1576,7 +1577,7 @@
     
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
     
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->scheduleStatisticsAndDataRecordsProcessing(m_sessionID, [processPool, callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1591,7 +1592,7 @@
 
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
 
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->setLastSeen(m_sessionID, WebCore::RegistrableDomain { url }, seconds, [processPool, callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1606,7 +1607,7 @@
 
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
 
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->mergeStatisticForTesting(m_sessionID, WebCore::RegistrableDomain { url }, WebCore::RegistrableDomain { topFrameUrl1 }, WebCore::RegistrableDomain { topFrameUrl2 }, lastSeen, hadUserInteraction, mostRecentUserInteraction, isGrandfathered, isPrevalent, isVeryPrevalent, dataRecordsRemoved, [processPool, callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1669,7 +1670,7 @@
     
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
 
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->logUserInteraction(m_sessionID, WebCore::RegistrableDomain { url }, [callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1684,12 +1685,13 @@
         return;
     }
     
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess()) {
             process->hasHadUserInteraction(m_sessionID, WebCore::RegistrableDomain { url }, WTFMove(completionHandler));
-            break;
+            return;
         }
     }
+    completionHandler(false);
 }
 
 void WebsiteDataStore::isRelationshipOnlyInDatabaseOnce(const URL& subUrl, const URL& topUrl, CompletionHandler<void(bool)>&& completionHandler)
@@ -1701,12 +1703,13 @@
         return;
     }
     
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess()) {
             process->isRelationshipOnlyInDatabaseOnce(m_sessionID, WebCore::RegistrableDomain { subUrl }, WebCore::RegistrableDomain { topUrl }, WTFMove(completionHandler));
-            break;
+            return;
         }
     }
+    completionHandler(false);
 }
 
 void WebsiteDataStore::clearUserInteraction(const URL& url, CompletionHandler<void()>&& completionHandler)
@@ -1720,7 +1723,7 @@
     
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
 
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->clearUserInteraction(m_sessionID, WebCore::RegistrableDomain { url }, [callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1737,7 +1740,7 @@
     
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
     
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->setGrandfathered(m_sessionID, WebCore::RegistrableDomain { url }, isGrandfathered, [callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1749,7 +1752,7 @@
     
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
     
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->setUseITPDatabase(m_sessionID, value, [callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1761,7 +1764,7 @@
     
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
     
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->setCrossSiteLoadWithLinkDecorationForTesting(m_sessionID, WebCore::RegistrableDomain { fromURL }, WebCore::RegistrableDomain { toURL }, [processPool, callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1771,7 +1774,7 @@
 {
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
     
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* networkProcess = processPool->networkProcess())
             networkProcess->resetCrossSiteLoadsWithLinkDecorationForTesting(m_sessionID, [callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1781,7 +1784,7 @@
 {
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
     
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* networkProcess = processPool->networkProcess())
             networkProcess->deleteCookiesForTesting(m_sessionID, WebCore::RegistrableDomain { url }, includeHttpOnlyCookies, [callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -1789,24 +1792,24 @@
 
 void WebsiteDataStore::hasLocalStorageForTesting(const URL& url, CompletionHandler<void(bool)>&& completionHandler) const
 {
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* networkProcess = processPool->networkProcess()) {
             networkProcess->hasLocalStorage(m_sessionID, WebCore::RegistrableDomain { url }, WTFMove(completionHandler));
-            break;
+            return;
         }
     }
-    ASSERT(!completionHandler);
+    completionHandler(false);
 }
 
 void WebsiteDataStore::hasIsolatedSessionForTesting(const URL& url, CompletionHandler<void(bool)>&& completionHandler) const
 {
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* networkProcess = processPool->networkProcess()) {
             networkProcess->hasIsolatedSession(m_sessionID, WebCore::RegistrableDomain { url }, WTFMove(completionHandler));
-            break;
+            return;
         }
     }
-    ASSERT(!completionHandler);
+    completionHandler(false);
 }
 
 void WebsiteDataStore::setResourceLoadStatisticsShouldDowngradeReferrerForTesting(bool enabled, CompletionHandler<void()>&& completionHandler)
@@ -1813,13 +1816,10 @@
 {
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
     
-    for (auto& processPool : ensureProcessPools()) {
-        if (auto* networkProcess = processPool->networkProcess()) {
+    for (auto& processPool : processPools()) {
+        if (auto* networkProcess = processPool->networkProcess())
             networkProcess->setShouldDowngradeReferrerForTesting(enabled, [callbackAggregator = callbackAggregator.copyRef()] { });
-            break;
-        }
     }
-    ASSERT(!completionHandler);
 }
 
 #if !PLATFORM(COCOA)
@@ -1844,13 +1844,10 @@
             webProcess.setShouldBlockThirdPartyCookiesForTesting(blockingMode, [callbackAggregator = callbackAggregator.copyRef()] { });
     }
 
-    for (auto& processPool : ensureProcessPools()) {
-        if (auto* networkProcess = processPool->networkProcess()) {
+    for (auto& processPool : processPools()) {
+        if (auto* networkProcess = processPool->networkProcess())
             networkProcess->setShouldBlockThirdPartyCookiesForTesting(m_sessionID, blockingMode, [callbackAggregator = callbackAggregator.copyRef()] { });
-            break;
-        }
     }
-    ASSERT(!completionHandler);
 }
 
 void WebsiteDataStore::setResourceLoadStatisticsFirstPartyWebsiteDataRemovalModeForTesting(bool enabled, CompletionHandler<void()>&& completionHandler)
@@ -1858,13 +1855,10 @@
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
     auto mode = enabled ? WebCore::FirstPartyWebsiteDataRemovalMode::AllButCookies : WebCore::FirstPartyWebsiteDataRemovalMode::None;
 
-    for (auto& processPool : ensureProcessPools()) {
-        if (auto* networkProcess = processPool->networkProcess()) {
+    for (auto& processPool : processPools()) {
+        if (auto* networkProcess = processPool->networkProcess())
             networkProcess->setFirstPartyWebsiteDataRemovalModeForTesting(m_sessionID, mode, [callbackAggregator = callbackAggregator.copyRef()] { });
-            break;
-        }
     }
-    ASSERT(!completionHandler);
 }
 #endif // ENABLE(RESOURCE_LOAD_STATISTICS)
 
@@ -1886,7 +1880,7 @@
 #if ENABLE(RESOURCE_LOAD_STATISTICS)
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
     
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* networkProcess = processPool->networkProcess())
             networkProcess->resetCacheMaxAgeCapForPrevalentResources(m_sessionID, [callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -2094,16 +2088,14 @@
         return;
     }
 
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* networkProcess = processPool->networkProcess()) {
             networkProcess->isResourceLoadStatisticsEphemeral(m_sessionID, WTFMove(completionHandler));
-            break;
+            return;
         }
     }
-    ASSERT(!completionHandler);
-#else
+#endif
     completionHandler(false);
-#endif
 }
 
 #if ENABLE(RESOURCE_LOAD_STATISTICS)
@@ -2240,8 +2232,7 @@
     }
 
     for (auto& processPool : ensureProcessPools()) {
-        processPool->ensureNetworkProcess(this);
-        processPool->networkProcess()->getLocalStorageDetails(m_sessionID, [completionHandler = WTFMove(completionHandler)](auto&& details) {
+        processPool->ensureNetworkProcess(this).getLocalStorageDetails(m_sessionID, [completionHandler = WTFMove(completionHandler)](auto&& details) {
             completionHandler(WTFMove(details));
         });
         // FIXME: Support fetching from multiple pools.
@@ -2253,7 +2244,7 @@
 void WebsiteDataStore::resetQuota(CompletionHandler<void()>&& completionHandler)
 {
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* process = processPool->networkProcess())
             process->resetQuota(m_sessionID, [callbackAggregator = callbackAggregator.copyRef()] { });
     }
@@ -2289,13 +2280,13 @@
 
 void WebsiteDataStore::hasAppBoundSession(CompletionHandler<void(bool)>&& completionHandler) const
 {
-    for (auto& processPool : ensureProcessPools()) {
+    for (auto& processPool : processPools()) {
         if (auto* networkProcess = processPool->networkProcess()) {
             networkProcess->hasAppBoundSession(m_sessionID, WTFMove(completionHandler));
-            break;
+            return;
         }
     }
-    ASSERT(!completionHandler);
+    completionHandler(false);
 }
 
 void WebsiteDataStore::setInAppBrowserPrivacyEnabled(bool enabled, CompletionHandler<void()>&& completionHandler)
@@ -2302,11 +2293,9 @@
 {
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
 
-    for (auto& processPool : ensureProcessPools()) {
-        if (auto* networkProcess = processPool->networkProcess()) {
+    for (auto& processPool : processPools()) {
+        if (auto* networkProcess = processPool->networkProcess())
             networkProcess->setInAppBrowserPrivacyEnabled(m_sessionID, enabled, [processPool, callbackAggregator = callbackAggregator.copyRef()] { });
-            break;
-        }
     }
 }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to