1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 04:07:44 +00:00

LibWeb: Stop assuming navigable's existance in FrameBox

If the loading of iframe's navigable has not finished by the time
FrameBox layout occurs, we should not crash.

Fixes https://github.com/SerenityOS/serenity/issues/22874
This commit is contained in:
Aliaksandr Kalenik 2024-01-20 19:41:57 +01:00 committed by Luke Wilde
parent b2bc57ff89
commit c1161111a7
3 changed files with 58 additions and 5 deletions

View file

@ -5,7 +5,6 @@
*/
#include <LibWeb/DOM/Document.h>
#include <LibWeb/HTML/BrowsingContext.h>
#include <LibWeb/Layout/FrameBox.h>
#include <LibWeb/Layout/Viewport.h>
#include <LibWeb/Painting/NestedBrowsingContextPaintable.h>
@ -21,8 +20,6 @@ FrameBox::~FrameBox() = default;
void FrameBox::prepare_for_replaced_layout()
{
VERIFY(dom_node().nested_browsing_context());
// FIXME: Do proper error checking, etc.
set_natural_width(dom_node().get_attribute_value(HTML::AttributeNames::width).to_number<int>().value_or(300));
set_natural_height(dom_node().get_attribute_value(HTML::AttributeNames::height).to_number<int>().value_or(150));
@ -32,8 +29,8 @@ void FrameBox::did_set_content_size()
{
ReplacedBox::did_set_content_size();
VERIFY(dom_node().content_navigable());
dom_node().content_navigable()->set_size(paintable_box()->content_size());
if (dom_node().content_navigable())
dom_node().content_navigable()->set_size(paintable_box()->content_size());
}
JS::GCPtr<Painting::Paintable> FrameBox::create_paintable() const