mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-11 10:41:30 +00:00
LibDevTools: Add a helper to handle asynchronous request replies
This removes some boilerplate around executing async requests, such as calling dbgln_if on any errors, handling weak pointers to `this`, and dealing with block tokens.
This commit is contained in:
parent
e1ed8722e0
commit
49adec1396
Notes:
github-actions[bot]
2025-03-12 16:48:58 +00:00
Author: https://github.com/trflynn89
Commit: 49adec1396
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/3904
9 changed files with 140 additions and 283 deletions
|
@ -124,23 +124,10 @@ void NodeActor::handle_message(StringView type, JsonObject const& message)
|
|||
return;
|
||||
}
|
||||
|
||||
auto block_token = block_responses();
|
||||
|
||||
auto on_complete = [weak_self = make_weak_ptr<NodeActor>(), block_token = move(block_token)](ErrorOr<Web::UniqueNodeID> node_id) mutable {
|
||||
if (node_id.is_error()) {
|
||||
dbgln_if(DEVTOOLS_DEBUG, "Unable to edit DOM node: {}", node_id.error());
|
||||
return;
|
||||
}
|
||||
|
||||
if (auto self = weak_self.strong_ref())
|
||||
self->send_message({}, move(block_token));
|
||||
};
|
||||
|
||||
if (attribute_to_replace.has_value()) {
|
||||
devtools().delegate().replace_dom_node_attribute(dom_node->tab->description(), dom_node->identifier.id, *attribute_to_replace, move(replacement_attributes), move(on_complete));
|
||||
} else {
|
||||
devtools().delegate().add_dom_node_attributes(dom_node->tab->description(), dom_node->identifier.id, move(replacement_attributes), move(on_complete));
|
||||
}
|
||||
if (attribute_to_replace.has_value())
|
||||
devtools().delegate().replace_dom_node_attribute(dom_node->tab->description(), dom_node->identifier.id, *attribute_to_replace, move(replacement_attributes), default_async_handler());
|
||||
else
|
||||
devtools().delegate().add_dom_node_attributes(dom_node->tab->description(), dom_node->identifier.id, move(replacement_attributes), default_async_handler());
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -156,20 +143,7 @@ void NodeActor::handle_message(StringView type, JsonObject const& message)
|
|||
return;
|
||||
}
|
||||
|
||||
auto block_token = block_responses();
|
||||
|
||||
devtools().delegate().set_dom_node_text(
|
||||
dom_node->tab->description(), dom_node->identifier.id, *value,
|
||||
[weak_self = make_weak_ptr<NodeActor>(), block_token = move(block_token)](ErrorOr<Web::UniqueNodeID> node_id) mutable {
|
||||
if (node_id.is_error()) {
|
||||
dbgln_if(DEVTOOLS_DEBUG, "Unable to edit DOM node: {}", node_id.error());
|
||||
return;
|
||||
}
|
||||
|
||||
if (auto self = weak_self.strong_ref())
|
||||
self->send_message({}, move(block_token));
|
||||
});
|
||||
|
||||
devtools().delegate().set_dom_node_text(dom_node->tab->description(), dom_node->identifier.id, *value, default_async_handler());
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue