• esprehn@chromium.org's avatar
    Skip child ShadowRoots when invalidation does not have boundary crossing rules · 800858c8
    esprehn@chromium.org authored
    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
    800858c8
shadow-boundary-crossing.html 1.13 KB