| 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..885686387f0ede148859d55fbb58e50ef32db394 100644
|
| --- a/third_party/WebKit/Source/modules/fetch/RequestInit.cpp
|
| +++ b/third_party/WebKit/Source/modules/fetch/RequestInit.cpp
|
| @@ -18,6 +18,7 @@
|
| #include "modules/fetch/FetchBlobDataConsumerHandle.h"
|
| #include "modules/fetch/FetchFormDataConsumerHandle.h"
|
| #include "modules/fetch/Headers.h"
|
| +#include "platform/RuntimeEnabledFeatures.h"
|
| #include "platform/blob/BlobData.h"
|
| #include "platform/network/EncodedFormData.h"
|
| #include "platform/weborigin/ReferrerPolicy.h"
|
| @@ -44,6 +45,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 +67,26 @@ 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") {
|
| + referrer.referrerPolicy = ReferrerPolicyOrigin;
|
| + } else if (referrerPolicyString == "origin-when-cross-origin") {
|
| + referrer.referrerPolicy = ReferrerPolicyOriginWhenCrossOrigin;
|
| + } else if (referrerPolicyString == "unsafe-url") {
|
| + referrer.referrerPolicy = ReferrerPolicyAlways;
|
| + } else if (referrerPolicyString == "no-referrer-when-downgrade-origin-when-cross-origin" && RuntimeEnabledFeatures::reducedReferrerGranularityEnabled()) {
|
| + referrer.referrerPolicy = ReferrerPolicyNoReferrerWhenDowngradeOriginWhenCrossOrigin;
|
| + } else {
|
| + exceptionState.throwTypeError("Invalid referrer policy");
|
| + return;
|
| + }
|
| + }
|
| }
|
|
|
| v8::Isolate* isolate = toIsolate(context);
|
|
|