1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 14:07:46 +00:00

LibWeb/CSS: Ensure length is absolute before converting to pixels

Previously, creating a DOMMatrix with a transform that contained
non-absolute units would cause a crash.
This commit is contained in:
Tim Ledbetter 2024-02-17 08:09:53 +00:00 committed by Jelle Raaijmakers
parent 5136b495a6
commit c5d1ec4dea
3 changed files with 8 additions and 2 deletions

View file

@ -24,8 +24,10 @@ ErrorOr<Gfx::FloatMatrix4x4> Transformation::to_matrix(Optional<Painting::Painta
[&](CSS::LengthPercentage const& value) -> ErrorOr<float> {
if (paintable_box.has_value())
return value.resolved(paintable_box->layout_node(), reference_length).to_px(paintable_box->layout_node()).to_float();
if (value.is_length())
return value.length().absolute_length_to_px().to_float();
if (value.is_length()) {
if (auto const& length = value.length(); length.is_absolute())
return length.absolute_length_to_px().to_float();
}
return Error::from_string_literal("Transform contains non absolute units");
},
[&](CSS::AngleOrCalculated const& value) -> ErrorOr<float> {