void WebProcessProxy::addExistingWebPage(WebPageProxy* webPage, uint64_t pageID) { ASSERT(!m_pageMap.contains(pageID)); ASSERT(!globalPageMap().contains(pageID)); m_pageMap.set(pageID, webPage); globalPageMap().set(pageID, webPage); }
void WebProcessProxy::addExistingWebPage(WebPageProxy* webPage, uint64_t pageID) { m_pageMap.set(pageID, webPage); globalPageMap().set(pageID, webPage); #if PLATFORM(MAC) if (webPage->isProcessSuppressible()) m_processSuppressiblePages.add(pageID); updateProcessSuppressionState(); #endif }
Ref<WebPageProxy> WebProcessProxy::createWebPage(PageClient& pageClient, const WebPageConfiguration& configuration) { uint64_t pageID = generatePageID(); Ref<WebPageProxy> webPage = WebPageProxy::create(pageClient, *this, pageID, configuration); m_pageMap.set(pageID, webPage.ptr()); globalPageMap().set(pageID, webPage.ptr()); return webPage; }
PassRefPtr<WebPageProxy> WebProcessProxy::createWebPage(PageClient& pageClient, WebPageGroup& pageGroup) { uint64_t pageID = generatePageID(); RefPtr<WebPageProxy> webPage = WebPageProxy::create(pageClient, *this, pageGroup, pageID); m_pageMap.set(pageID, webPage.get()); globalPageMap().set(pageID, webPage.get()); #if PLATFORM(MAC) if (webPage->isProcessSuppressible()) m_processSuppressiblePages.add(pageID); updateProcessSuppressionState(); #endif return webPage.release(); }
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(); }
WebPageProxy* WebProcessProxy::webPage(uint64_t pageID) { return globalPageMap().get(pageID); }