mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-01 05:39:11 +00:00
LibDevTools+LibWebView+WebContent: Selectively fetch DOM node properties
When we inspect a DOM node, we currently serialize many properties for that node, including its layout, computed style, used fonts, etc. Now that we aren't piggy-backing on the Inspector interface, we can instead only serialize the specific information required by DevTools.
This commit is contained in:
parent
19529590b9
commit
daca9f5995
Notes:
github-actions[bot]
2025-03-20 08:02:26 +00:00
Author: https://github.com/trflynn89
Commit: daca9f5995
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4006
Reviewed-by: https://github.com/gmta ✅
18 changed files with 287 additions and 276 deletions
|
@ -451,25 +451,31 @@ void Application::inspect_tab(DevTools::TabDescription const& description, OnTab
|
|||
view->inspect_dom_tree();
|
||||
}
|
||||
|
||||
void Application::inspect_dom_node(DevTools::TabDescription const& description, Web::UniqueNodeID node_id, Optional<Web::CSS::Selector::PseudoElement::Type> pseudo_element, OnDOMNodeInspectionComplete on_complete) const
|
||||
void Application::listen_for_dom_properties(DevTools::TabDescription const& description, OnDOMNodePropertiesReceived on_dom_node_properties_received) const
|
||||
{
|
||||
auto view = ViewImplementation::find_view_by_id(description.id);
|
||||
if (!view.has_value()) {
|
||||
on_complete(Error::from_string_literal("Unable to locate tab"));
|
||||
if (!view.has_value())
|
||||
return;
|
||||
}
|
||||
|
||||
view->on_received_dom_node_properties = [&view = *view, on_complete = move(on_complete)](ViewImplementation::DOMNodeProperties properties) {
|
||||
view.on_received_dom_node_properties = nullptr;
|
||||
view->on_received_dom_node_properties = move(on_dom_node_properties_received);
|
||||
}
|
||||
|
||||
on_complete(DevTools::DOMNodeProperties {
|
||||
.computed_style = move(properties.computed_style),
|
||||
.node_box_sizing = move(properties.node_box_sizing),
|
||||
.fonts = move(properties.fonts),
|
||||
});
|
||||
};
|
||||
void Application::stop_listening_for_dom_properties(DevTools::TabDescription const& description) const
|
||||
{
|
||||
auto view = ViewImplementation::find_view_by_id(description.id);
|
||||
if (!view.has_value())
|
||||
return;
|
||||
|
||||
view->inspect_dom_node(node_id, pseudo_element);
|
||||
view->on_received_dom_node_properties = nullptr;
|
||||
}
|
||||
|
||||
void Application::inspect_dom_node(DevTools::TabDescription const& description, DOMNodeProperties::Type property_type, Web::UniqueNodeID node_id, Optional<Web::CSS::Selector::PseudoElement::Type> pseudo_element) const
|
||||
{
|
||||
auto view = ViewImplementation::find_view_by_id(description.id);
|
||||
if (!view.has_value())
|
||||
return;
|
||||
|
||||
view->inspect_dom_node(node_id, property_type, pseudo_element);
|
||||
}
|
||||
|
||||
void Application::clear_inspected_dom_node(DevTools::TabDescription const& description) const
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue