Coverage Report

Created: 2026-02-16 07:47

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/serenity/Userland/Libraries/LibWeb/TreeNode.h
Line
Count
Source
1
/*
2
 * Copyright (c) 2018-2022, Andreas Kling <kling@serenityos.org>
3
 *
4
 * SPDX-License-Identifier: BSD-2-Clause
5
 */
6
7
#pragma once
8
9
#include <AK/Assertions.h>
10
#include <AK/TypeCasts.h>
11
#include <LibJS/Heap/Cell.h>
12
#include <LibJS/Heap/GCPtr.h>
13
#include <LibWeb/Forward.h>
14
#include <LibWeb/TraversalDecision.h>
15
16
namespace Web {
17
18
template<typename T>
19
class TreeNode {
20
public:
21
0
    T* parent() { return m_parent; }
Unexecuted instantiation: Web::TreeNode<Web::Layout::Node>::parent()
Unexecuted instantiation: Web::TreeNode<Web::Painting::Paintable>::parent()
22
0
    T const* parent() const { return m_parent; }
Unexecuted instantiation: Web::TreeNode<Web::Layout::Node>::parent() const
Unexecuted instantiation: Web::TreeNode<Web::Painting::Paintable>::parent() const
23
24
0
    bool has_children() const { return m_first_child; }
25
0
    T* next_sibling() { return m_next_sibling; }
Unexecuted instantiation: Web::TreeNode<Web::Layout::Node>::next_sibling()
Unexecuted instantiation: Web::TreeNode<Web::Painting::Paintable>::next_sibling()
26
0
    T* previous_sibling() { return m_previous_sibling; }
27
0
    T* first_child() { return m_first_child; }
Unexecuted instantiation: Web::TreeNode<Web::Layout::Node>::first_child()
Unexecuted instantiation: Web::TreeNode<Web::Painting::Paintable>::first_child()
28
0
    T* last_child() { return m_last_child; }
29
0
    T const* next_sibling() const { return m_next_sibling; }
Unexecuted instantiation: Web::TreeNode<Web::Layout::Node>::next_sibling() const
Unexecuted instantiation: Web::TreeNode<Web::Painting::Paintable>::next_sibling() const
30
0
    T const* previous_sibling() const { return m_previous_sibling; }
Unexecuted instantiation: Web::TreeNode<Web::Layout::Node>::previous_sibling() const
Unexecuted instantiation: Web::TreeNode<Web::Painting::Paintable>::previous_sibling() const
31
0
    T const* first_child() const { return m_first_child; }
Unexecuted instantiation: Web::TreeNode<Web::Layout::Node>::first_child() const
Unexecuted instantiation: Web::TreeNode<Web::Painting::Paintable>::first_child() const
32
0
    T const* last_child() const { return m_last_child; }
33
34
    // https://dom.spec.whatwg.org/#concept-tree-index
35
    size_t index() const
36
    {
37
        // The index of an object is its number of preceding siblings, or 0 if it has none.
38
        size_t index = 0;
39
        for (auto* node = previous_sibling(); node; node = node->previous_sibling())
40
            ++index;
41
        return index;
42
    }
43
44
    bool is_ancestor_of(TreeNode const&) const;
45
    bool is_inclusive_ancestor_of(TreeNode const&) const;
46
47
    void append_child(JS::NonnullGCPtr<T> node);
48
    void prepend_child(JS::NonnullGCPtr<T> node);
49
    void insert_before(JS::NonnullGCPtr<T> node, JS::GCPtr<T> child);
50
    void remove_child(JS::NonnullGCPtr<T> node);
51
52
    T* next_in_pre_order()
53
    {
54
        if (first_child())
55
            return first_child();
56
        T* node;
57
        if (!(node = next_sibling())) {
58
            node = parent();
59
            while (node && !node->next_sibling())
60
                node = node->parent();
61
            if (node)
62
                node = node->next_sibling();
63
        }
64
        return node;
65
    }
66
67
    T* next_in_pre_order(T const* stay_within)
68
    {
69
        if (first_child())
70
            return first_child();
71
72
        T* node = static_cast<T*>(this);
73
        T* next = nullptr;
74
        while (!(next = node->next_sibling())) {
75
            node = node->parent();
76
            if (!node || node == stay_within)
77
                return nullptr;
78
        }
79
        return next;
80
    }
81
82
    T const* next_in_pre_order() const
83
    {
84
        return const_cast<TreeNode*>(this)->next_in_pre_order();
85
    }
86
87
    T const* next_in_pre_order(T const* stay_within) const
88
    {
89
        return const_cast<TreeNode*>(this)->next_in_pre_order(stay_within);
90
    }
91
92
    T* previous_in_pre_order()
93
    {
94
        if (auto* node = previous_sibling()) {
95
            while (node->last_child())
96
                node = node->last_child();
97
98
            return node;
99
        }
100
101
        return parent();
102
    }
103
104
    T const* previous_in_pre_order() const
105
    {
106
        return const_cast<TreeNode*>(this)->previous_in_pre_order();
107
    }
108
109
    template<typename Callback>
110
    TraversalDecision for_each_in_inclusive_subtree(Callback callback) const
111
    {
112
        if (auto decision = callback(static_cast<T const&>(*this)); decision != TraversalDecision::Continue)
113
            return decision;
114
        for (auto* child = first_child(); child; child = child->next_sibling()) {
115
            if (child->for_each_in_inclusive_subtree(callback) == IterationDecision::Break)
116
                return TraversalDecision::Break;
117
        }
118
        return TraversalDecision::Continue;
119
    }
120
121
    template<typename Callback>
122
    TraversalDecision for_each_in_inclusive_subtree(Callback callback)
123
0
    {
124
0
        if (auto decision = callback(static_cast<T&>(*this)); decision != TraversalDecision::Continue)
125
0
            return decision;
126
0
        for (auto* child = first_child(); child; child = child->next_sibling()) {
127
0
            if (child->for_each_in_inclusive_subtree(callback) == TraversalDecision::Break)
128
0
                return TraversalDecision::Break;
129
0
        }
130
0
        return TraversalDecision::Continue;
131
0
    }
Unexecuted instantiation: FormattingContext.cpp:Web::TraversalDecision Web::TreeNode<Web::Layout::Node>::for_each_in_inclusive_subtree<Web::Layout::FormattingContext::can_skip_is_anonymous_text_run(Web::Layout::Box&)::$_0>(Web::Layout::FormattingContext::can_skip_is_anonymous_text_run(Web::Layout::Box&)::$_0)
Unexecuted instantiation: Viewport.cpp:Web::TraversalDecision Web::TreeNode<Web::Layout::Node>::for_each_in_inclusive_subtree<Web::Layout::Viewport::update_text_blocks()::$_0>(Web::Layout::Viewport::update_text_blocks()::$_0)
Unexecuted instantiation: LayoutState.cpp:Web::TraversalDecision Web::TreeNode<Web::Layout::Node>::for_each_in_inclusive_subtree<Web::Layout::LayoutState::commit(Web::Layout::Box&)::$_1>(Web::Layout::LayoutState::commit(Web::Layout::Box&)::$_1)
132
133
    template<typename U, typename Callback>
134
    TraversalDecision for_each_in_inclusive_subtree_of_type(Callback callback)
135
0
    {
136
0
        if (is<U>(static_cast<T const&>(*this))) {
137
0
            if (auto decision = callback(static_cast<U&>(*this)); decision != TraversalDecision::Continue)
138
0
                return decision;
139
0
        }
140
0
        for (auto* child = first_child(); child; child = child->next_sibling()) {
141
0
            if (child->template for_each_in_inclusive_subtree_of_type<U>(callback) == TraversalDecision::Break)
142
0
                return TraversalDecision::Break;
143
0
        }
144
0
        return TraversalDecision::Continue;
145
0
    }
Unexecuted instantiation: TreeBuilder.cpp:Web::TraversalDecision Web::TreeNode<Web::Layout::Node>::for_each_in_inclusive_subtree_of_type<Web::Layout::Box, Web::Layout::TreeBuilder::for_each_in_tree_with_internal_display<(Web::CSS::DisplayInternal)6, Web::Layout::TreeBuilder::remove_irrelevant_boxes(Web::Layout::NodeWithStyle&)::$_0>(Web::Layout::NodeWithStyle&, Web::Layout::TreeBuilder::remove_irrelevant_boxes(Web::Layout::NodeWithStyle&)::$_0)::{lambda(auto:1&)#1}>(Web::Layout::TreeBuilder::for_each_in_tree_with_internal_display<(Web::CSS::DisplayInternal)6, Web::Layout::TreeBuilder::remove_irrelevant_boxes(Web::Layout::NodeWithStyle&)::$_0>(Web::Layout::NodeWithStyle&, Web::Layout::TreeBuilder::remove_irrelevant_boxes(Web::Layout::NodeWithStyle&)::$_0)::{lambda(auto:1&)#1})
Unexecuted instantiation: TreeBuilder.cpp:Web::TraversalDecision Web::TreeNode<Web::Layout::Node>::for_each_in_inclusive_subtree_of_type<Web::Layout::Box, Web::Layout::TreeBuilder::for_each_in_tree_with_internal_display<(Web::CSS::DisplayInternal)5, Web::Layout::TreeBuilder::remove_irrelevant_boxes(Web::Layout::NodeWithStyle&)::$_1>(Web::Layout::NodeWithStyle&, Web::Layout::TreeBuilder::remove_irrelevant_boxes(Web::Layout::NodeWithStyle&)::$_1)::{lambda(auto:1&)#1}>(Web::Layout::TreeBuilder::for_each_in_tree_with_internal_display<(Web::CSS::DisplayInternal)5, Web::Layout::TreeBuilder::remove_irrelevant_boxes(Web::Layout::NodeWithStyle&)::$_1>(Web::Layout::NodeWithStyle&, Web::Layout::TreeBuilder::remove_irrelevant_boxes(Web::Layout::NodeWithStyle&)::$_1)::{lambda(auto:1&)#1})
Unexecuted instantiation: TreeBuilder.cpp:Web::TraversalDecision Web::TreeNode<Web::Layout::Node>::for_each_in_inclusive_subtree_of_type<Web::Layout::Box, Web::Layout::TreeBuilder::for_each_in_tree_with_inside_display<(Web::CSS::DisplayInside)2, Web::Layout::TreeBuilder::generate_missing_child_wrappers(Web::Layout::NodeWithStyle&)::$_0>(Web::Layout::NodeWithStyle&, Web::Layout::TreeBuilder::generate_missing_child_wrappers(Web::Layout::NodeWithStyle&)::$_0)::{lambda(auto:1&)#1}>(Web::Layout::TreeBuilder::for_each_in_tree_with_inside_display<(Web::CSS::DisplayInside)2, Web::Layout::TreeBuilder::generate_missing_child_wrappers(Web::Layout::NodeWithStyle&)::$_0>(Web::Layout::NodeWithStyle&, Web::Layout::TreeBuilder::generate_missing_child_wrappers(Web::Layout::NodeWithStyle&)::$_0)::{lambda(auto:1&)#1})
Unexecuted instantiation: TreeBuilder.cpp:Web::TraversalDecision Web::TreeNode<Web::Layout::Node>::for_each_in_inclusive_subtree_of_type<Web::Layout::Box, Web::Layout::TreeBuilder::for_each_in_tree_with_internal_display<(Web::CSS::DisplayInternal)0, Web::Layout::TreeBuilder::generate_missing_child_wrappers(Web::Layout::NodeWithStyle&)::$_1>(Web::Layout::NodeWithStyle&, Web::Layout::TreeBuilder::generate_missing_child_wrappers(Web::Layout::NodeWithStyle&)::$_1)::{lambda(auto:1&)#1}>(Web::Layout::TreeBuilder::for_each_in_tree_with_internal_display<(Web::CSS::DisplayInternal)0, Web::Layout::TreeBuilder::generate_missing_child_wrappers(Web::Layout::NodeWithStyle&)::$_1>(Web::Layout::NodeWithStyle&, Web::Layout::TreeBuilder::generate_missing_child_wrappers(Web::Layout::NodeWithStyle&)::$_1)::{lambda(auto:1&)#1})
Unexecuted instantiation: TreeBuilder.cpp:Web::TraversalDecision Web::TreeNode<Web::Layout::Node>::for_each_in_inclusive_subtree_of_type<Web::Layout::Box, Web::Layout::TreeBuilder::for_each_in_tree_with_internal_display<(Web::CSS::DisplayInternal)1, Web::Layout::TreeBuilder::generate_missing_child_wrappers(Web::Layout::NodeWithStyle&)::$_2>(Web::Layout::NodeWithStyle&, Web::Layout::TreeBuilder::generate_missing_child_wrappers(Web::Layout::NodeWithStyle&)::$_2)::{lambda(auto:1&)#1}>(Web::Layout::TreeBuilder::for_each_in_tree_with_internal_display<(Web::CSS::DisplayInternal)1, Web::Layout::TreeBuilder::generate_missing_child_wrappers(Web::Layout::NodeWithStyle&)::$_2>(Web::Layout::NodeWithStyle&, Web::Layout::TreeBuilder::generate_missing_child_wrappers(Web::Layout::NodeWithStyle&)::$_2)::{lambda(auto:1&)#1})
Unexecuted instantiation: TreeBuilder.cpp:Web::TraversalDecision Web::TreeNode<Web::Layout::Node>::for_each_in_inclusive_subtree_of_type<Web::Layout::Box, Web::Layout::TreeBuilder::for_each_in_tree_with_internal_display<(Web::CSS::DisplayInternal)2, Web::Layout::TreeBuilder::generate_missing_child_wrappers(Web::Layout::NodeWithStyle&)::$_3>(Web::Layout::NodeWithStyle&, Web::Layout::TreeBuilder::generate_missing_child_wrappers(Web::Layout::NodeWithStyle&)::$_3)::{lambda(auto:1&)#1}>(Web::Layout::TreeBuilder::for_each_in_tree_with_internal_display<(Web::CSS::DisplayInternal)2, Web::Layout::TreeBuilder::generate_missing_child_wrappers(Web::Layout::NodeWithStyle&)::$_3>(Web::Layout::NodeWithStyle&, Web::Layout::TreeBuilder::generate_missing_child_wrappers(Web::Layout::NodeWithStyle&)::$_3)::{lambda(auto:1&)#1})
Unexecuted instantiation: TreeBuilder.cpp:Web::TraversalDecision Web::TreeNode<Web::Layout::Node>::for_each_in_inclusive_subtree_of_type<Web::Layout::Box, Web::Layout::TreeBuilder::for_each_in_tree_with_internal_display<(Web::CSS::DisplayInternal)3, Web::Layout::TreeBuilder::generate_missing_child_wrappers(Web::Layout::NodeWithStyle&)::$_4>(Web::Layout::NodeWithStyle&, Web::Layout::TreeBuilder::generate_missing_child_wrappers(Web::Layout::NodeWithStyle&)::$_4)::{lambda(auto:1&)#1}>(Web::Layout::TreeBuilder::for_each_in_tree_with_internal_display<(Web::CSS::DisplayInternal)3, Web::Layout::TreeBuilder::generate_missing_child_wrappers(Web::Layout::NodeWithStyle&)::$_4>(Web::Layout::NodeWithStyle&, Web::Layout::TreeBuilder::generate_missing_child_wrappers(Web::Layout::NodeWithStyle&)::$_4)::{lambda(auto:1&)#1})
Unexecuted instantiation: TreeBuilder.cpp:Web::TraversalDecision Web::TreeNode<Web::Layout::Node>::for_each_in_inclusive_subtree_of_type<Web::Layout::Box, Web::Layout::TreeBuilder::generate_missing_parents(Web::Layout::NodeWithStyle&)::$_0>(Web::Layout::TreeBuilder::generate_missing_parents(Web::Layout::NodeWithStyle&)::$_0)
146
147
    template<typename U, typename Callback>
148
    TraversalDecision for_each_in_inclusive_subtree_of_type(Callback callback) const
149
0
    {
150
0
        if (is<U>(static_cast<T const&>(*this))) {
151
0
            if (auto decision = callback(static_cast<U const&>(*this)); decision != TraversalDecision::Continue)
152
0
                return decision;
153
0
        }
154
0
        for (auto* child = first_child(); child; child = child->next_sibling()) {
155
0
            if (child->template for_each_in_inclusive_subtree_of_type<U>(callback) == TraversalDecision::Break)
156
0
                return TraversalDecision::Break;
157
0
        }
158
0
        return TraversalDecision::Continue;
159
0
    }
Unexecuted instantiation: FormattingContext.cpp:Web::TraversalDecision Web::TreeNode<Web::Layout::Node>::for_each_in_inclusive_subtree_of_type<Web::Layout::Box, Web::Layout::FormattingContext::compute_table_box_width_inside_table_wrapper(Web::Layout::Box const&, Web::Layout::AvailableSpace const&)::$_0>(Web::Layout::FormattingContext::compute_table_box_width_inside_table_wrapper(Web::Layout::Box const&, Web::Layout::AvailableSpace const&)::$_0) const
Unexecuted instantiation: FormattingContext.cpp:Web::TraversalDecision Web::TreeNode<Web::Layout::Node>::for_each_in_inclusive_subtree_of_type<Web::Layout::Box, Web::Layout::FormattingContext::compute_table_box_height_inside_table_wrapper(Web::Layout::Box const&, Web::Layout::AvailableSpace const&)::$_0>(Web::Layout::FormattingContext::compute_table_box_height_inside_table_wrapper(Web::Layout::Box const&, Web::Layout::AvailableSpace const&)::$_0) const
Unexecuted instantiation: Label.cpp:Web::TraversalDecision Web::TreeNode<Web::Layout::Node>::for_each_in_inclusive_subtree_of_type<Web::Layout::Label, Web::Layout::Label::label_for_control_node(Web::Layout::LabelableNode const&)::$_0>(Web::Layout::Label::label_for_control_node(Web::Layout::LabelableNode const&)::$_0) const
Unexecuted instantiation: TreeBuilder.cpp:Web::TraversalDecision Web::TreeNode<Web::Layout::Node>::for_each_in_inclusive_subtree_of_type<Web::Layout::TextNode, Web::Layout::is_ignorable_whitespace(Web::Layout::Node const&)::$_0>(Web::Layout::is_ignorable_whitespace(Web::Layout::Node const&)::$_0) const
160
161
    template<typename Callback>
162
    TraversalDecision for_each_in_subtree(Callback callback) const
163
    {
164
        for (auto* child = first_child(); child; child = child->next_sibling()) {
165
            if (child->for_each_in_inclusive_subtree(callback) == TraversalDecision::Break)
166
                return TraversalDecision::Break;
167
        }
168
        return TraversalDecision::Continue;
169
    }
170
171
    template<typename Callback>
172
    TraversalDecision for_each_in_subtree(Callback callback)
173
0
    {
174
0
        for (auto* child = first_child(); child; child = child->next_sibling()) {
175
0
            if (child->for_each_in_inclusive_subtree(callback) == TraversalDecision::Break)
176
0
                return TraversalDecision::Break;
177
0
        }
178
0
        return TraversalDecision::Continue;
179
0
    }
180
181
    template<typename U, typename Callback>
182
    TraversalDecision for_each_in_subtree_of_type(Callback callback)
183
    {
184
        for (auto* child = first_child(); child; child = child->next_sibling()) {
185
            if (child->template for_each_in_inclusive_subtree_of_type<U>(callback) == TraversalDecision::Break)
186
                return TraversalDecision::Break;
187
        }
188
        return TraversalDecision::Continue;
189
    }
190
191
    template<typename U, typename Callback>
192
    TraversalDecision for_each_in_subtree_of_type(Callback callback) const
193
0
    {
194
0
        for (auto* child = first_child(); child; child = child->next_sibling()) {
195
0
            if (child->template for_each_in_inclusive_subtree_of_type<U>(callback) == TraversalDecision::Break)
196
0
                return TraversalDecision::Break;
197
0
        }
198
0
        return TraversalDecision::Continue;
199
0
    }
Unexecuted instantiation: FormattingContext.cpp:Web::TraversalDecision Web::TreeNode<Web::Layout::Node>::for_each_in_subtree_of_type<Web::Layout::Box, Web::Layout::FormattingContext::compute_table_box_width_inside_table_wrapper(Web::Layout::Box const&, Web::Layout::AvailableSpace const&)::$_0>(Web::Layout::FormattingContext::compute_table_box_width_inside_table_wrapper(Web::Layout::Box const&, Web::Layout::AvailableSpace const&)::$_0) const
Unexecuted instantiation: FormattingContext.cpp:Web::TraversalDecision Web::TreeNode<Web::Layout::Node>::for_each_in_subtree_of_type<Web::Layout::Box, Web::Layout::FormattingContext::compute_table_box_height_inside_table_wrapper(Web::Layout::Box const&, Web::Layout::AvailableSpace const&)::$_0>(Web::Layout::FormattingContext::compute_table_box_height_inside_table_wrapper(Web::Layout::Box const&, Web::Layout::AvailableSpace const&)::$_0) const
200
201
    template<typename Callback>
202
    void for_each_child(Callback callback) const
203
0
    {
204
0
        return const_cast<TreeNode*>(this)->for_each_child(move(callback));
205
0
    }
Unexecuted instantiation: Dump.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child<Web::dump_tree(AK::StringBuilder&, Web::Layout::Node const&, bool, bool, bool)::$_3>(Web::dump_tree(AK::StringBuilder&, Web::Layout::Node const&, bool, bool, bool)::$_3) const
Unexecuted instantiation: LayoutState.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child<Web::Layout::measure_scrollable_overflow(Web::Layout::Box const&)::$_1>(Web::Layout::measure_scrollable_overflow(Web::Layout::Box const&)::$_1) const
Unexecuted instantiation: InlinePaintable.cpp:void Web::TreeNode<Web::Painting::Paintable>::for_each_child<Web::Painting::InlinePaintable::hit_test(Gfx::Point<Web::CSSPixels>, Web::Painting::HitTestType, AK::Function<Web::TraversalDecision (Web::Painting::HitTestResult)> const&) const::$_1>(Web::Painting::InlinePaintable::hit_test(Gfx::Point<Web::CSSPixels>, Web::Painting::HitTestType, AK::Function<Web::TraversalDecision (Web::Painting::HitTestResult)> const&) const::$_1) const
Unexecuted instantiation: StackingContext.cpp:void Web::TreeNode<Web::Painting::Paintable>::for_each_child<Web::Painting::StackingContext::paint_descendants(Web::PaintContext&, Web::Painting::Paintable const&, Web::Painting::StackingContext::StackingContextPaintPhase)::$_0>(Web::Painting::StackingContext::paint_descendants(Web::PaintContext&, Web::Painting::Paintable const&, Web::Painting::StackingContext::StackingContextPaintPhase)::$_0) const
206
207
    template<typename Callback>
208
    void for_each_child(Callback callback)
209
0
    {
210
0
        for (auto* node = first_child(); node; node = node->next_sibling()) {
211
0
            if (callback(*node) == IterationDecision::Break)
212
0
                return;
213
0
        }
214
0
    }
Unexecuted instantiation: Dump.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child<Web::dump_tree(AK::StringBuilder&, Web::Layout::Node const&, bool, bool, bool)::$_3>(Web::dump_tree(AK::StringBuilder&, Web::Layout::Node const&, bool, bool, bool)::$_3)
Unexecuted instantiation: LayoutState.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child<Web::Layout::measure_scrollable_overflow(Web::Layout::Box const&)::$_1>(Web::Layout::measure_scrollable_overflow(Web::Layout::Box const&)::$_1)
Unexecuted instantiation: TreeBuilder.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child<Web::Layout::TreeBuilder::remove_irrelevant_boxes(Web::Layout::NodeWithStyle&)::$_0::operator()(Web::Layout::Box&) const::{lambda(auto:1&)#1}>(Web::Layout::TreeBuilder::remove_irrelevant_boxes(Web::Layout::NodeWithStyle&)::$_0::operator()(Web::Layout::Box&) const::{lambda(auto:1&)#1})
Unexecuted instantiation: TreeBuilder.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child<Web::Layout::TreeBuilder::remove_irrelevant_boxes(Web::Layout::NodeWithStyle&)::$_1::operator()(Web::Layout::Box&) const::{lambda(auto:1&)#1}>(Web::Layout::TreeBuilder::remove_irrelevant_boxes(Web::Layout::NodeWithStyle&)::$_1::operator()(Web::Layout::Box&) const::{lambda(auto:1&)#1})
Unexecuted instantiation: InlinePaintable.cpp:void Web::TreeNode<Web::Painting::Paintable>::for_each_child<Web::Painting::InlinePaintable::hit_test(Gfx::Point<Web::CSSPixels>, Web::Painting::HitTestType, AK::Function<Web::TraversalDecision (Web::Painting::HitTestResult)> const&) const::$_1>(Web::Painting::InlinePaintable::hit_test(Gfx::Point<Web::CSSPixels>, Web::Painting::HitTestType, AK::Function<Web::TraversalDecision (Web::Painting::HitTestResult)> const&) const::$_1)
Unexecuted instantiation: StackingContext.cpp:void Web::TreeNode<Web::Painting::Paintable>::for_each_child<Web::Painting::StackingContext::paint_descendants(Web::PaintContext&, Web::Painting::Paintable const&, Web::Painting::StackingContext::StackingContextPaintPhase)::$_0>(Web::Painting::StackingContext::paint_descendants(Web::PaintContext&, Web::Painting::Paintable const&, Web::Painting::StackingContext::StackingContextPaintPhase)::$_0)
215
216
    template<typename U, typename Callback>
217
    void for_each_child_of_type(Callback callback)
218
0
    {
219
0
        for (auto* node = first_child(); node; node = node->next_sibling()) {
220
0
            if (is<U>(node)) {
221
0
                if (callback(verify_cast<U>(*node)) == IterationDecision::Break)
222
0
                    return;
223
0
            }
224
0
        }
225
0
    }
Unexecuted instantiation: BlockFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::BlockFormattingContext::layout_block_level_children(Web::Layout::BlockContainer const&, Web::Layout::AvailableSpace const&)::$_0>(Web::Layout::BlockFormattingContext::layout_block_level_children(Web::Layout::BlockContainer const&, Web::Layout::AvailableSpace const&)::$_0)
Unexecuted instantiation: BlockFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::BlockFormattingContext::greatest_child_width(Web::Layout::Box const&) const::$_0>(Web::Layout::BlockFormattingContext::greatest_child_width(Web::Layout::Box const&) const::$_0)
Unexecuted instantiation: FormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::FormattingContext::greatest_child_width(Web::Layout::Box const&) const::$_0>(Web::Layout::FormattingContext::greatest_child_width(Web::Layout::Box const&) const::$_0)
Unexecuted instantiation: FormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::FormattingContext::compute_auto_height_for_block_formatting_context_root(Web::Layout::Box const&) const::$_0>(Web::Layout::FormattingContext::compute_auto_height_for_block_formatting_context_root(Web::Layout::Box const&) const::$_0)
Unexecuted instantiation: FlexFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::FlexFormattingContext::parent_context_did_dimension_child_root_box()::$_0>(Web::Layout::FlexFormattingContext::parent_context_did_dimension_child_root_box()::$_0)
Unexecuted instantiation: FlexFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::FlexFormattingContext::generate_anonymous_flex_items()::$_0>(Web::Layout::FlexFormattingContext::generate_anonymous_flex_items()::$_0)
Unexecuted instantiation: GridFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::GridFormattingContext::place_grid_items()::$_0>(Web::Layout::GridFormattingContext::place_grid_items()::$_0)
Unexecuted instantiation: GridFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::GridFormattingContext::parent_context_did_dimension_child_root_box()::$_0>(Web::Layout::GridFormattingContext::parent_context_did_dimension_child_root_box()::$_0)
Unexecuted instantiation: LayoutState.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::measure_scrollable_overflow(Web::Layout::Box const&)::$_0>(Web::Layout::measure_scrollable_overflow(Web::Layout::Box const&)::$_0)
Unexecuted instantiation: Node.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::NodeWithStyle, Web::Layout::NodeWithStyle::propagate_style_to_anonymous_wrappers()::$_0>(Web::Layout::NodeWithStyle::propagate_style_to_anonymous_wrappers()::$_0)
Unexecuted instantiation: SVGFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::SVGFormattingContext::run(Web::Layout::AvailableSpace const&)::$_2>(Web::Layout::SVGFormattingContext::run(Web::Layout::AvailableSpace const&)::$_2)
Unexecuted instantiation: SVGFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::SVGMaskBox, Web::Layout::SVGFormattingContext::layout_svg_element(Web::Layout::Box const&)::$_0>(Web::Layout::SVGFormattingContext::layout_svg_element(Web::Layout::Box const&)::$_0)
Unexecuted instantiation: SVGFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::SVGGraphicsBox, Web::Layout::SVGFormattingContext::layout_path_like_element(Web::Layout::SVGGraphicsBox const&)::$_0>(Web::Layout::SVGFormattingContext::layout_path_like_element(Web::Layout::SVGGraphicsBox const&)::$_0)
Unexecuted instantiation: SVGFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::SVGFormattingContext::layout_container_element(Web::Layout::SVGBox const&)::$_0>(Web::Layout::SVGFormattingContext::layout_container_element(Web::Layout::SVGBox const&)::$_0)
Unexecuted instantiation: TableFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_constrainedness()::$_0>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_constrainedness()::$_0)::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_constrainedness()::$_0>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_constrainedness()::$_0)::{lambda(Web::Layout::Box const&)#1})
Unexecuted instantiation: TableFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_constrainedness()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_constrainedness()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_constrainedness()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_constrainedness()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1})
Unexecuted instantiation: TableFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_outer_content_sizes()::$_0>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_outer_content_sizes()::$_0)::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_outer_content_sizes()::$_0>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_outer_content_sizes()::$_0)::{lambda(Web::Layout::Box const&)#1})
Unexecuted instantiation: TableFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_outer_content_sizes()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_outer_content_sizes()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_outer_content_sizes()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_outer_content_sizes()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1})
Unexecuted instantiation: TableFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::position_row_boxes()::$_0>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::position_row_boxes()::$_0)::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::position_row_boxes()::$_0>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::position_row_boxes()::$_0)::{lambda(Web::Layout::Box const&)#1})
Unexecuted instantiation: TableFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::position_row_boxes()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::position_row_boxes()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::position_row_boxes()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::position_row_boxes()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1})
Unexecuted instantiation: TableFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0)::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0)::{lambda(Web::Layout::Box const&)#1})
Unexecuted instantiation: TableFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1})
Unexecuted instantiation: TableFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#2}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#2})::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#2}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#2})::{lambda(Web::Layout::Box const&)#1})
Unexecuted instantiation: TableFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::initialize_intrinsic_percentages_from_rows_or_columns<Web::Layout::TableFormattingContext::Column>()::$_0>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::initialize_intrinsic_percentages_from_rows_or_columns<Web::Layout::TableFormattingContext::Column>()::$_0)::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::initialize_intrinsic_percentages_from_rows_or_columns<Web::Layout::TableFormattingContext::Column>()::$_0>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::initialize_intrinsic_percentages_from_rows_or_columns<Web::Layout::TableFormattingContext::Column>()::$_0)::{lambda(Web::Layout::Box const&)#1})
Unexecuted instantiation: TableFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::initialize_intrinsic_percentages_from_rows_or_columns<Web::Layout::TableFormattingContext::Column>()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::initialize_intrinsic_percentages_from_rows_or_columns<Web::Layout::TableFormattingContext::Column>()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::initialize_intrinsic_percentages_from_rows_or_columns<Web::Layout::TableFormattingContext::Column>()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::initialize_intrinsic_percentages_from_rows_or_columns<Web::Layout::TableFormattingContext::Column>()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1})
Unexecuted instantiation: TableGrid.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_2>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_2)::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_2>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_2)::{lambda(Web::Layout::Box const&)#1})
Unexecuted instantiation: TableGrid.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_3>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_3)::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_3>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_3)::{lambda(Web::Layout::Box const&)#1})
Unexecuted instantiation: TableGrid.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_3::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_3::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_3::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_3::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1})
Unexecuted instantiation: TableGrid.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_4>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_4)::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_4>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_4)::{lambda(Web::Layout::Box const&)#1})
Unexecuted instantiation: TreeBuilder.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TreeBuilder::missing_cells_fixup(AK::Vector<JS::Handle<Web::Layout::Box>, 0ul> const&)::$_0>(Web::Layout::Box&, bool (*)(Web::Layout::Box const&), Web::Layout::TreeBuilder::missing_cells_fixup(AK::Vector<JS::Handle<Web::Layout::Box>, 0ul> const&)::$_0)::{lambda(Web::Layout::Box&)#1}>(Web::Layout::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TreeBuilder::missing_cells_fixup(AK::Vector<JS::Handle<Web::Layout::Box>, 0ul> const&)::$_0>(Web::Layout::Box&, bool (*)(Web::Layout::Box const&), Web::Layout::TreeBuilder::missing_cells_fixup(AK::Vector<JS::Handle<Web::Layout::Box>, 0ul> const&)::$_0)::{lambda(Web::Layout::Box&)#1})
Unexecuted instantiation: TreeBuilder.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::for_each_child_box_matching<bool (*)(Web::Layout::Node const&), Web::Layout::TreeBuilder::missing_cells_fixup(AK::Vector<JS::Handle<Web::Layout::Box>, 0ul> const&)::$_0::operator()<Web::Layout::Box>(Web::Layout::Box&) const::{lambda(auto:1&)#1}>(Web::Layout::Box&, bool (*)(Web::Layout::Node const&), Web::Layout::TreeBuilder::missing_cells_fixup(AK::Vector<JS::Handle<Web::Layout::Box>, 0ul> const&)::$_0::operator()<Web::Layout::Box>(Web::Layout::Box&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box&)#1}>(Web::Layout::for_each_child_box_matching<bool (*)(Web::Layout::Node const&), Web::Layout::TreeBuilder::missing_cells_fixup(AK::Vector<JS::Handle<Web::Layout::Box>, 0ul> const&)::$_0::operator()<Web::Layout::Box>(Web::Layout::Box&) const::{lambda(auto:1&)#1}>(Web::Layout::Box&, bool (*)(Web::Layout::Node const&), Web::Layout::TreeBuilder::missing_cells_fixup(AK::Vector<JS::Handle<Web::Layout::Box>, 0ul> const&)::$_0::operator()<Web::Layout::Box>(Web::Layout::Box&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box&)#1})
Unexecuted instantiation: TreeBuilder.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::for_each_child_box_matching<bool (*)(Web::Layout::Node const&), Web::Layout::TreeBuilder::missing_cells_fixup(AK::Vector<JS::Handle<Web::Layout::Box>, 0ul> const&)::$_1>(Web::Layout::Box&, bool (*)(Web::Layout::Node const&), Web::Layout::TreeBuilder::missing_cells_fixup(AK::Vector<JS::Handle<Web::Layout::Box>, 0ul> const&)::$_1)::{lambda(Web::Layout::Box&)#1}>(Web::Layout::for_each_child_box_matching<bool (*)(Web::Layout::Node const&), Web::Layout::TreeBuilder::missing_cells_fixup(AK::Vector<JS::Handle<Web::Layout::Box>, 0ul> const&)::$_1>(Web::Layout::Box&, bool (*)(Web::Layout::Node const&), Web::Layout::TreeBuilder::missing_cells_fixup(AK::Vector<JS::Handle<Web::Layout::Box>, 0ul> const&)::$_1)::{lambda(Web::Layout::Box&)#1})
Unexecuted instantiation: TableBordersPainting.cpp:void Web::TreeNode<Web::Painting::Paintable>::for_each_child_of_type<Web::Painting::PaintableBox, Web::Painting::collect_cell_boxes(AK::Vector<Web::Painting::PaintableBox const&, 0ul>&, Web::Painting::PaintableBox const&)::$_0>(Web::Painting::collect_cell_boxes(AK::Vector<Web::Painting::PaintableBox const&, 0ul>&, Web::Painting::PaintableBox const&)::$_0)
226
227
    template<typename U, typename Callback>
228
    void for_each_child_of_type(Callback callback) const
229
0
    {
230
0
        return const_cast<TreeNode*>(this)->template for_each_child_of_type<U>(move(callback));
231
0
    }
Unexecuted instantiation: BlockFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::BlockFormattingContext::layout_block_level_children(Web::Layout::BlockContainer const&, Web::Layout::AvailableSpace const&)::$_0>(Web::Layout::BlockFormattingContext::layout_block_level_children(Web::Layout::BlockContainer const&, Web::Layout::AvailableSpace const&)::$_0) const
Unexecuted instantiation: BlockFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::BlockFormattingContext::greatest_child_width(Web::Layout::Box const&) const::$_0>(Web::Layout::BlockFormattingContext::greatest_child_width(Web::Layout::Box const&) const::$_0) const
Unexecuted instantiation: FormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::FormattingContext::greatest_child_width(Web::Layout::Box const&) const::$_0>(Web::Layout::FormattingContext::greatest_child_width(Web::Layout::Box const&) const::$_0) const
Unexecuted instantiation: FormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::FormattingContext::compute_auto_height_for_block_formatting_context_root(Web::Layout::Box const&) const::$_0>(Web::Layout::FormattingContext::compute_auto_height_for_block_formatting_context_root(Web::Layout::Box const&) const::$_0) const
Unexecuted instantiation: FlexFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::FlexFormattingContext::parent_context_did_dimension_child_root_box()::$_0>(Web::Layout::FlexFormattingContext::parent_context_did_dimension_child_root_box()::$_0) const
Unexecuted instantiation: FlexFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::FlexFormattingContext::generate_anonymous_flex_items()::$_0>(Web::Layout::FlexFormattingContext::generate_anonymous_flex_items()::$_0) const
Unexecuted instantiation: GridFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::GridFormattingContext::place_grid_items()::$_0>(Web::Layout::GridFormattingContext::place_grid_items()::$_0) const
Unexecuted instantiation: GridFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::GridFormattingContext::parent_context_did_dimension_child_root_box()::$_0>(Web::Layout::GridFormattingContext::parent_context_did_dimension_child_root_box()::$_0) const
Unexecuted instantiation: LayoutState.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::measure_scrollable_overflow(Web::Layout::Box const&)::$_0>(Web::Layout::measure_scrollable_overflow(Web::Layout::Box const&)::$_0) const
Unexecuted instantiation: SVGFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::SVGFormattingContext::run(Web::Layout::AvailableSpace const&)::$_2>(Web::Layout::SVGFormattingContext::run(Web::Layout::AvailableSpace const&)::$_2) const
Unexecuted instantiation: SVGFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::SVGMaskBox, Web::Layout::SVGFormattingContext::layout_svg_element(Web::Layout::Box const&)::$_0>(Web::Layout::SVGFormattingContext::layout_svg_element(Web::Layout::Box const&)::$_0) const
Unexecuted instantiation: SVGFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::SVGGraphicsBox, Web::Layout::SVGFormattingContext::layout_path_like_element(Web::Layout::SVGGraphicsBox const&)::$_0>(Web::Layout::SVGFormattingContext::layout_path_like_element(Web::Layout::SVGGraphicsBox const&)::$_0) const
Unexecuted instantiation: SVGFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::SVGFormattingContext::layout_container_element(Web::Layout::SVGBox const&)::$_0>(Web::Layout::SVGFormattingContext::layout_container_element(Web::Layout::SVGBox const&)::$_0) const
Unexecuted instantiation: TableFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_constrainedness()::$_0>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_constrainedness()::$_0)::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_constrainedness()::$_0>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_constrainedness()::$_0)::{lambda(Web::Layout::Box const&)#1}) const
Unexecuted instantiation: TableFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_constrainedness()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_constrainedness()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_constrainedness()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_constrainedness()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1}) const
Unexecuted instantiation: TableFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_outer_content_sizes()::$_0>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_outer_content_sizes()::$_0)::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_outer_content_sizes()::$_0>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_outer_content_sizes()::$_0)::{lambda(Web::Layout::Box const&)#1}) const
Unexecuted instantiation: TableFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_outer_content_sizes()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_outer_content_sizes()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_outer_content_sizes()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::compute_outer_content_sizes()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1}) const
Unexecuted instantiation: TableFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::position_row_boxes()::$_0>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::position_row_boxes()::$_0)::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::position_row_boxes()::$_0>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::position_row_boxes()::$_0)::{lambda(Web::Layout::Box const&)#1}) const
Unexecuted instantiation: TableFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::position_row_boxes()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::position_row_boxes()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::position_row_boxes()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::position_row_boxes()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1}) const
Unexecuted instantiation: TableFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0)::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0)::{lambda(Web::Layout::Box const&)#1}) const
Unexecuted instantiation: TableFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1}) const
Unexecuted instantiation: TableFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#2}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#2})::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#2}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::BorderConflictFinder::collect_conflicting_row_group_elements()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#2})::{lambda(Web::Layout::Box const&)#1}) const
Unexecuted instantiation: TableFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::initialize_intrinsic_percentages_from_rows_or_columns<Web::Layout::TableFormattingContext::Column>()::$_0>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::initialize_intrinsic_percentages_from_rows_or_columns<Web::Layout::TableFormattingContext::Column>()::$_0)::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::initialize_intrinsic_percentages_from_rows_or_columns<Web::Layout::TableFormattingContext::Column>()::$_0>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::initialize_intrinsic_percentages_from_rows_or_columns<Web::Layout::TableFormattingContext::Column>()::$_0)::{lambda(Web::Layout::Box const&)#1}) const
Unexecuted instantiation: TableFormattingContext.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::initialize_intrinsic_percentages_from_rows_or_columns<Web::Layout::TableFormattingContext::Column>()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::initialize_intrinsic_percentages_from_rows_or_columns<Web::Layout::TableFormattingContext::Column>()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::initialize_intrinsic_percentages_from_rows_or_columns<Web::Layout::TableFormattingContext::Column>()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableFormattingContext::initialize_intrinsic_percentages_from_rows_or_columns<Web::Layout::TableFormattingContext::Column>()::$_0::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1}) const
Unexecuted instantiation: TableGrid.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_2>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_2)::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_2>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_2)::{lambda(Web::Layout::Box const&)#1}) const
Unexecuted instantiation: TableGrid.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_3>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_3)::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_3>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_3)::{lambda(Web::Layout::Box const&)#1}) const
Unexecuted instantiation: TableGrid.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_3::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_3::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_3::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1}>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_3::operator()<Web::Layout::Box const>(Web::Layout::Box const&) const::{lambda(auto:1&)#1})::{lambda(Web::Layout::Box const&)#1}) const
Unexecuted instantiation: TableGrid.cpp:void Web::TreeNode<Web::Layout::Node>::for_each_child_of_type<Web::Layout::Box, Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_4>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_4)::{lambda(Web::Layout::Box const&)#1}>(Web::Layout::TableGrid::for_each_child_box_matching<bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_4>(Web::Layout::Box const&, bool (*)(Web::Layout::Box const&), Web::Layout::TableGrid::calculate_row_column_grid(Web::Layout::Box const&, AK::Vector<Web::Layout::TableGrid::Cell, 0ul>&, AK::Vector<Web::Layout::TableGrid::Row, 0ul>&)::$_4)::{lambda(Web::Layout::Box const&)#1}) const
Unexecuted instantiation: TableBordersPainting.cpp:void Web::TreeNode<Web::Painting::Paintable>::for_each_child_of_type<Web::Painting::PaintableBox, Web::Painting::collect_cell_boxes(AK::Vector<Web::Painting::PaintableBox const&, 0ul>&, Web::Painting::PaintableBox const&)::$_0>(Web::Painting::collect_cell_boxes(AK::Vector<Web::Painting::PaintableBox const&, 0ul>&, Web::Painting::PaintableBox const&)::$_0) const
232
233
    template<typename U>
234
    U const* next_sibling_of_type() const
235
    {
236
        return const_cast<TreeNode*>(this)->template next_sibling_of_type<U>();
237
    }
238
239
    template<typename U>
240
    inline U* next_sibling_of_type()
241
    {
242
        for (auto* sibling = next_sibling(); sibling; sibling = sibling->next_sibling()) {
243
            if (is<U>(*sibling))
244
                return &verify_cast<U>(*sibling);
245
        }
246
        return nullptr;
247
    }
248
249
    template<typename U>
250
    U const* previous_sibling_of_type() const
251
0
    {
252
0
        return const_cast<TreeNode*>(this)->template previous_sibling_of_type<U>();
253
0
    }
254
255
    template<typename U>
256
    U* previous_sibling_of_type()
257
0
    {
258
0
        for (auto* sibling = previous_sibling(); sibling; sibling = sibling->previous_sibling()) {
259
0
            if (is<U>(*sibling))
260
0
                return &verify_cast<U>(*sibling);
261
0
        }
262
0
        return nullptr;
263
0
    }
264
265
    template<typename U>
266
    U const* first_child_of_type() const
267
0
    {
268
0
        return const_cast<TreeNode*>(this)->template first_child_of_type<U>();
269
0
    }
Unexecuted instantiation: Web::Layout::TextNode const* Web::TreeNode<Web::Layout::Node>::first_child_of_type<Web::Layout::TextNode>() const
Unexecuted instantiation: Web::Layout::SVGMaskBox const* Web::TreeNode<Web::Layout::Node>::first_child_of_type<Web::Layout::SVGMaskBox>() const
Unexecuted instantiation: Web::Layout::SVGClipBox const* Web::TreeNode<Web::Layout::Node>::first_child_of_type<Web::Layout::SVGClipBox>() const
270
271
    template<typename U>
272
    U const* last_child_of_type() const
273
0
    {
274
0
        return const_cast<TreeNode*>(this)->template last_child_of_type<U>();
275
0
    }
276
277
    template<typename U>
278
    U* first_child_of_type()
279
0
    {
280
0
        for (auto* child = first_child(); child; child = child->next_sibling()) {
281
0
            if (is<U>(*child))
282
0
                return &verify_cast<U>(*child);
283
0
        }
284
0
        return nullptr;
285
0
    }
Unexecuted instantiation: Web::Layout::BlockContainer* Web::TreeNode<Web::Layout::Node>::first_child_of_type<Web::Layout::BlockContainer>()
Unexecuted instantiation: Web::Layout::TextNode* Web::TreeNode<Web::Layout::Node>::first_child_of_type<Web::Layout::TextNode>()
Unexecuted instantiation: Web::Layout::SVGMaskBox* Web::TreeNode<Web::Layout::Node>::first_child_of_type<Web::Layout::SVGMaskBox>()
Unexecuted instantiation: Web::Layout::SVGClipBox* Web::TreeNode<Web::Layout::Node>::first_child_of_type<Web::Layout::SVGClipBox>()
286
287
    template<typename U>
288
    U* last_child_of_type()
289
0
    {
290
0
        for (auto* child = last_child(); child; child = child->previous_sibling()) {
291
0
            if (is<U>(*child))
292
0
                return &verify_cast<U>(*child);
293
0
        }
294
0
        return nullptr;
295
0
    }
296
297
    template<typename U>
298
    U const* first_ancestor_of_type() const
299
0
    {
300
0
        return const_cast<TreeNode*>(this)->template first_ancestor_of_type<U>();
301
0
    }
Unexecuted instantiation: Web::Layout::Label const* Web::TreeNode<Web::Layout::Node>::first_ancestor_of_type<Web::Layout::Label>() const
Unexecuted instantiation: Web::Layout::SVGSVGBox const* Web::TreeNode<Web::Layout::Node>::first_ancestor_of_type<Web::Layout::SVGSVGBox>() const
302
303
    template<typename U>
304
    U* first_ancestor_of_type()
305
0
    {
306
0
        for (auto* ancestor = parent(); ancestor; ancestor = ancestor->parent()) {
307
0
            if (is<U>(*ancestor))
308
0
                return &verify_cast<U>(*ancestor);
309
0
        }
310
0
        return nullptr;
311
0
    }
Unexecuted instantiation: Web::Layout::Label* Web::TreeNode<Web::Layout::Node>::first_ancestor_of_type<Web::Layout::Label>()
Unexecuted instantiation: Web::Painting::SVGSVGPaintable* Web::TreeNode<Web::Painting::Paintable>::first_ancestor_of_type<Web::Painting::SVGSVGPaintable>()
Unexecuted instantiation: Web::Layout::SVGSVGBox* Web::TreeNode<Web::Layout::Node>::first_ancestor_of_type<Web::Layout::SVGSVGBox>()
312
313
    ~TreeNode() = default;
314
315
protected:
316
0
    TreeNode() = default;
Unexecuted instantiation: Web::TreeNode<Web::Layout::Node>::TreeNode()
Unexecuted instantiation: Web::TreeNode<Web::Painting::Paintable>::TreeNode()
317
318
    void visit_edges(JS::Cell::Visitor& visitor)
319
0
    {
320
0
        visitor.visit(m_parent);
321
0
        visitor.visit(m_first_child);
322
0
        visitor.visit(m_last_child);
323
0
        visitor.visit(m_next_sibling);
324
0
        visitor.visit(m_previous_sibling);
325
0
    }
Unexecuted instantiation: Web::TreeNode<Web::Layout::Node>::visit_edges(JS::Cell::Visitor&)
Unexecuted instantiation: Web::TreeNode<Web::Painting::Paintable>::visit_edges(JS::Cell::Visitor&)
326
327
private:
328
    T* m_parent { nullptr };
329
    T* m_first_child { nullptr };
330
    T* m_last_child { nullptr };
331
    T* m_next_sibling { nullptr };
332
    T* m_previous_sibling { nullptr };
333
};
334
335
template<typename T>
336
inline void TreeNode<T>::remove_child(JS::NonnullGCPtr<T> node)
337
0
{
338
0
    VERIFY(node->m_parent == this);
339
340
0
    if (m_first_child == node)
341
0
        m_first_child = node->m_next_sibling;
342
343
0
    if (m_last_child == node)
344
0
        m_last_child = node->m_previous_sibling;
345
346
0
    if (node->m_next_sibling)
347
0
        node->m_next_sibling->m_previous_sibling = node->m_previous_sibling;
348
349
0
    if (node->m_previous_sibling)
350
0
        node->m_previous_sibling->m_next_sibling = node->m_next_sibling;
351
352
0
    node->m_next_sibling = nullptr;
353
0
    node->m_previous_sibling = nullptr;
354
0
    node->m_parent = nullptr;
355
0
}
356
357
template<typename T>
358
inline void TreeNode<T>::append_child(JS::NonnullGCPtr<T> node)
359
0
{
360
0
    VERIFY(!node->m_parent);
361
362
0
    if (m_last_child)
363
0
        m_last_child->m_next_sibling = node.ptr();
364
0
    node->m_previous_sibling = m_last_child;
365
0
    node->m_parent = static_cast<T*>(this);
366
0
    m_last_child = node.ptr();
367
0
    if (!m_first_child)
368
0
        m_first_child = m_last_child;
369
0
}
Unexecuted instantiation: Web::TreeNode<Web::Painting::Paintable>::append_child(JS::NonnullGCPtr<Web::Painting::Paintable>)
Unexecuted instantiation: Web::TreeNode<Web::Layout::Node>::append_child(JS::NonnullGCPtr<Web::Layout::Node>)
370
371
template<typename T>
372
inline void TreeNode<T>::insert_before(JS::NonnullGCPtr<T> node, JS::GCPtr<T> child)
373
0
{
374
0
    if (!child)
375
0
        return append_child(move(node));
376
377
0
    VERIFY(!node->m_parent);
378
0
    VERIFY(child->parent() == this);
379
380
0
    node->m_previous_sibling = child->m_previous_sibling;
381
0
    node->m_next_sibling = child;
382
383
0
    if (child->m_previous_sibling)
384
0
        child->m_previous_sibling->m_next_sibling = node;
385
386
0
    if (m_first_child == child)
387
0
        m_first_child = node;
388
389
0
    child->m_previous_sibling = node;
390
391
0
    node->m_parent = static_cast<T*>(this);
392
0
}
393
394
template<typename T>
395
inline void TreeNode<T>::prepend_child(JS::NonnullGCPtr<T> node)
396
0
{
397
0
    VERIFY(!node->m_parent);
398
399
0
    if (m_first_child)
400
0
        m_first_child->m_previous_sibling = node.ptr();
401
0
    node->m_next_sibling = m_first_child;
402
0
    node->m_parent = static_cast<T*>(this);
403
0
    m_first_child = node.ptr();
404
0
    if (!m_last_child)
405
0
        m_last_child = m_first_child;
406
0
    node->inserted_into(static_cast<T&>(*this));
407
408
0
    static_cast<T*>(this)->children_changed();
409
0
}
410
411
template<typename T>
412
inline bool TreeNode<T>::is_ancestor_of(TreeNode<T> const& other) const
413
{
414
    for (auto* ancestor = other.parent(); ancestor; ancestor = ancestor->parent()) {
415
        if (ancestor == this)
416
            return true;
417
    }
418
    return false;
419
}
420
421
template<typename T>
422
inline bool TreeNode<T>::is_inclusive_ancestor_of(TreeNode<T> const& other) const
423
{
424
    return &other == this || is_ancestor_of(other);
425
}
426
427
}