ax_node_data_mojom_traits.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // Copyright 2018 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 UI_ACCESSIBILITY_MOJOM_AX_NODE_DATA_MOJOM_TRAITS_H_
  5. #define UI_ACCESSIBILITY_MOJOM_AX_NODE_DATA_MOJOM_TRAITS_H_
  6. #include "ui/accessibility/ax_node_data.h"
  7. #include "ui/accessibility/ax_relative_bounds.h"
  8. #include "ui/accessibility/mojom/ax_node_data.mojom-shared.h"
  9. namespace mojo {
  10. template <>
  11. struct StructTraits<ax::mojom::AXNodeDataDataView, ui::AXNodeData> {
  12. static int32_t id(const ui::AXNodeData& p) { return p.id; }
  13. static ax::mojom::Role role(const ui::AXNodeData& p) { return p.role; }
  14. static uint32_t state(const ui::AXNodeData& p) { return p.state; }
  15. static uint64_t actions(const ui::AXNodeData& p) { return p.actions; }
  16. static const std::vector<std::pair<ax::mojom::StringAttribute, std::string>>&
  17. string_attributes(const ui::AXNodeData& p) {
  18. return p.string_attributes;
  19. }
  20. static const std::vector<std::pair<ax::mojom::IntAttribute, int32_t>>&
  21. int_attributes(const ui::AXNodeData& p) {
  22. return p.int_attributes;
  23. }
  24. static const std::vector<std::pair<ax::mojom::FloatAttribute, float>>&
  25. float_attributes(const ui::AXNodeData& p) {
  26. return p.float_attributes;
  27. }
  28. static const std::vector<std::pair<ax::mojom::BoolAttribute, bool>>&
  29. bool_attributes(const ui::AXNodeData& p) {
  30. return p.bool_attributes;
  31. }
  32. static const std::vector<
  33. std::pair<ax::mojom::IntListAttribute, std::vector<int32_t>>>&
  34. intlist_attributes(const ui::AXNodeData& p) {
  35. return p.intlist_attributes;
  36. }
  37. static const std::vector<
  38. std::pair<ax::mojom::StringListAttribute, std::vector<std::string>>>&
  39. stringlist_attributes(const ui::AXNodeData& p) {
  40. return p.stringlist_attributes;
  41. }
  42. static const std::vector<std::pair<std::string, std::string>>&
  43. html_attributes(const ui::AXNodeData& p) {
  44. return p.html_attributes;
  45. }
  46. static const std::vector<int32_t>& child_ids(const ui::AXNodeData& p) {
  47. return p.child_ids;
  48. }
  49. static ui::AXRelativeBounds relative_bounds(const ui::AXNodeData& p) {
  50. return p.relative_bounds;
  51. }
  52. static bool Read(ax::mojom::AXNodeDataDataView data, ui::AXNodeData* out);
  53. };
  54. } // namespace mojo
  55. #endif // UI_ACCESSIBILITY_MOJOM_AX_NODE_DATA_MOJOM_TRAITS_H_