Skip child ShadowRoots when invalidation does not have boundary crossing rules
When the only things that changed are not tree boundary crossing rules we can skip invalidation in descendant ShadowRoots. This means that if you have lots of nested components with duplicate class names then using a descendant selector in an enclosing component won't invalidate style in nested ShadowRoots. I also packed the booleans on DescendantInvalidationSet since we keep growing it with new flags. In the future we can make this tree boundary crossing logic even smarter so that if you have both tree boundary and not tree boundary crossing invalidation sets on the same subtree we can skip running the non-tree boundary crossing rules when recursing into a ShadowRoot. I also took this as an opportunity to clean up the addFeaturesToInvalidationSets logic and merged the new treeBoundaryCrossing flag and the wholeSubtreeInvalid flag into the InvalidationSetFeatures. Review URL: https://codereview.chromium.org/286903024 git-svn-id: svn://svn.chromium.org/blink/trunk@175171 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Showing
Please register or sign in to comment