Avoid restyling entire parent subtrees for changes that only affect a
child or sibling selector. Skip unrelated class changes, cache selector
dependencies, and avoid searching sibling subtrees that cannot match.
This improves typing performance on Gitea.
Track attribute names and class tokens used by relative selectors. Check classes before and after attribute updates so removing a watched class still invalidates its anchors, while unrelated changes avoid broad subtree restyles.
Preserve conservative handling of implicit pseudo-class attribute dependencies and explicit attribute selectors. Validated with a full build, runtime restyle counts, and 22 correctness checks.
Track state dependencies inside relative selectors to avoid restyling for unrelated state changes. Restrict parent dependency markers to sibling selectors while preserving outer sibling invalidation, and limit simple child and sibling searches to their candidate elements.
* Add a node property to access the ::before and ::after pseudo-elements
* Look for the frame for ::before and ::after pseudos
* Clean up pseudo-element props
* Simplify nsLayoutUtils callers, and make child iterators notice display: contents pseudos
Tag #1375
* Tidy RestyleManager::ContentStateChanged
* Convert UndisplayedMap to a typed hashtable
* Cleanup infallible or unchecked nsCSSFrameConstructor methods
Tag #1375
* Stop using a node bit for HasExplicitBaseURI
* Move MAY_HAVE_CLASS to mBoolFlags
* Add a flag to indicate that a node is native anonymous content
* Allow tagging of pseudo-implementing native anonymous content with the pseudo type at creation time, and eliminate explicit style contexts in nsIAnonymousContentCreator::ContentInfo
Tag #1375