LibDevTools: Stub out a layout inspector actor

The DevTools client will ask for this actor before trying to render any
box model or computed style information. We can just stub out this actor
for now.
This commit is contained in:
Timothy Flynn 2025-02-21 16:17:20 -05:00 committed by Tim Flynn
commit 3f8b65e45c
Notes: github-actions[bot] 2025-02-24 17:06:47 +00:00
6 changed files with 89 additions and 0 deletions

View file

@ -0,0 +1,45 @@
/*
* Copyright (c) 2025, Tim Flynn <trflynn89@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <AK/JsonArray.h>
#include <AK/JsonObject.h>
#include <LibDevTools/Actors/LayoutInspectorActor.h>
namespace DevTools {
NonnullRefPtr<LayoutInspectorActor> LayoutInspectorActor::create(DevToolsServer& devtools, String name)
{
return adopt_ref(*new LayoutInspectorActor(devtools, move(name)));
}
LayoutInspectorActor::LayoutInspectorActor(DevToolsServer& devtools, String name)
: Actor(devtools, move(name))
{
}
LayoutInspectorActor::~LayoutInspectorActor() = default;
void LayoutInspectorActor::handle_message(StringView type, JsonObject const&)
{
JsonObject response;
response.set("from"sv, name());
if (type == "getCurrentFlexbox"sv) {
response.set("flexbox"sv, JsonValue {});
send_message(move(response));
return;
}
if (type == "getGrids"sv) {
response.set("grids"sv, JsonArray {});
send_message(move(response));
return;
}
send_unrecognized_packet_type_error(type);
}
}

View file

@ -0,0 +1,27 @@
/*
* Copyright (c) 2025, Tim Flynn <trflynn89@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/NonnullRefPtr.h>
#include <LibDevTools/Actor.h>
namespace DevTools {
class LayoutInspectorActor final : public Actor {
public:
static constexpr auto base_name = "layout-inspector"sv;
static NonnullRefPtr<LayoutInspectorActor> create(DevToolsServer&, String name);
virtual ~LayoutInspectorActor() override;
virtual void handle_message(StringView type, JsonObject const&) override;
private:
LayoutInspectorActor(DevToolsServer&, String name);
};
}

View file

@ -6,6 +6,7 @@
#include <AK/JsonArray.h>
#include <AK/StringUtils.h>
#include <LibDevTools/Actors/LayoutInspectorActor.h>
#include <LibDevTools/Actors/NodeActor.h>
#include <LibDevTools/Actors/TabActor.h>
#include <LibDevTools/Actors/WalkerActor.h>
@ -59,6 +60,18 @@ void WalkerActor::handle_message(StringView type, JsonObject const& message)
return;
}
if (type == "getLayoutInspector"sv) {
if (!m_layout_inspector)
m_layout_inspector = devtools().register_actor<LayoutInspectorActor>();
JsonObject actor;
actor.set("actor"sv, m_layout_inspector->name());
response.set("actor"sv, move(actor));
send_message(move(response));
return;
}
if (type == "querySelector"sv) {
auto node = message.get_string("node"sv);
if (!node.has_value()) {

View file

@ -44,6 +44,8 @@ private:
void populate_dom_tree_cache(JsonObject& node, JsonObject const* parent = nullptr);
WeakPtr<TabActor> m_tab;
WeakPtr<LayoutInspectorActor> m_layout_inspector;
JsonObject m_dom_tree;
HashMap<JsonObject const*, JsonObject const*> m_dom_node_to_parent_map;

View file

@ -5,6 +5,7 @@ set(SOURCES
Actors/FrameActor.cpp
Actors/HighlighterActor.cpp
Actors/InspectorActor.cpp
Actors/LayoutInspectorActor.cpp
Actors/NodeActor.cpp
Actors/PageStyleActor.cpp
Actors/PreferenceActor.cpp

View file

@ -17,6 +17,7 @@ class DevToolsServer;
class FrameActor;
class HighlighterActor;
class InspectorActor;
class LayoutInspectorActor;
class NodeActor;
class PageStyleActor;
class PreferenceActor;