From fb4702dd497f31e2f63e5a6e99e0c74099972c02 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 28 Sep 2019 22:59:16 +0200 Subject: [PATCH] LibHTML: Add virtual Node::tag_name() This is analogous to the DOM's Node.tagName and makes it easy to ask "hey, what kinda thing is this Node?" --- Libraries/LibHTML/DOM/Document.h | 2 ++ Libraries/LibHTML/DOM/Element.h | 2 +- Libraries/LibHTML/DOM/Node.h | 3 +++ Libraries/LibHTML/DOM/Text.h | 2 ++ 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Libraries/LibHTML/DOM/Document.h b/Libraries/LibHTML/DOM/Document.h index 2b3c10e9bd..66a64e92aa 100644 --- a/Libraries/LibHTML/DOM/Document.h +++ b/Libraries/LibHTML/DOM/Document.h @@ -23,6 +23,8 @@ public: void add_sheet(const StyleSheet& sheet) { m_sheets.append(sheet); } const NonnullRefPtrVector& stylesheets() const { return m_sheets; } + virtual String tag_name() const override { return "#document"; } + private: OwnPtr m_style_resolver; NonnullRefPtrVector m_sheets; diff --git a/Libraries/LibHTML/DOM/Element.h b/Libraries/LibHTML/DOM/Element.h index beb5618bd8..1b2d2b0ce7 100644 --- a/Libraries/LibHTML/DOM/Element.h +++ b/Libraries/LibHTML/DOM/Element.h @@ -26,7 +26,7 @@ public: explicit Element(const String& tag_name); virtual ~Element() override; - const String& tag_name() const { return m_tag_name; } + virtual String tag_name() const override { return m_tag_name; } String attribute(const String& name) const; void set_attribute(const String& name, const String& value); diff --git a/Libraries/LibHTML/DOM/Node.h b/Libraries/LibHTML/DOM/Node.h index c26ed8a5aa..506da734a5 100644 --- a/Libraries/LibHTML/DOM/Node.h +++ b/Libraries/LibHTML/DOM/Node.h @@ -2,6 +2,7 @@ #include #include +#include #include #include @@ -30,6 +31,8 @@ public: RefPtr create_layout_node(const StyleResolver&, const StyleProperties* parent_properties) const; RefPtr create_layout_tree(const StyleResolver&, const StyleProperties* parent_properties) const; + virtual String tag_name() const = 0; + protected: explicit Node(NodeType); diff --git a/Libraries/LibHTML/DOM/Text.h b/Libraries/LibHTML/DOM/Text.h index 33b689a4b5..d09ab12740 100644 --- a/Libraries/LibHTML/DOM/Text.h +++ b/Libraries/LibHTML/DOM/Text.h @@ -10,6 +10,8 @@ public: const String& data() const { return m_data; } + virtual String tag_name() const override { return "#text"; } + private: String m_data; };