void DocumentLoader::dispatchLinkHeaderPreloads( ViewportDescriptionWrapper* viewport, LinkLoader::MediaPreloadPolicy mediaPolicy) { LinkLoader::loadLinksFromHeader( response().httpHeaderField(HTTPNames::Link), response().url(), m_frame->document(), NetworkHintsInterfaceImpl(), LinkLoader::OnlyLoadResources, mediaPolicy, viewport); }
void FrameFetchContext::dispatchDidReceiveResponse(unsigned long identifier, const ResourceResponse& response, WebURLRequest::FrameType frameType, WebURLRequest::RequestContext requestContext, Resource* resource) { LinkLoader::CanLoadResources resourceLoadingPolicy = LinkLoader::LoadResourcesAndPreconnect; MixedContentChecker::checkMixedPrivatePublic(frame(), response.remoteIPAddress()); if (m_documentLoader == frame()->loader().provisionalDocumentLoader()) { ResourceFetcher* fetcher = nullptr; if (frame()->document()) fetcher = frame()->document()->fetcher(); m_documentLoader->clientHintsPreferences().updateFromAcceptClientHintsHeader(response.httpHeaderField(HTTPNames::Accept_CH), fetcher); // When response is received with a provisional docloader, the resource haven't committed yet, and we cannot load resources, only preconnect. resourceLoadingPolicy = LinkLoader::DoNotLoadResources; } LinkLoader::loadLinksFromHeader(response.httpHeaderField(HTTPNames::Link), response.url(), frame()->document(), NetworkHintsInterfaceImpl(), resourceLoadingPolicy, nullptr); if (response.hasMajorCertificateErrors()) MixedContentChecker::handleCertificateError(frame(), response, frameType, requestContext); frame()->loader().progress().incrementProgress(identifier, response); frame()->loader().client()->dispatchDidReceiveResponse(m_documentLoader, identifier, response); TRACE_EVENT_INSTANT1("devtools.timeline", "ResourceReceiveResponse", TRACE_EVENT_SCOPE_THREAD, "data", InspectorReceiveResponseEvent::data(identifier, frame(), response)); DocumentLoader* documentLoader = masterDocumentLoader(); InspectorInstrumentation::didReceiveResourceResponse(frame(), identifier, documentLoader, response, resource); // It is essential that inspector gets resource response BEFORE console. frame()->console().reportResourceResponseReceived(documentLoader, identifier, response); }
void FrameFetchContext::dispatchDidReceiveResponse(unsigned long identifier, const ResourceResponse& response, ResourceLoader* resourceLoader) { MixedContentChecker::checkMixedPrivatePublic(frame(), response.remoteIPAddress()); LinkLoader::loadLinkFromHeader(response.httpHeaderField("Link"), frame()->document(), NetworkHintsInterfaceImpl()); if (m_documentLoader == frame()->loader().provisionalDocumentLoader()) { ResourceFetcher* fetcher = nullptr; if (frame()->document()) fetcher = frame()->document()->fetcher(); m_documentLoader->clientHintsPreferences().updateFromAcceptClientHintsHeader(response.httpHeaderField("accept-ch"), fetcher); } frame()->loader().progress().incrementProgress(identifier, response); frame()->loader().client()->dispatchDidReceiveResponse(m_documentLoader, identifier, response); TRACE_EVENT_INSTANT1("devtools.timeline", "ResourceReceiveResponse", TRACE_EVENT_SCOPE_THREAD, "data", InspectorReceiveResponseEvent::data(identifier, frame(), response)); DocumentLoader* documentLoader = ensureLoaderForNotifications(); InspectorInstrumentation::didReceiveResourceResponse(frame(), identifier, documentLoader, response, resourceLoader); // It is essential that inspector gets resource response BEFORE console. frame()->console().reportResourceResponseReceived(documentLoader, identifier, response); }