From 730af2c5247d6d39841ae26644a702412d332915 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 1 Jan 2021 16:08:19 +0100 Subject: [PATCH] LibWeb: Simplify Layout::Node::class_name() with RTTI --- Libraries/LibWeb/Layout/BlockBox.h | 2 -- Libraries/LibWeb/Layout/BreakNode.h | 1 - Libraries/LibWeb/Layout/ButtonBox.h | 1 - Libraries/LibWeb/Layout/CanvasBox.h | 1 - Libraries/LibWeb/Layout/CheckBox.h | 1 - Libraries/LibWeb/Layout/FrameBox.h | 1 - Libraries/LibWeb/Layout/ImageBox.h | 1 - Libraries/LibWeb/Layout/InitialContainingBlockBox.h | 1 - Libraries/LibWeb/Layout/InlineNode.h | 1 - Libraries/LibWeb/Layout/ListItemBox.h | 1 - Libraries/LibWeb/Layout/ListItemMarkerBox.h | 3 --- Libraries/LibWeb/Layout/Node.cpp | 6 ++++++ Libraries/LibWeb/Layout/Node.h | 4 ++-- Libraries/LibWeb/Layout/ReplacedBox.h | 2 -- Libraries/LibWeb/Layout/SVGBox.h | 3 --- Libraries/LibWeb/Layout/SVGGraphicsBox.h | 3 --- Libraries/LibWeb/Layout/SVGPathBox.h | 3 --- Libraries/LibWeb/Layout/SVGSVGBox.h | 3 --- Libraries/LibWeb/Layout/TableBox.h | 1 - Libraries/LibWeb/Layout/TableCellBox.h | 1 - Libraries/LibWeb/Layout/TableRowBox.h | 1 - Libraries/LibWeb/Layout/TableRowGroupBox.h | 1 - Libraries/LibWeb/Layout/TextNode.h | 1 - Libraries/LibWeb/Layout/WidgetBox.h | 2 -- 24 files changed, 8 insertions(+), 37 deletions(-) diff --git a/Libraries/LibWeb/Layout/BlockBox.h b/Libraries/LibWeb/Layout/BlockBox.h index ae2336b644..14fd57efcb 100644 --- a/Libraries/LibWeb/Layout/BlockBox.h +++ b/Libraries/LibWeb/Layout/BlockBox.h @@ -36,8 +36,6 @@ public: BlockBox(DOM::Document&, DOM::Node*, NonnullRefPtr); virtual ~BlockBox() override; - virtual const char* class_name() const override { return "BlockBox"; } - virtual void paint(PaintContext&, PaintPhase) override; virtual HitTestResult hit_test(const Gfx::IntPoint&, HitTestType) const override; diff --git a/Libraries/LibWeb/Layout/BreakNode.h b/Libraries/LibWeb/Layout/BreakNode.h index d19b2334cb..7ebe866b7a 100644 --- a/Libraries/LibWeb/Layout/BreakNode.h +++ b/Libraries/LibWeb/Layout/BreakNode.h @@ -40,7 +40,6 @@ public: private: virtual bool is_break() const override { return true; } - virtual const char* class_name() const override { return "BreakNode"; } virtual void split_into_lines(InlineFormattingContext&, LayoutMode) override; }; diff --git a/Libraries/LibWeb/Layout/ButtonBox.h b/Libraries/LibWeb/Layout/ButtonBox.h index 9545d912aa..a48342ad2b 100644 --- a/Libraries/LibWeb/Layout/ButtonBox.h +++ b/Libraries/LibWeb/Layout/ButtonBox.h @@ -43,7 +43,6 @@ public: HTML::HTMLInputElement& dom_node() { return static_cast(ReplacedBox::dom_node()); } private: - virtual const char* class_name() const override { return "ButtonBox"; } virtual bool is_button() const override { return true; } virtual bool wants_mouse_events() const override { return true; } virtual void handle_mousedown(Badge, const Gfx::IntPoint&, unsigned button, unsigned modifiers) override; diff --git a/Libraries/LibWeb/Layout/CanvasBox.h b/Libraries/LibWeb/Layout/CanvasBox.h index 989e42859a..052f21aeab 100644 --- a/Libraries/LibWeb/Layout/CanvasBox.h +++ b/Libraries/LibWeb/Layout/CanvasBox.h @@ -42,7 +42,6 @@ public: const HTML::HTMLCanvasElement& dom_node() const { return static_cast(ReplacedBox::dom_node()); } private: - virtual const char* class_name() const override { return "CanvasBox"; } virtual bool is_canvas() const override { return true; } }; diff --git a/Libraries/LibWeb/Layout/CheckBox.h b/Libraries/LibWeb/Layout/CheckBox.h index d63cb08ef1..7a97025383 100644 --- a/Libraries/LibWeb/Layout/CheckBox.h +++ b/Libraries/LibWeb/Layout/CheckBox.h @@ -42,7 +42,6 @@ public: HTML::HTMLInputElement& dom_node() { return static_cast(ReplacedBox::dom_node()); } private: - virtual const char* class_name() const override { return "CheckBox"; } virtual bool is_check_box() const override { return true; } virtual bool wants_mouse_events() const override { return true; } virtual void handle_mousedown(Badge, const Gfx::IntPoint&, unsigned button, unsigned modifiers) override; diff --git a/Libraries/LibWeb/Layout/FrameBox.h b/Libraries/LibWeb/Layout/FrameBox.h index 08766b3578..7c2d9db529 100644 --- a/Libraries/LibWeb/Layout/FrameBox.h +++ b/Libraries/LibWeb/Layout/FrameBox.h @@ -44,7 +44,6 @@ public: private: virtual bool is_frame() const final { return true; } - virtual const char* class_name() const override { return "FrameBox"; } virtual void did_set_rect() override; }; diff --git a/Libraries/LibWeb/Layout/ImageBox.h b/Libraries/LibWeb/Layout/ImageBox.h index 726ce0353d..46c56bdf4f 100644 --- a/Libraries/LibWeb/Layout/ImageBox.h +++ b/Libraries/LibWeb/Layout/ImageBox.h @@ -46,7 +46,6 @@ public: void set_visible_in_viewport(Badge, bool); private: - virtual const char* class_name() const override { return "ImageBox"; } virtual bool is_image() const override { return true; } int preferred_width() const; diff --git a/Libraries/LibWeb/Layout/InitialContainingBlockBox.h b/Libraries/LibWeb/Layout/InitialContainingBlockBox.h index 0b4ab640dd..1e74cefd55 100644 --- a/Libraries/LibWeb/Layout/InitialContainingBlockBox.h +++ b/Libraries/LibWeb/Layout/InitialContainingBlockBox.h @@ -37,7 +37,6 @@ public: virtual ~InitialContainingBlockBox() override; const DOM::Document& dom_node() const { return static_cast(*Node::dom_node()); } - virtual const char* class_name() const override { return "InitialContainingBlockBox"; } void paint_all_phases(PaintContext&); virtual void paint(PaintContext&, PaintPhase) override; diff --git a/Libraries/LibWeb/Layout/InlineNode.h b/Libraries/LibWeb/Layout/InlineNode.h index 2507d502b6..f35a50330a 100644 --- a/Libraries/LibWeb/Layout/InlineNode.h +++ b/Libraries/LibWeb/Layout/InlineNode.h @@ -34,7 +34,6 @@ class InlineNode : public NodeWithStyleAndBoxModelMetrics { public: InlineNode(DOM::Document&, DOM::Element&, NonnullRefPtr); virtual ~InlineNode() override; - virtual const char* class_name() const override { return "InlineNode"; } virtual void paint_fragment(PaintContext&, const LineBoxFragment&, PaintPhase) const override; diff --git a/Libraries/LibWeb/Layout/ListItemBox.h b/Libraries/LibWeb/Layout/ListItemBox.h index 28857f30ea..adf5e63b0f 100644 --- a/Libraries/LibWeb/Layout/ListItemBox.h +++ b/Libraries/LibWeb/Layout/ListItemBox.h @@ -41,7 +41,6 @@ public: void layout_marker(); private: - virtual const char* class_name() const override { return "ListItemBox"; } virtual bool is_list_item() const override { return true; } RefPtr m_marker; diff --git a/Libraries/LibWeb/Layout/ListItemMarkerBox.h b/Libraries/LibWeb/Layout/ListItemMarkerBox.h index e32528c99c..e570fd21df 100644 --- a/Libraries/LibWeb/Layout/ListItemMarkerBox.h +++ b/Libraries/LibWeb/Layout/ListItemMarkerBox.h @@ -36,9 +36,6 @@ public: virtual ~ListItemMarkerBox() override; virtual void paint(PaintContext&, PaintPhase) override; - -private: - virtual const char* class_name() const override { return "ListItemMarkerBox"; } }; } diff --git a/Libraries/LibWeb/Layout/Node.cpp b/Libraries/LibWeb/Layout/Node.cpp index cb3f3e4831..4ff5247836 100644 --- a/Libraries/LibWeb/Layout/Node.cpp +++ b/Libraries/LibWeb/Layout/Node.cpp @@ -35,6 +35,7 @@ #include #include #include +#include namespace Web::Layout { @@ -296,4 +297,9 @@ bool Node::is_root_element() const return is(*dom_node()); } +const char* Node::class_name() const +{ + return typeid(*this).name(); +} + } diff --git a/Libraries/LibWeb/Layout/Node.h b/Libraries/LibWeb/Layout/Node.h index bc41aa37c9..21798c80c4 100644 --- a/Libraries/LibWeb/Layout/Node.h +++ b/Libraries/LibWeb/Layout/Node.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2020, Andreas Kling + * Copyright (c) 2018-2021, Andreas Kling * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -93,7 +93,7 @@ public: bool is_root_element() const; - virtual const char* class_name() const = 0; + const char* class_name() const; virtual bool is_initial_containing_block() const { return false; } virtual bool is_text() const { return false; } virtual bool is_block() const { return false; } diff --git a/Libraries/LibWeb/Layout/ReplacedBox.h b/Libraries/LibWeb/Layout/ReplacedBox.h index cf166485a9..e7f1ece198 100644 --- a/Libraries/LibWeb/Layout/ReplacedBox.h +++ b/Libraries/LibWeb/Layout/ReplacedBox.h @@ -65,8 +65,6 @@ protected: virtual void split_into_lines(InlineFormattingContext&, LayoutMode) override; private: - virtual const char* class_name() const override { return "ReplacedBox"; } - bool m_has_intrinsic_width { false }; bool m_has_intrinsic_height { false }; bool m_has_intrinsic_ratio { false }; diff --git a/Libraries/LibWeb/Layout/SVGBox.h b/Libraries/LibWeb/Layout/SVGBox.h index cd289bb199..dce2ee6f64 100644 --- a/Libraries/LibWeb/Layout/SVGBox.h +++ b/Libraries/LibWeb/Layout/SVGBox.h @@ -39,9 +39,6 @@ public: virtual void before_children_paint(PaintContext& context, PaintPhase phase) override; virtual void after_children_paint(PaintContext& context, PaintPhase phase) override; - -private: - virtual const char* class_name() const override { return "SVGBox"; } }; } diff --git a/Libraries/LibWeb/Layout/SVGGraphicsBox.h b/Libraries/LibWeb/Layout/SVGGraphicsBox.h index 686ea7adc0..10dbadef07 100644 --- a/Libraries/LibWeb/Layout/SVGGraphicsBox.h +++ b/Libraries/LibWeb/Layout/SVGGraphicsBox.h @@ -38,9 +38,6 @@ public: virtual ~SVGGraphicsBox() override = default; virtual void before_children_paint(PaintContext& context, PaintPhase phase) override; - -private: - virtual const char* class_name() const override { return "SVGGraphicsBox"; } }; } diff --git a/Libraries/LibWeb/Layout/SVGPathBox.h b/Libraries/LibWeb/Layout/SVGPathBox.h index 0cc0717e1d..cbfe94b4ec 100644 --- a/Libraries/LibWeb/Layout/SVGPathBox.h +++ b/Libraries/LibWeb/Layout/SVGPathBox.h @@ -39,9 +39,6 @@ public: virtual void prepare_for_replaced_layout() override; virtual void paint(PaintContext& context, PaintPhase phase) override; - -private: - virtual const char* class_name() const override { return "SVGPathBox"; } }; } diff --git a/Libraries/LibWeb/Layout/SVGSVGBox.h b/Libraries/LibWeb/Layout/SVGSVGBox.h index 70b2efd4ab..a95bf11f69 100644 --- a/Libraries/LibWeb/Layout/SVGSVGBox.h +++ b/Libraries/LibWeb/Layout/SVGSVGBox.h @@ -44,9 +44,6 @@ public: virtual void after_children_paint(PaintContext& context, PaintPhase phase) override; virtual bool can_have_children() const override { return true; } - -private: - const char* class_name() const override { return "SVGSVGBox"; } }; } diff --git a/Libraries/LibWeb/Layout/TableBox.h b/Libraries/LibWeb/Layout/TableBox.h index 75241b4f39..93bdb18a60 100644 --- a/Libraries/LibWeb/Layout/TableBox.h +++ b/Libraries/LibWeb/Layout/TableBox.h @@ -37,7 +37,6 @@ public: private: virtual bool is_table() const override { return true; } - virtual const char* class_name() const override { return "TableBox"; } }; } diff --git a/Libraries/LibWeb/Layout/TableCellBox.h b/Libraries/LibWeb/Layout/TableCellBox.h index fa008eff37..ce5d72a2d0 100644 --- a/Libraries/LibWeb/Layout/TableCellBox.h +++ b/Libraries/LibWeb/Layout/TableCellBox.h @@ -42,7 +42,6 @@ public: private: virtual bool is_table_cell() const override { return true; } - virtual const char* class_name() const override { return "TableCellBox"; } virtual float width_of_logical_containing_block() const override; }; diff --git a/Libraries/LibWeb/Layout/TableRowBox.h b/Libraries/LibWeb/Layout/TableRowBox.h index 4d48b6c17f..154947701d 100644 --- a/Libraries/LibWeb/Layout/TableRowBox.h +++ b/Libraries/LibWeb/Layout/TableRowBox.h @@ -37,7 +37,6 @@ public: private: virtual bool is_table_row() const override { return true; } - virtual const char* class_name() const override { return "TableRowBox"; } }; } diff --git a/Libraries/LibWeb/Layout/TableRowGroupBox.h b/Libraries/LibWeb/Layout/TableRowGroupBox.h index 1187badbf4..f1781466b8 100644 --- a/Libraries/LibWeb/Layout/TableRowGroupBox.h +++ b/Libraries/LibWeb/Layout/TableRowGroupBox.h @@ -39,7 +39,6 @@ public: private: virtual bool is_table_row_group() const override { return true; } - virtual const char* class_name() const override { return "TableRowGroupBox"; } }; } diff --git a/Libraries/LibWeb/Layout/TextNode.h b/Libraries/LibWeb/Layout/TextNode.h index dcc1b984bc..5e0ac342ba 100644 --- a/Libraries/LibWeb/Layout/TextNode.h +++ b/Libraries/LibWeb/Layout/TextNode.h @@ -43,7 +43,6 @@ public: const String& text_for_style(const CSS::StyleProperties&) const; const String& text_for_rendering() const { return m_text_for_rendering; } - virtual const char* class_name() const override { return "TextNode"; } virtual bool is_text() const final { return true; } virtual void paint_fragment(PaintContext&, const LineBoxFragment&, PaintPhase) const override; diff --git a/Libraries/LibWeb/Layout/WidgetBox.h b/Libraries/LibWeb/Layout/WidgetBox.h index 70db566e39..24778e0f01 100644 --- a/Libraries/LibWeb/Layout/WidgetBox.h +++ b/Libraries/LibWeb/Layout/WidgetBox.h @@ -43,8 +43,6 @@ public: void update_widget(); private: - virtual const char* class_name() const override { return "WidgetBox"; } - virtual void did_set_rect() override; NonnullRefPtr m_widget;