From fce9fcf15456a380ee2cb593feb579fd8988ee78 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Fri, 11 Nov 2022 10:30:26 -0500 Subject: [PATCH] LibWeb: Add a string-to-same-site-attribute converter --- Userland/Libraries/LibWeb/Cookie/Cookie.cpp | 11 +++++++++++ Userland/Libraries/LibWeb/Cookie/Cookie.h | 1 + Userland/Libraries/LibWeb/Cookie/ParsedCookie.cpp | 8 +------- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/Userland/Libraries/LibWeb/Cookie/Cookie.cpp b/Userland/Libraries/LibWeb/Cookie/Cookie.cpp index a8c9d9abfc..d47d6d92bd 100644 --- a/Userland/Libraries/LibWeb/Cookie/Cookie.cpp +++ b/Userland/Libraries/LibWeb/Cookie/Cookie.cpp @@ -25,6 +25,17 @@ StringView same_site_to_string(SameSite same_site) VERIFY_NOT_REACHED(); } +SameSite same_site_from_string(StringView same_site_mode) +{ + if (same_site_mode.equals_ignoring_case("None"sv)) + return SameSite::None; + if (same_site_mode.equals_ignoring_case("Strict"sv)) + return SameSite::Strict; + if (same_site_mode.equals_ignoring_case("Lax"sv)) + return SameSite::Lax; + return SameSite::Default; +} + } bool IPC::encode(Encoder& encoder, Web::Cookie::Cookie const& cookie) diff --git a/Userland/Libraries/LibWeb/Cookie/Cookie.h b/Userland/Libraries/LibWeb/Cookie/Cookie.h index f66ff57693..2192cc5d69 100644 --- a/Userland/Libraries/LibWeb/Cookie/Cookie.h +++ b/Userland/Libraries/LibWeb/Cookie/Cookie.h @@ -40,6 +40,7 @@ struct Cookie { }; StringView same_site_to_string(SameSite same_site_mode); +SameSite same_site_from_string(StringView same_site_mode); } diff --git a/Userland/Libraries/LibWeb/Cookie/ParsedCookie.cpp b/Userland/Libraries/LibWeb/Cookie/ParsedCookie.cpp index 1a3fca3a3f..bcf44ee5e0 100644 --- a/Userland/Libraries/LibWeb/Cookie/ParsedCookie.cpp +++ b/Userland/Libraries/LibWeb/Cookie/ParsedCookie.cpp @@ -229,17 +229,11 @@ void on_http_only_attribute(ParsedCookie& parsed_cookie) void on_same_site_attribute(ParsedCookie& parsed_cookie, StringView attribute_value) { // 1. Let enforcement be "Default" - // Note: Set as default value in ParsedCookie.h // 2. If cookie-av's attribute-value is a case-insensitive match for "None", set enforcement to "None". - if (attribute_value.equals_ignoring_case("None"sv)) - parsed_cookie.same_site_attribute = SameSite::None; // 3. If cookie-av's attribute-value is a case-insensitive match for "Strict", set enforcement to "Strict". - else if (attribute_value.equals_ignoring_case("Strict"sv)) - parsed_cookie.same_site_attribute = SameSite::Strict; // 4. If cookie-av's attribute-value is a case-insensitive match for "Lax", set enforcement to "Lax". - else if (attribute_value.equals_ignoring_case("Lax"sv)) - parsed_cookie.same_site_attribute = SameSite::Lax; + parsed_cookie.same_site_attribute = same_site_from_string(attribute_value); } Optional parse_date_time(StringView date_string)