LibWeb: Always store ComputedProperties, even if no invalidations
Some checks are pending
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run

Before this change, we'd skip storing the new ComputedProperties in
Element::recompute_style() if there was no invalidation needed.

This caused us to lose the information about which properties are
inherited and/or important (which is also carried by ComputedProperties,
but doesn't affect invalidation).

Consequently, we'd then fail to recompute inherited styles, since that
mechanism depends on this data.

The fix is simply to always store the new ComputedProperties.
This commit is contained in:
Andreas Kling 2025-04-12 22:45:25 +02:00 committed by Andreas Kling
commit e068ff5a5d
Notes: github-actions[bot] 2025-04-12 22:44:44 +00:00
3 changed files with 66 additions and 2 deletions

View file

@ -0,0 +1,35 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Inheritance of CSS Box Model properties</title>
<link rel="help" href="https://drafts.csswg.org/css-box-3/#property-index">
<link rel="help" href="https://www.w3.org/TR/CSS2/">
<meta name="assert" content="Properties do not inherit.">
<meta name="assert" content="length-percentage properties have initial value 0.">
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../../css/support/inheritance-testcommon.js"></script>
</head>
<body>
<div id="container">
<div id="target"></div>
</div>
<script>
assert_not_inherited('clear', 'none', 'right');
assert_not_inherited('float', 'none', 'right');
assert_not_inherited('margin-bottom', '0px', '10px');
assert_not_inherited('margin-left', '0px', '10px');
assert_not_inherited('margin-right', '0px', '10px');
assert_not_inherited('margin-top', '0px', '10px');
assert_not_inherited('margin-trim', 'none', 'block');
assert_not_inherited('padding-bottom', '0px', '10px');
assert_not_inherited('padding-left', '0px', '10px');
assert_not_inherited('padding-right', '0px', '10px');
assert_not_inherited('padding-top', '0px', '10px');
assert_inherited('visibility', 'visible', 'collapse');
</script>
</body>
</html>