void FetchLoader::start(ScriptExecutionContext& context, const FetchRequest& request) { ThreadableLoaderOptions options(request.fetchOptions(), ConsiderPreflight, context.shouldBypassMainWorldContentSecurityPolicy() ? ContentSecurityPolicyEnforcement::DoNotEnforce : ContentSecurityPolicyEnforcement::EnforceConnectSrcDirective, String(cachedResourceRequestInitiators().fetch), OpaqueResponseBodyPolicy::DoNotReceive); options.sendLoadCallbacks = SendCallbacks; options.dataBufferingPolicy = DoNotBufferData; options.sameOriginDataURLFlag = SameOriginDataURLFlag::Set; ResourceRequest fetchRequest = request.internalRequest(); ASSERT(context.contentSecurityPolicy()); auto& contentSecurityPolicy = *context.contentSecurityPolicy(); contentSecurityPolicy.upgradeInsecureRequestIfNeeded(fetchRequest, ContentSecurityPolicy::InsecureRequestType::Load); if (!context.shouldBypassMainWorldContentSecurityPolicy() && !contentSecurityPolicy.allowConnectToSource(fetchRequest.url())) { m_client.didFail(); return; } String referrer = request.internalRequestReferrer(); if (referrer == "no-referrer") { options.referrerPolicy = FetchOptions::ReferrerPolicy::NoReferrer; referrer = String(); } else referrer = (referrer == "client") ? context.url().strippedForUseAsReferrer() : URL(context.url(), referrer).strippedForUseAsReferrer(); m_loader = ThreadableLoader::create(context, *this, WTFMove(fetchRequest), options, WTFMove(referrer)); m_isStarted = m_loader; }
void FetchLoader::start(ScriptExecutionContext& context, const FetchRequest& request) { // FIXME: Compute loading options according fetch options. ThreadableLoaderOptions options; options.setSendLoadCallbacks(SendCallbacks); options.setSniffContent(DoNotSniffContent); options.setDataBufferingPolicy(DoNotBufferData); options.preflightPolicy = ConsiderPreflight; options.setAllowCredentials(AllowStoredCredentials); options.crossOriginRequestPolicy = DenyCrossOriginRequests; options.contentSecurityPolicyEnforcement = ContentSecurityPolicyEnforcement::DoNotEnforce; m_loader = ThreadableLoader::create(&context, this, request.internalRequest(), options); }