bool ContentDistributor::invalidate(Element* host) { ASSERT(needsInvalidation()); bool needsReattach = (m_validity == Undetermined) || !m_nodeToInsertionPoint.isEmpty(); if (ShadowRoot* root = host->shadowRoot()) { if (ScopeContentDistribution* scope = root->scopeDistribution()) { const Vector<RefPtr<InsertionPoint> >& insertionPoints = scope->ensureInsertionPointList(root); for (size_t i = 0; i < insertionPoints.size(); ++i) { needsReattach = needsReattach || true; insertionPoints[i]->clearDistribution(); // After insertionPoint's distribution is invalidated, its reprojection should also be invalidated. if (!insertionPoints[i]->isActive()) continue; if (Element* parent = insertionPoints[i]->parentElement()) { if (ElementShadow* shadow = parent->shadow()) shadow->invalidateDistribution(); } } } } m_validity = Invalidating; m_nodeToInsertionPoint.clear(); return needsReattach; }
void ContentDistributor::invalidateDistribution(Element* host) { bool didNeedInvalidation = needsInvalidation(); bool needsReattach = didNeedInvalidation ? invalidate(host) : false; if (needsReattach) host->setNeedsStyleRecalc(ReconstructRenderTree); if (didNeedInvalidation) { ASSERT(m_validity == Invalidating); m_validity = Invalidated; } }
void ContentDistributor::invalidateDistribution(Element* host) { bool didNeedInvalidation = needsInvalidation(); bool needsReattach = didNeedInvalidation ? invalidate(host) : false; if (needsReattach && host->attached()) { for (Element* element = ElementTraversal::firstWithin(host); element; element = ElementTraversal::nextSibling(element)) element->lazyReattach(); host->setNeedsStyleRecalc(); } if (didNeedInvalidation) { ASSERT(m_validity == Invalidating); m_validity = Invalidated; } }
bool ContentDistributor::invalidate(Element* host) { ASSERT(needsInvalidation()); bool needsReattach = (m_validity == Undetermined) || !m_nodeToInsertionPoint.isEmpty(); if (ShadowRoot* root = host->shadowRoot()) { for (auto& point : ensureInsertionPointList(root)) { needsReattach = true; point->clearDistribution(); } } m_validity = Invalidating; m_nodeToInsertionPoint.clear(); return needsReattach; }
void ContentDistributor::invalidateDistribution(Element* host) { bool didNeedInvalidation = needsInvalidation(); bool needsReattach = didNeedInvalidation ? invalidate(host) : false; if (needsReattach && host->attached()) { for (Node* n = host->firstChild(); n; n = n->nextSibling()) n->lazyReattach(); host->setNeedsStyleRecalc(); } if (didNeedInvalidation) { ASSERT(m_validity == Invalidating); m_validity = Invalidated; } }
bool ContentDistributor::invalidate(Element* host) { ASSERT(needsInvalidation()); bool needsReattach = (m_validity == Undetermined) || !m_nodeToInsertionPoint.isEmpty(); if (ShadowRoot* root = host->shadowRoot()) { const Vector<RefPtr<InsertionPoint> >& insertionPoints = ensureInsertionPointList(root); for (size_t i = 0; i < insertionPoints.size(); ++i) { needsReattach = true; insertionPoints[i]->clearDistribution(); } } m_validity = Invalidating; m_nodeToInsertionPoint.clear(); return needsReattach; }
bool ContentDistributor::invalidate(Element* host) { ASSERT(needsInvalidation()); bool needsReattach = (m_validity == Undetermined) || !m_nodeToInsertionPoint.isEmpty(); for (ShadowRoot* root = host->youngestShadowRoot(); root; root = root->olderShadowRoot()) { root->setAssignedTo(0); const Vector<InsertionPoint*>& insertionPoints = root->insertionPointList(); for (size_t i = 0; i < insertionPoints.size(); ++i) { needsReattach = needsReattach || true; insertionPoints[i]->clearDistribution(); } } m_validity = Invalidating; m_nodeToInsertionPoint.clear(); return needsReattach; }
bool ContentDistributor::invalidate(Element* host) { ASSERT(needsInvalidation()); bool needsReattach = (m_validity == Undetermined) || !m_nodeToInsertionPoint.isEmpty(); for (ShadowRoot* root = host->youngestShadowRoot(); root; root = root->olderShadowRoot()) { root->setAssignedTo(0); for (Node* node = root; node; node = node->traverseNextNode(root)) { if (!isInsertionPoint(node)) continue; needsReattach = needsReattach || true; InsertionPoint* point = toInsertionPoint(node); point->clearDistribution(); } } m_validity = Invalidating; m_nodeToInsertionPoint.clear(); return needsReattach; }