DownloadProxy* WebContext::download(WebPageProxy* initiatingPage, const ResourceRequest& request) { DownloadProxy* downloadProxy = createDownloadProxy(); uint64_t initiatingPageID = initiatingPage ? initiatingPage->pageID() : 0; #if ENABLE(NETWORK_PROCESS) if (usesNetworkProcess() && networkProcess()) { // FIXME (NetworkProcess): Replicate whatever FrameLoader::setOriginalURLForDownloadRequest does with the request here. networkProcess()->send(Messages::NetworkProcess::DownloadRequest(downloadProxy->downloadID(), request), 0); return downloadProxy; } #endif m_processes[0]->send(Messages::WebProcess::DownloadRequest(downloadProxy->downloadID(), initiatingPageID, request), 0); return downloadProxy; }
DownloadProxy* WebProcessPool::download(WebPageProxy* initiatingPage, const ResourceRequest& request) { DownloadProxy* downloadProxy = createDownloadProxy(request); SessionID sessionID = initiatingPage ? initiatingPage->sessionID() : SessionID::defaultSessionID(); if (networkProcess()) { ResourceRequest updatedRequest(request); // Request's firstPartyForCookies will be used as Original URL of the download request. // We set the value to top level document's URL. if (initiatingPage) updatedRequest.setFirstPartyForCookies(URL(URL(), initiatingPage->pageLoadState().url())); else updatedRequest.setFirstPartyForCookies(URL()); networkProcess()->send(Messages::NetworkProcess::DownloadRequest(sessionID, downloadProxy->downloadID(), updatedRequest), 0); return downloadProxy; } return downloadProxy; }
DownloadProxy* WebProcessPool::resumeDownload(const API::Data* resumeData, const String& path) { DownloadProxy* downloadProxy = createDownloadProxy(ResourceRequest()); SandboxExtension::Handle sandboxExtensionHandle; if (!path.isEmpty()) SandboxExtension::createHandle(path, SandboxExtension::ReadWrite, sandboxExtensionHandle); if (networkProcess()) { // FIXME: If we started a download in an ephemeral session and that session still exists, we should find a way to use that same session. networkProcess()->send(Messages::NetworkProcess::ResumeDownload(SessionID::defaultSessionID(), downloadProxy->downloadID(), resumeData->dataReference(), path, sandboxExtensionHandle), 0); return downloadProxy; } return downloadProxy; }