diff --git a/Libraries/LibHTML/Frame.cpp b/Libraries/LibHTML/Frame.cpp
index 6936d0d2c2..4e88b03a75 100644
--- a/Libraries/LibHTML/Frame.cpp
+++ b/Libraries/LibHTML/Frame.cpp
@@ -52,13 +52,8 @@ RefPtr Frame::generate_style_tree()
return styled_root;
}
-void Frame::layout()
+RefPtr Frame::generate_layout_tree(const StyledNode& styled_root)
{
- if (!m_document)
- return;
-
- auto styled_root = generate_style_tree();
-
auto create_layout_node = [](const StyledNode& styled_node) -> RefPtr {
if (styled_node.node() && styled_node.node()->is_document())
return adopt(*new LayoutDocument(static_cast(*styled_node.node()), styled_node));
@@ -88,7 +83,16 @@ void Frame::layout()
return layout_node;
};
- auto layout_root = resolve_layout(*styled_root, nullptr);
+ return resolve_layout(styled_root, nullptr);
+}
+
+void Frame::layout()
+{
+ if (!m_document)
+ return;
+
+ auto styled_root = generate_style_tree();
+ auto layout_root = generate_layout_tree(*styled_root);
layout_root->style().size().set_width(m_size.width());
diff --git a/Libraries/LibHTML/Frame.h b/Libraries/LibHTML/Frame.h
index 89abbc454e..1ceef02564 100644
--- a/Libraries/LibHTML/Frame.h
+++ b/Libraries/LibHTML/Frame.h
@@ -17,6 +17,7 @@ public:
private:
RefPtr generate_style_tree();
+ RefPtr generate_layout_tree(const StyledNode&);
RefPtr m_document;
Size m_size;