ReferrerPolicy.cpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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::EmptyString:
  12. return ""sv;
  13. case ReferrerPolicy::NoReferrer:
  14. return "no-referrer"sv;
  15. case ReferrerPolicy::NoReferrerWhenDowngrade:
  16. return "no-referrer-when-downgrade"sv;
  17. case ReferrerPolicy::SameOrigin:
  18. return "same-origin"sv;
  19. case ReferrerPolicy::Origin:
  20. return "origin"sv;
  21. case ReferrerPolicy::StrictOrigin:
  22. return "strict-origin"sv;
  23. case ReferrerPolicy::OriginWhenCrossOrigin:
  24. return "origin-when-cross-origin"sv;
  25. case ReferrerPolicy::StrictOriginWhenCrossOrigin:
  26. return "strict-origin-when-cross-origin"sv;
  27. case ReferrerPolicy::UnsafeURL:
  28. return "unsafe-url"sv;
  29. }
  30. VERIFY_NOT_REACHED();
  31. }
  32. Optional<ReferrerPolicy> from_string(StringView string)
  33. {
  34. if (string.equals_ignoring_ascii_case("no-referrer"sv))
  35. return ReferrerPolicy::NoReferrer;
  36. if (string.equals_ignoring_ascii_case("no-referrer-when-downgrade"sv))
  37. return ReferrerPolicy::NoReferrerWhenDowngrade;
  38. if (string.equals_ignoring_ascii_case("same-origin"sv))
  39. return ReferrerPolicy::SameOrigin;
  40. if (string.equals_ignoring_ascii_case("origin"sv))
  41. return ReferrerPolicy::Origin;
  42. if (string.equals_ignoring_ascii_case("strict-origin"sv))
  43. return ReferrerPolicy::StrictOrigin;
  44. if (string.equals_ignoring_ascii_case("origin-when-cross-origin"sv))
  45. return ReferrerPolicy::OriginWhenCrossOrigin;
  46. if (string.equals_ignoring_ascii_case("strict-origin-when-cross-origin"sv))
  47. return ReferrerPolicy::StrictOriginWhenCrossOrigin;
  48. if (string.equals_ignoring_ascii_case("unsafe-url"sv))
  49. return ReferrerPolicy::UnsafeURL;
  50. return {};
  51. }
  52. }