Title: [279354] trunk/Source/WebKit

Diff

Modified: trunk/Source/WebKit/ChangeLog (279353 => 279354)


--- trunk/Source/WebKit/ChangeLog	2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/ChangeLog	2021-06-29 00:24:54 UTC (rev 279354)
@@ -1,3 +1,13 @@
+2021-06-28  Chris Dumez  <[email protected]>
+
+        NetworkProcessProxy::networkProcessDidTerminate() should copy process pools before iterating over them
+        https://bugs.webkit.org/show_bug.cgi?id=227468
+
+        Reviewed by Alex Christensen.
+
+        * UIProcess/Network/NetworkProcessProxy.cpp:
+        (WebKit::NetworkProcessProxy::networkProcessDidTerminate):
+
 2021-06-28  Sihui Liu  <[email protected]>
 
         Nullptr crash in ResourceLoadStatisticsDatabaseStore::allAttributedPrivateClickMeasurement

Modified: trunk/Source/WebKit/Shared/API/APIURLRequest.cpp (279353 => 279354)


--- trunk/Source/WebKit/Shared/API/APIURLRequest.cpp	2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/Shared/API/APIURLRequest.cpp	2021-06-29 00:24:54 UTC (rev 279354)
@@ -48,7 +48,7 @@
 {
     ResourceRequest::setDefaultTimeoutInterval(timeoutInterval);
 
-    for (auto* processPool : WebProcessPool::allProcessPools())
+    for (auto& processPool : WebProcessPool::allProcessPools())
         processPool->setDefaultRequestTimeoutInterval(timeoutInterval);
 }
 

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm (279353 => 279354)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm	2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm	2021-06-29 00:24:54 UTC (rev 279354)
@@ -176,7 +176,7 @@
 + (NSArray<WKProcessPool *> *)_allProcessPoolsForTesting
 {
     return createNSArray(WebKit::WebProcessPool::allProcessPools(), [] (auto& pool) {
-        return wrapper(*pool);
+        return wrapper(pool.get());
     }).autorelease();
 }
 

Modified: trunk/Source/WebKit/UIProcess/Cocoa/PreferenceObserver.mm (279353 => 279354)


--- trunk/Source/WebKit/UIProcess/Cocoa/PreferenceObserver.mm	2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/Cocoa/PreferenceObserver.mm	2021-06-29 00:24:54 UTC (rev 279354)
@@ -180,7 +180,7 @@
         if (encodedValue)
             encodedString = String(encodedValue.get());
 
-        for (auto* processPool : WebKit::WebProcessPool::allProcessPools())
+        for (auto& processPool : WebKit::WebProcessPool::allProcessPools())
             processPool->notifyPreferencesChanged(domain.get(), key.get(), encodedString);
     });
 #endif

Modified: trunk/Source/WebKit/UIProcess/Cocoa/WKFullKeyboardAccessWatcher.mm (279353 => 279354)


--- trunk/Source/WebKit/UIProcess/Cocoa/WKFullKeyboardAccessWatcher.mm	2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WKFullKeyboardAccessWatcher.mm	2021-06-29 00:24:54 UTC (rev 279354)
@@ -64,7 +64,7 @@
 
 - (void)notifyAllProcessPools
 {
-    for (auto* processPool : WebKit::WebProcessPool::allProcessPools())
+    for (auto& processPool : WebKit::WebProcessPool::allProcessPools())
         processPool->fullKeyboardAccessModeChanged(fullKeyboardAccessEnabled);
 }
 

Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebInspectorPreferenceObserver.mm (279353 => 279354)


--- trunk/Source/WebKit/UIProcess/Cocoa/WebInspectorPreferenceObserver.mm	2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebInspectorPreferenceObserver.mm	2021-06-29 00:24:54 UTC (rev 279354)
@@ -64,7 +64,7 @@
 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey, id> *)change context:(void *)context
 {
     RunLoop::main().dispatch([] {
-        for (auto* pool : WebKit::WebProcessPool::allProcessPools()) {
+        for (auto& pool : WebKit::WebProcessPool::allProcessPools()) {
             for (size_t i = 0; i < pool->processes().size(); ++i) {
                 auto process = pool->processes()[i];
                 process->enableRemoteInspectorIfNeeded();

Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (279353 => 279354)


--- trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm	2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm	2021-06-29 00:24:54 UTC (rev 279354)
@@ -913,7 +913,7 @@
 
 void WebProcessPool::notifyProcessPoolsApplicationIsAboutToSuspend()
 {
-    for (auto* processPool : allProcessPools())
+    for (auto& processPool : allProcessPools())
         processPool->applicationIsAboutToSuspend();
 }
 #endif

Modified: trunk/Source/WebKit/UIProcess/LegacyGlobalSettings.cpp (279353 => 279354)


--- trunk/Source/WebKit/UIProcess/LegacyGlobalSettings.cpp	2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/LegacyGlobalSettings.cpp	2021-06-29 00:24:54 UTC (rev 279354)
@@ -42,7 +42,7 @@
 void LegacyGlobalSettings::setCacheModel(CacheModel cacheModel)
 {
     m_cacheModel = cacheModel;
-    for (auto processPool : WebProcessPool::allProcessPools())
+    for (auto& processPool : WebProcessPool::allProcessPools())
         processPool->setCacheModel(cacheModel);
 }
 

Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp (279353 => 279354)


--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp	2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp	2021-06-29 00:24:54 UTC (rev 279354)
@@ -172,7 +172,7 @@
 
 static bool anyProcessPoolAlwaysRunsAtBackgroundPriority()
 {
-    for (auto* processPool : WebProcessPool::allProcessPools()) {
+    for (auto& processPool : WebProcessPool::allProcessPools()) {
         if (processPool->alwaysRunsAtBackgroundPriority())
             return true;
     }
@@ -181,7 +181,7 @@
 
 static bool anyProcessPoolShouldTakeUIBackgroundAssertion()
 {
-    for (auto* processPool : WebProcessPool::allProcessPools()) {
+    for (auto& processPool : WebProcessPool::allProcessPools()) {
         if (processPool->shouldTakeUIBackgroundAssertion())
             return true;
     }
@@ -323,7 +323,7 @@
     if (defaultNetworkProcess() == this)
         defaultNetworkProcess() = nullptr;
 
-    for (auto* processPool : WebProcessPool::allProcessPools())
+    for (auto& processPool : WebProcessPool::allProcessPools())
         processPool->networkProcessDidTerminate(*this, reason);
     for (auto& websiteDataStore : copyToVectorOf<Ref<WebsiteDataStore>>(m_websiteDataStores))
         websiteDataStore->networkProcessDidTerminate(*this);
@@ -1218,7 +1218,7 @@
 
 void NetworkProcessProxy::setDomainsWithUserInteraction(HashSet<WebCore::RegistrableDomain>&& domains)
 {
-    for (auto* processPool : WebProcessPool::allProcessPools())
+    for (auto& processPool : WebProcessPool::allProcessPools())
         processPool->setDomainsWithUserInteraction(HashSet<WebCore::RegistrableDomain> { domains });
 }
 
@@ -1226,7 +1226,7 @@
 {    
     auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
     
-    for (auto* processPool : WebProcessPool::allProcessPools())
+    for (auto& processPool : WebProcessPool::allProcessPools())
         processPool->setDomainsWithCrossPageStorageAccess(HashMap<TopFrameDomain, SubResourceDomain> { domains }, [callbackAggregator] { });
 }
 
@@ -1511,7 +1511,7 @@
 
 static bool anyProcessPoolHasForegroundWebProcesses()
 {
-    for (auto* processPool : WebProcessPool::allProcessPools()) {
+    for (auto& processPool : WebProcessPool::allProcessPools()) {
         if (processPool->hasForegroundWebProcesses())
             return true;
     }
@@ -1520,7 +1520,7 @@
 
 static bool anyProcessPoolHasBackgroundWebProcesses()
 {
-    for (auto* processPool : WebProcessPool::allProcessPools()) {
+    for (auto& processPool : WebProcessPool::allProcessPools()) {
         if (processPool->hasBackgroundWebProcesses())
             return true;
     }

Modified: trunk/Source/WebKit/UIProcess/Plugins/PluginProcessProxy.cpp (279353 => 279354)


--- trunk/Source/WebKit/UIProcess/Plugins/PluginProcessProxy.cpp	2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/Plugins/PluginProcessProxy.cpp	2021-06-29 00:24:54 UTC (rev 279354)
@@ -207,9 +207,8 @@
         exitFullscreen();
 #endif
 
-    const Vector<WebProcessPool*>& processPools = WebProcessPool::allProcessPools();
-    for (size_t i = 0; i < processPools.size(); ++i)
-        processPools[i]->sendToAllProcesses(Messages::PluginProcessConnectionManager::PluginProcessCrashed(m_pluginProcessToken));
+    for (auto& processPool : WebProcessPool::allProcessPools())
+        processPool->sendToAllProcesses(Messages::PluginProcessConnectionManager::PluginProcessCrashed(m_pluginProcessToken));
 
     // This will cause us to be deleted.
     pluginProcessCrashedOrFailedToLaunch();

Modified: trunk/Source/WebKit/UIProcess/WebMemoryPressureHandler.cpp (279353 => 279354)


--- trunk/Source/WebKit/UIProcess/WebMemoryPressureHandler.cpp	2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/WebMemoryPressureHandler.cpp	2021-06-29 00:24:54 UTC (rev 279354)
@@ -43,7 +43,7 @@
         ViewSnapshotStore::singleton().discardSnapshotImages();
 #endif
 
-        for (auto* processPool : WebProcessPool::allProcessPools())
+        for (auto& processPool : WebProcessPool::allProcessPools())
             processPool->handleMemoryPressureWarning(critical);
     });
     memoryPressureHandler.install();

Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (279353 => 279354)


--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2021-06-29 00:24:54 UTC (rev 279354)
@@ -5444,11 +5444,7 @@
     if (processPools.isEmpty())
         return nullptr;
     
-    auto processPool = processPools[0];
-    if (!processPool)
-        return nullptr;
-    
-    for (auto& webProcess : processPool->processes()) {
+    for (auto& webProcess : processPools[0]->processes()) {
         for (auto& page : webProcess->pages()) {
             if (page->sessionID().isEphemeral())
                 continue;

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (279353 => 279354)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2021-06-29 00:24:54 UTC (rev 279354)
@@ -174,9 +174,11 @@
     return processPools;
 }
 
-const Vector<WebProcessPool*>& WebProcessPool::allProcessPools()
+Vector<Ref<WebProcessPool>> WebProcessPool::allProcessPools()
 {
-    return processPools();
+    return WTF::map(processPools(), [] (auto&& v) -> Ref<WebProcessPool> {
+        return *v;
+    });
 }
 
 static HashSet<String, ASCIICaseInsensitiveHash>& globalURLSchemesWithCustomProtocolHandlers()
@@ -2041,11 +2043,8 @@
     WEBPROCESSPOOL_RELEASE_LOG_STATIC(ServiceWorker, "setUseSeparateServiceWorkerProcess: (useSeparateServiceWorkerProcess=%d)", useSeparateServiceWorkerProcess);
 
     s_useSeparateServiceWorkerProcess = useSeparateServiceWorkerProcess;
-    auto processPools = WTF::map(WebProcessPool::allProcessPools(), [](auto* pool) { return makeWeakPtr(pool); });
-    for (auto& processPool : processPools) {
-        if (processPool)
-            processPool->terminateServiceWorkers();
-    }
+    for (auto& processPool : allProcessPools())
+        processPool->terminateServiceWorkers();
 }
 
 #if ENABLE(SERVICE_WORKER)

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.h (279353 => 279354)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.h	2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.h	2021-06-29 00:24:54 UTC (rev 279354)
@@ -138,7 +138,7 @@
 
     API::ProcessPoolConfiguration& configuration() { return m_configuration.get(); }
 
-    static const Vector<WebProcessPool*>& allProcessPools();
+    static Vector<Ref<WebProcessPool>> allProcessPools();
 
     template <typename T>
     T* supplement()

Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp (279353 => 279354)


--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp	2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp	2021-06-29 00:24:54 UTC (rev 279354)
@@ -1288,7 +1288,7 @@
         });
     });
     
-    for (auto* processPool : WebProcessPool::allProcessPools())
+    for (auto& processPool : WebProcessPool::allProcessPools())
         processPool->sendResourceLoadStatisticsDataImmediately([wtfCallbackAggregator] { });
 }
 
@@ -1629,7 +1629,7 @@
     if (processPools.isEmpty()) {
         // Check if we're one of the legacy data stores.
         for (auto& processPool : WebProcessPool::allProcessPools()) {
-            processPools.add(processPool);
+            processPools.add(processPool.ptr());
             if (processPools.size() == limit)
                 break;
         }
@@ -1911,7 +1911,7 @@
 
 void WebsiteDataStore::setCacheModelSynchronouslyForTesting(CacheModel cacheModel)
 {
-    for (auto processPool : WebProcessPool::allProcessPools())
+    for (auto& processPool : WebProcessPool::allProcessPools())
         processPool->setCacheModelSynchronouslyForTesting(cacheModel);
 }
 

Modified: trunk/Source/WebKit/UIProcess/gtk/WebTextChecker.cpp (279353 => 279354)


--- trunk/Source/WebKit/UIProcess/gtk/WebTextChecker.cpp	2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/gtk/WebTextChecker.cpp	2021-06-29 00:24:54 UTC (rev 279354)
@@ -51,9 +51,8 @@
 
 static void updateStateForAllContexts()
 {
-    const Vector<WebProcessPool*>& contexts = WebProcessPool::allProcessPools();
-    for (size_t i = 0; i < contexts.size(); ++i)
-        contexts[i]->textCheckerStateChanged();
+    for (auto& processPool : WebProcessPool::allProcessPools())
+        processPool->textCheckerStateChanged();
 }
 
 void WebTextChecker::continuousSpellCheckingEnabledStateChanged(bool enabled)

Modified: trunk/Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp (279353 => 279354)


--- trunk/Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp	2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp	2021-06-29 00:24:54 UTC (rev 279354)
@@ -380,7 +380,7 @@
             if (usedPercentage >= s_memoryPresurePercentageThreshold) {
                 bool isCritical = (usedPercentage >= s_memoryPresurePercentageThresholdCritical);
                 RunLoop::main().dispatch([isCritical] {
-                    for (auto* processPool : WebProcessPool::allProcessPools())
+                    for (auto& processPool : WebProcessPool::allProcessPools())
                         processPool->sendMemoryPressureEvent(isCritical);
                 });
             }

Modified: trunk/Source/WebKit/UIProcess/mac/WindowServerConnection.mm (279353 => 279354)


--- trunk/Source/WebKit/UIProcess/mac/WindowServerConnection.mm	2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/mac/WindowServerConnection.mm	2021-06-29 00:24:54 UTC (rev 279354)
@@ -43,7 +43,7 @@
 
 void WindowServerConnection::windowServerConnectionStateChanged()
 {
-    for (auto* processPool : WebProcessPool::allProcessPools())
+    for (auto& processPool : WebProcessPool::allProcessPools())
         processPool->windowServerConnectionStateChanged();
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to