From 94cf1f08ec2414c755baade8b53a725402b3c7d7 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 20 Jun 2020 22:26:54 +0200 Subject: [PATCH] LibWeb: Add Node.parentNode and Node.parentElement to DOM API :^) --- Libraries/LibWeb/DOM/Node.cpp | 14 ++++++++++++++ Libraries/LibWeb/DOM/Node.h | 6 ++++++ Libraries/LibWeb/DOM/Node.idl | 2 ++ 3 files changed, 22 insertions(+) diff --git a/Libraries/LibWeb/DOM/Node.cpp b/Libraries/LibWeb/DOM/Node.cpp index 2e6eababc7..835cd68d65 100644 --- a/Libraries/LibWeb/DOM/Node.cpp +++ b/Libraries/LibWeb/DOM/Node.cpp @@ -179,4 +179,18 @@ bool Node::is_connected() const return root() && root()->is_document(); } +Element* Node::parent_element() +{ + if (!parent() || !is(parent())) + return nullptr; + return to(parent()); +} + +const Element* Node::parent_element() const +{ + if (!parent() || !is(parent())) + return nullptr; + return to(parent()); +} + } diff --git a/Libraries/LibWeb/DOM/Node.h b/Libraries/LibWeb/DOM/Node.h index cc58ba2533..b0065f39b6 100644 --- a/Libraries/LibWeb/DOM/Node.h +++ b/Libraries/LibWeb/DOM/Node.h @@ -101,6 +101,12 @@ public: const Node* root() const; bool is_connected() const; + Node* parent_node() { return parent(); } + const Node* parent_node() const { return parent(); } + + Element* parent_element(); + const Element* parent_element() const; + template const T* first_child_of_type() const; diff --git a/Libraries/LibWeb/DOM/Node.idl b/Libraries/LibWeb/DOM/Node.idl index 97e036d721..2fca1a6d8e 100644 --- a/Libraries/LibWeb/DOM/Node.idl +++ b/Libraries/LibWeb/DOM/Node.idl @@ -5,6 +5,8 @@ interface Node : EventTarget { readonly attribute Node? lastChild; readonly attribute Node? previousSibling; readonly attribute Node? nextSibling; + readonly attribute Node? parentNode; + readonly attribute Element? parentElement; }