1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-28 00:07:35 +00:00

LibWeb: Add HTMLAnchorElement.referrerPolicy property

This commit is contained in:
Sam Atkins 2023-03-29 12:46:50 +01:00 committed by Linus Groh
parent 0c19d3aa58
commit 88d64fcb55
7 changed files with 87 additions and 0 deletions

View file

@ -0,0 +1,55 @@
/*
* Copyright (c) 2023, Sam Atkins <atkinssj@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibWeb/ReferrerPolicy/ReferrerPolicy.h>
namespace Web::ReferrerPolicy {
StringView to_string(ReferrerPolicy referrer_policy)
{
switch (referrer_policy) {
case ReferrerPolicy::NoReferrer:
return "no-referrer"sv;
case ReferrerPolicy::NoReferrerWhenDowngrade:
return "no-referrer-when-downgrade"sv;
case ReferrerPolicy::SameOrigin:
return "same-origin"sv;
case ReferrerPolicy::Origin:
return "origin"sv;
case ReferrerPolicy::StrictOrigin:
return "strict-origin"sv;
case ReferrerPolicy::OriginWhenCrossOrigin:
return "origin-when-cross-origin"sv;
case ReferrerPolicy::StrictOriginWhenCrossOrigin:
return "strict-origin-when-cross-origin"sv;
case ReferrerPolicy::UnsafeURL:
return "unsafe-url"sv;
}
VERIFY_NOT_REACHED();
}
Optional<ReferrerPolicy> from_string(StringView string)
{
if (string.equals_ignoring_ascii_case("no-referrer"sv))
return ReferrerPolicy::NoReferrer;
if (string.equals_ignoring_ascii_case("no-referrer-when-downgrade"sv))
return ReferrerPolicy::NoReferrerWhenDowngrade;
if (string.equals_ignoring_ascii_case("same-origin"sv))
return ReferrerPolicy::SameOrigin;
if (string.equals_ignoring_ascii_case("origin"sv))
return ReferrerPolicy::Origin;
if (string.equals_ignoring_ascii_case("strict-origin"sv))
return ReferrerPolicy::StrictOrigin;
if (string.equals_ignoring_ascii_case("origin-when-cross-origin"sv))
return ReferrerPolicy::OriginWhenCrossOrigin;
if (string.equals_ignoring_ascii_case("strict-origin-when-cross-origin"sv))
return ReferrerPolicy::StrictOriginWhenCrossOrigin;
if (string.equals_ignoring_ascii_case("unsafe-url"sv))
return ReferrerPolicy::UnsafeURL;
return {};
}
}

View file

@ -6,6 +6,9 @@
#pragma once
#include <AK/Optional.h>
#include <AK/StringView.h>
namespace Web::ReferrerPolicy {
// https://w3c.github.io/webappsec-referrer-policy/#enumdef-referrerpolicy
@ -24,4 +27,7 @@ enum class ReferrerPolicy {
// The default referrer policy is "strict-origin-when-cross-origin".
constexpr auto DEFAULT_REFERRER_POLICY = ReferrerPolicy::StrictOriginWhenCrossOrigin;
StringView to_string(ReferrerPolicy);
Optional<ReferrerPolicy> from_string(StringView);
}