Title: [275916] trunk/Source
Revision
275916
Author
[email protected]
Date
2021-04-13 15:48:10 -0700 (Tue, 13 Apr 2021)

Log Message

WebProcessPool should store Vector<Ref<WebProcessProxy>> instead of Vector<RefPtr>
https://bugs.webkit.org/show_bug.cgi?id=224412

Patch by Alex Christensen <[email protected]> on 2021-04-13
Reviewed by Chris Dumez.

Source/WebKit:

No change in behavior, except I also changed a raw pointer to a WeakPtr, so we should be a little safer.

* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::remoteWebInspectorEnabledCallback):
(WebKit::WebProcessPool::registerNotificationObservers):
* UIProcess/Cocoa/WebProcessProxyCocoa.mm:
(WebKit::WebProcessProxy::cacheMediaMIMETypes):
* UIProcess/VisitedLinkStore.cpp:
(WebKit::VisitedLinkStore::removeAll):
(WebKit::VisitedLinkStore::sendStoreHandleToProcess):
(WebKit::VisitedLinkStore::didUpdateSharedStringHashes):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::gpuProcessCrashed):
(WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):
(WebKit::WebProcessPool::tryTakePrewarmedProcess):
(WebKit::WebProcessPool::initializeNewWebProcess):
(WebKit::WebProcessPool::enableProcessTermination):
(WebKit::WebProcessPool::shouldTerminate):
(WebKit::WebProcessPool::processDidFinishLaunching):
(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::processForRegistrableDomain):
(WebKit::WebProcessPool::createWebPage):
(WebKit::WebProcessPool::terminateAllWebContentProcesses):
(WebKit::webProcessProxyFromConnection):
* UIProcess/WebProcessPool.h:
(WebKit::WebProcessPool::sendToAllProcesses):
(WebKit::WebProcessPool::sendToAllProcessesForSession):
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didFinishLaunching):

Source/WTF:

* wtf/Ref.h:
(WTF::operator==):
(WTF::operator!=):

Modified Paths

Diff

Modified: trunk/Source/WTF/ChangeLog (275915 => 275916)


--- trunk/Source/WTF/ChangeLog	2021-04-13 22:42:33 UTC (rev 275915)
+++ trunk/Source/WTF/ChangeLog	2021-04-13 22:48:10 UTC (rev 275916)
@@ -1,5 +1,16 @@
 2021-04-13  Alex Christensen  <[email protected]>
 
+        WebProcessPool should store Vector<Ref<WebProcessProxy>> instead of Vector<RefPtr>
+        https://bugs.webkit.org/show_bug.cgi?id=224412
+
+        Reviewed by Chris Dumez.
+
+        * wtf/Ref.h:
+        (WTF::operator==):
+        (WTF::operator!=):
+
+2021-04-13  Alex Christensen  <[email protected]>
+
         Remove support for NPAPI plugins in WebView
         https://bugs.webkit.org/show_bug.cgi?id=224449
 

Modified: trunk/Source/WTF/wtf/Ref.h (275915 => 275916)


--- trunk/Source/WTF/wtf/Ref.h	2021-04-13 22:42:33 UTC (rev 275915)
+++ trunk/Source/WTF/wtf/Ref.h	2021-04-13 22:48:10 UTC (rev 275916)
@@ -289,6 +289,42 @@
     return is<ExpectedType>(source.get());
 }
 
+template<typename T, typename U, typename V, typename W>
+inline bool operator==(const Ref<T, U>& a, const Ref<V, W>& b)
+{
+    return a.ptr() == b.ptr();
+}
+
+template<typename T, typename U, typename V>
+inline bool operator==(const Ref<T, U>& a, V& b)
+{
+    return a.ptr() == &b;
+}
+
+template<typename T, typename U, typename V>
+inline bool operator==(T& a, const Ref<U, V>& b)
+{
+    return &a == b.ptr();
+}
+
+template<typename T, typename U, typename V, typename W>
+inline bool operator!=(const Ref<T, U>& a, const Ref<V, W>& b)
+{
+    return a.ptr() != b.ptr();
+}
+
+template<typename T, typename U, typename V>
+inline bool operator!=(const Ref<T, U>& a, V& b)
+{
+    return a.ptr() != &b;
+}
+
+template<typename T, typename U, typename V>
+inline bool operator!=(T& a, const Ref<U, V>& b)
+{
+    return &a != b.ptr();
+}
+
 } // namespace WTF
 
 using WTF::Ref;

Modified: trunk/Source/WebKit/ChangeLog (275915 => 275916)


--- trunk/Source/WebKit/ChangeLog	2021-04-13 22:42:33 UTC (rev 275915)
+++ trunk/Source/WebKit/ChangeLog	2021-04-13 22:48:10 UTC (rev 275916)
@@ -1,3 +1,40 @@
+2021-04-13  Alex Christensen  <[email protected]>
+
+        WebProcessPool should store Vector<Ref<WebProcessProxy>> instead of Vector<RefPtr>
+        https://bugs.webkit.org/show_bug.cgi?id=224412
+
+        Reviewed by Chris Dumez.
+
+        No change in behavior, except I also changed a raw pointer to a WeakPtr, so we should be a little safer.
+
+        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+        (WebKit::WebProcessPool::remoteWebInspectorEnabledCallback):
+        (WebKit::WebProcessPool::registerNotificationObservers):
+        * UIProcess/Cocoa/WebProcessProxyCocoa.mm:
+        (WebKit::WebProcessProxy::cacheMediaMIMETypes):
+        * UIProcess/VisitedLinkStore.cpp:
+        (WebKit::VisitedLinkStore::removeAll):
+        (WebKit::VisitedLinkStore::sendStoreHandleToProcess):
+        (WebKit::VisitedLinkStore::didUpdateSharedStringHashes):
+        * UIProcess/WebProcessPool.cpp:
+        (WebKit::WebProcessPool::gpuProcessCrashed):
+        (WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):
+        (WebKit::WebProcessPool::tryTakePrewarmedProcess):
+        (WebKit::WebProcessPool::initializeNewWebProcess):
+        (WebKit::WebProcessPool::enableProcessTermination):
+        (WebKit::WebProcessPool::shouldTerminate):
+        (WebKit::WebProcessPool::processDidFinishLaunching):
+        (WebKit::WebProcessPool::disconnectProcess):
+        (WebKit::WebProcessPool::processForRegistrableDomain):
+        (WebKit::WebProcessPool::createWebPage):
+        (WebKit::WebProcessPool::terminateAllWebContentProcesses):
+        (WebKit::webProcessProxyFromConnection):
+        * UIProcess/WebProcessPool.h:
+        (WebKit::WebProcessPool::sendToAllProcesses):
+        (WebKit::WebProcessPool::sendToAllProcessesForSession):
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::didFinishLaunching):
+
 2021-04-13  Lauro Moura  <[email protected]>
 
         REGRESSION(r275262) [WebDriver] Make automation JS code aware of injected script headers

Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (275915 => 275916)


--- trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm	2021-04-13 22:42:33 UTC (rev 275915)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm	2021-04-13 22:48:10 UTC (rev 275916)
@@ -605,10 +605,8 @@
 void WebProcessPool::remoteWebInspectorEnabledCallback(CFNotificationCenterRef, void *observer, CFStringRef name, const void *, CFDictionaryRef userInfo)
 {
     auto* pool = reinterpret_cast<WebProcessPool*>(observer);
-    for (size_t i = 0; i < pool->m_processes.size(); ++i) {
-        auto process = pool->m_processes[i];
+    for (auto& process : pool->m_processes)
         process->enableRemoteInspectorIfNeeded();
-    }
 }
 #endif
 
@@ -698,11 +696,11 @@
     m_accessibilityEnabledObserver = [[NSNotificationCenter defaultCenter] addObserverForName:(__bridge id)kAXSApplicationAccessibilityEnabledNotification object:nil queue:[NSOperationQueue currentQueue] usingBlock:^(NSNotification *) {
         if (!_AXSApplicationAccessibilityEnabled())
             return;
-        for (size_t i = 0; i < m_processes.size(); ++i) {
+        for (auto& process : m_processes) {
 #if ENABLE(CFPREFS_DIRECT_MODE)
-            m_processes[i]->unblockPreferenceServiceIfNeeded();
+            process->unblockPreferenceServiceIfNeeded();
 #endif
-            m_processes[i]->unblockAccessibilityServerIfNeeded();
+            process->unblockAccessibilityServerIfNeeded();
         }
     }];
 #if ENABLE(CFPREFS_DIRECT_MODE)

Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm (275915 => 275916)


--- trunk/Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm	2021-04-13 22:42:33 UTC (rev 275915)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm	2021-04-13 22:48:10 UTC (rev 275916)
@@ -178,7 +178,7 @@
 
     mediaTypeCache() = types;
     for (auto& process : processPool().processes()) {
-        if (process != this)
+        if (process != *this)
             cacheMediaMIMETypesInternal(types);
     }
 }

Modified: trunk/Source/WebKit/UIProcess/VisitedLinkStore.cpp (275915 => 275916)


--- trunk/Source/WebKit/UIProcess/VisitedLinkStore.cpp	2021-04-13 22:42:33 UTC (rev 275915)
+++ trunk/Source/WebKit/UIProcess/VisitedLinkStore.cpp	2021-04-13 22:48:10 UTC (rev 275916)
@@ -95,7 +95,7 @@
     m_linkHashStore.clear();
 
     for (auto& process : m_processes) {
-        ASSERT(process.processPool().processes().contains(&process));
+        ASSERT(process.processPool().processes().contains(process));
         process.send(Messages::VisitedLinkTableController::RemoveAllVisitedLinks(), identifier());
     }
 }
@@ -112,7 +112,7 @@
 
 void VisitedLinkStore::sendStoreHandleToProcess(WebProcessProxy& process)
 {
-    ASSERT(process.processPool().processes().contains(&process));
+    ASSERT(process.processPool().processes().contains(process));
 
     SharedMemory::Handle handle;
     if (!m_linkHashStore.createSharedMemoryHandle(handle))
@@ -138,7 +138,7 @@
     ASSERT(!addedHashes.isEmpty() || !removedHashes.isEmpty());
 
     for (auto& process : m_processes) {
-        ASSERT(process.processPool().processes().contains(&process));
+        ASSERT(process.processPool().processes().contains(process));
 
         if (addedHashes.size() > 20 || !removedHashes.isEmpty())
             process.send(Messages::VisitedLinkTableController::AllVisitedLinkStateChanged(), identifier());

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (275915 => 275916)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2021-04-13 22:42:33 UTC (rev 275915)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2021-04-13 22:48:10 UTC (rev 275916)
@@ -510,7 +510,7 @@
     m_gpuProcess = nullptr;
 
     m_client.gpuProcessDidCrash(this, identifier);
-    Vector<RefPtr<WebProcessProxy>> processes = m_processes;
+    Vector<Ref<WebProcessProxy>> processes = m_processes;
     for (auto& process : processes)
         process->gpuProcessCrashed();
 
@@ -569,7 +569,7 @@
 
     if (!s_useSeparateServiceWorkerProcess) {
         for (auto& process : processPool->m_processes) {
-            if (process == processPool->m_prewarmedProcess || process->isDummyProcessProxy())
+            if (process.ptr() == processPool->m_prewarmedProcess.get() || process->isDummyProcessProxy())
                 continue;
             if (&process->websiteDataStore() != websiteDataStore)
                 continue;
@@ -576,7 +576,7 @@
             if (!process->isMatchingRegistrableDomain(registrableDomain))
                 continue;
 
-            serviceWorkerProcessProxy = process.get();
+            serviceWorkerProcessProxy = process.ptr();
             serviceWorkerProcessProxy->enableServiceWorkers(processPool->userContentControllerIdentifierForServiceWorkers());
 
             if (serviceWorkerProcessProxy->isInProcessCache()) {
@@ -670,7 +670,7 @@
     // There is sometimes a delay until we get notified that a prewarmed process has been terminated (e.g. after resuming
     // from suspension) so make sure the process is still running here before deciding to use it.
     if (m_prewarmedProcess->wasTerminated()) {
-        WEBPROCESSPOOL_RELEASE_LOG_ERROR(Process, "tryTakePrewarmedProcess: Not using prewarmed process because it has been terminated (process=%p, PID=%d)", m_prewarmedProcess, m_prewarmedProcess->processIdentifier());
+        WEBPROCESSPOOL_RELEASE_LOG_ERROR(Process, "tryTakePrewarmedProcess: Not using prewarmed process because it has been terminated (process=%p, PID=%d)", m_prewarmedProcess.get(), m_prewarmedProcess->processIdentifier());
         m_prewarmedProcess = nullptr;
         return nullptr;
     }
@@ -686,7 +686,7 @@
     m_prewarmedProcess->setWebsiteDataStore(websiteDataStore);
     m_prewarmedProcess->markIsNoLongerInPrewarmedPool();
 
-    return std::exchange(m_prewarmedProcess, nullptr);
+    return std::exchange(m_prewarmedProcess, nullptr).get();
 }
 
 #if PLATFORM(MAC)
@@ -871,7 +871,7 @@
 
     if (isPrewarmed == WebProcessProxy::IsPrewarmed::Yes) {
         ASSERT(!m_prewarmedProcess);
-        m_prewarmedProcess = &process;
+        m_prewarmedProcess = makeWeakPtr(process);
     }
 
 #if PLATFORM(IOS_FAMILY) && !PLATFORM(MACCATALYST)
@@ -901,17 +901,16 @@
 void WebProcessPool::enableProcessTermination()
 {
     m_processTerminationEnabled = true;
-    // FIXME: m_processes should be Vector<Ref<WebProcessProxy>>
-    Vector<RefPtr<WebProcessProxy>> processes = m_processes;
-    for (size_t i = 0; i < processes.size(); ++i) {
-        if (shouldTerminate(*processes[i]))
-            processes[i]->terminate();
+    Vector<Ref<WebProcessProxy>> processes = m_processes;
+    for (auto& process : processes) {
+        if (shouldTerminate(process))
+            process->terminate();
     }
 }
 
 bool WebProcessPool::shouldTerminate(WebProcessProxy& process)
 {
-    ASSERT(m_processes.contains(&process));
+    ASSERT(m_processes.contains(process));
 
     if (!m_processTerminationEnabled || m_configuration->alwaysKeepAndReuseSwappedProcesses())
         return false;
@@ -919,7 +918,7 @@
     return true;
 }
 
-void WebProcessPool::processDidFinishLaunching(WebProcessProxy* process)
+void WebProcessPool::processDidFinishLaunching(WebProcessProxy& process)
 {
     ASSERT(m_processes.contains(process));
 
@@ -933,24 +932,24 @@
     if (m_memorySamplerEnabled) {
         SandboxExtension::Handle sampleLogSandboxHandle;        
         WallTime now = WallTime::now();
-        String sampleLogFilePath = makeString("WebProcess", static_cast<unsigned long long>(now.secondsSinceEpoch().seconds()), "pid", process->processIdentifier());
+        String sampleLogFilePath = makeString("WebProcess", static_cast<unsigned long long>(now.secondsSinceEpoch().seconds()), "pid", process.processIdentifier());
         sampleLogFilePath = SandboxExtension::createHandleForTemporaryFile(sampleLogFilePath, SandboxExtension::Type::ReadWrite, sampleLogSandboxHandle);
         
-        process->send(Messages::WebProcess::StartMemorySampler(sampleLogSandboxHandle, sampleLogFilePath, m_memorySamplerInterval), 0);
+        process.send(Messages::WebProcess::StartMemorySampler(sampleLogSandboxHandle, sampleLogFilePath, m_memorySamplerInterval), 0);
     }
 
     if (m_configuration->fullySynchronousModeIsAllowedForTesting())
-        process->connection()->allowFullySynchronousModeForTesting();
+        process.connection()->allowFullySynchronousModeForTesting();
 
     if (m_configuration->ignoreSynchronousMessagingTimeoutsForTesting())
-        process->connection()->ignoreTimeoutsForTesting();
+        process.connection()->ignoreTimeoutsForTesting();
 
-    m_connectionClient.didCreateConnection(this, process->webConnection());
+    m_connectionClient.didCreateConnection(this, process.webConnection());
 }
 
 void WebProcessPool::disconnectProcess(WebProcessProxy& process)
 {
-    ASSERT(m_processes.contains(&process));
+    ASSERT(m_processes.contains(process));
 
     if (m_prewarmedProcess == &process) {
         ASSERT(m_prewarmedProcess->isPrewarmed());
@@ -973,7 +972,7 @@
 
     static_cast<WebContextSupplement*>(supplement<WebGeolocationManagerProxy>())->processDidClose(&process);
 
-    m_processes.removeFirst(&process);
+    m_processes.removeFirst(process);
 
 #if ENABLE(GAMEPAD)
     if (m_processesUsingGamepads.contains(process))
@@ -987,7 +986,7 @@
 {
     if (!registrableDomain.isEmpty()) {
         if (auto process = webProcessCache().takeProcess(registrableDomain, websiteDataStore)) {
-            ASSERT(m_processes.contains(process.get()));
+            ASSERT(m_processes.contains(*process));
             return process.releaseNonNull();
         }
 
@@ -994,7 +993,7 @@
         // Check if we have a suspended page for the given registrable domain and use its process if we do, for performance reasons.
         if (auto process = SuspendedPageProxy::findReusableSuspendedPageProcess(*this, registrableDomain, websiteDataStore)) {
             WEBPROCESSPOOL_RELEASE_LOG(ProcessSwapping, "processForRegistrableDomain: Using WebProcess from a SuspendedPage (process=%p, PID=%i)", process.get(), process->processIdentifier());
-            ASSERT(m_processes.contains(process.get()));
+            ASSERT(m_processes.contains(*process));
             return process.releaseNonNull();
         }
     }
@@ -1003,7 +1002,7 @@
         WEBPROCESSPOOL_RELEASE_LOG(ProcessSwapping, "processForRegistrableDomain: Using prewarmed process (process=%p, PID=%i)", process.get(), process->processIdentifier());
         if (!registrableDomain.isEmpty())
             tryPrewarmWithDomainInformation(*process, registrableDomain);
-        ASSERT(m_processes.contains(process.get()));
+        ASSERT(m_processes.contains(*process));
         return process.releaseNonNull();
     }
 
@@ -1015,7 +1014,7 @@
 #endif
 
         for (auto& process : m_processes) {
-            if (process == m_prewarmedProcess || process->isDummyProcessProxy())
+            if (process.ptr() == m_prewarmedProcess.get() || process->isDummyProcessProxy())
                 continue;
 #if ENABLE(SERVICE_WORKER)
             if (process->isRunningServiceWorkers())
@@ -1023,7 +1022,7 @@
 #endif
             if (mustMatchDataStore && &process->websiteDataStore() != &websiteDataStore)
                 continue;
-            return *process;
+            return process;
         }
     }
     return createNewWebProcess(&websiteDataStore);
@@ -1070,7 +1069,7 @@
         if (!process) {
             process = WebProcessProxy::create(*this, pageConfiguration->websiteDataStore(), WebProcessProxy::IsPrewarmed::No, WebProcessProxy::ShouldLaunchProcess::No);
             m_dummyProcessProxies.add(pageConfiguration->websiteDataStore()->sessionID(), makeWeakPtr(*process));
-            m_processes.append(process.copyRef());
+            m_processes.append(*process);
         }
     } else
         process = processForRegistrableDomain(*pageConfiguration->websiteDataStore(), nullptr, { });
@@ -1501,7 +1500,7 @@
 void WebProcessPool::terminateAllWebContentProcesses()
 {
     WEBPROCESSPOOL_RELEASE_LOG_ERROR(Process, "terminateAllWebContentProcesses");
-    Vector<RefPtr<WebProcessProxy>> processes = m_processes;
+    Vector<Ref<WebProcessProxy>> processes = m_processes;
     for (auto& process : processes)
         process->terminate();
 }
@@ -1558,11 +1557,11 @@
 #endif
 }
 
-static WebProcessProxy* webProcessProxyFromConnection(IPC::Connection& connection, const Vector<RefPtr<WebProcessProxy>>& processes)
+static WebProcessProxy* webProcessProxyFromConnection(IPC::Connection& connection, const Vector<Ref<WebProcessProxy>>& processes)
 {
     for (auto& process : processes) {
         if (process->hasConnection(connection))
-            return process.get();
+            return process.ptr();
     }
 
     ASSERT_NOT_REACHED();

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.h (275915 => 275916)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.h	2021-04-13 22:42:33 UTC (rev 275915)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.h	2021-04-13 22:48:10 UTC (rev 275916)
@@ -186,7 +186,7 @@
     void setCustomWebContentServiceBundleIdentifier(const String&);
     const String& customWebContentServiceBundleIdentifier() { return m_configuration->customWebContentServiceBundleIdentifier(); }
 
-    const Vector<RefPtr<WebProcessProxy>>& processes() const { return m_processes; }
+    const Vector<Ref<WebProcessProxy>>& processes() const { return m_processes; }
 
     // WebProcessProxy object which does not have a running process which is used for convenience, to avoid
     // null checks in WebPageProxy.
@@ -195,7 +195,7 @@
     template<typename T> void sendToAllProcesses(const T& message);
     template<typename T> void sendToAllProcessesForSession(const T& message, PAL::SessionID);
 
-    void processDidFinishLaunching(WebProcessProxy*);
+    void processDidFinishLaunching(WebProcessProxy&);
 
     WebProcessCache& webProcessCache() { return m_webProcessCache.get(); }
 
@@ -596,8 +596,8 @@
 
     IPC::MessageReceiverMap m_messageReceiverMap;
 
-    Vector<RefPtr<WebProcessProxy>> m_processes;
-    WebProcessProxy* m_prewarmedProcess { nullptr };
+    Vector<Ref<WebProcessProxy>> m_processes;
+    WeakPtr<WebProcessProxy> m_prewarmedProcess;
 
     HashMap<PAL::SessionID, WeakPtr<WebProcessProxy>> m_dummyProcessProxies; // Lightweight WebProcessProxy objects without backing process.
 
@@ -797,9 +797,7 @@
 template<typename T>
 void WebProcessPool::sendToAllProcesses(const T& message)
 {
-    size_t processCount = m_processes.size();
-    for (size_t i = 0; i < processCount; ++i) {
-        WebProcessProxy* process = m_processes[i].get();
+    for (auto& process : m_processes) {
         if (process->canSendMessage())
             process->send(T(message), 0);
     }
@@ -808,9 +806,7 @@
 template<typename T>
 void WebProcessPool::sendToAllProcessesForSession(const T& message, PAL::SessionID sessionID)
 {
-    size_t processCount = m_processes.size();
-    for (size_t i = 0; i < processCount; ++i) {
-        WebProcessProxy* process = m_processes[i].get();
+    for (auto& process : m_processes) {
         if (process->canSendMessage() && !process->isPrewarmed() && process->sessionID() == sessionID)
             process->send(T(message), 0);
     }

Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp (275915 => 275916)


--- trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp	2021-04-13 22:42:33 UTC (rev 275915)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp	2021-04-13 22:48:10 UTC (rev 275916)
@@ -1028,7 +1028,7 @@
     RELEASE_ASSERT(!m_webConnection);
     m_webConnection = WebConnectionToWebProcess::create(this);
 
-    m_processPool->processDidFinishLaunching(this);
+    m_processPool->processDidFinishLaunching(*this);
     m_backgroundResponsivenessTimer.updateState();
 
 #if ENABLE(IPC_TESTING_API)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to