diff --git a/Userland/Libraries/LibWeb/DOM/Node.cpp b/Userland/Libraries/LibWeb/DOM/Node.cpp index 29cf612567..4bfe4dadad 100644 --- a/Userland/Libraries/LibWeb/DOM/Node.cpp +++ b/Userland/Libraries/LibWeb/DOM/Node.cpp @@ -649,4 +649,10 @@ bool Node::is_scripting_disabled() const return !document().browsing_context(); } +// https://dom.spec.whatwg.org/#dom-node-contains +bool Node::contains(RefPtr other) const +{ + return other && other->is_inclusive_descendant_of(*this); +} + } diff --git a/Userland/Libraries/LibWeb/DOM/Node.h b/Userland/Libraries/LibWeb/DOM/Node.h index a4845b5a94..6d8614a717 100644 --- a/Userland/Libraries/LibWeb/DOM/Node.h +++ b/Userland/Libraries/LibWeb/DOM/Node.h @@ -166,6 +166,8 @@ public: bool is_scripting_disabled() const; + bool contains(RefPtr) const; + // Used for dumping the DOM Tree void serialize_tree_as_json(JsonObjectSerializer&) const; diff --git a/Userland/Libraries/LibWeb/DOM/Node.idl b/Userland/Libraries/LibWeb/DOM/Node.idl index 00fb334369..edd50ca84f 100644 --- a/Userland/Libraries/LibWeb/DOM/Node.idl +++ b/Userland/Libraries/LibWeb/DOM/Node.idl @@ -21,6 +21,7 @@ interface Node : EventTarget { Node replaceChild(Node node, Node child); [ImplementedAs=pre_remove] Node removeChild(Node child); [ImplementedAs=clone_node_binding] Node cloneNode(optional boolean deep = false); + boolean contains(Node? other); const unsigned short ELEMENT_NODE = 1; const unsigned short ATTRIBUTE_NODE = 2;