From 9cae827f0797a48e916d697664b1e3323e5f9966 Mon Sep 17 00:00:00 2001 From: Luke Date: Mon, 5 Jul 2021 05:55:02 +0100 Subject: [PATCH] LibWeb: Implement Node.contains Used by Web Components Polyfills. --- Userland/Libraries/LibWeb/DOM/Node.cpp | 6 ++++++ Userland/Libraries/LibWeb/DOM/Node.h | 2 ++ Userland/Libraries/LibWeb/DOM/Node.idl | 1 + 3 files changed, 9 insertions(+) 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;