LibWeb: Only resolve transform-origin keywords for the computed value

Previously, we were resolving these keywords at parse time, which gave
an incorrect serialization of the specified value.
This commit is contained in:
Tim Ledbetter 2025-06-14 00:47:59 +01:00 committed by Alexander Kalenik
parent a3f6e71e33
commit a8d5758777
Notes: github-actions[bot] 2025-06-15 14:02:58 +00:00
7 changed files with 131 additions and 17 deletions

View file

@ -3830,15 +3830,15 @@ RefPtr<CSSStyleValue const> Parser::parse_transform_origin_value(TokenStream<Com
if (value->is_keyword()) {
switch (value->to_keyword()) {
case Keyword::Top:
return AxisOffset { Axis::Y, PercentageStyleValue::create(Percentage(0)) };
return AxisOffset { Axis::Y, value.release_nonnull() };
case Keyword::Left:
return AxisOffset { Axis::X, PercentageStyleValue::create(Percentage(0)) };
return AxisOffset { Axis::X, value.release_nonnull() };
case Keyword::Center:
return AxisOffset { Axis::None, PercentageStyleValue::create(Percentage(50)) };
return AxisOffset { Axis::None, value.release_nonnull() };
case Keyword::Bottom:
return AxisOffset { Axis::Y, PercentageStyleValue::create(Percentage(100)) };
return AxisOffset { Axis::Y, value.release_nonnull() };
case Keyword::Right:
return AxisOffset { Axis::X, PercentageStyleValue::create(Percentage(100)) };
return AxisOffset { Axis::X, value.release_nonnull() };
default:
return OptionalNone {};
}
@ -3866,9 +3866,9 @@ RefPtr<CSSStyleValue const> Parser::parse_transform_origin_value(TokenStream<Com
switch (single_value->axis) {
case Axis::None:
case Axis::X:
return make_list(single_value->offset, PercentageStyleValue::create(Percentage(50)));
return make_list(single_value->offset, CSSKeywordValue::create(Keyword::Center));
case Axis::Y:
return make_list(PercentageStyleValue::create(Percentage(50)), single_value->offset);
return make_list(CSSKeywordValue::create(Keyword::Center), single_value->offset);
}
VERIFY_NOT_REACHED();
}