Index: net/url_request/url_request_job.cc |
diff --git a/net/url_request/url_request_job.cc b/net/url_request/url_request_job.cc |
index 050ba283f66a808362612c1fa6c00756e8a841a9..0886fe41b3ab86d86738cc62c5835385a4d583b9 100644 |
--- a/net/url_request/url_request_job.cc |
+++ b/net/url_request/url_request_job.cc |
@@ -115,6 +115,24 @@ URLRequest::ReferrerPolicy ProcessReferrerPolicyHeaderOnRedirect( |
new_policy = URLRequest::NEVER_CLEAR_REFERRER; |
continue; |
} |
+ |
+ if (base::CompareCaseInsensitiveASCII(token, "same-origin") == 0) { |
+ new_policy = URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN; |
+ continue; |
+ } |
+ |
+ if (base::CompareCaseInsensitiveASCII(token, "strict-origin") == 0) { |
+ new_policy = |
+ URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE; |
+ continue; |
+ } |
+ |
+ if (base::CompareCaseInsensitiveASCII( |
+ token, "strict-origin-when-cross-origin") == 0) { |
+ new_policy = |
+ URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN; |
+ continue; |
+ } |
} |
return new_policy; |
} |
@@ -397,6 +415,14 @@ GURL URLRequestJob::ComputeReferrerForRedirect( |
return original_referrer; |
case URLRequest::ORIGIN: |
return referrer_origin.GetURL(); |
+ case URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN: |
+ if (same_origin) |
+ return original_referrer; |
+ return GURL(); |
+ case URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE: |
+ if (secure_referrer_but_insecure_destination) |
+ return GURL(); |
+ return referrer_origin.GetURL(); |
case URLRequest::NO_REFERRER: |
return GURL(); |
case URLRequest::MAX_REFERRER_POLICY: |