devtools: Allow highlighting elements from the inspector (#35822)

This change connects the `HighlighterActor` from the devtools with the
document, which will draw a blue rectangle over any highlighted dom
node.



https://github.com/user-attachments/assets/571b2dab-497f-4102-9e55-517cdcc040ba




---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by
`[X]` when the step is complete, and replace `___` with appropriate
data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes do not require tests because we don't have devtools
tests

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
This commit is contained in:
Simon Wülker 2025-05-05 12:10:25 +02:00 committed by GitHub
parent 20f20a07f2
commit 8608e328a1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 305 additions and 4 deletions

View file

@ -538,3 +538,21 @@ pub(crate) fn handle_get_css_database(reply: IpcSender<HashMap<String, CssDataba
.collect();
let _ = reply.send(database);
}
pub(crate) fn handle_highlight_dom_node(
documents: &DocumentCollection,
id: PipelineId,
node_id: Option<String>,
) {
let node = node_id.and_then(|node_id| {
let node = find_node_by_unique_id(documents, id, &node_id);
if node.is_none() {
log::warn!("Node id {node_id} for pipeline id {id} is not found",);
}
node
});
if let Some(window) = documents.find_window(id) {
window.Document().highlight_dom_node(node.as_deref());
}
}