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 
5 #ifndef UI_ACCESSIBILITY_MOJOM_AX_ACTION_DATA_MOJOM_TRAITS_H_
6 #define UI_ACCESSIBILITY_MOJOM_AX_ACTION_DATA_MOJOM_TRAITS_H_
7 
8 #include "ui/accessibility/ax_action_data.h"
9 #include "ui/accessibility/mojom/ax_action_data.mojom-shared.h"
10 #include "ui/accessibility/mojom/ax_tree_id_mojom_traits.h"
11 #include "ui/gfx/geometry/mojom/geometry_mojom_traits.h"
12 
13 namespace mojo {
14 
15 template <>
16 struct StructTraits<ax::mojom::AXActionDataDataView, ui::AXActionData> {
17   static ax::mojom::Action action(const ui::AXActionData& a) {
18     return a.action;
19   }
20   static const ui::AXTreeID& target_tree_id(const ui::AXActionData& a) {
21     return a.target_tree_id;
22   }
23   static const std::string& source_extension_id(const ui::AXActionData& a) {
24     return a.source_extension_id;
25   }
26   static int32_t target_node_id(const ui::AXActionData& a) {
27     return a.target_node_id;
28   }
29   static int32_t request_id(const ui::AXActionData& a) { return a.request_id; }
30   static int32_t flags(const ui::AXActionData& a) { return a.flags; }
31   static int32_t anchor_node_id(const ui::AXActionData& a) {
32     return a.anchor_node_id;
33   }
34   static int32_t anchor_offset(const ui::AXActionData& a) {
35     return a.anchor_offset;
36   }
37   static int32_t focus_node_id(const ui::AXActionData& a) {
38     return a.focus_node_id;
39   }
40   static int32_t focus_offset(const ui::AXActionData& a) {
41     return a.focus_offset;
42   }
43   static int32_t custom_action_id(const ui::AXActionData& a) {
44     return a.custom_action_id;
45   }
46   static const gfx::Rect& target_rect(const ui::AXActionData& a) {
47     return a.target_rect;
48   }
49   static const gfx::Point& target_point(const ui::AXActionData& a) {
50     return a.target_point;
51   }
52   static const std::string& value(const ui::AXActionData& a) { return a.value; }
53   static ax::mojom::Event hit_test_event_to_fire(const ui::AXActionData& a) {
54     return a.hit_test_event_to_fire;
55   }
56   static ax::mojom::ScrollAlignment horizontal_scroll_alignment(
57       const ui::AXActionData& a) {
58     return a.horizontal_scroll_alignment;
59   }
60   static ax::mojom::ScrollAlignment vertical_scroll_alignment(
61       const ui::AXActionData& a) {
62     return a.vertical_scroll_alignment;
63   }
64   static ax::mojom::ScrollBehavior scroll_behavior(const ui::AXActionData& a) {
65     return a.scroll_behavior;
66   }
67 
68   static bool Read(ax::mojom::AXActionDataDataView data, ui::AXActionData* out);
69 };
70 
71 }  // namespace mojo
72 
73 #endif  // UI_ACCESSIBILITY_MOJOM_AX_ACTION_DATA_MOJOM_TRAITS_H_
74