OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc
e-loading | 5 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc
e-loading |
6 | 6 |
7 #include "content/browser/loader/resource_dispatcher_host_impl.h" | 7 #include "content/browser/loader/resource_dispatcher_host_impl.h" |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <set> | 10 #include <set> |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
224 request_complete_data.exists_in_cache = false; | 224 request_complete_data.exists_in_cache = false; |
225 // No security info needed, connection not established. | 225 // No security info needed, connection not established. |
226 request_complete_data.completion_time = base::TimeTicks(); | 226 request_complete_data.completion_time = base::TimeTicks(); |
227 request_complete_data.encoded_data_length = 0; | 227 request_complete_data.encoded_data_length = 0; |
228 filter->Send(new ResourceMsg_RequestComplete( | 228 filter->Send(new ResourceMsg_RequestComplete( |
229 request_id, request_complete_data)); | 229 request_id, request_complete_data)); |
230 } | 230 } |
231 } | 231 } |
232 | 232 |
233 void SetReferrerForRequest(net::URLRequest* request, const Referrer& referrer) { | 233 void SetReferrerForRequest(net::URLRequest* request, const Referrer& referrer) { |
| 234 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
234 if (!referrer.url.is_valid() || | 235 if (!referrer.url.is_valid() || |
235 base::CommandLine::ForCurrentProcess()->HasSwitch( | 236 command_line->HasSwitch(switches::kNoReferrers)) { |
236 switches::kNoReferrers)) { | |
237 request->SetReferrer(std::string()); | 237 request->SetReferrer(std::string()); |
238 } else { | 238 } else { |
239 request->SetReferrer(referrer.url.spec()); | 239 request->SetReferrer(referrer.url.spec()); |
240 } | 240 } |
241 | 241 |
242 net::URLRequest::ReferrerPolicy net_referrer_policy = | 242 net::URLRequest::ReferrerPolicy net_referrer_policy = |
243 net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE; | 243 net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE; |
244 switch (referrer.policy) { | 244 switch (referrer.policy) { |
245 case blink::WebReferrerPolicyAlways: | 245 case blink::WebReferrerPolicyAlways: |
246 case blink::WebReferrerPolicyNever: | 246 case blink::WebReferrerPolicyNever: |
247 case blink::WebReferrerPolicyOrigin: | 247 case blink::WebReferrerPolicyOrigin: |
248 net_referrer_policy = net::URLRequest::NEVER_CLEAR_REFERRER; | 248 net_referrer_policy = net::URLRequest::NEVER_CLEAR_REFERRER; |
249 break; | 249 break; |
| 250 case blink::WebReferrerPolicyNoReferrerWhenDowngrade: |
| 251 net_referrer_policy = |
| 252 net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE; |
| 253 break; |
250 case blink::WebReferrerPolicyDefault: | 254 case blink::WebReferrerPolicyDefault: |
251 default: | 255 default: |
252 net_referrer_policy = | 256 net_referrer_policy = |
253 net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE; | 257 command_line->HasSwitch(switches::kReducedReferrerGranularity) |
| 258 ? net::URLRequest:: |
| 259 REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN |
| 260 : net::URLRequest:: |
| 261 CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE; |
254 break; | 262 break; |
255 } | 263 } |
256 request->set_referrer_policy(net_referrer_policy); | 264 request->set_referrer_policy(net_referrer_policy); |
257 } | 265 } |
258 | 266 |
259 // Consults the RendererSecurity policy to determine whether the | 267 // Consults the RendererSecurity policy to determine whether the |
260 // ResourceDispatcherHostImpl should service this request. A request might be | 268 // ResourceDispatcherHostImpl should service this request. A request might be |
261 // disallowed if the renderer is not authorized to retrieve the request URL or | 269 // disallowed if the renderer is not authorized to retrieve the request URL or |
262 // if the renderer is attempting to upload an unauthorized file. | 270 // if the renderer is attempting to upload an unauthorized file. |
263 bool ShouldServiceRequest(int process_type, | 271 bool ShouldServiceRequest(int process_type, |
(...skipping 2077 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2341 | 2349 |
2342 // Add a flag to selectively bypass the data reduction proxy if the resource | 2350 // Add a flag to selectively bypass the data reduction proxy if the resource |
2343 // type is not an image. | 2351 // type is not an image. |
2344 if (request_data.resource_type != RESOURCE_TYPE_IMAGE) | 2352 if (request_data.resource_type != RESOURCE_TYPE_IMAGE) |
2345 load_flags |= net::LOAD_BYPASS_DATA_REDUCTION_PROXY; | 2353 load_flags |= net::LOAD_BYPASS_DATA_REDUCTION_PROXY; |
2346 | 2354 |
2347 return load_flags; | 2355 return load_flags; |
2348 } | 2356 } |
2349 | 2357 |
2350 } // namespace content | 2358 } // namespace content |
OLD | NEW |