layout: Fix logic for transforms with non-invertible matrix (#37147)

When the the current transformation matrix of a box isn't invertible,
the box and its content shouldn't be displayed.

However, the logic was broken:
- It was only checking the `transform` property, but not individual
transform properties like `scale`.
- It was treating matrices with m₁₁=0 or m₂₂=0 and non-invertible, even
when they can still be invertible and have a visible outcome.
- When m₁₁=0 or m₂₂=0 weren't caused by `transform`, it was replacing
the matrix with the identity.

Testing: Adding new WPT
Fixes: #37146

Signed-off-by: Oriol Brufau <obrufau@igalia.com>
This commit is contained in:
Oriol Brufau 2025-05-27 20:36:33 +02:00 committed by GitHub
parent fef1dd9ea0
commit ac06b1cfcf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 114 additions and 24 deletions

View file

@ -279684,6 +279684,19 @@
{}
]
],
"individual-transform-3.html": [
"2c81cb12156134ee8deca6abf0043848ac8bc750",
[
null,
[
[
"/css/reference/ref-filled-green-200px-square.html",
"=="
]
],
{}
]
],
"stacking-context-001.html": [
"1a754c5d70b607396ffe2db1d04f2294aeca1041",
[
@ -284738,6 +284751,19 @@
{}
]
],
"transform-matrix-009.html": [
"81f04db0d103202180aba2625205643c376483af",
[
null,
[
[
"/css/reference/ref-filled-green-200px-square.html",
"=="
]
],
{}
]
],
"transform-origin": {
"svg-origin-length-001.html": [
"2f2256361cadd4f69aa08fd775a4305219a41fdd",