ladybird/Tests/LibWeb/Text/input/css-has-invalidation
Andreas Kling 7a5b1d9de1 LibWeb: Delay generic :has() sibling scans until sibling roots
Mark elements reached by stepping through sibling combinators inside
:has() and use that breadcrumb during generic invalidation walks.

Keep the existing conservative sibling scans for mutations outside
those marked subtrees so nested :is(), :not(), and nesting cases
continue to invalidate correctly.

Also keep :has() eager within compounds that contain ::part(). Those
selectors retarget the remaining simple selectors to the part host, so
deferring :has() there changes which element the pseudo-class runs
against and can make ::part(foo):has(.match) spuriously match.

Add a counter-based sibling-scan test and a regression test covering
the ::part()/ :has() selector orderings.
2026-04-20 13:20:41 +02:00
..
_helpers.js
baseline-cache-hits.html
baseline-no-has.html
baseline-non-subject-has.html
baseline-sibling-has.html
baseline-subject-has.html
deep-dom-with-anchor-halfway.html LibWeb: Stop :has() invalidation walk when out of :has() scope 2026-04-20 13:20:41 +02:00
fast-path-unrelated-mutation.html LibWeb: Stop :has() invalidation walk when out of :has() scope 2026-04-20 13:20:41 +02:00
has-child-combinator.html LibWeb: Stop :has() invalidation walk when out of :has() scope 2026-04-20 13:20:41 +02:00
has-complex-sibling-subtree-scan-insights.html LibWeb: Delay generic :has() sibling scans until sibling roots 2026-04-20 13:20:41 +02:00
has-control-no-has-with-text-insert.html
has-feature-metadata-buckets.html LibWeb: Bucket :has() invalidation metadata by feature 2026-04-20 13:20:41 +02:00
has-order-insensitive-plan-merge.html LibWeb: Ignore invalidation rule order when merging plans 2026-04-20 13:20:41 +02:00
has-sibling-scan-insights.html LibWeb: Skip useless sibling scans in generic :has() walks 2026-04-20 13:20:41 +02:00
has-subsequent-sibling.html LibWeb: Stop :has() invalidation walk when out of :has() scope 2026-04-20 13:20:41 +02:00
has-with-attribute.html LibWeb: Stop :has() invalidation walk when out of :has() scope 2026-04-20 13:20:41 +02:00
has-with-is.html LibWeb: Stop :has() invalidation walk when out of :has() scope 2026-04-20 13:20:41 +02:00
has-with-not.html LibWeb: Stop :has() invalidation walk when out of :has() scope 2026-04-20 13:20:41 +02:00
insertion-triggers-has.html LibWeb: Stop :has() invalidation walk when out of :has() scope 2026-04-20 13:20:41 +02:00
multiple-has-rules.html LibWeb: Stop :has() invalidation walk when out of :has() scope 2026-04-20 13:20:41 +02:00