bool StyleInvalidator::invalidateShadowRootChildren(Element& element, RecursionData& recursionData) { bool someChildrenNeedStyleRecalc = false; for (ShadowRoot* root = element.youngestShadowRoot(); root; root = root->olderShadowRoot()) { if (!recursionData.treeBoundaryCrossing() && !root->childNeedsStyleInvalidation() && !root->needsStyleInvalidation()) continue; SiblingData siblingData; for (Element* child = ElementTraversal::firstChild(*root); child; child = ElementTraversal::nextSibling(*child)) { bool childRecalced = invalidate(*child, recursionData, siblingData); someChildrenNeedStyleRecalc = someChildrenNeedStyleRecalc || childRecalced; } root->clearChildNeedsStyleInvalidation(); root->clearNeedsStyleInvalidation(); } return someChildrenNeedStyleRecalc; }