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

Side by Side Diff: third_party/WebKit/Source/platform/weborigin/SecurityPolicy.cpp

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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 case kReferrerPolicyOriginWhenCrossOrigin: { 116 case kReferrerPolicyOriginWhenCrossOrigin: {
117 RefPtr<SecurityOrigin> referrer_origin = 117 RefPtr<SecurityOrigin> referrer_origin =
118 SecurityOrigin::Create(referrer_url); 118 SecurityOrigin::Create(referrer_url);
119 RefPtr<SecurityOrigin> url_origin = SecurityOrigin::Create(url); 119 RefPtr<SecurityOrigin> url_origin = SecurityOrigin::Create(url);
120 if (!url_origin->IsSameSchemeHostPort(referrer_origin.Get())) { 120 if (!url_origin->IsSameSchemeHostPort(referrer_origin.Get())) {
121 String origin = referrer_origin->ToString(); 121 String origin = referrer_origin->ToString();
122 return Referrer(origin + "/", referrer_policy_no_default); 122 return Referrer(origin + "/", referrer_policy_no_default);
123 } 123 }
124 break; 124 break;
125 } 125 }
126 case kReferrerPolicyNoReferrerWhenDowngradeOriginWhenCrossOrigin: { 126 case kReferrerPolicySameOrigin: {
127 // If the flag is enabled, and we're dealing with a cross-origin request,
128 // strip it. Otherwise fall through to NoReferrerWhenDowngrade behavior.
129 RefPtr<SecurityOrigin> referrer_origin = 127 RefPtr<SecurityOrigin> referrer_origin =
130 SecurityOrigin::Create(referrer_url); 128 SecurityOrigin::Create(referrer_url);
131 RefPtr<SecurityOrigin> url_origin = SecurityOrigin::Create(url); 129 RefPtr<SecurityOrigin> url_origin = SecurityOrigin::Create(url);
130 if (!url_origin->IsSameSchemeHostPort(referrer_origin.Get())) {
131 return Referrer(Referrer::NoReferrer(), referrer_policy_no_default);
132 }
133 return Referrer(referrer, referrer_policy_no_default);
134 }
135 case kReferrerPolicyStrictOrigin: {
136 String origin = SecurityOrigin::Create(referrer_url)->ToString();
137 return Referrer(ShouldHideReferrer(url, referrer_url)
138 ? Referrer::NoReferrer()
139 : origin + "/",
140 referrer_policy_no_default);
141 }
142 case kReferrerPolicyNoReferrerWhenDowngradeOriginWhenCrossOrigin: {
143 RefPtr<SecurityOrigin> referrer_origin =
144 SecurityOrigin::Create(referrer_url);
145 RefPtr<SecurityOrigin> url_origin = SecurityOrigin::Create(url);
132 if (!url_origin->IsSameSchemeHostPort(referrer_origin.Get())) { 146 if (!url_origin->IsSameSchemeHostPort(referrer_origin.Get())) {
133 String origin = referrer_origin->ToString(); 147 String origin = referrer_origin->ToString();
134 return Referrer(ShouldHideReferrer(url, referrer_url) 148 return Referrer(ShouldHideReferrer(url, referrer_url)
135 ? Referrer::NoReferrer() 149 ? Referrer::NoReferrer()
136 : origin + "/", 150 : origin + "/",
137 referrer_policy_no_default); 151 referrer_policy_no_default);
138 } 152 }
139 break; 153 break;
140 } 154 }
141 case kReferrerPolicyNoReferrerWhenDowngrade: 155 case kReferrerPolicyNoReferrerWhenDowngrade:
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 if (EqualIgnoringASCIICase(policy, "origin")) { 293 if (EqualIgnoringASCIICase(policy, "origin")) {
280 *result = kReferrerPolicyOrigin; 294 *result = kReferrerPolicyOrigin;
281 return true; 295 return true;
282 } 296 }
283 if (EqualIgnoringASCIICase(policy, "origin-when-cross-origin") || 297 if (EqualIgnoringASCIICase(policy, "origin-when-cross-origin") ||
284 (support_legacy_keywords && 298 (support_legacy_keywords &&
285 EqualIgnoringASCIICase(policy, "origin-when-crossorigin"))) { 299 EqualIgnoringASCIICase(policy, "origin-when-crossorigin"))) {
286 *result = kReferrerPolicyOriginWhenCrossOrigin; 300 *result = kReferrerPolicyOriginWhenCrossOrigin;
287 return true; 301 return true;
288 } 302 }
303 if (EqualIgnoringASCIICase(policy, "same-origin")) {
304 *result = kReferrerPolicySameOrigin;
305 return true;
306 }
307 if (EqualIgnoringASCIICase(policy, "strict-origin")) {
308 *result = kReferrerPolicyStrictOrigin;
309 return true;
310 }
311 if (EqualIgnoringASCIICase(policy, "strict-origin-when-cross-origin")) {
312 *result = kReferrerPolicyNoReferrerWhenDowngradeOriginWhenCrossOrigin;
313 return true;
314 }
289 if (EqualIgnoringASCIICase(policy, "no-referrer-when-downgrade") || 315 if (EqualIgnoringASCIICase(policy, "no-referrer-when-downgrade") ||
290 (support_legacy_keywords && EqualIgnoringASCIICase(policy, "default"))) { 316 (support_legacy_keywords && EqualIgnoringASCIICase(policy, "default"))) {
291 *result = kReferrerPolicyNoReferrerWhenDowngrade; 317 *result = kReferrerPolicyNoReferrerWhenDowngrade;
292 return true; 318 return true;
293 } 319 }
294 return false; 320 return false;
295 } 321 }
296 322
297 bool SecurityPolicy::ReferrerPolicyFromHeaderValue( 323 bool SecurityPolicy::ReferrerPolicyFromHeaderValue(
298 const String& header_value, 324 const String& header_value,
(...skipping 13 matching lines...) Expand all
312 } 338 }
313 339
314 if (referrer_policy == kReferrerPolicyDefault) 340 if (referrer_policy == kReferrerPolicyDefault)
315 return false; 341 return false;
316 342
317 *result = referrer_policy; 343 *result = referrer_policy;
318 return true; 344 return true;
319 } 345 }
320 346
321 } // namespace blink 347 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698