(request3)
| 50644 | referrerPolicy: "strict-origin-when-cross-origin" |
| 50645 | }; |
| 50646 | } |
| 50647 | function clonePolicyContainer(policyContainer) { |
| 50648 | return { |
| 50649 | referrerPolicy: policyContainer.referrerPolicy |
| 50650 | }; |
| 50651 | } |
| 50652 | function determineRequestsReferrer(request3) { |
| 50653 | const policy = request3.referrerPolicy; |
| 50654 | assert2(policy); |
| 50655 | let referrerSource = null; |
| 50656 | if (request3.referrer === "client") { |
| 50657 | const globalOrigin = getGlobalOrigin(); |
| 50658 | if (!globalOrigin || globalOrigin.origin === "null") { |
| 50659 | return "no-referrer"; |
| 50660 | } |
| 50661 | referrerSource = new URL(globalOrigin); |
| 50662 | } else if (request3.referrer instanceof URL) { |
| 50663 | referrerSource = request3.referrer; |
| 50664 | } |
| 50665 | let referrerURL = stripURLForReferrer(referrerSource); |
| 50666 | const referrerOrigin = stripURLForReferrer(referrerSource, true); |
| 50667 | if (referrerURL.toString().length > 4096) { |
| 50668 | referrerURL = referrerOrigin; |
| 50669 | } |
| 50670 | const areSameOrigin = sameOrigin(request3, referrerURL); |
| 50671 | const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(request3.url); |
| 50672 | switch (policy) { |
| 50673 | case "origin": |
| 50674 | return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true); |
| 50675 | case "unsafe-url": |
| 50676 | return referrerURL; |
| 50677 | case "same-origin": |
| 50678 | return areSameOrigin ? referrerOrigin : "no-referrer"; |
| 50679 | case "origin-when-cross-origin": |
| 50680 | return areSameOrigin ? referrerURL : referrerOrigin; |
| 50681 | case "strict-origin-when-cross-origin": { |
| 50682 | const currentURL = requestCurrentURL(request3); |
| 50683 | if (sameOrigin(referrerURL, currentURL)) { |
| 50684 | return referrerURL; |
| 50685 | } |
| 50686 | if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) { |
| 50687 | return "no-referrer"; |
| 50688 | } |
| 50689 | return referrerOrigin; |
| 50690 | } |
| 50691 | case "strict-origin": |
| 50692 | // eslint-disable-line |
| 50693 | /** |
| 50694 | * 1. If referrerURL is a potentially trustworthy URL and |
| 50695 | * request’s current URL is not a potentially trustworthy URL, |
| 50696 | * then return no referrer. |
| 50697 | * 2. Return referrerOrigin |
| 50698 | */ |
| 50699 | case "no-referrer-when-downgrade": |
| 50700 | // eslint-disable-line |
| 50701 | /** |
| 50702 | * 1. If referrerURL is a potentially trustworthy URL and |
| 50703 | * request’s current URL is not a potentially trustworthy URL, |
no test coverage detected
searching dependent graphs…