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

Unified Diff: third_party/WebKit/Source/modules/fetch/Request.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/Request.cpp
diff --git a/third_party/WebKit/Source/modules/fetch/Request.cpp b/third_party/WebKit/Source/modules/fetch/Request.cpp
index 54ddc5f9c1b5540c19eafb54c963f94dc017bedd..7704054d64424e9f4e3838615c74a1c511af3ace 100644
--- a/third_party/WebKit/Source/modules/fetch/Request.cpp
+++ b/third_party/WebKit/Source/modules/fetch/Request.cpp
@@ -16,6 +16,7 @@
#include "modules/fetch/FetchManager.h"
#include "modules/fetch/RequestInit.h"
#include "platform/HTTPNames.h"
+#include "platform/RuntimeEnabledFeatures.h"
#include "platform/network/HTTPParsers.h"
#include "platform/network/ResourceRequest.h"
#include "platform/weborigin/Referrer.h"
@@ -141,9 +142,8 @@ Request* Request::createRequestWithRequestOrString(ScriptState* scriptState, Req
// The following if-clause performs the following two steps:
// - "If |init|'s referrer member is present, run these substeps:"
- // - TODO(yhirano): Implement the following step:
- // "If |init|'s referrerPolicy member is present, set |request|'s
- // referrer policy to it."
+ // "If |init|'s referrerPolicy member is present, set |request|'s
+ // referrer policy to it."
//
// The condition "if any of |init|'s members are present"
// (areAnyMembersSet) is used for the if-clause instead of conditions
@@ -156,7 +156,7 @@ Request* Request::createRequestWithRequestOrString(ScriptState* scriptState, Req
if (init.referrer.referrer.isEmpty()) {
// "If |referrer| is the empty string, set |request|'s referrer to
// "no-referrer" and terminate these substeps."
- request->setReferrerString(FetchRequestData::noReferrerString());
+ request->setReferrerString(AtomicString(Referrer::noReferrer()));
} else {
// "Let |parsedReferrer| be the result of parsing |referrer| with
// |baseURL|."
@@ -534,6 +534,30 @@ String Request::referrer() const
return m_request->referrerString();
}
+String Request::referrerPolicy() const
+{
+ switch (m_request->getReferrerPolicy()) {
+ case ReferrerPolicyAlways:
+ return "unsafe-url";
+ case ReferrerPolicyDefault:
+ return "";
+ case ReferrerPolicyNoReferrerWhenDowngrade:
+ return "no-referrer-when-downgrade";
+ case ReferrerPolicyNever:
+ return "no-referrer";
+ case ReferrerPolicyOrigin:
+ return "origin-only";
+ case ReferrerPolicyOriginWhenCrossOrigin:
+ return "origin-when-cross-origin";
+ case ReferrerPolicyNoReferrerWhenDowngradeOriginWhenCrossOrigin:
+ // This value is not specified, so behave as NoReferrerWhenDowngrade.
+ ASSERT(RuntimeEnabledFeatures::reducedReferrerGranularityEnabled());
+ return "no-referrer-when-downgrade-origin-when-cross-origin";
+ }
+ ASSERT_NOT_REACHED();
+ return String();
+}
+
String Request::mode() const
{
// "The mode attribute's getter must return the value corresponding to the

Powered by Google App Engine
This is Rietveld 408576698