diff --git a/Libraries/LibHTML/Layout/LayoutNode.h b/Libraries/LibHTML/Layout/LayoutNode.h
index b13d4c5500..507c14c2fe 100644
--- a/Libraries/LibHTML/Layout/LayoutNode.h
+++ b/Libraries/LibHTML/Layout/LayoutNode.h
@@ -50,6 +50,9 @@ public:
virtual bool is_block() const { return false; }
virtual bool is_replaced() const { return false; }
virtual bool is_box() const { return false; }
+ virtual bool is_table() const { return false; }
+ virtual bool is_table_row() const { return false; }
+ virtual bool is_table_cell() const { return false; }
bool has_style() const { return m_has_style; }
bool is_inline() const { return m_inline; }
diff --git a/Libraries/LibHTML/Layout/LayoutTable.h b/Libraries/LibHTML/Layout/LayoutTable.h
index db7d55655e..e5cab92c39 100644
--- a/Libraries/LibHTML/Layout/LayoutTable.h
+++ b/Libraries/LibHTML/Layout/LayoutTable.h
@@ -10,5 +10,12 @@ public:
virtual void layout() override;
private:
+ virtual bool is_table() const override { return true; }
virtual const char* class_name() const override { return "LayoutTable"; }
};
+
+template<>
+inline bool is(const LayoutNode& node)
+{
+ return node.is_table();
+}
diff --git a/Libraries/LibHTML/Layout/LayoutTableCell.h b/Libraries/LibHTML/Layout/LayoutTableCell.h
index 0616a987a8..3334f31cda 100644
--- a/Libraries/LibHTML/Layout/LayoutTableCell.h
+++ b/Libraries/LibHTML/Layout/LayoutTableCell.h
@@ -8,5 +8,12 @@ public:
virtual ~LayoutTableCell() override;
private:
+ virtual bool is_table_cell() const override { return true; }
virtual const char* class_name() const override { return "LayoutTableCell"; }
};
+
+template<>
+inline bool is(const LayoutNode& node)
+{
+ return node.is_table_cell();
+}
diff --git a/Libraries/LibHTML/Layout/LayoutTableRow.h b/Libraries/LibHTML/Layout/LayoutTableRow.h
index d29cead338..4da426de36 100644
--- a/Libraries/LibHTML/Layout/LayoutTableRow.h
+++ b/Libraries/LibHTML/Layout/LayoutTableRow.h
@@ -10,5 +10,12 @@ public:
virtual void layout() override;
private:
+ virtual bool is_table_row() const override { return true; }
virtual const char* class_name() const override { return "LayoutTableRow"; }
};
+
+template<>
+inline bool is(const LayoutNode& node)
+{
+ return node.is_table_row();
+}