ReferrerPolicy.cpp 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * Copyright (c) 2023, Sam Atkins <atkinssj@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <LibWeb/ReferrerPolicy/ReferrerPolicy.h>
  7. namespace Web::ReferrerPolicy {
  8. StringView to_string(ReferrerPolicy referrer_policy)
  9. {
  10. switch (referrer_policy) {
  11. case ReferrerPolicy::NoReferrer:
  12. return "no-referrer"sv;
  13. case ReferrerPolicy::NoReferrerWhenDowngrade:
  14. return "no-referrer-when-downgrade"sv;
  15. case ReferrerPolicy::SameOrigin:
  16. return "same-origin"sv;
  17. case ReferrerPolicy::Origin:
  18. return "origin"sv;
  19. case ReferrerPolicy::StrictOrigin:
  20. return "strict-origin"sv;
  21. case ReferrerPolicy::OriginWhenCrossOrigin:
  22. return "origin-when-cross-origin"sv;
  23. case ReferrerPolicy::StrictOriginWhenCrossOrigin:
  24. return "strict-origin-when-cross-origin"sv;
  25. case ReferrerPolicy::UnsafeURL:
  26. return "unsafe-url"sv;
  27. }
  28. VERIFY_NOT_REACHED();
  29. }
  30. Optional<ReferrerPolicy> from_string(StringView string)
  31. {
  32. if (string.equals_ignoring_ascii_case("no-referrer"sv))
  33. return ReferrerPolicy::NoReferrer;
  34. if (string.equals_ignoring_ascii_case("no-referrer-when-downgrade"sv))
  35. return ReferrerPolicy::NoReferrerWhenDowngrade;
  36. if (string.equals_ignoring_ascii_case("same-origin"sv))
  37. return ReferrerPolicy::SameOrigin;
  38. if (string.equals_ignoring_ascii_case("origin"sv))
  39. return ReferrerPolicy::Origin;
  40. if (string.equals_ignoring_ascii_case("strict-origin"sv))
  41. return ReferrerPolicy::StrictOrigin;
  42. if (string.equals_ignoring_ascii_case("origin-when-cross-origin"sv))
  43. return ReferrerPolicy::OriginWhenCrossOrigin;
  44. if (string.equals_ignoring_ascii_case("strict-origin-when-cross-origin"sv))
  45. return ReferrerPolicy::StrictOriginWhenCrossOrigin;
  46. if (string.equals_ignoring_ascii_case("unsafe-url"sv))
  47. return ReferrerPolicy::UnsafeURL;
  48. return {};
  49. }
  50. }