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

Side by Side 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 unified diff | 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 »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ios/web/public/referrer_util.h" 5 #include "ios/web/public/referrer_util.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "ios/web/public/referrer.h" 8 #include "ios/web/public/referrer.h"
9 #include "url/gurl.h" 9 #include "url/gurl.h"
10 10
(...skipping 13 matching lines...) Expand all
24 return referrer.url.GetOrigin().spec(); 24 return referrer.url.GetOrigin().spec();
25 case ReferrerPolicyDefault: 25 case ReferrerPolicyDefault:
26 case ReferrerPolicyNoReferrerWhenDowngrade: 26 case ReferrerPolicyNoReferrerWhenDowngrade:
27 if (is_downgrade) 27 if (is_downgrade)
28 return std::string(); 28 return std::string();
29 return referrer.url.GetAsReferrer().spec(); 29 return referrer.url.GetAsReferrer().spec();
30 case ReferrerPolicyOriginWhenCrossOrigin: 30 case ReferrerPolicyOriginWhenCrossOrigin:
31 if (referrer.url.GetOrigin() != destination.GetOrigin()) 31 if (referrer.url.GetOrigin() != destination.GetOrigin())
32 return referrer.url.GetOrigin().spec(); 32 return referrer.url.GetOrigin().spec();
33 return referrer.url.GetAsReferrer().spec(); 33 return referrer.url.GetAsReferrer().spec();
34 case ReferrerPolicySameOrigin:
35 if (referrer.url.GetOrigin() != destination.GetOrigin())
36 return std::string();
37 return referrer.url.GetAsReferrer().spec();
38 case ReferrerPolicyStrictOrigin:
39 if (is_downgrade)
40 return std::string();
41 return referrer.url.GetOrigin().spec();
42 case ReferrerPolicyStrictOriginWhenCrossOrigin:
43 if (is_downgrade)
44 return std::string();
45 if (referrer.url.GetOrigin() != destination.GetOrigin())
46 return referrer.url.GetOrigin().spec();
47 return referrer.url.GetAsReferrer().spec();
34 } 48 }
35 NOTREACHED(); 49 NOTREACHED();
36 return std::string(); 50 return std::string();
37 } 51 }
38 52
39 net::URLRequest::ReferrerPolicy PolicyForNavigation( 53 net::URLRequest::ReferrerPolicy PolicyForNavigation(
40 const GURL& destination, 54 const GURL& destination,
41 const web::Referrer& referrer) { 55 const web::Referrer& referrer) {
42 // Based on the matching logic in content's 56 // Based on the matching logic in content's
43 // resource_dispatcher_host_impl.cc 57 // resource_dispatcher_host_impl.cc
44 switch (referrer.policy) { 58 switch (referrer.policy) {
45 case ReferrerPolicyAlways: 59 case ReferrerPolicyAlways:
60 return net::URLRequest::NEVER_CLEAR_REFERRER;
46 case ReferrerPolicyNever: 61 case ReferrerPolicyNever:
62 return net::URLRequest::NO_REFERRER;
47 case ReferrerPolicyOrigin: 63 case ReferrerPolicyOrigin:
48 return net::URLRequest::NEVER_CLEAR_REFERRER; 64 return net::URLRequest::ORIGIN;
49 case ReferrerPolicyNoReferrerWhenDowngrade: 65 case ReferrerPolicyNoReferrerWhenDowngrade:
50 case ReferrerPolicyDefault: 66 case ReferrerPolicyDefault:
51 return net::URLRequest:: 67 return net::URLRequest::
52 CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE; 68 CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE;
53 case ReferrerPolicyOriginWhenCrossOrigin: 69 case ReferrerPolicyOriginWhenCrossOrigin:
54 return net::URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN; 70 return net::URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN;
71 case ReferrerPolicySameOrigin:
72 return net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN;
73 case ReferrerPolicyStrictOrigin:
74 return net::URLRequest::
75 ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE;
76 case ReferrerPolicyStrictOriginWhenCrossOrigin:
77 return net::URLRequest::
78 REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN;
55 } 79 }
56 NOTREACHED(); 80 NOTREACHED();
57 return net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE; 81 return net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE;
58 } 82 }
59 83
60 ReferrerPolicy ReferrerPolicyFromString(const std::string& policy) { 84 ReferrerPolicy ReferrerPolicyFromString(const std::string& policy) {
61 // https://w3c.github.io/webappsec-referrer-policy/#determine-policy-for-token 85 // https://w3c.github.io/webappsec-referrer-policy/#determine-policy-for-token
62 if (policy == "never" || policy == "no-referrer") 86 if (policy == "never" || policy == "no-referrer")
63 return ReferrerPolicyNever; 87 return ReferrerPolicyNever;
64 if (policy == "origin") 88 if (policy == "origin")
65 return ReferrerPolicyOrigin; 89 return ReferrerPolicyOrigin;
66 if (policy == "default" || policy == "no-referrer-when-downgrade") 90 if (policy == "default" || policy == "no-referrer-when-downgrade")
67 return ReferrerPolicyNoReferrerWhenDowngrade; 91 return ReferrerPolicyNoReferrerWhenDowngrade;
68 if (policy == "origin-when-cross-origin") 92 if (policy == "origin-when-cross-origin")
69 return ReferrerPolicyOriginWhenCrossOrigin; 93 return ReferrerPolicyOriginWhenCrossOrigin;
70 if (policy == "always" || policy == "unsafe-url") 94 if (policy == "always" || policy == "unsafe-url")
71 return ReferrerPolicyAlways; 95 return ReferrerPolicyAlways;
72 // Note that this is *not* Default; per spec, anything unknown is Never. 96 if (policy == "same-origin")
73 return web::ReferrerPolicyNever; 97 return ReferrerPolicySameOrigin;
98 if (policy == "strict-origin")
99 return ReferrerPolicyStrictOrigin;
100 if (policy == "strict-origin-when-cross-origin")
101 return ReferrerPolicyStrictOriginWhenCrossOrigin;
102 return ReferrerPolicyDefault;
74 } 103 }
75 104
76 } // namespace web 105 } // namespace web
OLDNEW
« 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