(fetchParams, recursive = false)
| 60068 | } |
| 60069 | if (subresourceSet.has(request3.destination)) { |
| 60070 | } |
| 60071 | mainFetch(fetchParams).catch((err) => { |
| 60072 | fetchParams.controller.terminate(err); |
| 60073 | }); |
| 60074 | return fetchParams.controller; |
| 60075 | } |
| 60076 | async function mainFetch(fetchParams, recursive = false) { |
| 60077 | const request3 = fetchParams.request; |
| 60078 | let response = null; |
| 60079 | if (request3.localURLsOnly && !urlIsLocal(requestCurrentURL(request3))) { |
| 60080 | response = makeNetworkError("local URLs only"); |
| 60081 | } |
| 60082 | tryUpgradeRequestToAPotentiallyTrustworthyURL(request3); |
| 60083 | if (requestBadPort(request3) === "blocked") { |
| 60084 | response = makeNetworkError("bad port"); |
| 60085 | } |
| 60086 | if (request3.referrerPolicy === "") { |
| 60087 | request3.referrerPolicy = request3.policyContainer.referrerPolicy; |
| 60088 | } |
| 60089 | if (request3.referrer !== "no-referrer") { |
| 60090 | request3.referrer = determineRequestsReferrer(request3); |
| 60091 | } |
| 60092 | if (response === null) { |
| 60093 | response = await (async () => { |
| 60094 | const currentURL = requestCurrentURL(request3); |
| 60095 | if ( |
| 60096 | // - request’s current URL’s origin is same origin with request’s origin, |
| 60097 | // and request’s response tainting is "basic" |
| 60098 | sameOrigin(currentURL, request3.url) && request3.responseTainting === "basic" || // request’s current URL’s scheme is "data" |
| 60099 | currentURL.protocol === "data:" || // - request’s mode is "navigate" or "websocket" |
| 60100 | (request3.mode === "navigate" || request3.mode === "websocket") |
| 60101 | ) { |
| 60102 | request3.responseTainting = "basic"; |
| 60103 | return await schemeFetch(fetchParams); |
| 60104 | } |
| 60105 | if (request3.mode === "same-origin") { |
| 60106 | return makeNetworkError('request mode cannot be "same-origin"'); |
| 60107 | } |
| 60108 | if (request3.mode === "no-cors") { |
| 60109 | if (request3.redirect !== "follow") { |
| 60110 | return makeNetworkError( |
| 60111 | 'redirect mode cannot be "follow" for "no-cors" request' |
| 60112 | ); |
| 60113 | } |
| 60114 | request3.responseTainting = "opaque"; |
| 60115 | return await schemeFetch(fetchParams); |
| 60116 | } |
| 60117 | if (!urlIsHttpHttpsScheme(requestCurrentURL(request3))) { |
| 60118 | return makeNetworkError("URL scheme must be a HTTP(S) scheme"); |
| 60119 | } |
| 60120 | request3.responseTainting = "cors"; |
| 60121 | return await httpFetch(fetchParams); |
| 60122 | })(); |
| 60123 | } |
| 60124 | if (recursive) { |
| 60125 | return response; |
| 60126 | } |
| 60127 | if (response.status !== 0 && !response.internalResponse) { |
no test coverage detected
searching dependent graphs…