diff --git a/Tests/LibWeb/Layout/expected/hidden-root-element.txt b/Tests/LibWeb/Layout/expected/hidden-root-element.txt new file mode 100644 index 00000000000..fe53551f0bb --- /dev/null +++ b/Tests/LibWeb/Layout/expected/hidden-root-element.txt @@ -0,0 +1,3 @@ +Viewport <#document> at (0,0) content-size 800x600 children: not-inline + +ViewportPaintable (Viewport<#document>) [0,0 800x600] diff --git a/Tests/LibWeb/Layout/input/hidden-root-element.html b/Tests/LibWeb/Layout/input/hidden-root-element.html new file mode 100644 index 00000000000..28f88b1b0bf --- /dev/null +++ b/Tests/LibWeb/Layout/input/hidden-root-element.html @@ -0,0 +1,5 @@ + + +
Test passes if we don't crash
+ + diff --git a/Userland/Libraries/LibWeb/DOM/Document.cpp b/Userland/Libraries/LibWeb/DOM/Document.cpp index 1fafa722a4f..b44de964608 100644 --- a/Userland/Libraries/LibWeb/DOM/Document.cpp +++ b/Userland/Libraries/LibWeb/DOM/Document.cpp @@ -1058,13 +1058,14 @@ void Document::update_layout() if (!navigable) return; + auto* document_element = this->document_element(); auto viewport_rect = this->viewport_rect(); if (!m_layout_root) { Layout::TreeBuilder tree_builder; m_layout_root = verify_cast(*tree_builder.build(*this)); - if (auto* document_element = this->document_element()) { + if (document_element && document_element->layout_node()) { propagate_overflow_to_viewport(*document_element, *m_layout_root); } } @@ -1079,8 +1080,7 @@ void Document::update_layout() viewport_state.set_content_width(viewport_rect.width()); viewport_state.set_content_height(viewport_rect.height()); - if (auto* document_element = this->document_element()) { - VERIFY(document_element->layout_node()); + if (document_element && document_element->layout_node()) { auto& icb_state = layout_state.get_mutable(verify_cast(*document_element->layout_node())); icb_state.set_content_width(viewport_rect.width()); }