Chromium Code Reviews| Index: ios/web/public/referrer_util.cc |
| diff --git a/ios/web/public/referrer_util.cc b/ios/web/public/referrer_util.cc |
| index 4bee17fd304f579acb50cb775e131d6d14751b7b..f5722933aff4726dbd53525243e991c5a13837cb 100644 |
| --- a/ios/web/public/referrer_util.cc |
| +++ b/ios/web/public/referrer_util.cc |
| @@ -31,6 +31,20 @@ std::string ReferrerHeaderValueForNavigation( |
| if (referrer.url.GetOrigin() != destination.GetOrigin()) |
| return referrer.url.GetOrigin().spec(); |
| return referrer.url.GetAsReferrer().spec(); |
| + case ReferrerPolicySameOrigin: |
| + if (referrer.url.GetOrigin() != destination.GetOrigin()) |
| + return std::string(); |
| + return referrer.url.GetAsReferrer().spec(); |
| + case ReferrerPolicyStrictOrigin: |
| + if (is_downgrade) |
| + return std::string(); |
| + return referrer.url.GetOrigin().spec(); |
| + case ReferrerPolicyStrictOriginWhenCrossOrigin: |
| + if (is_downgrade) |
| + return std::string(); |
| + if (referrer.url.GetOrigin() != destination.GetOrigin()) |
| + return referrer.url.GetOrigin().spec(); |
| + return referrer.url.GetAsReferrer().spec(); |
| } |
| NOTREACHED(); |
| return std::string(); |
| @@ -43,15 +57,25 @@ net::URLRequest::ReferrerPolicy PolicyForNavigation( |
| // resource_dispatcher_host_impl.cc |
| switch (referrer.policy) { |
| case ReferrerPolicyAlways: |
| + return net::URLRequest::NEVER_CLEAR_REFERRER; |
| case ReferrerPolicyNever: |
| + return net::URLRequest::NO_REFERRER; |
| case ReferrerPolicyOrigin: |
| - return net::URLRequest::NEVER_CLEAR_REFERRER; |
| + return net::URLRequest::ORIGIN; |
| case ReferrerPolicyNoReferrerWhenDowngrade: |
| case ReferrerPolicyDefault: |
| return net::URLRequest:: |
| CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE; |
| case ReferrerPolicyOriginWhenCrossOrigin: |
| return net::URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN; |
| + case ReferrerPolicySameOrigin: |
| + return net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN; |
| + case ReferrerPolicyStrictOrigin: |
| + return net::URLRequest:: |
| + ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE; |
| + case ReferrerPolicyStrictOriginWhenCrossOrigin: |
| + return net::URLRequest:: |
| + REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN; |
| } |
| NOTREACHED(); |
| return net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE; |
| @@ -69,8 +93,13 @@ ReferrerPolicy ReferrerPolicyFromString(const std::string& policy) { |
| return ReferrerPolicyOriginWhenCrossOrigin; |
| if (policy == "always" || policy == "unsafe-url") |
| return ReferrerPolicyAlways; |
| - // Note that this is *not* Default; per spec, anything unknown is Never. |
| - return web::ReferrerPolicyNever; |
|
kkhorimoto
2017/06/08 00:56:46
It looks like we were intentionally using Never he
estark
2017/06/08 18:42:57
Sorry, I should have explained this, but quite a w
|
| + if (policy == "same-origin") |
| + return ReferrerPolicySameOrigin; |
| + if (policy == "strict-origin") |
| + return ReferrerPolicyStrictOrigin; |
| + if (policy == "strict-origin-when-cross-origin") |
| + return ReferrerPolicyStrictOriginWhenCrossOrigin; |
| + return ReferrerPolicyDefault; |
| } |
| } // namespace web |