From 2386859e4bd987689231b98eade293eb1d172f5b Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Thu, 20 Feb 2025 08:38:58 -0500 Subject: [PATCH] LibDevTools: Store highlighter actors by type We will be asked for different highlighters throughout the DevTools session, e.g. ViewportSizeOnResizeHighlighter and BoxModelHighlighter. The latter will be responsible for rendering and overlay on DOM nodes when the user hovers over a node in the inspector panel. --- Libraries/LibDevTools/Actors/InspectorActor.cpp | 15 +++++++++++---- Libraries/LibDevTools/Actors/InspectorActor.h | 3 ++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Libraries/LibDevTools/Actors/InspectorActor.cpp b/Libraries/LibDevTools/Actors/InspectorActor.cpp index ac85d25cffe..96f8ca150f5 100644 --- a/Libraries/LibDevTools/Actors/InspectorActor.cpp +++ b/Libraries/LibDevTools/Actors/InspectorActor.cpp @@ -29,7 +29,7 @@ InspectorActor::InspectorActor(DevToolsServer& devtools, String name, WeakPtr(); + auto type_name = message.get_string("typeName"sv); + if (!type_name.has_value()) { + send_missing_parameter_error("typeName"sv); + return; + } - response.set("highlighter"sv, m_highlighter->serialize_highlighter()); + auto highlighter = m_highlighters.ensure(*type_name, [&]() -> NonnullRefPtr { + return devtools().register_actor(); + }); + + response.set("highlighter"sv, highlighter->serialize_highlighter()); send_message(move(response)); return; } diff --git a/Libraries/LibDevTools/Actors/InspectorActor.h b/Libraries/LibDevTools/Actors/InspectorActor.h index ee6c513b13d..dc06901908d 100644 --- a/Libraries/LibDevTools/Actors/InspectorActor.h +++ b/Libraries/LibDevTools/Actors/InspectorActor.h @@ -6,6 +6,7 @@ #pragma once +#include #include #include @@ -27,7 +28,7 @@ private: WeakPtr m_tab; WeakPtr m_page_style; - WeakPtr m_highlighter; + HashMap> m_highlighters; }; }