Ladybird: Close inspector and JS console when tab closes

Keeping these around can lead to use-after-frees and crashes.
This commit is contained in:
MacDue 2022-12-19 13:25:49 +00:00 committed by Andrew Kaster
parent 33249c727a
commit 678dfa8f75
Notes: sideshowbarker 2024-07-17 08:45:34 +09:00
2 changed files with 9 additions and 5 deletions

View file

@ -77,7 +77,7 @@ WebContentView::WebContentView(StringView webdriver_content_ipc_path)
WebContentView::~WebContentView()
{
clear_inspector_callbacks();
close_sub_widgets();
}
void WebContentView::load(AK::URL const& url)
@ -515,10 +515,14 @@ void WebContentView::ensure_inspector_widget()
};
}
void WebContentView::clear_inspector_callbacks()
void WebContentView::close_sub_widgets()
{
if (m_inspector_widget)
m_inspector_widget->on_close = nullptr;
auto close_widget_window = [](auto* widget) {
if (widget)
widget->close();
};
close_widget_window(m_console_widget);
close_widget_window(m_inspector_widget);
}
bool WebContentView::is_inspector_open() const

View file

@ -192,7 +192,7 @@ private:
bool is_inspector_open() const;
void inspect_dom_tree();
void clear_inspected_dom_node();
void clear_inspector_callbacks();
void close_sub_widgets();
ErrorOr<Ladybird::DOMNodeProperties> inspect_dom_node(i32 node_id, Optional<Web::CSS::Selector::PseudoElement> pseudo_element);
qreal m_inverse_pixel_scaling_ratio { 1.0 };