LibDevTools+LibWebView: Implement requests to edit DOM node text

This commit is contained in:
Timothy Flynn 2025-03-06 19:56:40 -05:00 committed by Andreas Kling
parent 8bcc3d3797
commit 57e0a3f8b5
Notes: github-actions[bot] 2025-03-08 00:27:26 +00:00
5 changed files with 70 additions and 1 deletions

View file

@ -437,6 +437,34 @@ void Application::stop_listening_for_dom_mutations(DevTools::TabDescription cons
view->set_listen_for_dom_mutations(false);
}
template<typename Edit>
static void edit_dom_node(DevTools::TabDescription const& description, Application::OnDOMNodeEditComplete on_complete, Edit&& edit)
{
auto view = ViewImplementation::find_view_by_id(description.id);
if (!view.has_value()) {
on_complete(Error::from_string_literal("Unable to locate tab"));
return;
}
view->on_finshed_editing_dom_node = [&view = *view, on_complete = move(on_complete)](auto node_id) {
view.on_finshed_editing_dom_node = nullptr;
if (node_id.has_value())
on_complete(*node_id);
else
on_complete(Error::from_string_literal("Unable to find DOM node to edit"));
};
edit(*view);
}
void Application::set_dom_node_text(DevTools::TabDescription const& description, Web::UniqueNodeID node_id, String value, OnDOMNodeEditComplete on_complete) const
{
edit_dom_node(description, move(on_complete), [&](auto& view) {
view.set_dom_node_text(node_id, move(value));
});
}
void Application::evaluate_javascript(DevTools::TabDescription const& description, String script, OnScriptEvaluationComplete on_complete) const
{
auto view = ViewImplementation::find_view_by_id(description.id);