| Index: Source/platform/weborigin/SecurityPolicy.cpp | 
| diff --git a/Source/platform/weborigin/SecurityPolicy.cpp b/Source/platform/weborigin/SecurityPolicy.cpp | 
| index 631b1bbdcf78f064f97bda8f079a3e6772de8a4a..3778877d6119c3d2b992cc5993f9f2fe92730494 100644 | 
| --- a/Source/platform/weborigin/SecurityPolicy.cpp | 
| +++ b/Source/platform/weborigin/SecurityPolicy.cpp | 
| @@ -87,6 +87,17 @@ Referrer SecurityPolicy::generateReferrer(ReferrerPolicy referrerPolicy, const K | 
| // to turn it into a canonical URL we can use as referrer. | 
| return Referrer(origin + "/", referrerPolicy); | 
| } | 
| +    case ReferrerPolicyOriginWhenCrossOrigin: { | 
| +        RefPtr<SecurityOrigin> referrerOrigin = SecurityOrigin::createFromString(referrer); | 
| +        RefPtr<SecurityOrigin> urlOrigin = SecurityOrigin::create(url); | 
| +        if (!urlOrigin->isSameSchemeHostPort(referrerOrigin.get())) { | 
| +            String origin = referrerOrigin->toString(); | 
| +            if (origin == "null") | 
| +                return Referrer(String(), referrerPolicy); | 
| +            return Referrer(origin + "/", referrerPolicy); | 
| +        } | 
| +        break; | 
| +    } | 
| case ReferrerPolicyDefault: { | 
| // If the flag is enabled, and we're dealing with a cross-origin request, strip it. | 
| // Otherwise fallthrough to NoReferrerWhenDowngrade behavior. | 
| @@ -98,6 +109,7 @@ Referrer SecurityPolicy::generateReferrer(ReferrerPolicy referrerPolicy, const K | 
| return Referrer(String(), referrerPolicy); | 
| return Referrer(shouldHideReferrer(url, referrer) ? String() : origin + "/", referrerPolicy); | 
| } | 
| +        break; | 
| } | 
| case ReferrerPolicyNoReferrerWhenDowngrade: | 
| break; | 
|  |