/* * Copyright (c) 2025, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace DevTools { class DEVTOOLS_API AccessibilityWalkerActor final : public Actor { public: static constexpr auto base_name = "accessibility-walker"sv; static NonnullRefPtr create(DevToolsServer&, String name, WeakPtr, JsonObject accessibility_tree); virtual ~AccessibilityWalkerActor() override; static bool is_suitable_for_accessibility_inspection(JsonValue const&); JsonValue serialize_root() const; JsonValue serialize_node(JsonObject const&) const; static Optional accessibility_node_for(WeakPtr const&, StringView actor); Optional accessibility_node(StringView actor); static Optional parent_of_accessibility_node_for(WeakPtr const&, Node const&); Optional parent_of_accessibility_node(Node const&); static Optional root_accessibility_node_for(WeakPtr const&); Optional root_accessibility_node(); private: AccessibilityWalkerActor(DevToolsServer&, String name, WeakPtr, JsonObject accessibility_tree); virtual void handle_message(Message const&) override; void populate_accessibility_tree_cache(); void populate_accessibility_tree_cache(JsonObject& node, JsonObject const* parent); AccessibilityNodeActor const& actor_for_node(JsonObject const& node); WeakPtr m_tab; JsonObject m_accessibility_tree; HashMap m_node_to_parent_map; HashMap m_actor_to_node_map; HashMap m_node_id_to_actor_map; HashMap> m_node_actors; }; }