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

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: rebase 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..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);
« no previous file with comments | « third_party/WebKit/Source/modules/fetch/Request.idl ('k') | third_party/WebKit/Source/modules/fetch/RequestTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698