void WebProcessProxy::shouldTerminate(bool& shouldTerminate) { shouldTerminate = canTerminateChildProcess(); if (shouldTerminate) { // We know that the web process is going to terminate so disconnect it from the context. disconnect(); } }
void WebProcessProxy::shouldTerminate(bool& shouldTerminate) { shouldTerminate = canTerminateChildProcess(); if (shouldTerminate) { // We know that the web process is going to terminate so start shutting it down in the UI process. shutDown(); } }
void WebProcessProxy::removeWebPage(uint64_t pageID) { m_pageMap.remove(pageID); globalPageMap().remove(pageID); #if PLATFORM(MAC) m_processSuppressiblePages.remove(pageID); updateProcessSuppressionState(); #endif // If this was the last WebPage open in that web process, and we have no other reason to keep it alive, let it go. // We only allow this when using a network process, as otherwise the WebProcess needs to preserve its session state. if (m_context->usesNetworkProcess() && canTerminateChildProcess()) { abortProcessLaunchIfNeeded(); disconnect(); } }
void WebProcessProxy::removeWebPage(uint64_t pageID) { m_pageMap.remove(pageID); globalPageMap().remove(pageID); Vector<uint64_t> itemIDsToRemove; for (auto& idAndItem : m_backForwardListItemMap) { if (idAndItem.value->pageID() == pageID) itemIDsToRemove.append(idAndItem.key); } for (auto itemID : itemIDsToRemove) m_backForwardListItemMap.remove(itemID); // If this was the last WebPage open in that web process, and we have no other reason to keep it alive, let it go. // We only allow this when using a network process, as otherwise the WebProcess needs to preserve its session state. if (!m_processPool->usesNetworkProcess() || state() == State::Terminated || !canTerminateChildProcess()) return; shutDown(); }