From 6813dcaff8bdf164e0fb37567d36f6667c915627 Mon Sep 17 00:00:00 2001 From: Shannon Booth Date: Sun, 26 Nov 2023 10:40:08 +1300 Subject: [PATCH] LibWeb: Return FlyString const& from CSS::Parser::Token This allows us to not need to convert back to a FlyString when we need one. --- .../Libraries/LibWeb/CSS/Parser/Parser.cpp | 10 ++++---- .../LibWeb/CSS/Parser/SelectorParsing.cpp | 8 +++---- Userland/Libraries/LibWeb/CSS/Parser/Token.h | 24 +++++++++---------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index c5305d6f53..940fbaa508 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -1152,7 +1152,7 @@ Optional Parser::parse_url_function(ComponentValue const& component_val { // FIXME: Handle list of media queries. https://www.w3.org/TR/css-cascade-3/#conditional-import - auto convert_string_to_url = [&](StringView& url_string) -> Optional { + auto convert_string_to_url = [&](StringView url_string) -> Optional { auto url = m_context.complete_url(url_string); if (url.is_valid()) return url; @@ -1367,9 +1367,9 @@ CSSRule* Parser::convert_to_rule(NonnullRefPtr rule) FlyString namespace_uri; if (token.is(Token::Type::String)) { - namespace_uri = MUST(FlyString::from_utf8(token.token().string())); + namespace_uri = token.token().string(); } else if (auto url = parse_url_function(token); url.has_value()) { - namespace_uri = MUST(FlyString::from_deprecated_fly_string(url.value().to_deprecated_string())); + namespace_uri = MUST(url.value().to_string()); } else { dbgln_if(CSS_PARSER_DEBUG, "CSSParser: @namespace rule invalid; discarding."); return {}; @@ -4144,7 +4144,7 @@ CSSRule* Parser::parse_font_face_rule(TokenStream& tokens) if (declaration.name().equals_ignoring_ascii_case("font-family"sv)) { // FIXME: This is very similar to, but different from, the logic in parse_font_family_value(). // Ideally they could share code. - Vector font_family_parts; + Vector font_family_parts; bool had_syntax_error = false; for (size_t i = 0; i < declaration.values().size(); ++i) { auto const& part = declaration.values()[i]; @@ -4171,7 +4171,7 @@ CSSRule* Parser::parse_font_face_rule(TokenStream& tokens) had_syntax_error = true; break; } - font_family_parts.append(part.token().ident().bytes_as_string_view()); + font_family_parts.append(part.token().ident()); continue; } diff --git a/Userland/Libraries/LibWeb/CSS/Parser/SelectorParsing.cpp b/Userland/Libraries/LibWeb/CSS/Parser/SelectorParsing.cpp index f6f1155f25..cd2a7ec7fd 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/SelectorParsing.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/SelectorParsing.cpp @@ -705,10 +705,10 @@ Optional Parser::parse_a_n_plus_b_patt if (!value.token().number().is_integer()) return false; auto dimension_unit = value.token().dimension_unit(); - if (!dimension_unit.starts_with("n-"sv, CaseSensitivity::CaseInsensitive)) + if (!dimension_unit.starts_with_bytes("n-"sv, CaseSensitivity::CaseInsensitive)) return false; - for (size_t i = 2; i < dimension_unit.length(); ++i) { - if (!is_ascii_digit(dimension_unit[i])) + for (size_t i = 2; i < dimension_unit.bytes_as_string_view().length(); ++i) { + if (!is_ascii_digit(dimension_unit.bytes_as_string_view()[i])) return false; } return true; @@ -822,7 +822,7 @@ Optional Parser::parse_a_n_plus_b_patt if (is_ndashdigit_dimension(first_value)) { auto const& dimension = first_value.token(); int a = dimension.dimension_value_int(); - auto maybe_b = dimension.dimension_unit().substring_view(1).to_int(); + auto maybe_b = dimension.dimension_unit().bytes_as_string_view().substring_view(1).to_int(); if (maybe_b.has_value()) { transaction.commit(); return Selector::SimpleSelector::ANPlusBPattern { a, maybe_b.value() }; diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Token.h b/Userland/Libraries/LibWeb/CSS/Parser/Token.h index 426e36374f..e3b500459d 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Token.h +++ b/Userland/Libraries/LibWeb/CSS/Parser/Token.h @@ -65,10 +65,10 @@ public: return m_value; } - StringView function() const + FlyString const& function() const { VERIFY(m_type == Type::Function); - return m_value.bytes_as_string_view(); + return m_value; } u32 delim() const @@ -77,22 +77,22 @@ public: return *Utf8View(m_value.bytes_as_string_view()).begin(); } - StringView string() const + FlyString const& string() const { VERIFY(m_type == Type::String); - return m_value.bytes_as_string_view(); + return m_value; } - StringView url() const + FlyString const& url() const { VERIFY(m_type == Type::Url); - return m_value.bytes_as_string_view(); + return m_value; } - StringView at_keyword() const + FlyString const& at_keyword() const { VERIFY(m_type == Type::AtKeyword); - return m_value.bytes_as_string_view(); + return m_value; } HashType hash_type() const @@ -100,10 +100,10 @@ public: VERIFY(m_type == Type::Hash); return m_hash_type; } - StringView hash_value() const + FlyString const& hash_value() const { VERIFY(m_type == Type::Hash); - return m_value.bytes_as_string_view(); + return m_value; } Number const& number() const @@ -122,10 +122,10 @@ public: return m_number_value.integer_value(); } - StringView dimension_unit() const + FlyString const& dimension_unit() const { VERIFY(m_type == Type::Dimension); - return m_value.bytes_as_string_view(); + return m_value; } double dimension_value() const {