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; }; }