OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/public/common/referrer.h" | 5 #include "content/public/common/referrer.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "content/public/common/content_switches.h" | 10 #include "content/public/common/content_switches.h" |
11 #include "net/url_request/url_request.h" | |
12 | 11 |
13 namespace content { | 12 namespace content { |
14 | 13 |
15 // static | 14 // static |
16 Referrer Referrer::SanitizeForRequest(const GURL& request, | 15 Referrer Referrer::SanitizeForRequest(const GURL& request, |
17 const Referrer& referrer) { | 16 const Referrer& referrer) { |
18 Referrer sanitized_referrer(referrer.url.GetAsReferrer(), referrer.policy); | 17 Referrer sanitized_referrer(referrer.url.GetAsReferrer(), referrer.policy); |
19 if (sanitized_referrer.policy == blink::WebReferrerPolicyDefault) { | 18 if (sanitized_referrer.policy == blink::WebReferrerPolicyDefault) { |
20 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 19 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
21 switches::kReducedReferrerGranularity)) { | 20 switches::kReducedReferrerGranularity)) { |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
77 void Referrer::SetReferrerForRequest(net::URLRequest* request, | 76 void Referrer::SetReferrerForRequest(net::URLRequest* request, |
78 const Referrer& referrer) { | 77 const Referrer& referrer) { |
79 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); | 78 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
80 if (!referrer.url.is_valid() || | 79 if (!referrer.url.is_valid() || |
81 command_line->HasSwitch(switches::kNoReferrers)) { | 80 command_line->HasSwitch(switches::kNoReferrers)) { |
82 request->SetReferrer(std::string()); | 81 request->SetReferrer(std::string()); |
83 } else { | 82 } else { |
84 request->SetReferrer(referrer.url.spec()); | 83 request->SetReferrer(referrer.url.spec()); |
85 } | 84 } |
86 | 85 |
87 net::URLRequest::ReferrerPolicy net_referrer_policy = | 86 request->set_referrer_policy(ReferrerPolicyForUrlRequest(referrer)); |
88 net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE; | 87 } |
| 88 |
| 89 // static |
| 90 net::URLRequest::ReferrerPolicy Referrer::ReferrerPolicyForUrlRequest( |
| 91 const Referrer& referrer) { |
89 switch (referrer.policy) { | 92 switch (referrer.policy) { |
90 case blink::WebReferrerPolicyAlways: | 93 case blink::WebReferrerPolicyAlways: |
91 net_referrer_policy = net::URLRequest::NEVER_CLEAR_REFERRER; | 94 return net::URLRequest::NEVER_CLEAR_REFERRER; |
92 break; | |
93 case blink::WebReferrerPolicyNever: | 95 case blink::WebReferrerPolicyNever: |
94 net_referrer_policy = net::URLRequest::NO_REFERRER; | 96 return net::URLRequest::NO_REFERRER; |
95 break; | |
96 case blink::WebReferrerPolicyOrigin: | 97 case blink::WebReferrerPolicyOrigin: |
97 net_referrer_policy = net::URLRequest::ORIGIN; | 98 return net::URLRequest::ORIGIN; |
98 break; | |
99 case blink::WebReferrerPolicyNoReferrerWhenDowngrade: | 99 case blink::WebReferrerPolicyNoReferrerWhenDowngrade: |
100 net_referrer_policy = | 100 return net::URLRequest:: |
101 net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE; | 101 CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE; |
102 break; | |
103 case blink::WebReferrerPolicyOriginWhenCrossOrigin: | 102 case blink::WebReferrerPolicyOriginWhenCrossOrigin: |
104 net_referrer_policy = | 103 return net::URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN; |
105 net::URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN; | |
106 break; | |
107 case blink::WebReferrerPolicyDefault: | 104 case blink::WebReferrerPolicyDefault: |
108 net_referrer_policy = | 105 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
109 command_line->HasSwitch(switches::kReducedReferrerGranularity) | 106 switches::kReducedReferrerGranularity)) { |
110 ? net::URLRequest:: | 107 return net::URLRequest:: |
111 REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN | 108 REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN; |
112 : net::URLRequest:: | 109 } |
113 CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE; | 110 return net::URLRequest:: |
114 break; | 111 CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE; |
115 case blink::WebReferrerPolicyNoReferrerWhenDowngradeOriginWhenCrossOrigin: | 112 case blink::WebReferrerPolicyNoReferrerWhenDowngradeOriginWhenCrossOrigin: |
116 net_referrer_policy = net::URLRequest:: | 113 return net::URLRequest:: |
117 REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN; | 114 REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN; |
118 break; | |
119 } | 115 } |
120 request->set_referrer_policy(net_referrer_policy); | 116 return net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE; |
121 } | 117 } |
122 | 118 |
123 } // namespace content | 119 } // namespace content |
OLD | NEW |