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); |