ShadowRoot::~ShadowRoot() { // We cannot let ContainerNode destructor call willBeDeletedFrom() // for this ShadowRoot instance because TreeScope destructor // clears Node::m_treeScope thus ContainerNode is no longer able // to access it Document reference after that. willBeDeletedFrom(document()); // We must remove all of our children first before the TreeScope destructor // runs so we don't go through TreeScopeAdopter for each child with a // destructed tree scope in each descendant. removeDetachedChildren(); }
ShadowRoot::~ShadowRoot() { ASSERT(!m_prev); ASSERT(!m_next); // We cannot let ContainerNode destructor call willBeDeletedFrom() // for this ShadowRoot instance because TreeScope destructor // clears Node::m_treeScope thus ContainerNode is no longer able // to access it Document reference after that. willBeDeletedFrom(documentInternal()); // We must remove all of our children first before the TreeScope destructor // runs so we don't go through TreeScopeAdopter for each child with a // destructed tree scope in each descendant. removeDetachedChildren(); // We must call clearRareData() here since a ShadowRoot class inherits TreeScope // as well as Node. See a comment on TreeScope.h for the reason. if (hasRareData()) clearRareData(); }
ContainerNode::~ContainerNode() { if (Document* document = documentInternal()) willBeDeletedFrom(document); removeDetachedChildren(); }
ContainerNode::~ContainerNode() { if (!isDocumentNode()) willBeDeletedFrom(document()); removeDetachedChildren(); }