| Index: third_party/WebKit/Source/core/dom/ExecutionContext.cpp
|
| diff --git a/third_party/WebKit/Source/core/dom/ExecutionContext.cpp b/third_party/WebKit/Source/core/dom/ExecutionContext.cpp
|
| index 6cd1f1172f45776b24102b9d53ecc4a7603ced27..4251bcfb313dc117e60fa29e757f1e7e3ce0a0b4 100644
|
| --- a/third_party/WebKit/Source/core/dom/ExecutionContext.cpp
|
| +++ b/third_party/WebKit/Source/core/dom/ExecutionContext.cpp
|
| @@ -34,9 +34,11 @@
|
| #include "core/fetch/MemoryCache.h"
|
| #include "core/frame/UseCounter.h"
|
| #include "core/html/PublicURLManager.h"
|
| +#include "core/inspector/ConsoleMessage.h"
|
| #include "core/inspector/InspectorInstrumentation.h"
|
| #include "core/workers/WorkerGlobalScope.h"
|
| #include "core/workers/WorkerThread.h"
|
| +#include "platform/weborigin/SecurityPolicy.h"
|
| #include "wtf/PtrUtil.h"
|
| #include <memory>
|
|
|
| @@ -252,6 +254,27 @@ String ExecutionContext::outgoingReferrer() const
|
| return url().strippedForUseAsReferrer();
|
| }
|
|
|
| +void ExecutionContext::parseAndSetReferrerPolicy(const String& policies)
|
| +{
|
| + ReferrerPolicy referrerPolicy = ReferrerPolicyDefault;
|
| +
|
| + Vector<String> tokens;
|
| + policies.split(',', true, tokens);
|
| + for (const auto& token : tokens) {
|
| + ReferrerPolicy currentResult;
|
| + if (SecurityPolicy::referrerPolicyFromString(token, ¤tResult)) {
|
| + referrerPolicy = currentResult;
|
| + }
|
| + }
|
| +
|
| + if (referrerPolicy == ReferrerPolicyDefault) {
|
| + addConsoleMessage(ConsoleMessage::create(RenderingMessageSource, ErrorMessageLevel, "Failed to set referrer policy: The value '" + policies + "' is not one of 'always', 'default', 'never', 'no-referrer', 'no-referrer-when-downgrade', 'origin', 'origin-when-crossorigin', or 'unsafe-url'. The referrer policy has been left unchanged."));
|
| + return;
|
| + }
|
| +
|
| + setReferrerPolicy(referrerPolicy);
|
| +}
|
| +
|
| void ExecutionContext::setReferrerPolicy(ReferrerPolicy referrerPolicy)
|
| {
|
| // When a referrer policy has already been set, the latest value takes precedence.
|
|
|