763static bool isNodeNeededToRetainStructure(const Node* node)
764{
765 if (node->hasTagName(aTag) || node->hasTagName(bodyTag))
766 return true;
767
768 if (node->hasTagName(tbodyTag) || node->hasTagName(trTag))
769 return enclosingNodeWithTag(firstPositionInNode(const_cast<Node*>(node)), tableTag);
770
771 if (node->renderer() && node->renderer()->isListItem())
772 return true;
773 if (!node->renderer() && node->hasTagName(liTag)) {
774 for (Node* ancestor = node->parentNode(); ancestor; ancestor = ancestor->parentNode()) {
775 if (node->hasTagName(ulTag) || node->hasTagName(olTag))
776 return true;
777 }
778 return false;
779 }
780
781 if (node->hasTagName(dtTag) || node->hasTagName(ddTag))
782 return enclosingNodeWithTag(firstPositionInNode(const_cast<Node*>(node)), dlTag);
783
784 return false;
785}
786