void ShadowRoot::attach() { StyleResolver* styleResolver = document()->styleResolver(); styleResolver->pushParentShadowRoot(this); DocumentFragment::attach(); styleResolver->popParentShadowRoot(this); }
void ShadowTree::recalcShadowTreeStyle(Node::StyleChange change) { ShadowRoot* youngest = youngestShadowRoot(); if (!youngest) return; if (needsReattachHostChildrenAndShadow()) reattachHostChildrenAndShadow(); else { StyleResolver* styleResolver = youngest->document()->styleResolver(); styleResolver->pushParentShadowRoot(youngest); for (Node* n = youngest->firstChild(); n; n = n->nextSibling()) { if (n->isElementNode()) static_cast<Element*>(n)->recalcStyle(change); else if (n->isTextNode()) toText(n)->recalcTextStyle(change); } styleResolver->popParentShadowRoot(youngest); } clearNeedsReattachHostChildrenAndShadow(); for (ShadowRoot* root = youngestShadowRoot(); root; root = root->olderShadowRoot()) { root->clearNeedsStyleRecalc(); root->clearChildNeedsStyleRecalc(); } }
void ShadowRoot::attach() { StyleResolver* styleResolver = document()->styleResolver(); styleResolver->pushParentShadowRoot(this); attachChildrenIfNeeded(); attachAsNode(); styleResolver->popParentShadowRoot(this); }
void ShadowRoot::recalcStyle(StyleChange change) { // ShadowRoot doesn't support custom callbacks. ASSERT(!hasCustomCallbacks()); StyleResolver* styleResolver = document()->styleResolver(); styleResolver->pushParentShadowRoot(this); for (Node* child = firstChild(); child; child = child->nextSibling()) { if (child->isElementNode()) static_cast<Element*>(child)->recalcStyle(change); else if (child->isTextNode()) toText(child)->recalcTextStyle(change); } styleResolver->popParentShadowRoot(this); clearNeedsStyleRecalc(); clearChildNeedsStyleRecalc(); }