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; }
bool StyleInvalidator::invalidateChildren(Element& element) { bool someChildrenNeedStyleRecalc = false; for (ShadowRoot* root = element.youngestShadowRoot(); root; root = root->olderShadowRoot()) { for (Element* child = ElementTraversal::firstWithin(*root); child; child = ElementTraversal::nextSibling(*child)) { bool childRecalced = invalidate(*child); someChildrenNeedStyleRecalc = someChildrenNeedStyleRecalc || childRecalced; } root->clearChildNeedsStyleInvalidation(); root->clearNeedsStyleInvalidation(); } for (Element* child = ElementTraversal::firstWithin(element); child; child = ElementTraversal::nextSibling(*child)) { bool childRecalced = invalidate(*child); someChildrenNeedStyleRecalc = someChildrenNeedStyleRecalc || childRecalced; } return someChildrenNeedStyleRecalc; }