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