From 45d852d14be77d54773f3b2df77c15f7e7040832 Mon Sep 17 00:00:00 2001 From: Shannon Booth Date: Tue, 18 Mar 2025 19:22:16 +1300 Subject: [PATCH] LibURL: Add helper for getting array of the special schemes This is useful for iterating over all of the special schemes, as needed in the URLPattern implementation. --- Libraries/LibURL/URL.cpp | 16 +++++++++++++++- Libraries/LibURL/URL.h | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Libraries/LibURL/URL.cpp b/Libraries/LibURL/URL.cpp index c9d3bc20e07..ec7932199e6 100644 --- a/Libraries/LibURL/URL.cpp +++ b/Libraries/LibURL/URL.cpp @@ -207,9 +207,23 @@ URL create_with_data(StringView mime_type, StringView payload, bool is_base64) } // https://url.spec.whatwg.org/#special-scheme +ReadonlySpan special_schemes() +{ + static auto const schemes = to_array({ + "ftp"sv, + "file"sv, + "http"sv, + "https"sv, + "ws"sv, + "wss"sv, + }); + return schemes; +} + +// https://url.spec.whatwg.org/#is-special bool is_special_scheme(StringView scheme) { - return scheme.is_one_of("ftp", "file", "http", "https", "ws", "wss"); + return special_schemes().contains_slow(scheme); } // https://url.spec.whatwg.org/#url-path-serializer diff --git a/Libraries/LibURL/URL.h b/Libraries/LibURL/URL.h index f5f334c0efa..ad5e60f8bd7 100644 --- a/Libraries/LibURL/URL.h +++ b/Libraries/LibURL/URL.h @@ -61,6 +61,7 @@ void append_percent_encoded_if_necessary(StringBuilder&, u32 code_point, Percent void append_percent_encoded(StringBuilder&, u32 code_point); bool code_point_is_in_percent_encode_set(u32 code_point, PercentEncodeSet); Optional default_port_for_scheme(StringView); +ReadonlySpan special_schemes(); bool is_special_scheme(StringView); enum class SpaceAsPlus {