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

Unified 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 side-by-side diff with in-line comments
Download patch
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 8ec937d96bca27c121745d768705885b7ff6d9b2..7ef7723f608f663f0e9fabe37730b162c10455ac 100644
--- a/net/url_request/url_request_job.cc
+++ b/net/url_request/url_request_job.cc
@@ -278,39 +278,37 @@ void URLRequestJob::GetConnectionAttempts(ConnectionAttempts* out) const {
}
// static
-GURL URLRequestJob::ComputeReferrerForRedirect(
+std::string URLRequestJob::ComputeReferrerForRedirect(
URLRequest::ReferrerPolicy policy,
- const std::string& referrer,
+ const std::string& original_referrer,
const GURL& redirect_destination) {
- GURL original_referrer(referrer);
- bool secure_referrer_but_insecure_destination =
- original_referrer.SchemeIsCryptographic() &&
- !redirect_destination.SchemeIsCryptographic();
- bool same_origin =
- original_referrer.GetOrigin() == redirect_destination.GetOrigin();
+ url::Origin original_origin(original_referrer);
+ url::Origin destination_origin(redirect_destination);
+ bool secure_referrer_but_insecure_destination = original_origin.SchemeIsCryptographic() && !destination_origin.SchemeIsCryptographic();
+ bool same_origin = url::Origin(original_referrer) == url::Origin(redirect_destination);
switch (policy) {
case URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE:
- return secure_referrer_but_insecure_destination ? GURL()
+ return secure_referrer_but_insecure_destination ? ""
: original_referrer;
case URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN:
if (same_origin) {
return original_referrer;
} else if (secure_referrer_but_insecure_destination) {
- return GURL();
+ return "";
} else {
- return original_referrer.GetOrigin();
+ return url::Origin(original_referrer).serialize() + "/";
}
case URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN:
- return same_origin ? original_referrer : original_referrer.GetOrigin();
+ return same_origin ? original_referrer : original_origin.serialize() + "/";
case URLRequest::NEVER_CLEAR_REFERRER:
return original_referrer;
}
NOTREACHED();
- return GURL();
+ return "";
}
URLRequestJob::~URLRequestJob() {
@@ -866,7 +864,7 @@ RedirectInfo URLRequestJob::ComputeRedirectInfo(const GURL& location,
redirect_info.new_referrer =
ComputeReferrerForRedirect(request_->referrer_policy(),
request_->referrer(),
- redirect_info.new_url).spec();
+ redirect_info.new_url);
return redirect_info;
}

Powered by Google App Engine
This is Rietveld 408576698