From 24a5e4e7d5793139a92a88f4157f404fbf8cc492 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Wed, 12 Mar 2025 08:01:23 -0400 Subject: [PATCH] LibDevTools: Move message data into a structure This is to prepare for an upcoming change where we will need to track replies to messages by ID. We will be able to add parameters to this structure without having to edit every single actor subclass header file. --- Libraries/LibDevTools/Actor.cpp | 9 ++++- Libraries/LibDevTools/Actor.h | 24 +++++++---- .../LibDevTools/Actors/CSSPropertiesActor.cpp | 6 +-- .../LibDevTools/Actors/CSSPropertiesActor.h | 4 +- Libraries/LibDevTools/Actors/ConsoleActor.cpp | 10 ++--- Libraries/LibDevTools/Actors/ConsoleActor.h | 4 +- Libraries/LibDevTools/Actors/DeviceActor.cpp | 6 +-- Libraries/LibDevTools/Actors/DeviceActor.h | 4 +- Libraries/LibDevTools/Actors/FrameActor.cpp | 8 ++-- Libraries/LibDevTools/Actors/FrameActor.h | 3 +- .../LibDevTools/Actors/HighlighterActor.cpp | 8 ++-- .../LibDevTools/Actors/HighlighterActor.h | 3 +- .../LibDevTools/Actors/InspectorActor.cpp | 12 +++--- Libraries/LibDevTools/Actors/InspectorActor.h | 4 +- .../Actors/LayoutInspectorActor.cpp | 8 ++-- .../LibDevTools/Actors/LayoutInspectorActor.h | 4 +- Libraries/LibDevTools/Actors/NodeActor.cpp | 10 ++--- Libraries/LibDevTools/Actors/NodeActor.h | 4 +- .../LibDevTools/Actors/PageStyleActor.cpp | 12 +++--- Libraries/LibDevTools/Actors/PageStyleActor.h | 3 +- .../LibDevTools/Actors/PreferenceActor.cpp | 6 +-- .../LibDevTools/Actors/PreferenceActor.h | 4 +- Libraries/LibDevTools/Actors/ProcessActor.cpp | 4 +- Libraries/LibDevTools/Actors/ProcessActor.h | 4 +- Libraries/LibDevTools/Actors/RootActor.cpp | 22 +++++----- Libraries/LibDevTools/Actors/RootActor.h | 4 +- Libraries/LibDevTools/Actors/TabActor.cpp | 8 ++-- Libraries/LibDevTools/Actors/TabActor.h | 4 +- .../Actors/TargetConfigurationActor.cpp | 6 +-- .../Actors/TargetConfigurationActor.h | 4 +- Libraries/LibDevTools/Actors/ThreadActor.cpp | 4 +- Libraries/LibDevTools/Actors/ThreadActor.h | 4 +- .../Actors/ThreadConfigurationActor.cpp | 6 +-- .../Actors/ThreadConfigurationActor.h | 4 +- Libraries/LibDevTools/Actors/WalkerActor.cpp | 40 +++++++++---------- Libraries/LibDevTools/Actors/WalkerActor.h | 4 +- Libraries/LibDevTools/Actors/WatcherActor.cpp | 14 +++---- Libraries/LibDevTools/Actors/WatcherActor.h | 4 +- Libraries/LibDevTools/Connection.cpp | 4 +- Libraries/LibDevTools/Connection.h | 2 +- Libraries/LibDevTools/DevToolsServer.cpp | 8 ++-- Libraries/LibDevTools/DevToolsServer.h | 2 +- 42 files changed, 162 insertions(+), 146 deletions(-) diff --git a/Libraries/LibDevTools/Actor.cpp b/Libraries/LibDevTools/Actor.cpp index 61ded21906d..427f589d320 100644 --- a/Libraries/LibDevTools/Actor.cpp +++ b/Libraries/LibDevTools/Actor.cpp @@ -18,6 +18,11 @@ Actor::Actor(DevToolsServer& devtools, String name) Actor::~Actor() = default; +void Actor::message_received(StringView type, JsonObject message) +{ + handle_message({ type, move(message) }); +} + void Actor::send_message(JsonObject message, Optional block_token) { if (m_block_responses && !block_token.has_value()) { @@ -41,11 +46,11 @@ void Actor::send_missing_parameter_error(StringView parameter) } // https://firefox-source-docs.mozilla.org/devtools/backend/protocol.html#error-packets -void Actor::send_unrecognized_packet_type_error(StringView type) +void Actor::send_unrecognized_packet_type_error(Message const& message) { JsonObject error; error.set("error"sv, "unrecognizedPacketType"sv); - error.set("message"sv, MUST(String::formatted("Unrecognized packet type: '{}'", type))); + error.set("message"sv, MUST(String::formatted("Unrecognized packet type: '{}'", message.type))); send_message(move(error)); } diff --git a/Libraries/LibDevTools/Actor.h b/Libraries/LibDevTools/Actor.h index 8b5460e6dfe..75040122986 100644 --- a/Libraries/LibDevTools/Actor.h +++ b/Libraries/LibDevTools/Actor.h @@ -24,10 +24,16 @@ class Actor : public RefCounted , public Weakable { public: + struct Message { + StringView type; + JsonObject data; + }; + virtual ~Actor(); String const& name() const { return m_name; } - virtual void handle_message(StringView type, JsonObject const&) = 0; + + void message_received(StringView type, JsonObject); class [[nodiscard]] BlockToken { public: @@ -46,31 +52,33 @@ public: void send_message(JsonObject, Optional block_token = {}); void send_missing_parameter_error(StringView parameter); - void send_unrecognized_packet_type_error(StringView type); + void send_unrecognized_packet_type_error(Message const&); void send_unknown_actor_error(StringView actor); protected: explicit Actor(DevToolsServer&, String name); + virtual void handle_message(Message const&) = 0; + DevToolsServer& devtools() { return m_devtools; } DevToolsServer const& devtools() const { return m_devtools; } BlockToken block_responses(); template - auto get_required_parameter(JsonObject const& message, StringView parameter) + auto get_required_parameter(Message const& message, StringView parameter) { auto result = [&]() { if constexpr (IsIntegral) - return message.get_integer(parameter); + return message.data.get_integer(parameter); else if constexpr (IsSame) - return message.get_bool(parameter); + return message.data.get_bool(parameter); else if constexpr (IsSame) - return message.get_string(parameter); + return message.data.get_string(parameter); else if constexpr (IsSame) - return message.get_object(parameter); + return message.data.get_object(parameter); else if constexpr (IsSame) - return message.get_array(parameter); + return message.data.get_array(parameter); else static_assert(DependentFalse); }(); diff --git a/Libraries/LibDevTools/Actors/CSSPropertiesActor.cpp b/Libraries/LibDevTools/Actors/CSSPropertiesActor.cpp index 8c4b74f404d..6287ec97050 100644 --- a/Libraries/LibDevTools/Actors/CSSPropertiesActor.cpp +++ b/Libraries/LibDevTools/Actors/CSSPropertiesActor.cpp @@ -24,11 +24,11 @@ CSSPropertiesActor::CSSPropertiesActor(DevToolsServer& devtools, String name) CSSPropertiesActor::~CSSPropertiesActor() = default; -void CSSPropertiesActor::handle_message(StringView type, JsonObject const&) +void CSSPropertiesActor::handle_message(Message const& message) { JsonObject response; - if (type == "getCSSDatabase"sv) { + if (message.type == "getCSSDatabase"sv) { auto css_property_list = devtools().delegate().css_property_list(); JsonObject properties; @@ -51,7 +51,7 @@ void CSSPropertiesActor::handle_message(StringView type, JsonObject const&) return; } - send_unrecognized_packet_type_error(type); + send_unrecognized_packet_type_error(message); } } diff --git a/Libraries/LibDevTools/Actors/CSSPropertiesActor.h b/Libraries/LibDevTools/Actors/CSSPropertiesActor.h index afe607ecf55..14cce55d6d8 100644 --- a/Libraries/LibDevTools/Actors/CSSPropertiesActor.h +++ b/Libraries/LibDevTools/Actors/CSSPropertiesActor.h @@ -24,10 +24,10 @@ public: static NonnullRefPtr create(DevToolsServer&, String name); virtual ~CSSPropertiesActor() override; - virtual void handle_message(StringView type, JsonObject const&) override; - private: CSSPropertiesActor(DevToolsServer&, String name); + + virtual void handle_message(Message const&) override; }; } diff --git a/Libraries/LibDevTools/Actors/ConsoleActor.cpp b/Libraries/LibDevTools/Actors/ConsoleActor.cpp index 08f4371c6f7..80ebbf81ca3 100644 --- a/Libraries/LibDevTools/Actors/ConsoleActor.cpp +++ b/Libraries/LibDevTools/Actors/ConsoleActor.cpp @@ -39,18 +39,18 @@ ConsoleActor::ConsoleActor(DevToolsServer& devtools, String name, WeakPtr(message, "text"sv); if (!text.has_value()) return; @@ -61,7 +61,7 @@ void ConsoleActor::handle_message(StringView type, JsonObject const& message) send_message(move(response)); // FIXME: We do not support eager evaluation of scripts. Just bail for now. - if (message.get_bool("eager"sv).value_or(false)) { + if (message.data.get_bool("eager"sv).value_or(false)) { return; } @@ -75,7 +75,7 @@ void ConsoleActor::handle_message(StringView type, JsonObject const& message) return; } - send_unrecognized_packet_type_error(type); + send_unrecognized_packet_type_error(message); } } diff --git a/Libraries/LibDevTools/Actors/ConsoleActor.h b/Libraries/LibDevTools/Actors/ConsoleActor.h index 6cbd0cf5e7f..e7da0d7285b 100644 --- a/Libraries/LibDevTools/Actors/ConsoleActor.h +++ b/Libraries/LibDevTools/Actors/ConsoleActor.h @@ -18,11 +18,11 @@ public: static NonnullRefPtr create(DevToolsServer&, String name, WeakPtr); virtual ~ConsoleActor() override; - virtual void handle_message(StringView type, JsonObject const&) override; - private: ConsoleActor(DevToolsServer&, String name, WeakPtr); + virtual void handle_message(Message const&) override; + WeakPtr m_tab; u64 m_execution_id { 0 }; diff --git a/Libraries/LibDevTools/Actors/DeviceActor.cpp b/Libraries/LibDevTools/Actors/DeviceActor.cpp index ae8501bdab9..aece6a8a391 100644 --- a/Libraries/LibDevTools/Actors/DeviceActor.cpp +++ b/Libraries/LibDevTools/Actors/DeviceActor.cpp @@ -24,9 +24,9 @@ DeviceActor::DeviceActor(DevToolsServer& devtools, String name) DeviceActor::~DeviceActor() = default; -void DeviceActor::handle_message(StringView type, JsonObject const&) +void DeviceActor::handle_message(Message const& message) { - if (type == "getDescription"sv) { + if (message.type == "getDescription"sv) { auto build_id = Core::Version::read_long_version_string(); static auto browser_name = String::from_utf8_without_validation({ BROWSER_NAME, __builtin_strlen(BROWSER_NAME) }); @@ -54,7 +54,7 @@ void DeviceActor::handle_message(StringView type, JsonObject const&) return; } - send_unrecognized_packet_type_error(type); + send_unrecognized_packet_type_error(message); } } diff --git a/Libraries/LibDevTools/Actors/DeviceActor.h b/Libraries/LibDevTools/Actors/DeviceActor.h index edf9286b4e0..f42b3691113 100644 --- a/Libraries/LibDevTools/Actors/DeviceActor.h +++ b/Libraries/LibDevTools/Actors/DeviceActor.h @@ -18,10 +18,10 @@ public: static NonnullRefPtr create(DevToolsServer&, String name); virtual ~DeviceActor() override; - virtual void handle_message(StringView type, JsonObject const&) override; - private: DeviceActor(DevToolsServer&, String name); + + virtual void handle_message(Message const&) override; }; } diff --git a/Libraries/LibDevTools/Actors/FrameActor.cpp b/Libraries/LibDevTools/Actors/FrameActor.cpp index 6d6f13dea83..c8c2502b87d 100644 --- a/Libraries/LibDevTools/Actors/FrameActor.cpp +++ b/Libraries/LibDevTools/Actors/FrameActor.cpp @@ -51,11 +51,11 @@ FrameActor::~FrameActor() devtools().delegate().stop_listening_for_console_messages(tab->description()); } -void FrameActor::handle_message(StringView type, JsonObject const&) +void FrameActor::handle_message(Message const& message) { JsonObject response; - if (type == "detach"sv) { + if (message.type == "detach"sv) { if (auto tab = m_tab.strong_ref()) { devtools().delegate().stop_listening_for_dom_mutations(tab->description()); devtools().delegate().stop_listening_for_console_messages(tab->description()); @@ -66,12 +66,12 @@ void FrameActor::handle_message(StringView type, JsonObject const&) return; } - if (type == "listFrames"sv) { + if (message.type == "listFrames"sv) { send_message(move(response)); return; } - send_unrecognized_packet_type_error(type); + send_unrecognized_packet_type_error(message); } void FrameActor::send_frame_update_message() diff --git a/Libraries/LibDevTools/Actors/FrameActor.h b/Libraries/LibDevTools/Actors/FrameActor.h index 5fce83bb444..3f808ea3408 100644 --- a/Libraries/LibDevTools/Actors/FrameActor.h +++ b/Libraries/LibDevTools/Actors/FrameActor.h @@ -21,7 +21,6 @@ public: static NonnullRefPtr create(DevToolsServer&, String name, WeakPtr, WeakPtr, WeakPtr, WeakPtr, WeakPtr); virtual ~FrameActor() override; - virtual void handle_message(StringView type, JsonObject const&) override; void send_frame_update_message(); JsonObject serialize_target() const; @@ -29,6 +28,8 @@ public: private: FrameActor(DevToolsServer&, String name, WeakPtr, WeakPtr, WeakPtr, WeakPtr, WeakPtr); + virtual void handle_message(Message const&) override; + void console_message_available(i32 message_index); void console_messages_received(i32 start_index, Vector); void request_console_messages(); diff --git a/Libraries/LibDevTools/Actors/HighlighterActor.cpp b/Libraries/LibDevTools/Actors/HighlighterActor.cpp index 9adef59e30f..169a85be2ab 100644 --- a/Libraries/LibDevTools/Actors/HighlighterActor.cpp +++ b/Libraries/LibDevTools/Actors/HighlighterActor.cpp @@ -27,11 +27,11 @@ HighlighterActor::HighlighterActor(DevToolsServer& devtools, String name, WeakPt HighlighterActor::~HighlighterActor() = default; -void HighlighterActor::handle_message(StringView type, JsonObject const& message) +void HighlighterActor::handle_message(Message const& message) { JsonObject response; - if (type == "show"sv) { + if (message.type == "show"sv) { auto node = get_required_parameter(message, "node"sv); if (!node.has_value()) return; @@ -47,7 +47,7 @@ void HighlighterActor::handle_message(StringView type, JsonObject const& message return; } - if (type == "hide"sv) { + if (message.type == "hide"sv) { if (auto tab = InspectorActor::tab_for(m_inspector)) devtools().delegate().clear_highlighted_dom_node(tab->description()); @@ -55,7 +55,7 @@ void HighlighterActor::handle_message(StringView type, JsonObject const& message return; } - send_unrecognized_packet_type_error(type); + send_unrecognized_packet_type_error(message); } JsonValue HighlighterActor::serialize_highlighter() const diff --git a/Libraries/LibDevTools/Actors/HighlighterActor.h b/Libraries/LibDevTools/Actors/HighlighterActor.h index a95fca28071..0dd6220372e 100644 --- a/Libraries/LibDevTools/Actors/HighlighterActor.h +++ b/Libraries/LibDevTools/Actors/HighlighterActor.h @@ -18,12 +18,13 @@ public: static NonnullRefPtr create(DevToolsServer&, String name, WeakPtr); virtual ~HighlighterActor() override; - virtual void handle_message(StringView type, JsonObject const&) override; JsonValue serialize_highlighter() const; private: HighlighterActor(DevToolsServer&, String name, WeakPtr); + virtual void handle_message(Message const&) override; + WeakPtr m_inspector; }; diff --git a/Libraries/LibDevTools/Actors/InspectorActor.cpp b/Libraries/LibDevTools/Actors/InspectorActor.cpp index da86778141d..2f6d4ea5b5b 100644 --- a/Libraries/LibDevTools/Actors/InspectorActor.cpp +++ b/Libraries/LibDevTools/Actors/InspectorActor.cpp @@ -29,11 +29,11 @@ InspectorActor::InspectorActor(DevToolsServer& devtools, String name, WeakPtr(*this); @@ -42,7 +42,7 @@ void InspectorActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "getHighlighterByType"sv) { + if (message.type == "getHighlighterByType"sv) { auto type_name = get_required_parameter(message, "typeName"sv); if (!type_name.has_value()) return; @@ -56,7 +56,7 @@ void InspectorActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "getWalker"sv) { + if (message.type == "getWalker"sv) { if (auto tab = m_tab.strong_ref()) { devtools().delegate().inspect_tab(tab->description(), async_handler([](auto& self, auto dom_tree, auto& response) { @@ -72,13 +72,13 @@ void InspectorActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "supportsHighlighters"sv) { + if (message.type == "supportsHighlighters"sv) { response.set("value"sv, true); send_message(move(response)); return; } - send_unrecognized_packet_type_error(type); + send_unrecognized_packet_type_error(message); } void InspectorActor::received_dom_tree(JsonObject& response, JsonObject dom_tree) diff --git a/Libraries/LibDevTools/Actors/InspectorActor.h b/Libraries/LibDevTools/Actors/InspectorActor.h index a8a97015911..ae7c8df7a13 100644 --- a/Libraries/LibDevTools/Actors/InspectorActor.h +++ b/Libraries/LibDevTools/Actors/InspectorActor.h @@ -19,14 +19,14 @@ public: static NonnullRefPtr create(DevToolsServer&, String name, WeakPtr); virtual ~InspectorActor() override; - virtual void handle_message(StringView type, JsonObject const&) override; - static RefPtr tab_for(WeakPtr const&); static RefPtr walker_for(WeakPtr const&); private: InspectorActor(DevToolsServer&, String name, WeakPtr); + virtual void handle_message(Message const&) override; + void received_dom_tree(JsonObject& response, JsonObject dom_tree); WeakPtr m_tab; diff --git a/Libraries/LibDevTools/Actors/LayoutInspectorActor.cpp b/Libraries/LibDevTools/Actors/LayoutInspectorActor.cpp index 1326c31142b..9473d173f55 100644 --- a/Libraries/LibDevTools/Actors/LayoutInspectorActor.cpp +++ b/Libraries/LibDevTools/Actors/LayoutInspectorActor.cpp @@ -22,23 +22,23 @@ LayoutInspectorActor::LayoutInspectorActor(DevToolsServer& devtools, String name LayoutInspectorActor::~LayoutInspectorActor() = default; -void LayoutInspectorActor::handle_message(StringView type, JsonObject const&) +void LayoutInspectorActor::handle_message(Message const& message) { JsonObject response; - if (type == "getCurrentFlexbox"sv) { + if (message.type == "getCurrentFlexbox"sv) { response.set("flexbox"sv, JsonValue {}); send_message(move(response)); return; } - if (type == "getGrids"sv) { + if (message.type == "getGrids"sv) { response.set("grids"sv, JsonArray {}); send_message(move(response)); return; } - send_unrecognized_packet_type_error(type); + send_unrecognized_packet_type_error(message); } } diff --git a/Libraries/LibDevTools/Actors/LayoutInspectorActor.h b/Libraries/LibDevTools/Actors/LayoutInspectorActor.h index 986bcbf572c..4200284018f 100644 --- a/Libraries/LibDevTools/Actors/LayoutInspectorActor.h +++ b/Libraries/LibDevTools/Actors/LayoutInspectorActor.h @@ -18,10 +18,10 @@ public: static NonnullRefPtr create(DevToolsServer&, String name); virtual ~LayoutInspectorActor() override; - virtual void handle_message(StringView type, JsonObject const&) override; - private: LayoutInspectorActor(DevToolsServer&, String name); + + virtual void handle_message(Message const&) override; }; } diff --git a/Libraries/LibDevTools/Actors/NodeActor.cpp b/Libraries/LibDevTools/Actors/NodeActor.cpp index b972a856d19..27fe2aef829 100644 --- a/Libraries/LibDevTools/Actors/NodeActor.cpp +++ b/Libraries/LibDevTools/Actors/NodeActor.cpp @@ -93,11 +93,11 @@ NodeActor::NodeActor(DevToolsServer& devtools, String name, NodeIdentifier node_ NodeActor::~NodeActor() = default; -void NodeActor::handle_message(StringView type, JsonObject const& message) +void NodeActor::handle_message(Message const& message) { JsonObject response; - if (type == "getUniqueSelector"sv) { + if (message.type == "getUniqueSelector"sv) { auto dom_node = WalkerActor::dom_node_for(m_walker, name()); if (!dom_node.has_value()) { send_unknown_actor_error(name()); @@ -109,7 +109,7 @@ void NodeActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "modifyAttributes"sv) { + if (message.type == "modifyAttributes"sv) { auto modifications = get_required_parameter(message, "modifications"sv); if (!modifications.has_value()) return; @@ -132,7 +132,7 @@ void NodeActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "setNodeValue"sv) { + if (message.type == "setNodeValue"sv) { auto value = get_required_parameter(message, "value"sv); if (!value.has_value()) return; @@ -147,7 +147,7 @@ void NodeActor::handle_message(StringView type, JsonObject const& message) return; } - send_unrecognized_packet_type_error(type); + send_unrecognized_packet_type_error(message); } } diff --git a/Libraries/LibDevTools/Actors/NodeActor.h b/Libraries/LibDevTools/Actors/NodeActor.h index 71cc1a52378..dd081b7709f 100644 --- a/Libraries/LibDevTools/Actors/NodeActor.h +++ b/Libraries/LibDevTools/Actors/NodeActor.h @@ -29,13 +29,13 @@ public: static NonnullRefPtr create(DevToolsServer&, String name, NodeIdentifier, WeakPtr); virtual ~NodeActor() override; - virtual void handle_message(StringView type, JsonObject const&) override; - NodeIdentifier const& node_identifier() const { return m_node_identifier; } private: NodeActor(DevToolsServer&, String name, NodeIdentifier, WeakPtr); + virtual void handle_message(Message const&) override; + NodeIdentifier m_node_identifier; WeakPtr m_walker; diff --git a/Libraries/LibDevTools/Actors/PageStyleActor.cpp b/Libraries/LibDevTools/Actors/PageStyleActor.cpp index 2bb74430c8b..e239cd1ca4d 100644 --- a/Libraries/LibDevTools/Actors/PageStyleActor.cpp +++ b/Libraries/LibDevTools/Actors/PageStyleActor.cpp @@ -85,11 +85,11 @@ PageStyleActor::PageStyleActor(DevToolsServer& devtools, String name, WeakPtr(message, "node"sv); if (!node.has_value()) return; @@ -109,7 +109,7 @@ void PageStyleActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "getLayout"sv) { + if (message.type == "getLayout"sv) { auto node = get_required_parameter(message, "node"sv); if (!node.has_value()) return; @@ -121,13 +121,13 @@ void PageStyleActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "isPositionEditable") { + if (message.type == "isPositionEditable") { response.set("value"sv, false); send_message(move(response)); return; } - send_unrecognized_packet_type_error(type); + send_unrecognized_packet_type_error(message); } JsonValue PageStyleActor::serialize_style() const diff --git a/Libraries/LibDevTools/Actors/PageStyleActor.h b/Libraries/LibDevTools/Actors/PageStyleActor.h index 855fabd547a..7d05f80d759 100644 --- a/Libraries/LibDevTools/Actors/PageStyleActor.h +++ b/Libraries/LibDevTools/Actors/PageStyleActor.h @@ -24,12 +24,13 @@ public: static NonnullRefPtr create(DevToolsServer&, String name, WeakPtr); virtual ~PageStyleActor() override; - virtual void handle_message(StringView type, JsonObject const&) override; JsonValue serialize_style() const; private: PageStyleActor(DevToolsServer&, String name, WeakPtr); + virtual void handle_message(Message const&) override; + template void inspect_dom_node(StringView node_actor, Callback&&); diff --git a/Libraries/LibDevTools/Actors/PreferenceActor.cpp b/Libraries/LibDevTools/Actors/PreferenceActor.cpp index e893fd22cb7..e0164c3b1db 100644 --- a/Libraries/LibDevTools/Actors/PreferenceActor.cpp +++ b/Libraries/LibDevTools/Actors/PreferenceActor.cpp @@ -21,21 +21,21 @@ PreferenceActor::PreferenceActor(DevToolsServer& devtools, String name) PreferenceActor::~PreferenceActor() = default; -void PreferenceActor::handle_message(StringView type, JsonObject const&) +void PreferenceActor::handle_message(Message const& message) { // FIXME: During session initialization, Firefox DevTools asks for the following boolean configurations: // browser.privatebrowsing.autostart // devtools.debugger.prompt-connection // dom.serviceWorkers.enabled // We just blindly return `false` for these, but we will eventually want a real configuration manager. - if (type == "getBoolPref"sv) { + if (message.type == "getBoolPref"sv) { JsonObject response; response.set("value"sv, false); send_message(move(response)); return; } - send_unrecognized_packet_type_error(type); + send_unrecognized_packet_type_error(message); } } diff --git a/Libraries/LibDevTools/Actors/PreferenceActor.h b/Libraries/LibDevTools/Actors/PreferenceActor.h index b0a14e232cc..bc554c8ce6c 100644 --- a/Libraries/LibDevTools/Actors/PreferenceActor.h +++ b/Libraries/LibDevTools/Actors/PreferenceActor.h @@ -18,10 +18,10 @@ public: static NonnullRefPtr create(DevToolsServer&, String name); virtual ~PreferenceActor() override; - virtual void handle_message(StringView type, JsonObject const&) override; - private: PreferenceActor(DevToolsServer&, String name); + + virtual void handle_message(Message const&) override; }; } diff --git a/Libraries/LibDevTools/Actors/ProcessActor.cpp b/Libraries/LibDevTools/Actors/ProcessActor.cpp index dd71536f917..5846e92eb24 100644 --- a/Libraries/LibDevTools/Actors/ProcessActor.cpp +++ b/Libraries/LibDevTools/Actors/ProcessActor.cpp @@ -22,9 +22,9 @@ ProcessActor::ProcessActor(DevToolsServer& devtools, String name, ProcessDescrip ProcessActor::~ProcessActor() = default; -void ProcessActor::handle_message(StringView type, JsonObject const&) +void ProcessActor::handle_message(Message const& message) { - send_unrecognized_packet_type_error(type); + send_unrecognized_packet_type_error(message); } JsonObject ProcessActor::serialize_description() const diff --git a/Libraries/LibDevTools/Actors/ProcessActor.h b/Libraries/LibDevTools/Actors/ProcessActor.h index 1fc9160884b..7a651b7b4e3 100644 --- a/Libraries/LibDevTools/Actors/ProcessActor.h +++ b/Libraries/LibDevTools/Actors/ProcessActor.h @@ -24,14 +24,14 @@ public: static NonnullRefPtr create(DevToolsServer&, String name, ProcessDescription); virtual ~ProcessActor() override; - virtual void handle_message(StringView type, JsonObject const&) override; - ProcessDescription const& description() const { return m_description; } JsonObject serialize_description() const; private: ProcessActor(DevToolsServer&, String name, ProcessDescription); + virtual void handle_message(Message const&) override; + ProcessDescription m_description; }; diff --git a/Libraries/LibDevTools/Actors/RootActor.cpp b/Libraries/LibDevTools/Actors/RootActor.cpp index 473df7d01f9..0a2abb89585 100644 --- a/Libraries/LibDevTools/Actors/RootActor.cpp +++ b/Libraries/LibDevTools/Actors/RootActor.cpp @@ -41,16 +41,16 @@ RootActor::RootActor(DevToolsServer& devtools, String name) RootActor::~RootActor() = default; -void RootActor::handle_message(StringView type, JsonObject const& message) +void RootActor::handle_message(Message const& message) { JsonObject response; - if (type == "connect") { + if (message.type == "connect") { send_message(move(response)); return; } - if (type == "getRoot"sv) { + if (message.type == "getRoot"sv) { response.set("selected"sv, 0); for (auto const& actor : devtools().actor_registry()) { @@ -64,7 +64,7 @@ void RootActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "getProcess"sv) { + if (message.type == "getProcess"sv) { auto id = get_required_parameter(message, "id"sv); if (!id.has_value()) return; @@ -84,7 +84,7 @@ void RootActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "getTab"sv) { + if (message.type == "getTab"sv) { auto browser_id = get_required_parameter(message, "browserId"sv); if (!browser_id.has_value()) return; @@ -104,13 +104,13 @@ void RootActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "listAddons"sv) { + if (message.type == "listAddons"sv) { response.set("addons"sv, JsonArray {}); send_message(move(response)); return; } - if (type == "listProcesses"sv) { + if (message.type == "listProcesses"sv) { JsonArray processes; for (auto const& actor : devtools().actor_registry()) { @@ -123,13 +123,13 @@ void RootActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "listServiceWorkerRegistrations"sv) { + if (message.type == "listServiceWorkerRegistrations"sv) { response.set("registrations"sv, JsonArray {}); send_message(move(response)); return; } - if (type == "listTabs"sv) { + if (message.type == "listTabs"sv) { m_has_sent_tab_list_changed_since_last_list_tabs_request = false; JsonArray tabs; @@ -144,13 +144,13 @@ void RootActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "listWorkers"sv) { + if (message.type == "listWorkers"sv) { response.set("workers"sv, JsonArray {}); send_message(move(response)); return; } - send_unrecognized_packet_type_error(type); + send_unrecognized_packet_type_error(message); } void RootActor::send_tab_list_changed_message() diff --git a/Libraries/LibDevTools/Actors/RootActor.h b/Libraries/LibDevTools/Actors/RootActor.h index 4ace2e427d0..b600a899c8e 100644 --- a/Libraries/LibDevTools/Actors/RootActor.h +++ b/Libraries/LibDevTools/Actors/RootActor.h @@ -18,13 +18,13 @@ public: static NonnullRefPtr create(DevToolsServer&, String name); virtual ~RootActor() override; - virtual void handle_message(StringView type, JsonObject const&) override; - void send_tab_list_changed_message(); private: RootActor(DevToolsServer&, String name); + virtual void handle_message(Message const&) override; + // https://firefox-source-docs.mozilla.org/devtools/backend/protocol.html#the-request-reply-notify-pattern // the root actor sends at most one "tabListChanged" notification after each "listTabs" request. bool m_has_sent_tab_list_changed_since_last_list_tabs_request { false }; diff --git a/Libraries/LibDevTools/Actors/TabActor.cpp b/Libraries/LibDevTools/Actors/TabActor.cpp index b3ff6d8fa77..429c67d2928 100644 --- a/Libraries/LibDevTools/Actors/TabActor.cpp +++ b/Libraries/LibDevTools/Actors/TabActor.cpp @@ -28,11 +28,11 @@ TabActor::~TabActor() reset_selected_node(); } -void TabActor::handle_message(StringView type, JsonObject const&) +void TabActor::handle_message(Message const& message) { JsonObject response; - if (type == "getFavicon"sv) { + if (message.type == "getFavicon"sv) { // FIXME: Firefox DevTools wants a favicon URL here, but supplying a URL seems to prevent this tab from being // listed on the about:debugging page. Both Servo and Firefox itself supply `null` here. response.set("favicon"sv, JsonValue {}); @@ -40,7 +40,7 @@ void TabActor::handle_message(StringView type, JsonObject const&) return; } - if (type == "getWatcher"sv) { + if (message.type == "getWatcher"sv) { if (!m_watcher) m_watcher = devtools().register_actor(this); @@ -50,7 +50,7 @@ void TabActor::handle_message(StringView type, JsonObject const&) return; } - send_unrecognized_packet_type_error(type); + send_unrecognized_packet_type_error(message); } JsonObject TabActor::serialize_description() const diff --git a/Libraries/LibDevTools/Actors/TabActor.h b/Libraries/LibDevTools/Actors/TabActor.h index 880accab913..ef6d480a37b 100644 --- a/Libraries/LibDevTools/Actors/TabActor.h +++ b/Libraries/LibDevTools/Actors/TabActor.h @@ -25,8 +25,6 @@ public: static NonnullRefPtr create(DevToolsServer&, String name, TabDescription); virtual ~TabActor() override; - virtual void handle_message(StringView type, JsonObject const&) override; - TabDescription const& description() const { return m_description; } JsonObject serialize_description() const; @@ -35,6 +33,8 @@ public: private: TabActor(DevToolsServer&, String name, TabDescription); + virtual void handle_message(Message const&) override; + TabDescription m_description; WeakPtr m_watcher; }; diff --git a/Libraries/LibDevTools/Actors/TargetConfigurationActor.cpp b/Libraries/LibDevTools/Actors/TargetConfigurationActor.cpp index dcf2b2d0978..fc20703c24f 100644 --- a/Libraries/LibDevTools/Actors/TargetConfigurationActor.cpp +++ b/Libraries/LibDevTools/Actors/TargetConfigurationActor.cpp @@ -22,11 +22,11 @@ TargetConfigurationActor::TargetConfigurationActor(DevToolsServer& devtools, Str TargetConfigurationActor::~TargetConfigurationActor() = default; -void TargetConfigurationActor::handle_message(StringView type, JsonObject const& message) +void TargetConfigurationActor::handle_message(Message const& message) { JsonObject response; - if (type == "updateConfiguration"sv) { + if (message.type == "updateConfiguration"sv) { auto configuration = get_required_parameter(message, "configuration"sv); if (!configuration.has_value()) return; @@ -35,7 +35,7 @@ void TargetConfigurationActor::handle_message(StringView type, JsonObject const& return; } - send_unrecognized_packet_type_error(type); + send_unrecognized_packet_type_error(message); } JsonObject TargetConfigurationActor::serialize_configuration() const diff --git a/Libraries/LibDevTools/Actors/TargetConfigurationActor.h b/Libraries/LibDevTools/Actors/TargetConfigurationActor.h index ac37a93db7b..ee4d6dbf6e5 100644 --- a/Libraries/LibDevTools/Actors/TargetConfigurationActor.h +++ b/Libraries/LibDevTools/Actors/TargetConfigurationActor.h @@ -18,12 +18,12 @@ public: static NonnullRefPtr create(DevToolsServer&, String name); virtual ~TargetConfigurationActor() override; - virtual void handle_message(StringView type, JsonObject const&) override; - JsonObject serialize_configuration() const; private: TargetConfigurationActor(DevToolsServer&, String name); + + virtual void handle_message(Message const&) override; }; } diff --git a/Libraries/LibDevTools/Actors/ThreadActor.cpp b/Libraries/LibDevTools/Actors/ThreadActor.cpp index 8862122cf1f..f602a1b014f 100644 --- a/Libraries/LibDevTools/Actors/ThreadActor.cpp +++ b/Libraries/LibDevTools/Actors/ThreadActor.cpp @@ -20,9 +20,9 @@ ThreadActor::ThreadActor(DevToolsServer& devtools, String name) ThreadActor::~ThreadActor() = default; -void ThreadActor::handle_message(StringView type, JsonObject const&) +void ThreadActor::handle_message(Message const& message) { - send_unrecognized_packet_type_error(type); + send_unrecognized_packet_type_error(message); } } diff --git a/Libraries/LibDevTools/Actors/ThreadActor.h b/Libraries/LibDevTools/Actors/ThreadActor.h index 6381043266c..c403a1a381f 100644 --- a/Libraries/LibDevTools/Actors/ThreadActor.h +++ b/Libraries/LibDevTools/Actors/ThreadActor.h @@ -18,10 +18,10 @@ public: static NonnullRefPtr create(DevToolsServer&, String name); virtual ~ThreadActor() override; - virtual void handle_message(StringView type, JsonObject const&) override; - private: ThreadActor(DevToolsServer&, String name); + + virtual void handle_message(Message const&) override; }; } diff --git a/Libraries/LibDevTools/Actors/ThreadConfigurationActor.cpp b/Libraries/LibDevTools/Actors/ThreadConfigurationActor.cpp index 62c5ab39b9b..3a2bd7f7e1c 100644 --- a/Libraries/LibDevTools/Actors/ThreadConfigurationActor.cpp +++ b/Libraries/LibDevTools/Actors/ThreadConfigurationActor.cpp @@ -22,11 +22,11 @@ ThreadConfigurationActor::ThreadConfigurationActor(DevToolsServer& devtools, Str ThreadConfigurationActor::~ThreadConfigurationActor() = default; -void ThreadConfigurationActor::handle_message(StringView type, JsonObject const& message) +void ThreadConfigurationActor::handle_message(Message const& message) { JsonObject response; - if (type == "updateConfiguration"sv) { + if (message.type == "updateConfiguration"sv) { auto configuration = get_required_parameter(message, "configuration"sv); if (!configuration.has_value()) return; @@ -35,7 +35,7 @@ void ThreadConfigurationActor::handle_message(StringView type, JsonObject const& return; } - send_unrecognized_packet_type_error(type); + send_unrecognized_packet_type_error(message); } JsonObject ThreadConfigurationActor::serialize_configuration() const diff --git a/Libraries/LibDevTools/Actors/ThreadConfigurationActor.h b/Libraries/LibDevTools/Actors/ThreadConfigurationActor.h index 440d325b7ca..a3ada0c1139 100644 --- a/Libraries/LibDevTools/Actors/ThreadConfigurationActor.h +++ b/Libraries/LibDevTools/Actors/ThreadConfigurationActor.h @@ -18,12 +18,12 @@ public: static NonnullRefPtr create(DevToolsServer&, String name); virtual ~ThreadConfigurationActor() override; - virtual void handle_message(StringView type, JsonObject const&) override; - JsonObject serialize_configuration() const; private: ThreadConfigurationActor(DevToolsServer&, String name); + + virtual void handle_message(Message const&) override; }; } diff --git a/Libraries/LibDevTools/Actors/WalkerActor.cpp b/Libraries/LibDevTools/Actors/WalkerActor.cpp index 58d95ae499d..12618e27c63 100644 --- a/Libraries/LibDevTools/Actors/WalkerActor.cpp +++ b/Libraries/LibDevTools/Actors/WalkerActor.cpp @@ -43,11 +43,11 @@ WalkerActor::~WalkerActor() devtools().delegate().stop_listening_for_dom_mutations(tab->description()); } -void WalkerActor::handle_message(StringView type, JsonObject const& message) +void WalkerActor::handle_message(Message const& message) { JsonObject response; - if (type == "children"sv) { + if (message.type == "children"sv) { auto node = get_required_parameter(message, "node"sv); if (!node.has_value()) return; @@ -73,7 +73,7 @@ void WalkerActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "duplicateNode"sv) { + if (message.type == "duplicateNode"sv) { auto node = get_required_parameter(message, "node"sv); if (!node.has_value()) return; @@ -88,7 +88,7 @@ void WalkerActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "editTagName"sv) { + if (message.type == "editTagName"sv) { auto node = get_required_parameter(message, "node"sv); if (!node.has_value()) return; @@ -107,7 +107,7 @@ void WalkerActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "getLayoutInspector"sv) { + if (message.type == "getLayoutInspector"sv) { if (!m_layout_inspector) m_layout_inspector = devtools().register_actor(); @@ -119,7 +119,7 @@ void WalkerActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "getMutations"sv) { + if (message.type == "getMutations"sv) { response.set("mutations"sv, serialize_mutations()); send_message(move(response)); @@ -127,13 +127,13 @@ void WalkerActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "getOffsetParent"sv) { + if (message.type == "getOffsetParent"sv) { response.set("node"sv, JsonValue {}); send_message(move(response)); return; } - if (type == "innerHTML"sv) { + if (message.type == "innerHTML"sv) { auto node = get_required_parameter(message, "node"sv); if (!node.has_value()) return; @@ -152,7 +152,7 @@ void WalkerActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "insertAdjacentHTML") { + if (message.type == "insertAdjacentHTML") { // FIXME: This message also contains `value` and `position` parameters, containing the HTML to insert and the // location to insert it. For the "Create New Node" action, this is always "
" and "beforeEnd", // which is exactly what our WebView implementation currently supports. @@ -182,7 +182,7 @@ void WalkerActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "insertBefore"sv) { + if (message.type == "insertBefore"sv) { auto node = get_required_parameter(message, "node"sv); if (!node.has_value()) return; @@ -204,7 +204,7 @@ void WalkerActor::handle_message(StringView type, JsonObject const& message) } Optional sibling_node_id; - if (auto sibling = message.get_string("sibling"sv); sibling.has_value()) { + if (auto sibling = message.data.get_string("sibling"sv); sibling.has_value()) { auto sibling_dom_node = WalkerActor::dom_node_for(*this, *sibling); if (!sibling_dom_node.has_value()) { send_unknown_actor_error(*sibling); @@ -218,7 +218,7 @@ void WalkerActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "isInDOMTree"sv) { + if (message.type == "isInDOMTree"sv) { auto node = get_required_parameter(message, "node"sv); if (!node.has_value()) return; @@ -228,7 +228,7 @@ void WalkerActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "outerHTML"sv) { + if (message.type == "outerHTML"sv) { auto node = get_required_parameter(message, "node"sv); if (!node.has_value()) return; @@ -247,7 +247,7 @@ void WalkerActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "previousSibling"sv) { + if (message.type == "previousSibling"sv) { auto node = get_required_parameter(message, "node"sv); if (!node.has_value()) return; @@ -267,7 +267,7 @@ void WalkerActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "querySelector"sv) { + if (message.type == "querySelector"sv) { auto node = get_required_parameter(message, "node"sv); if (!node.has_value()) return; @@ -298,7 +298,7 @@ void WalkerActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "removeNode"sv) { + if (message.type == "removeNode"sv) { auto node = get_required_parameter(message, "node"sv); if (!node.has_value()) return; @@ -325,12 +325,12 @@ void WalkerActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "retainNode"sv) { + if (message.type == "retainNode"sv) { send_message(move(response)); return; } - if (type == "setOuterHTML"sv) { + if (message.type == "setOuterHTML"sv) { auto node = get_required_parameter(message, "node"sv); if (!node.has_value()) return; @@ -349,7 +349,7 @@ void WalkerActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "watchRootNode"sv) { + if (message.type == "watchRootNode"sv) { response.set("type"sv, "root-available"sv); response.set("node"sv, serialize_root()); send_message(move(response)); @@ -358,7 +358,7 @@ void WalkerActor::handle_message(StringView type, JsonObject const& message) return; } - send_unrecognized_packet_type_error(type); + send_unrecognized_packet_type_error(message); } bool WalkerActor::is_suitable_for_dom_inspection(JsonValue const& node) diff --git a/Libraries/LibDevTools/Actors/WalkerActor.h b/Libraries/LibDevTools/Actors/WalkerActor.h index 1c7099ca6df..617bbeca948 100644 --- a/Libraries/LibDevTools/Actors/WalkerActor.h +++ b/Libraries/LibDevTools/Actors/WalkerActor.h @@ -24,8 +24,6 @@ public: static NonnullRefPtr create(DevToolsServer&, String name, WeakPtr, JsonObject dom_tree); virtual ~WalkerActor() override; - virtual void handle_message(StringView type, JsonObject const&) override; - static bool is_suitable_for_dom_inspection(JsonValue const&); JsonValue serialize_root() const; @@ -40,6 +38,8 @@ public: private: WalkerActor(DevToolsServer&, String name, WeakPtr, JsonObject dom_tree); + virtual void handle_message(Message const&) override; + JsonValue serialize_node(JsonObject const&) const; Optional find_node_by_selector(JsonObject const& node, StringView selector); diff --git a/Libraries/LibDevTools/Actors/WatcherActor.cpp b/Libraries/LibDevTools/Actors/WatcherActor.cpp index e7bc6367fbe..272bb99d51c 100644 --- a/Libraries/LibDevTools/Actors/WatcherActor.cpp +++ b/Libraries/LibDevTools/Actors/WatcherActor.cpp @@ -33,11 +33,11 @@ WatcherActor::WatcherActor(DevToolsServer& devtools, String name, WeakPtr(message, "browsingContextID"sv); if (!browsing_context_id.has_value()) return; @@ -47,7 +47,7 @@ void WatcherActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "getTargetConfigurationActor"sv) { + if (message.type == "getTargetConfigurationActor"sv) { if (!m_target_configuration) m_target_configuration = devtools().register_actor(); @@ -56,7 +56,7 @@ void WatcherActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "getThreadConfigurationActor"sv) { + if (message.type == "getThreadConfigurationActor"sv) { if (!m_thread_configuration) m_thread_configuration = devtools().register_actor(); @@ -65,7 +65,7 @@ void WatcherActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "watchResources"sv) { + if (message.type == "watchResources"sv) { auto resource_types = get_required_parameter(message, "resourceTypes"sv); if (!resource_types.has_value()) return; @@ -83,7 +83,7 @@ void WatcherActor::handle_message(StringView type, JsonObject const& message) return; } - if (type == "watchTargets"sv) { + if (message.type == "watchTargets"sv) { auto target_type = get_required_parameter(message, "targetType"sv); if (!target_type.has_value()) return; @@ -108,7 +108,7 @@ void WatcherActor::handle_message(StringView type, JsonObject const& message) } } - send_unrecognized_packet_type_error(type); + send_unrecognized_packet_type_error(message); } JsonObject WatcherActor::serialize_description() const diff --git a/Libraries/LibDevTools/Actors/WatcherActor.h b/Libraries/LibDevTools/Actors/WatcherActor.h index 03c6017bf3a..812712eea05 100644 --- a/Libraries/LibDevTools/Actors/WatcherActor.h +++ b/Libraries/LibDevTools/Actors/WatcherActor.h @@ -18,13 +18,13 @@ public: static NonnullRefPtr create(DevToolsServer&, String name, WeakPtr); virtual ~WatcherActor() override; - virtual void handle_message(StringView type, JsonObject const&) override; - JsonObject serialize_description() const; private: WatcherActor(DevToolsServer&, String name, WeakPtr); + virtual void handle_message(Message const&) override; + WeakPtr m_tab; WeakPtr m_target; WeakPtr m_target_configuration; diff --git a/Libraries/LibDevTools/Connection.cpp b/Libraries/LibDevTools/Connection.cpp index 3bf9941893f..a748e8a4d91 100644 --- a/Libraries/LibDevTools/Connection.cpp +++ b/Libraries/LibDevTools/Connection.cpp @@ -88,9 +88,9 @@ ErrorOr Connection::on_ready_to_read() if (!message.is_object()) continue; - Core::deferred_invoke([this, message = move(message)]() { + Core::deferred_invoke([this, message = move(message)]() mutable { if (on_message_received) - on_message_received(message.as_object()); + on_message_received(move(message.as_object())); }); } diff --git a/Libraries/LibDevTools/Connection.h b/Libraries/LibDevTools/Connection.h index 9fe7490ee7c..4474eb5bf52 100644 --- a/Libraries/LibDevTools/Connection.h +++ b/Libraries/LibDevTools/Connection.h @@ -22,7 +22,7 @@ public: ~Connection(); Function on_connection_closed; - Function on_message_received; + Function on_message_received; void send_message(JsonValue const&); diff --git a/Libraries/LibDevTools/DevToolsServer.cpp b/Libraries/LibDevTools/DevToolsServer.cpp index ef6a419f3fc..adbbf605ac6 100644 --- a/Libraries/LibDevTools/DevToolsServer.cpp +++ b/Libraries/LibDevTools/DevToolsServer.cpp @@ -70,8 +70,8 @@ ErrorOr DevToolsServer::on_new_client() close_connection(); }; - m_connection->on_message_received = [this](auto const& message) { - on_message_received(message); + m_connection->on_message_received = [this](auto message) { + on_message_received(move(message)); }; m_root_actor = register_actor(); @@ -83,7 +83,7 @@ ErrorOr DevToolsServer::on_new_client() return {}; } -void DevToolsServer::on_message_received(JsonObject const& message) +void DevToolsServer::on_message_received(JsonObject message) { auto to = message.get_string("to"sv); if (!to.has_value()) { @@ -103,7 +103,7 @@ void DevToolsServer::on_message_received(JsonObject const& message) return; } - actor->value->handle_message(*type, message); + actor->value->message_received(*type, move(message)); } void DevToolsServer::close_connection() diff --git a/Libraries/LibDevTools/DevToolsServer.h b/Libraries/LibDevTools/DevToolsServer.h index 0d48ac99958..d256e518242 100644 --- a/Libraries/LibDevTools/DevToolsServer.h +++ b/Libraries/LibDevTools/DevToolsServer.h @@ -52,7 +52,7 @@ private: explicit DevToolsServer(DevToolsDelegate&, NonnullRefPtr); ErrorOr on_new_client(); - void on_message_received(JsonObject const&); + void on_message_received(JsonObject); void close_connection();