mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-24 09:52:31 +00:00
LibWeb: Invalidate layout tree on CSS position property change
When position changes, we may need to make larger structural updates to the layout tree. A simple relayout is not sufficient. This was a source of flakiness in the engine, and gives us at least +28 new WPT subtest passes.
This commit is contained in:
parent
f66c55138b
commit
821d54de7f
Notes:
github-actions[bot]
2025-05-20 11:29:55 +00:00
Author: https://github.com/awesomekling
Commit: 821d54de7f
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4823
2 changed files with 32 additions and 32 deletions
|
@ -18,9 +18,9 @@ RequiredInvalidationAfterStyleChange compute_property_invalidation(CSS::Property
|
|||
if (!property_value_changed)
|
||||
return invalidation;
|
||||
|
||||
// NOTE: If the computed CSS display, content, or content-visibility property changes, we have to rebuild the entire layout tree.
|
||||
// NOTE: If the computed CSS display, position, content, or content-visibility property changes, we have to rebuild the entire layout tree.
|
||||
// In the future, we should figure out ways to rebuild a smaller part of the tree.
|
||||
if (AK::first_is_one_of(property_id, CSS::PropertyID::Display, CSS::PropertyID::Content, CSS::PropertyID::ContentVisibility)) {
|
||||
if (AK::first_is_one_of(property_id, CSS::PropertyID::Display, CSS::PropertyID::Position, CSS::PropertyID::Content, CSS::PropertyID::ContentVisibility)) {
|
||||
return RequiredInvalidationAfterStyleChange::full();
|
||||
}
|
||||
|
||||
|
|
|
@ -2,8 +2,8 @@ Harness status: OK
|
|||
|
||||
Found 233 tests
|
||||
|
||||
120 Pass
|
||||
113 Fail
|
||||
148 Pass
|
||||
85 Fail
|
||||
Pass abs(1) should be used-value-equivalent to 1
|
||||
Pass sign(1) should be used-value-equivalent to 1
|
||||
Pass abs(-1) should be used-value-equivalent to 1
|
||||
|
@ -19,12 +19,12 @@ Pass calc(abs(0.1 + 0.2) * -2) should be used-value-equivalent to -0.6
|
|||
Pass calc(sign(0.1 - 0.2) - 0.05) should be used-value-equivalent to -1.05
|
||||
Pass calc(sign(1) + sign(1) - 0.05) should be used-value-equivalent to 1.95
|
||||
Pass abs(10px) should be used-value-equivalent to 10px
|
||||
Fail abs(10%) should be used-value-equivalent to 10px
|
||||
Fail abs(10px + 10%) should be used-value-equivalent to 20px
|
||||
Fail calc(10px + abs(10%)) should be used-value-equivalent to 20px
|
||||
Pass abs(10%) should be used-value-equivalent to 10px
|
||||
Pass abs(10px + 10%) should be used-value-equivalent to 20px
|
||||
Pass calc(10px + abs(10%)) should be used-value-equivalent to 20px
|
||||
Pass abs(-10px) should be used-value-equivalent to 10px
|
||||
Fail abs(-10%) should be used-value-equivalent to 10px
|
||||
Fail calc((1em + 1px) * (sign(1em - 10px - 10%) + 1)) should be used-value-equivalent to 21px
|
||||
Pass abs(-10%) should be used-value-equivalent to 10px
|
||||
Pass calc((1em + 1px) * (sign(1em - 10px - 10%) + 1)) should be used-value-equivalent to 21px
|
||||
Pass calc(calc(sign(-0))) should be used-value-equivalent to 0
|
||||
Fail clamp(-1, calc( 1 / sign(calc(sign(-0)))), 1) should be used-value-equivalent to -1
|
||||
Pass calc(calc(sign(0))) should be used-value-equivalent to 0
|
||||
|
@ -172,14 +172,14 @@ Pass abs(1Q) should be used-value-equivalent to 1Q
|
|||
Pass abs(1in) should be used-value-equivalent to 1in
|
||||
Pass abs(1pc) should be used-value-equivalent to 1pc
|
||||
Pass abs(1pt) should be used-value-equivalent to 1pt
|
||||
Fail abs(1em) should be used-value-equivalent to 1em
|
||||
Fail abs(1ex) should be used-value-equivalent to 1ex
|
||||
Fail abs(1ch) should be used-value-equivalent to 1ch
|
||||
Fail abs(1rem) should be used-value-equivalent to 1rem
|
||||
Fail abs(1vh) should be used-value-equivalent to 1vh
|
||||
Fail abs(1vw) should be used-value-equivalent to 1vw
|
||||
Fail abs(1vmin) should be used-value-equivalent to 1vmin
|
||||
Fail abs(1vmax) should be used-value-equivalent to 1vmax
|
||||
Pass abs(1em) should be used-value-equivalent to 1em
|
||||
Pass abs(1ex) should be used-value-equivalent to 1ex
|
||||
Pass abs(1ch) should be used-value-equivalent to 1ch
|
||||
Pass abs(1rem) should be used-value-equivalent to 1rem
|
||||
Pass abs(1vh) should be used-value-equivalent to 1vh
|
||||
Pass abs(1vw) should be used-value-equivalent to 1vw
|
||||
Pass abs(1vmin) should be used-value-equivalent to 1vmin
|
||||
Pass abs(1vmax) should be used-value-equivalent to 1vmax
|
||||
Pass abs(-1px) should be used-value-equivalent to 1px
|
||||
Pass abs(-1cm) should be used-value-equivalent to 1cm
|
||||
Pass abs(-1mm) should be used-value-equivalent to 1mm
|
||||
|
@ -187,14 +187,14 @@ Pass abs(-1Q) should be used-value-equivalent to 1Q
|
|||
Pass abs(-1in) should be used-value-equivalent to 1in
|
||||
Pass abs(-1pc) should be used-value-equivalent to 1pc
|
||||
Pass abs(-1pt) should be used-value-equivalent to 1pt
|
||||
Fail abs(-1em) should be used-value-equivalent to 1em
|
||||
Fail abs(-1ex) should be used-value-equivalent to 1ex
|
||||
Fail abs(-1ch) should be used-value-equivalent to 1ch
|
||||
Fail abs(-1rem) should be used-value-equivalent to 1rem
|
||||
Fail abs(-1vh) should be used-value-equivalent to 1vh
|
||||
Fail abs(-1vw) should be used-value-equivalent to 1vw
|
||||
Fail abs(-1vmin) should be used-value-equivalent to 1vmin
|
||||
Fail abs(-1vmax) should be used-value-equivalent to 1vmax
|
||||
Pass abs(-1em) should be used-value-equivalent to 1em
|
||||
Pass abs(-1ex) should be used-value-equivalent to 1ex
|
||||
Pass abs(-1ch) should be used-value-equivalent to 1ch
|
||||
Pass abs(-1rem) should be used-value-equivalent to 1rem
|
||||
Pass abs(-1vh) should be used-value-equivalent to 1vh
|
||||
Pass abs(-1vw) should be used-value-equivalent to 1vw
|
||||
Pass abs(-1vmin) should be used-value-equivalent to 1vmin
|
||||
Pass abs(-1vmax) should be used-value-equivalent to 1vmax
|
||||
Pass abs(1s) should be used-value-equivalent to 1s
|
||||
Pass abs(1ms) should be used-value-equivalent to 1ms
|
||||
Pass abs(-1s) should be used-value-equivalent to 1s
|
||||
|
@ -209,16 +209,16 @@ Pass abs(-1rad) should be used-value-equivalent to 1rad
|
|||
Pass abs(-1turn) should be used-value-equivalent to 1turn
|
||||
Fail sign(10px - 1em) should be used-value-equivalent to 0; fontSize=10px
|
||||
Fail sign(10px - 2em) should be used-value-equivalent to -1; fontSize=10px
|
||||
Fail calc(sign(10%) * 100px) should be used-value-equivalent to 100px
|
||||
Pass calc(sign(10%) * 100px) should be used-value-equivalent to 100px
|
||||
Fail calc(2.5 - sign(41px - 2em) / 2) should be used-value-equivalent to 2
|
||||
Fail calc(2.5 - sign(40px - 2em) / 2) should be used-value-equivalent to 2.5
|
||||
Fail calc(2.5 - sign(39px - 2em) / 2) should be used-value-equivalent to 3
|
||||
Fail calc(3 + sign(42px - 2em)) should be used-value-equivalent to 4
|
||||
Fail calc(3 + sign(40px - 2em)) should be used-value-equivalent to 3
|
||||
Fail calc(3 + sign(38px - 2em)) should be used-value-equivalent to 2
|
||||
Fail calc(50px + 100px * sign(42px - 2em)) should be used-value-equivalent to 150px
|
||||
Fail calc(50px + 100px * sign(40px - 2em)) should be used-value-equivalent to 50px
|
||||
Fail calc(50px + 100px * sign(38px - 2em)) should be used-value-equivalent to -50px
|
||||
Pass calc(50px + 100px * sign(42px - 2em)) should be used-value-equivalent to 150px
|
||||
Pass calc(50px + 100px * sign(40px - 2em)) should be used-value-equivalent to 50px
|
||||
Pass calc(50px + 100px * sign(38px - 2em)) should be used-value-equivalent to -50px
|
||||
Fail calc(90deg + 30deg * sign(42px - 2em)) should be used-value-equivalent to 120deg
|
||||
Fail calc(90deg + 30deg * sign(40px - 2em)) should be used-value-equivalent to 90deg
|
||||
Fail calc(90deg + 30deg * sign(38px - 2em)) should be used-value-equivalent to 60deg
|
||||
|
@ -234,6 +234,6 @@ Fail calc(3fr + 1fr * sign(38px - 2em)) should be used-value-equivalent to 2fr
|
|||
Fail calc(2.5 - sign(33px - 2rem) / 2) should be used-value-equivalent to 2
|
||||
Fail calc(2.5 - sign(32px - 2rem) / 2) should be used-value-equivalent to 2.5
|
||||
Fail calc(2.5 - sign(31px - 2rem) / 2) should be used-value-equivalent to 3
|
||||
Fail calc(50px + 100px * sign(34px - 2rem)) should be used-value-equivalent to 150px
|
||||
Fail calc(50px + 100px * sign(32px - 2rem)) should be used-value-equivalent to 50px
|
||||
Fail calc(50px + 100px * sign(30px - 2rem)) should be used-value-equivalent to -50px
|
||||
Pass calc(50px + 100px * sign(34px - 2rem)) should be used-value-equivalent to 150px
|
||||
Pass calc(50px + 100px * sign(32px - 2rem)) should be used-value-equivalent to 50px
|
||||
Pass calc(50px + 100px * sign(30px - 2rem)) should be used-value-equivalent to -50px
|
Loading…
Add table
Add a link
Reference in a new issue