/src/serenity/Userland/Libraries/LibWeb/ARIA/ARIAMixin.h
Line | Count | Source |
1 | | /* |
2 | | * Copyright (c) 2022, Jonah Shafran <jonahshafran@gmail.com> |
3 | | * |
4 | | * SPDX-License-Identifier: BSD-2-Clause |
5 | | */ |
6 | | |
7 | | #pragma once |
8 | | |
9 | | #include <AK/String.h> |
10 | | #include <AK/Vector.h> |
11 | | #include <LibWeb/ARIA/AriaData.h> |
12 | | #include <LibWeb/ARIA/Roles.h> |
13 | | #include <LibWeb/WebIDL/ExceptionOr.h> |
14 | | |
15 | | namespace Web::ARIA { |
16 | | |
17 | | class ARIAMixin { |
18 | | |
19 | | public: |
20 | 0 | virtual ~ARIAMixin() = default; |
21 | | |
22 | | virtual Optional<String> role() const = 0; |
23 | | virtual WebIDL::ExceptionOr<void> set_role(Optional<String> const&) = 0; |
24 | | |
25 | | virtual Optional<String> aria_active_descendant() const = 0; |
26 | | virtual WebIDL::ExceptionOr<void> set_aria_active_descendant(Optional<String> const&) = 0; |
27 | | |
28 | | virtual Optional<String> aria_atomic() const = 0; |
29 | | virtual WebIDL::ExceptionOr<void> set_aria_atomic(Optional<String> const&) = 0; |
30 | | |
31 | | virtual Optional<String> aria_auto_complete() const = 0; |
32 | | virtual WebIDL::ExceptionOr<void> set_aria_auto_complete(Optional<String> const&) = 0; |
33 | | |
34 | | virtual Optional<String> aria_braille_label() const = 0; |
35 | | virtual WebIDL::ExceptionOr<void> set_aria_braille_label(Optional<String> const&) = 0; |
36 | | |
37 | | virtual Optional<String> aria_braille_role_description() const = 0; |
38 | | virtual WebIDL::ExceptionOr<void> set_aria_braille_role_description(Optional<String> const&) = 0; |
39 | | |
40 | | virtual Optional<String> aria_busy() const = 0; |
41 | | virtual WebIDL::ExceptionOr<void> set_aria_busy(Optional<String> const&) = 0; |
42 | | |
43 | | virtual Optional<String> aria_checked() const = 0; |
44 | | virtual WebIDL::ExceptionOr<void> set_aria_checked(Optional<String> const&) = 0; |
45 | | |
46 | | virtual Optional<String> aria_col_count() const = 0; |
47 | | virtual WebIDL::ExceptionOr<void> set_aria_col_count(Optional<String> const&) = 0; |
48 | | |
49 | | virtual Optional<String> aria_col_index() const = 0; |
50 | | virtual WebIDL::ExceptionOr<void> set_aria_col_index(Optional<String> const&) = 0; |
51 | | |
52 | | virtual Optional<String> aria_col_index_text() const = 0; |
53 | | virtual WebIDL::ExceptionOr<void> set_aria_col_index_text(Optional<String> const&) = 0; |
54 | | |
55 | | virtual Optional<String> aria_col_span() const = 0; |
56 | | virtual WebIDL::ExceptionOr<void> set_aria_col_span(Optional<String> const&) = 0; |
57 | | |
58 | | virtual Optional<String> aria_controls() const = 0; |
59 | | virtual WebIDL::ExceptionOr<void> set_aria_controls(Optional<String> const&) = 0; |
60 | | |
61 | | virtual Optional<String> aria_current() const = 0; |
62 | | virtual WebIDL::ExceptionOr<void> set_aria_current(Optional<String> const&) = 0; |
63 | | |
64 | | virtual Optional<String> aria_described_by() const = 0; |
65 | | virtual WebIDL::ExceptionOr<void> set_aria_described_by(Optional<String> const&) = 0; |
66 | | |
67 | | virtual Optional<String> aria_description() const = 0; |
68 | | virtual WebIDL::ExceptionOr<void> set_aria_description(Optional<String> const&) = 0; |
69 | | |
70 | | virtual Optional<String> aria_details() const = 0; |
71 | | virtual WebIDL::ExceptionOr<void> set_aria_details(Optional<String> const&) = 0; |
72 | | |
73 | | virtual Optional<String> aria_disabled() const = 0; |
74 | | virtual WebIDL::ExceptionOr<void> set_aria_disabled(Optional<String> const&) = 0; |
75 | | |
76 | | virtual Optional<String> aria_drop_effect() const = 0; |
77 | | virtual WebIDL::ExceptionOr<void> set_aria_drop_effect(Optional<String> const&) = 0; |
78 | | |
79 | | virtual Optional<String> aria_error_message() const = 0; |
80 | | virtual WebIDL::ExceptionOr<void> set_aria_error_message(Optional<String> const&) = 0; |
81 | | |
82 | | virtual Optional<String> aria_expanded() const = 0; |
83 | | virtual WebIDL::ExceptionOr<void> set_aria_expanded(Optional<String> const&) = 0; |
84 | | |
85 | | virtual Optional<String> aria_flow_to() const = 0; |
86 | | virtual WebIDL::ExceptionOr<void> set_aria_flow_to(Optional<String> const&) = 0; |
87 | | |
88 | | virtual Optional<String> aria_grabbed() const = 0; |
89 | | virtual WebIDL::ExceptionOr<void> set_aria_grabbed(Optional<String> const&) = 0; |
90 | | |
91 | | virtual Optional<String> aria_has_popup() const = 0; |
92 | | virtual WebIDL::ExceptionOr<void> set_aria_has_popup(Optional<String> const&) = 0; |
93 | | |
94 | | virtual Optional<String> aria_hidden() const = 0; |
95 | | virtual WebIDL::ExceptionOr<void> set_aria_hidden(Optional<String> const&) = 0; |
96 | | |
97 | | virtual Optional<String> aria_invalid() const = 0; |
98 | | virtual WebIDL::ExceptionOr<void> set_aria_invalid(Optional<String> const&) = 0; |
99 | | |
100 | | virtual Optional<String> aria_key_shortcuts() const = 0; |
101 | | virtual WebIDL::ExceptionOr<void> set_aria_key_shortcuts(Optional<String> const&) = 0; |
102 | | |
103 | | virtual Optional<String> aria_label() const = 0; |
104 | | virtual WebIDL::ExceptionOr<void> set_aria_label(Optional<String> const&) = 0; |
105 | | |
106 | | virtual Optional<String> aria_labelled_by() const = 0; |
107 | | virtual WebIDL::ExceptionOr<void> set_aria_labelled_by(Optional<String> const&) = 0; |
108 | | |
109 | | virtual Optional<String> aria_level() const = 0; |
110 | | virtual WebIDL::ExceptionOr<void> set_aria_level(Optional<String> const&) = 0; |
111 | | |
112 | | virtual Optional<String> aria_live() const = 0; |
113 | | virtual WebIDL::ExceptionOr<void> set_aria_live(Optional<String> const&) = 0; |
114 | | |
115 | | virtual Optional<String> aria_modal() const = 0; |
116 | | virtual WebIDL::ExceptionOr<void> set_aria_modal(Optional<String> const&) = 0; |
117 | | |
118 | | virtual Optional<String> aria_multi_line() const = 0; |
119 | | virtual WebIDL::ExceptionOr<void> set_aria_multi_line(Optional<String> const&) = 0; |
120 | | |
121 | | virtual Optional<String> aria_multi_selectable() const = 0; |
122 | | virtual WebIDL::ExceptionOr<void> set_aria_multi_selectable(Optional<String> const&) = 0; |
123 | | |
124 | | virtual Optional<String> aria_orientation() const = 0; |
125 | | virtual WebIDL::ExceptionOr<void> set_aria_orientation(Optional<String> const&) = 0; |
126 | | |
127 | | virtual Optional<String> aria_owns() const = 0; |
128 | | virtual WebIDL::ExceptionOr<void> set_aria_owns(Optional<String> const&) = 0; |
129 | | |
130 | | virtual Optional<String> aria_placeholder() const = 0; |
131 | | virtual WebIDL::ExceptionOr<void> set_aria_placeholder(Optional<String> const&) = 0; |
132 | | |
133 | | virtual Optional<String> aria_pos_in_set() const = 0; |
134 | | virtual WebIDL::ExceptionOr<void> set_aria_pos_in_set(Optional<String> const&) = 0; |
135 | | |
136 | | virtual Optional<String> aria_pressed() const = 0; |
137 | | virtual WebIDL::ExceptionOr<void> set_aria_pressed(Optional<String> const&) = 0; |
138 | | |
139 | | virtual Optional<String> aria_read_only() const = 0; |
140 | | virtual WebIDL::ExceptionOr<void> set_aria_read_only(Optional<String> const&) = 0; |
141 | | |
142 | | virtual Optional<String> aria_relevant() const = 0; |
143 | | virtual WebIDL::ExceptionOr<void> set_aria_relevant(Optional<String> const&) = 0; |
144 | | |
145 | | virtual Optional<String> aria_required() const = 0; |
146 | | virtual WebIDL::ExceptionOr<void> set_aria_required(Optional<String> const&) = 0; |
147 | | |
148 | | virtual Optional<String> aria_role_description() const = 0; |
149 | | virtual WebIDL::ExceptionOr<void> set_aria_role_description(Optional<String> const&) = 0; |
150 | | |
151 | | virtual Optional<String> aria_row_count() const = 0; |
152 | | virtual WebIDL::ExceptionOr<void> set_aria_row_count(Optional<String> const&) = 0; |
153 | | |
154 | | virtual Optional<String> aria_row_index() const = 0; |
155 | | virtual WebIDL::ExceptionOr<void> set_aria_row_index(Optional<String> const&) = 0; |
156 | | |
157 | | virtual Optional<String> aria_row_index_text() const = 0; |
158 | | virtual WebIDL::ExceptionOr<void> set_aria_row_index_text(Optional<String> const&) = 0; |
159 | | |
160 | | virtual Optional<String> aria_row_span() const = 0; |
161 | | virtual WebIDL::ExceptionOr<void> set_aria_row_span(Optional<String> const&) = 0; |
162 | | |
163 | | virtual Optional<String> aria_selected() const = 0; |
164 | | virtual WebIDL::ExceptionOr<void> set_aria_selected(Optional<String> const&) = 0; |
165 | | |
166 | | virtual Optional<String> aria_set_size() const = 0; |
167 | | virtual WebIDL::ExceptionOr<void> set_aria_set_size(Optional<String> const&) = 0; |
168 | | |
169 | | virtual Optional<String> aria_sort() const = 0; |
170 | | virtual WebIDL::ExceptionOr<void> set_aria_sort(Optional<String> const&) = 0; |
171 | | |
172 | | virtual Optional<String> aria_value_max() const = 0; |
173 | | virtual WebIDL::ExceptionOr<void> set_aria_value_max(Optional<String> const&) = 0; |
174 | | |
175 | | virtual Optional<String> aria_value_min() const = 0; |
176 | | virtual WebIDL::ExceptionOr<void> set_aria_value_min(Optional<String> const&) = 0; |
177 | | |
178 | | virtual Optional<String> aria_value_now() const = 0; |
179 | | virtual WebIDL::ExceptionOr<void> set_aria_value_now(Optional<String> const&) = 0; |
180 | | |
181 | | virtual Optional<String> aria_value_text() const = 0; |
182 | | virtual WebIDL::ExceptionOr<void> set_aria_value_text(Optional<String> const&) = 0; |
183 | | |
184 | | // https://www.w3.org/TR/html-aria/#docconformance |
185 | 0 | virtual Optional<Role> default_role() const { return {}; } |
186 | | |
187 | | Optional<Role> role_or_default() const; |
188 | | |
189 | | // https://www.w3.org/TR/wai-aria-1.2/#tree_exclusion |
190 | | virtual bool exclude_from_accessibility_tree() const = 0; |
191 | | |
192 | | // https://www.w3.org/TR/wai-aria-1.2/#tree_inclusion |
193 | | virtual bool include_in_accessibility_tree() const = 0; |
194 | | |
195 | | bool has_global_aria_attribute() const; |
196 | | |
197 | | // https://www.w3.org/TR/wai-aria-1.2/#valuetype_idref |
198 | | Optional<String> parse_id_reference(Optional<String> const&) const; |
199 | | |
200 | | // https://www.w3.org/TR/wai-aria-1.2/#valuetype_idref_list |
201 | | Vector<String> parse_id_reference_list(Optional<String> const&) const; |
202 | | |
203 | | protected: |
204 | 0 | ARIAMixin() = default; |
205 | | |
206 | | virtual bool id_reference_exists(String const&) const = 0; |
207 | | }; |
208 | | |
209 | | } |