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

Unified Diff: third_party/WebKit/Source/modules/fetch/RequestInit.cpp

Issue 1844413006: Support ReferrerPolicy in Fetch API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@update-referrer-policy
Patch Set: Created 4 years, 8 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
Index: third_party/WebKit/Source/modules/fetch/RequestInit.cpp
diff --git a/third_party/WebKit/Source/modules/fetch/RequestInit.cpp b/third_party/WebKit/Source/modules/fetch/RequestInit.cpp
index 183ab99108a12358d489201780f91b7855bc5db8..642409f51837b8731d9f61f59365a15768d5d996 100644
--- a/third_party/WebKit/Source/modules/fetch/RequestInit.cpp
+++ b/third_party/WebKit/Source/modules/fetch/RequestInit.cpp
@@ -44,6 +44,9 @@ RequestInit::RequestInit(ExecutionContext* context, const Dictionary& options, E
bool isReferrerStringSet = DictionaryHelper::get(options, "referrer", referrerString);
areAnyMembersSet |= isReferrerStringSet;
areAnyMembersSet |= DictionaryHelper::get(options, "integrity", integrity);
+ AtomicString referrerPolicyString;
+ bool isReferrerPolicySet = DictionaryHelper::get(options, "referrerPolicy", referrerPolicyString);
+ areAnyMembersSet |= isReferrerPolicySet;
v8::Local<v8::Value> v8Body;
bool isBodySet = DictionaryHelper::get(options, "body", v8Body);
@@ -63,6 +66,24 @@ RequestInit::RequestInit(ExecutionContext* context, const Dictionary& options, E
referrer = Referrer("about:client", ReferrerPolicyDefault);
if (isReferrerStringSet)
referrer.referrer = referrerString;
+ if (isReferrerPolicySet) {
+ if (referrerPolicyString == "") {
+ referrer.referrerPolicy = ReferrerPolicyDefault;
+ } else if (referrerPolicyString == "no-referrer") {
+ referrer.referrerPolicy = ReferrerPolicyNever;
+ } else if (referrerPolicyString == "no-referrer-when-downgrade") {
+ referrer.referrerPolicy = ReferrerPolicyNoReferrerWhenDowngrade;
+ } else if (referrerPolicyString == "origin-only") {
+ referrer.referrerPolicy = ReferrerPolicyOrigin;
+ } else if (referrerPolicyString == "origin-when-cross-origin") {
+ referrer.referrerPolicy = ReferrerPolicyOriginWhenCrossOrigin;
+ } else if (referrerPolicyString == "unsafe-url") {
+ referrer.referrerPolicy = ReferrerPolicyAlways;
+ } else {
+ exceptionState.throwTypeError("Invalid referrer policy");
+ return;
+ }
+ }
}
v8::Isolate* isolate = toIsolate(context);

Powered by Google App Engine
This is Rietveld 408576698