diff options
Diffstat (limited to 'WebCore/dom/ContainerNode.cpp')
-rw-r--r-- | WebCore/dom/ContainerNode.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/WebCore/dom/ContainerNode.cpp b/WebCore/dom/ContainerNode.cpp index ef62b38..064d4e5 100644 --- a/WebCore/dom/ContainerNode.cpp +++ b/WebCore/dom/ContainerNode.cpp @@ -72,6 +72,23 @@ void ContainerNode::removeAllChildren() removeAllChildrenInContainer<Node, ContainerNode>(this); } + +void ContainerNode::takeAllChildrenFrom(ContainerNode* oldParent) +{ + NodeVector children; + for (Node* child = oldParent->firstChild(); child; child = child->nextSibling()) + children.append(child); + oldParent->removeAllChildren(); + + for (unsigned i = 0; i < children.size(); ++i) { + ExceptionCode ec = 0; + // FIXME: We need a no mutation event version of adoptNode. + RefPtr<Node> child = document()->adoptNode(children[i].release(), ec); + ASSERT(!ec); + parserAddChild(child.release()); + } +} + ContainerNode::~ContainerNode() { removeAllChildren(); |