void SyncNetworkResourceLoader::start() { // FIXME (NetworkProcess): This is called on the NetworkProcess main thread, blocking any other requests from being scheduled. // This should move to a background thread, but we'd either need to be sure that: // A - ResourceHandle::loadResourceSynchronously is safe to run on a background thread. // B - Write custom loading logic that is known to be safe on a background thread. ASSERT(isMainThread()); ResourceError error; ResourceResponse response; Vector<char> data; // FIXME (NetworkProcess): Create RemoteNetworkingContext with actual settings. RefPtr<RemoteNetworkingContext> networkingContext = RemoteNetworkingContext::create(false, false, inPrivateBrowsingMode(), shouldClearReferrerOnHTTPSToHTTPRedirect()); consumeSandboxExtensions(); ResourceHandle::loadResourceSynchronously(networkingContext.get(), request(), allowStoredCredentials(), error, response, data); invalidateSandboxExtensions(); m_delayedReply->send(error, response, CoreIPC::DataReference((uint8_t*)data.data(), data.size())); NetworkProcess::shared().networkResourceLoadScheduler().removeLoader(this); }
void NetworkResourceLoader::start() { ASSERT(isMainThread()); // Explicit ref() balanced by a deref() in NetworkResourceLoader::resourceHandleStopped() ref(); // FIXME (NetworkProcess): Set platform specific settings. m_networkingContext = RemoteNetworkingContext::create(m_inPrivateBrowsingMode, m_shouldClearReferrerOnHTTPSToHTTPRedirect); consumeSandboxExtensions(); // FIXME (NetworkProcess): Pass an actual value for defersLoading m_handle = ResourceHandle::create(m_networkingContext.get(), m_request, this, false /* defersLoading */, m_contentSniffingPolicy == SniffContent); }
void NetworkResourceLoader::startNetworkLoad(const ResourceRequest& request) { consumeSandboxExtensions(); if (isSynchronous() || m_parameters.maximumBufferingTime > 0_ms) m_bufferedData = SharedBuffer::create(); #if ENABLE(NETWORK_CACHE) if (canUseCache(request)) m_bufferedDataForCache = SharedBuffer::create(); #endif NetworkLoadParameters parameters = m_parameters; parameters.defersLoading = m_defersLoading; parameters.request = request; m_networkLoad = std::make_unique<NetworkLoad>(*this, parameters); }
void NetworkResourceLoader::startNetworkLoad(const ResourceRequest& request) { consumeSandboxExtensions(); if (isSynchronous() || m_parameters.maximumBufferingTime > 0_ms) m_bufferedData = SharedBuffer::create(); #if ENABLE(NETWORK_CACHE) if (canUseCache(request)) m_bufferedDataForCache = SharedBuffer::create(); #endif NETWORKRESOURCELOADER_LOG_ALWAYS("Starting network resource load: loader = %p, pageID = %llu, frameID = %llu, isMainResource = %d, isSynchronous = %d", this, m_parameters.webPageID, m_parameters.webFrameID, isMainResource(), isSynchronous()); NetworkLoadParameters parameters = m_parameters; parameters.defersLoading = m_defersLoading; parameters.request = request; m_networkLoad = std::make_unique<NetworkLoad>(*this, parameters); }
void NetworkResourceLoader::start() { ASSERT(RunLoop::isMain()); if (m_defersLoading) { m_deferredRequest = m_request; return; } // Explicit ref() balanced by a deref() in NetworkResourceLoader::cleanup() ref(); // FIXME (NetworkProcess): Set platform specific settings. m_networkingContext = RemoteNetworkingContext::create(m_sessionID, m_shouldClearReferrerOnHTTPSToHTTPRedirect); consumeSandboxExtensions(); // FIXME (NetworkProcess): Pass an actual value for defersLoading m_handle = ResourceHandle::create(m_networkingContext.get(), m_request, this, false /* defersLoading */, m_contentSniffingPolicy == SniffContent); }
void NetworkResourceLoader::startNetworkLoad(const ResourceRequest& request) { RELEASE_LOG_IF_ALLOWED("startNetworkLoad: (pageID = %" PRIu64 ", frameID = %" PRIu64 ", resourceID = %" PRIu64 ", isMainResource = %d, isSynchronous = %d)", m_parameters.webPageID, m_parameters.webFrameID, m_parameters.identifier, isMainResource(), isSynchronous()); consumeSandboxExtensions(); if (isSynchronous() || m_parameters.maximumBufferingTime > 0ms) m_bufferedData = SharedBuffer::create(); #if ENABLE(NETWORK_CACHE) if (canUseCache(request)) m_bufferedDataForCache = SharedBuffer::create(); #endif NetworkLoadParameters parameters = m_parameters; parameters.defersLoading = m_defersLoading; parameters.request = request; #if USE(NETWORK_SESSION) if (request.url().protocolIsBlob()) parameters.blobFileReferences = NetworkBlobRegistry::singleton().filesInBlob(m_connection, originalRequest().url()); auto* networkSession = SessionTracker::networkSession(parameters.sessionID); if (!networkSession) { WTFLogAlways("Attempted to create a NetworkLoad with a session (id=%" PRIu64 ") that does not exist.", parameters.sessionID.sessionID()); RELEASE_LOG_ERROR_IF_ALLOWED("startNetworkLoad: Attempted to create a NetworkLoad with a session that does not exist (pageID = %" PRIu64 ", frameID = %" PRIu64 ", resourceID = %" PRIu64 ", sessionID=%" PRIu64 ")", m_parameters.webPageID, m_parameters.webFrameID, m_parameters.identifier, parameters.sessionID.sessionID()); NetworkProcess::singleton().logDiagnosticMessage(m_parameters.webPageID, WebCore::DiagnosticLoggingKeys::internalErrorKey(), WebCore::DiagnosticLoggingKeys::invalidSessionIDKey(), WebCore::ShouldSample::No); didFailLoading(internalError(request.url())); return; } m_networkLoad = std::make_unique<NetworkLoad>(*this, WTFMove(parameters), *networkSession); #else m_networkLoad = std::make_unique<NetworkLoad>(*this, WTFMove(parameters)); #endif if (m_defersLoading) { RELEASE_LOG_IF_ALLOWED("startNetworkLoad: Created, but deferred (pageID = %" PRIu64 ", frameID = %" PRIu64 ", resourceID = %" PRIu64 ")", m_parameters.webPageID, m_parameters.webFrameID, m_parameters.identifier); } }
void NetworkResourceLoader::start() { ASSERT(RunLoop::isMain()); if (m_defersLoading) return; // Explicit ref() balanced by a deref() in NetworkResourceLoader::cleanup() ref(); m_networkingContext = RemoteNetworkingContext::create(sessionID(), m_parameters.shouldClearReferrerOnHTTPSToHTTPRedirect); consumeSandboxExtensions(); m_currentRequest = originalRequest(); if (isSynchronous() || m_parameters.maximumBufferingTime > 0_ms) m_bufferedData = WebCore::SharedBuffer::create(); bool shouldSniff = m_parameters.contentSniffingPolicy == SniffContent; m_handle = ResourceHandle::create(m_networkingContext.get(), m_currentRequest, this, false /* defersLoading */, shouldSniff); }
void NetworkResourceLoader::startNetworkLoad() { m_networkingContext = RemoteNetworkingContext::create(sessionID(), m_parameters.shouldClearReferrerOnHTTPSToHTTPRedirect); consumeSandboxExtensions(); if (isSynchronous() || m_parameters.maximumBufferingTime > 0_ms) m_bufferedData = WebCore::SharedBuffer::create(); #if ENABLE(NETWORK_CACHE) if (NetworkCache::singleton().isEnabled()) m_bufferedDataForCache = WebCore::SharedBuffer::create(); #endif bool shouldSniff = m_parameters.contentSniffingPolicy == SniffContent; #if USE(NETWORK_SESSION) UNUSED_PARAM(shouldSniff); // FIXME: Use this. m_task = NetworkSession::singleton()->createDataTaskWithRequest(m_currentRequest, *this); m_task->resume(); #else m_handle = ResourceHandle::create(m_networkingContext.get(), m_currentRequest, this, m_defersLoading, shouldSniff); #endif }