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; |
} |