diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index 2e79631c6c..6da4b4496d 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -4366,11 +4366,8 @@ Vector Parser::parse_font_face_src(TokenStream return supported_sources; } -RefPtr Parser::parse_list_style_value(Vector const& component_values) +RefPtr Parser::parse_list_style_value(TokenStream& tokens) { - if (component_values.size() > 3) - return nullptr; - RefPtr list_position; RefPtr list_image; RefPtr list_type; @@ -4378,7 +4375,7 @@ RefPtr Parser::parse_list_style_value(Vector const& Vector remaining_longhands { PropertyID::ListStyleImage, PropertyID::ListStylePosition, PropertyID::ListStyleType }; - auto tokens = TokenStream { component_values }; + auto transaction = tokens.begin_transaction(); while (tokens.has_next_token()) { if (auto peek = tokens.peek_token(); peek.is_ident("none"sv)) { (void)tokens.next_token(); @@ -4440,6 +4437,7 @@ RefPtr Parser::parse_list_style_value(Vector const& if (!list_type) list_type = property_initial_value(m_context.realm(), PropertyID::ListStyleType); + transaction.commit(); return ShorthandStyleValue::create(PropertyID::ListStyle, { PropertyID::ListStylePosition, PropertyID::ListStyleImage, PropertyID::ListStyleType }, { list_position.release_nonnull(), list_image.release_nonnull(), list_type.release_nonnull() }); @@ -5905,7 +5903,7 @@ Parser::ParseErrorOr> Parser::parse_css_value(Property return parsed_value.release_nonnull(); return ParseError::SyntaxError; case PropertyID::ListStyle: - if (auto parsed_value = parse_list_style_value(component_values)) + if (auto parsed_value = parse_list_style_value(tokens); parsed_value && !tokens.has_next_token()) return parsed_value.release_nonnull(); return ParseError::SyntaxError; case PropertyID::MathDepth: diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.h b/Userland/Libraries/LibWeb/CSS/Parser/Parser.h index 4499e4b39f..c1e02b5870 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.h +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.h @@ -240,7 +240,7 @@ private: RefPtr parse_flex_flow_value(TokenStream&); RefPtr parse_font_value(TokenStream&); RefPtr parse_font_family_value(TokenStream&); - RefPtr parse_list_style_value(Vector const&); + RefPtr parse_list_style_value(TokenStream&); RefPtr parse_math_depth_value(Vector const&); RefPtr parse_overflow_value(Vector const&); RefPtr parse_place_content_value(Vector const&);