screen_ai_ax_tree_serializer.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // Copyright 2022 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef COMPONENTS_SERVICES_SCREEN_AI_SCREEN_AI_AX_TREE_SERIALIZER_H_
  5. #define COMPONENTS_SERVICES_SCREEN_AI_SCREEN_AI_AX_TREE_SERIALIZER_H_
  6. #include <memory>
  7. #include <vector>
  8. #include "ui/accessibility/ax_node.h"
  9. #include "ui/accessibility/ax_node_data.h"
  10. #include "ui/accessibility/ax_serializable_tree.h"
  11. #include "ui/accessibility/ax_tree_serializer.h"
  12. #include "ui/accessibility/ax_tree_source.h"
  13. #include "ui/accessibility/ax_tree_update.h"
  14. namespace ui {
  15. class AXTreeID;
  16. } // namespace ui
  17. namespace screen_ai {
  18. // Enables an accessibility tree containing the results of the Screen AI process
  19. // to be efficiently serialized into an `AXTreeUpdate`. This efficiency is most
  20. // evident when partial updates to the tree have to be made.
  21. class ScreenAIAXTreeSerializer final {
  22. public:
  23. ScreenAIAXTreeSerializer(const ui::AXTreeID& parent_tree_id,
  24. std::vector<ui::AXNodeData>&& nodes);
  25. ScreenAIAXTreeSerializer(const ScreenAIAXTreeSerializer&) = delete;
  26. ScreenAIAXTreeSerializer& operator=(const ScreenAIAXTreeSerializer&) = delete;
  27. ~ScreenAIAXTreeSerializer();
  28. ui::AXTreeUpdate Serialize() const;
  29. private:
  30. const std::unique_ptr<ui::AXSerializableTree> tree_;
  31. std::unique_ptr<ui::AXTreeSource<const ui::AXNode*>> tree_source_;
  32. mutable std::unique_ptr<ui::AXTreeSerializer<const ui::AXNode*>> serializer_;
  33. };
  34. } // namespace screen_ai
  35. #endif // COMPONENTS_SERVICES_SCREEN_AI_SCREEN_AI_AX_TREE_SERIALIZER_H_