Index: content/browser/loader/resource_dispatcher_host_impl.cc |
diff --git a/content/browser/loader/resource_dispatcher_host_impl.cc b/content/browser/loader/resource_dispatcher_host_impl.cc |
index c8341d63c690d42639a97299692867a4a7bddab2..85ac2bf6214b07e56275281549c1ad0933e04d43 100644 |
--- a/content/browser/loader/resource_dispatcher_host_impl.cc |
+++ b/content/browser/loader/resource_dispatcher_host_impl.cc |
@@ -231,9 +231,9 @@ void AbortRequestBeforeItStarts(ResourceMessageFilter* filter, |
} |
void SetReferrerForRequest(net::URLRequest* request, const Referrer& referrer) { |
+ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
if (!referrer.url.is_valid() || |
- base::CommandLine::ForCurrentProcess()->HasSwitch( |
- switches::kNoReferrers)) { |
+ command_line->HasSwitch(switches::kNoReferrers)) { |
request->SetReferrer(std::string()); |
} else { |
request->SetReferrer(referrer.url.spec()); |
@@ -247,10 +247,18 @@ void SetReferrerForRequest(net::URLRequest* request, const Referrer& referrer) { |
case blink::WebReferrerPolicyOrigin: |
net_referrer_policy = net::URLRequest::NEVER_CLEAR_REFERRER; |
break; |
+ case blink::WebReferrerPolicyNoReferrerWhenDowngrade: |
+ net_referrer_policy = |
+ net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE; |
+ break; |
case blink::WebReferrerPolicyDefault: |
default: |
net_referrer_policy = |
- net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE; |
+ command_line->HasSwitch(switches::kReducedReferrerGranularity) |
+ ? net::URLRequest:: |
+ REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN |
+ : net::URLRequest:: |
+ CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE; |
break; |
} |
request->set_referrer_policy(net_referrer_policy); |