| 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:
|
|
|