Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(551)

Side by Side Diff: net/url_request/url_request_job.cc

Issue 1151843002: DO NOT LAND Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More. Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #include "net/url_request/url_request_job.h" 5 #include "net/url_request/url_request_job.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/power_monitor/power_monitor.h" 10 #include "base/power_monitor/power_monitor.h"
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 } 271 }
272 272
273 void URLRequestJob::NotifyURLRequestDestroyed() { 273 void URLRequestJob::NotifyURLRequestDestroyed() {
274 } 274 }
275 275
276 void URLRequestJob::GetConnectionAttempts(ConnectionAttempts* out) const { 276 void URLRequestJob::GetConnectionAttempts(ConnectionAttempts* out) const {
277 out->clear(); 277 out->clear();
278 } 278 }
279 279
280 // static 280 // static
281 GURL URLRequestJob::ComputeReferrerForRedirect( 281 std::string URLRequestJob::ComputeReferrerForRedirect(
282 URLRequest::ReferrerPolicy policy, 282 URLRequest::ReferrerPolicy policy,
283 const std::string& referrer, 283 const std::string& original_referrer,
284 const GURL& redirect_destination) { 284 const GURL& redirect_destination) {
285 GURL original_referrer(referrer); 285 url::Origin original_origin(original_referrer);
286 bool secure_referrer_but_insecure_destination = 286 url::Origin destination_origin(redirect_destination);
287 original_referrer.SchemeIsCryptographic() && 287 bool secure_referrer_but_insecure_destination = original_origin.SchemeIsCrypto graphic() && !destination_origin.SchemeIsCryptographic();
288 !redirect_destination.SchemeIsCryptographic(); 288 bool same_origin = url::Origin(original_referrer) == url::Origin(redirect_dest ination);
289 bool same_origin =
290 original_referrer.GetOrigin() == redirect_destination.GetOrigin();
291 switch (policy) { 289 switch (policy) {
292 case URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE: 290 case URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE:
293 return secure_referrer_but_insecure_destination ? GURL() 291 return secure_referrer_but_insecure_destination ? ""
294 : original_referrer; 292 : original_referrer;
295 293
296 case URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN: 294 case URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN:
297 if (same_origin) { 295 if (same_origin) {
298 return original_referrer; 296 return original_referrer;
299 } else if (secure_referrer_but_insecure_destination) { 297 } else if (secure_referrer_but_insecure_destination) {
300 return GURL(); 298 return "";
301 } else { 299 } else {
302 return original_referrer.GetOrigin(); 300 return url::Origin(original_referrer).serialize() + "/";
303 } 301 }
304 302
305 case URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN: 303 case URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN:
306 return same_origin ? original_referrer : original_referrer.GetOrigin(); 304 return same_origin ? original_referrer : original_origin.serialize() + "/" ;
307 305
308 case URLRequest::NEVER_CLEAR_REFERRER: 306 case URLRequest::NEVER_CLEAR_REFERRER:
309 return original_referrer; 307 return original_referrer;
310 } 308 }
311 309
312 NOTREACHED(); 310 NOTREACHED();
313 return GURL(); 311 return "";
314 } 312 }
315 313
316 URLRequestJob::~URLRequestJob() { 314 URLRequestJob::~URLRequestJob() {
317 base::PowerMonitor* power_monitor = base::PowerMonitor::Get(); 315 base::PowerMonitor* power_monitor = base::PowerMonitor::Get();
318 if (power_monitor) 316 if (power_monitor)
319 power_monitor->RemoveObserver(this); 317 power_monitor->RemoveObserver(this);
320 } 318 }
321 319
322 void URLRequestJob::NotifyCertificateRequested( 320 void URLRequestJob::NotifyCertificateRequested(
323 SSLCertRequestInfo* cert_request_info) { 321 SSLCertRequestInfo* cert_request_info) {
(...skipping 535 matching lines...) Expand 10 before | Expand all | Expand 10 after
859 redirect_info.new_first_party_for_cookies = redirect_info.new_url; 857 redirect_info.new_first_party_for_cookies = redirect_info.new_url;
860 } else { 858 } else {
861 redirect_info.new_first_party_for_cookies = 859 redirect_info.new_first_party_for_cookies =
862 request_->first_party_for_cookies(); 860 request_->first_party_for_cookies();
863 } 861 }
864 862
865 // Alter the referrer if redirecting cross-origin (especially HTTP->HTTPS). 863 // Alter the referrer if redirecting cross-origin (especially HTTP->HTTPS).
866 redirect_info.new_referrer = 864 redirect_info.new_referrer =
867 ComputeReferrerForRedirect(request_->referrer_policy(), 865 ComputeReferrerForRedirect(request_->referrer_policy(),
868 request_->referrer(), 866 request_->referrer(),
869 redirect_info.new_url).spec(); 867 redirect_info.new_url);
870 868
871 return redirect_info; 869 return redirect_info;
872 } 870 }
873 871
874 } // namespace net 872 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698