void WebProcess::terminateIfPossible() { if (!m_pageMap.isEmpty()) return; if (m_inDidClose) return; if (DownloadManager::shared().isDownloading()) return; // Keep running forever if we're running in the same process. if (!isSeparateProcess()) return; // FIXME: the ShouldTerminate message should also send termination parameters, such as any session cookies that need to be preserved. bool shouldTerminate = false; if (m_connection->sendSync(Messages::WebProcessProxy::ShouldTerminate(), Messages::WebProcessProxy::ShouldTerminate::Reply(shouldTerminate), 0) && !shouldTerminate) return; // Actually terminate the process. #ifndef NDEBUG gcController().garbageCollectNow(); memoryCache()->setDisabled(true); #endif // Invalidate our connection. m_connection->invalidate(); m_connection = nullptr; platformTerminate(); m_runLoop->stop(); }
void WebProcess::terminate() { #ifndef NDEBUG gcController().garbageCollectNow(); memoryCache()->setDisabled(true); #endif m_webConnection->invalidate(); m_webConnection = nullptr; platformTerminate(); ChildProcess::terminate(); }
void WebProcess::terminate() { #ifndef NDEBUG gcController().garbageCollectNow(); memoryCache()->setDisabled(true); #endif // Invalidate our connection. m_connection->removeQueueClient(this); m_connection->invalidate(); m_connection = nullptr; platformTerminate(); m_runLoop->stop(); }
void WebProcess::terminate() { #ifndef NDEBUG GCController::singleton().garbageCollectNow(); FontCache::singleton().invalidate(); MemoryCache::singleton().setDisabled(true); #endif m_webConnection->invalidate(); m_webConnection = nullptr; platformTerminate(); ChildProcess::terminate(); }
void NetworkProcess::terminate() { platformTerminate(); ChildProcess::terminate(); }