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

Unified Diff: ios/web/public/referrer_util.cc

Issue 2918313002: Implement new referrer policies (Closed)
Patch Set: update public/platform/OWNERS per presubmit Created 3 years, 6 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
« no previous file with comments | « ios/web/public/referrer.h ('k') | ios/web/public/referrer_util_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
+ 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
« no previous file with comments | « ios/web/public/referrer.h ('k') | ios/web/public/referrer_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698