1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 10:58:12 +00:00

LibWeb: Parse the CSS position type automatically

This means `object-position` will no longer incorrectly accept the
3-value background-position syntax.

Remove the now-ambiguous and unused `position` enum while we're at it.
(This enum only existed as a hack.)
This commit is contained in:
Sam Atkins 2023-11-20 13:11:46 +00:00 committed by Alexander Kalenik
parent 19da17f07e
commit 26d6ba6f58
4 changed files with 9 additions and 19 deletions

View file

@ -5930,12 +5930,6 @@ Parser::ParseErrorOr<NonnullRefPtr<StyleValue>> Parser::parse_css_value(Property
if (auto parsed_value = parse_math_depth_value(component_values))
return parsed_value.release_nonnull();
return ParseError::SyntaxError;
case PropertyID::ObjectPosition:
// FIXME: This should use a parse_position compatible to VALUES-4
// and not the background position, which is almost the same.
if (auto parsed_value = parse_comma_separated_value_list(component_values, [this](auto& tokens) { return parse_single_background_position_value(tokens); }))
return parsed_value.release_nonnull();
return ParseError::SyntaxError;
case PropertyID::Overflow:
if (auto parsed_value = parse_overflow_value(component_values))
return parsed_value.release_nonnull();
@ -6130,6 +6124,11 @@ Optional<Parser::PropertyAndValue> Parser::parse_css_value_for_properties(Readon
}
}
if (auto property = any_property_accepts_type(property_ids, ValueType::Position); property.has_value()) {
if (auto maybe_position = parse_position_value(tokens))
return PropertyAndValue { *property, maybe_position };
}
if (auto property = any_property_accepts_type(property_ids, ValueType::Ratio); property.has_value()) {
if (auto maybe_ratio = parse_ratio_value(tokens))
return PropertyAndValue { *property, maybe_ratio };