diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index dfbc04526b..d524c1b753 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -1832,21 +1832,14 @@ Optional Parser::parse_time_percentage(TokenStream Parser::parse_source_size_value(ComponentValue const& component_value) +Optional Parser::parse_source_size_value(TokenStream& tokens) { - if (component_value.is_ident("auto"sv)) { + if (tokens.peek_token().is_ident("auto"sv)) { + (void)tokens.next_token(); // auto return LengthOrCalculated { Length::make_auto() }; } - if (auto calculated_value = parse_calculated_value(component_value)) { - return LengthOrCalculated { calculated_value.release_nonnull() }; - } - - if (auto length = parse_length(component_value); length.has_value()) { - return LengthOrCalculated { length.release_value() }; - } - - return {}; + return parse_length(tokens); } Optional Parser::parse_length(ComponentValue const& component_value) @@ -6625,7 +6618,8 @@ LengthOrCalculated Parser::Parser::parse_as_sizes_attribute() // let size be its value and remove the component value from unparsed size. // FIXME: Any CSS function other than the math functions is invalid. // Otherwise, there is a parse error; continue. - if (auto source_size_value = parse_source_size_value(unparsed_size.last()); source_size_value.has_value()) { + auto last_value_stream = TokenStream::of_single_token(unparsed_size.last()); + if (auto source_size_value = parse_source_size_value(last_value_stream); source_size_value.has_value()) { size = source_size_value.value(); unparsed_size.take_last(); } else { diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.h b/Userland/Libraries/LibWeb/CSS/Parser/Parser.h index e2ecfa0090..f04d318676 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.h +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.h @@ -187,7 +187,7 @@ private: Optional parse_rgb_or_hsl_color(StringView function_name, Vector const&); Optional parse_color(ComponentValue const&); Optional parse_length(ComponentValue const&); - [[nodiscard]] Optional parse_source_size_value(ComponentValue const&); + Optional parse_source_size_value(TokenStream&); Optional parse_ratio(TokenStream&); Optional parse_unicode_range(TokenStream&); Optional parse_unicode_range(StringView);