void ExecutionContext::parseAndSetReferrerPolicy(const String& policies, bool supportLegacyKeywords) { ReferrerPolicy referrerPolicy = ReferrerPolicyDefault; Vector<String> tokens; policies.split(',', true, tokens); for (const auto& token : tokens) { ReferrerPolicy currentResult; if ((supportLegacyKeywords ? SecurityPolicy::referrerPolicyFromStringWithLegacyKeywords( token, ¤tResult) : 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 " + (supportLegacyKeywords ? "'always', 'default', 'never', 'origin-when-crossorigin', " : "") + "'no-referrer', 'no-referrer-when-downgrade', 'origin', " "'origin-when-cross-origin', or 'unsafe-url'. The referrer policy " "has been left unchanged.")); return; } setReferrerPolicy(referrerPolicy); }
static bool buildOptions(FetchRequest::InternalRequest& request, ScriptExecutionContext& context, const Dictionary& init) { JSC::JSValue window; if (init.get("window", window)) { if (!window.isNull()) return false; } if (!setReferrer(request, context, init)) return false; String value; if (init.get("referrerPolicy", value) && !setReferrerPolicy(request.options, value)) return false; if (init.get("mode", value) && !setMode(request.options, value)) return false; if (request.options.mode() == FetchOptions::Mode::Navigate) return false; if (init.get("credentials", value) && !setCredentials(request.options, value)) return false; if (init.get("cache", value) && !setCache(request.options, value)) return false; if (init.get("redirect", value) && !setRedirect(request.options, value)) return false; init.get("integrity", request.integrity); if (init.get("method", value) && !setMethod(request.request, value)) return false; return true; }