(request)
| 5457 | } |
| 5458 | __name(clonePolicyContainer, "clonePolicyContainer"); |
| 5459 | function determineRequestsReferrer(request) { |
| 5460 | const policy = request.referrerPolicy; |
| 5461 | assert(policy); |
| 5462 | let referrerSource = null; |
| 5463 | if (request.referrer === "client") { |
| 5464 | const globalOrigin = getGlobalOrigin(); |
| 5465 | if (!globalOrigin || globalOrigin.origin === "null") { |
| 5466 | return "no-referrer"; |
| 5467 | } |
| 5468 | referrerSource = new URL(globalOrigin); |
| 5469 | } else if (webidl.is.URL(request.referrer)) { |
| 5470 | referrerSource = request.referrer; |
| 5471 | } |
| 5472 | let referrerURL = stripURLForReferrer(referrerSource); |
| 5473 | const referrerOrigin = stripURLForReferrer(referrerSource, true); |
| 5474 | if (referrerURL.toString().length > 4096) { |
| 5475 | referrerURL = referrerOrigin; |
| 5476 | } |
| 5477 | switch (policy) { |
| 5478 | case "no-referrer": |
| 5479 | return "no-referrer"; |
| 5480 | case "origin": |
| 5481 | if (referrerOrigin != null) { |
| 5482 | return referrerOrigin; |
| 5483 | } |
| 5484 | return stripURLForReferrer(referrerSource, true); |
| 5485 | case "unsafe-url": |
| 5486 | return referrerURL; |
| 5487 | case "strict-origin": { |
| 5488 | const currentURL = requestCurrentURL(request); |
| 5489 | if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) { |
| 5490 | return "no-referrer"; |
| 5491 | } |
| 5492 | return referrerOrigin; |
| 5493 | } |
| 5494 | case "strict-origin-when-cross-origin": { |
| 5495 | const currentURL = requestCurrentURL(request); |
| 5496 | if (sameOrigin(referrerURL, currentURL)) { |
| 5497 | return referrerURL; |
| 5498 | } |
| 5499 | if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) { |
| 5500 | return "no-referrer"; |
| 5501 | } |
| 5502 | return referrerOrigin; |
| 5503 | } |
| 5504 | case "same-origin": |
| 5505 | if (sameOrigin(request, referrerURL)) { |
| 5506 | return referrerURL; |
| 5507 | } |
| 5508 | return "no-referrer"; |
| 5509 | case "origin-when-cross-origin": |
| 5510 | if (sameOrigin(request, referrerURL)) { |
| 5511 | return referrerURL; |
| 5512 | } |
| 5513 | return referrerOrigin; |
| 5514 | case "no-referrer-when-downgrade": { |
| 5515 | const currentURL = requestCurrentURL(request); |
| 5516 | if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) { |
no test coverage detected