Browse Source

LibWeb: Implement Node.removeChild() in terms of "pre-remove"

This is what the spec wants us to do.
Andreas Kling 3 năm trước cách đây
mục cha
commit
19b5033dc4

+ 7 - 1
Userland/Libraries/LibWeb/DOM/Node.cpp

@@ -348,6 +348,12 @@ ExceptionOr<NonnullRefPtr<Node>> Node::pre_insert(NonnullRefPtr<Node> node, RefP
     return node;
 }
 
+// https://dom.spec.whatwg.org/#dom-node-removechild
+ExceptionOr<NonnullRefPtr<Node>> Node::remove_child(NonnullRefPtr<Node> child)
+{
+    return pre_remove(child);
+}
+
 // https://dom.spec.whatwg.org/#concept-node-pre-remove
 ExceptionOr<NonnullRefPtr<Node>> Node::pre_remove(NonnullRefPtr<Node> child)
 {
@@ -383,7 +389,7 @@ void Node::remove(bool suppress_observers)
     // FIXME: Let oldPreviousSibling be node’s previous sibling. (Currently unused so not included)
     // FIXME: Let oldNextSibling be node’s next sibling. (Currently unused so not included)
 
-    parent->remove_child(*this);
+    parent->TreeNode::remove_child(*this);
 
     // FIXME: If node is assigned, then run assign slottables for node’s assigned slot.
 

+ 2 - 0
Userland/Libraries/LibWeb/DOM/Node.h

@@ -90,6 +90,8 @@ public:
     ExceptionOr<NonnullRefPtr<Node>> pre_remove(NonnullRefPtr<Node>);
 
     ExceptionOr<NonnullRefPtr<Node>> append_child(NonnullRefPtr<Node>);
+    ExceptionOr<NonnullRefPtr<Node>> remove_child(NonnullRefPtr<Node>);
+
     void insert_before(NonnullRefPtr<Node> node, RefPtr<Node> child, bool suppress_observers = false);
     void remove(bool suppress_observers = false);
     void remove_all_children(bool suppress_observers = false);