diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index 8c29b60d94..f065de8a30 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -3909,16 +3909,14 @@ RefPtr Parser::parse_flex_value(TokenStream& tokens) return make_flex_shorthand(flex_grow.release_nonnull(), flex_shrink.release_nonnull(), flex_basis.release_nonnull()); } -RefPtr Parser::parse_flex_flow_value(Vector const& component_values) +RefPtr Parser::parse_flex_flow_value(TokenStream& tokens) { - if (component_values.size() > 2) - return nullptr; - RefPtr flex_direction; RefPtr flex_wrap; auto remaining_longhands = Vector { PropertyID::FlexDirection, PropertyID::FlexWrap }; - auto tokens = TokenStream { component_values }; + auto transaction = tokens.begin_transaction(); + while (tokens.has_next_token()) { auto property_and_value = parse_css_value_for_properties(remaining_longhands, tokens); if (!property_and_value.has_value()) @@ -3945,6 +3943,7 @@ RefPtr Parser::parse_flex_flow_value(Vector const& c if (!flex_wrap) flex_wrap = property_initial_value(m_context.realm(), PropertyID::FlexWrap); + transaction.commit(); return ShorthandStyleValue::create(PropertyID::FlexFlow, { PropertyID::FlexDirection, PropertyID::FlexWrap }, { flex_direction.release_nonnull(), flex_wrap.release_nonnull() }); @@ -5807,7 +5806,7 @@ Parser::ParseErrorOr> Parser::parse_css_value(Property return parsed_value.release_nonnull(); return ParseError::SyntaxError; case PropertyID::FlexFlow: - if (auto parsed_value = parse_flex_flow_value(component_values)) + if (auto parsed_value = parse_flex_flow_value(tokens); parsed_value && !tokens.has_next_token()) return parsed_value.release_nonnull(); return ParseError::SyntaxError; case PropertyID::Font: diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.h b/Userland/Libraries/LibWeb/CSS/Parser/Parser.h index 2568506553..61f32ae3ef 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.h +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.h @@ -237,7 +237,7 @@ private: RefPtr parse_content_value(TokenStream&); RefPtr parse_display_value(TokenStream&); RefPtr parse_flex_value(TokenStream&); - RefPtr parse_flex_flow_value(Vector const&); + RefPtr parse_flex_flow_value(TokenStream&); RefPtr parse_font_value(Vector const&); RefPtr parse_font_family_value(TokenStream&); RefPtr parse_list_style_value(Vector const&);