1/*
2 * Copyright (C) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#ifndef ACCESSIBILITY_DEFINE_H
17#define ACCESSIBILITY_DEFINE_H
18
19#include <cstdint>
20#include <string>
21#include <vector>
22#include <map>
23#include "accessibility_constants.h"
24
25namespace OHOS {
26namespace AccessibilityConfig {
27
28enum DALTONIZATION_TYPE : uint32_t {
29    Normal = 0,
30    Protanomaly,
31    Deuteranomaly,
32    Tritanomaly,
33};
34
35enum CLICK_RESPONSE_TIME : uint32_t {
36    ResponseDelayShort = 0,
37    ResponseDelayMedium,
38    ResponseDelayLong,
39};
40
41enum IGNORE_REPEAT_CLICK_TIME : uint32_t {
42    RepeatClickTimeoutShortest = 0,
43    RepeatClickTimeoutShort,
44    RepeatClickTimeoutMedium,
45    RepeatClickTimeoutLong,
46    RepeatClickTimeoutLongest,
47};
48}
49}
50
51namespace OHOS {
52namespace Accessibility {
53enum RetError : int32_t {
54    RET_OK = 0,
55    RET_ERR_FAILED = -1,
56    RET_ERR_INVALID_PARAM = 1001,
57    RET_ERR_NULLPTR,
58    RET_ERR_IPC_FAILED,
59    RET_ERR_SAMGR,
60    RET_ERR_NO_PERMISSION,
61    RET_ERR_NOT_SYSTEM_APP,
62    RET_ERR_TIME_OUT,
63    RET_ERR_TREE_TOO_BIG,
64    RET_ERR_TOKEN_ID,
65
66    RET_ERR_REGISTER_EXIST = 4001,
67    RET_ERR_NO_REGISTER,
68    RET_ERR_CONNECTION_EXIST,
69    RET_ERR_NO_CONNECTION,
70    RET_ERR_NO_WINDOW_CONNECTION,
71    RET_ERR_NO_CAPABILITY,
72    RET_ERR_INVALID_ELEMENT_INFO_FROM_ACE,
73    RET_ERR_PERFORM_ACTION_FAILED_BY_ACE,
74    RET_ERR_NO_INJECTOR,
75    RET_ERR_NOT_INSTALLED,
76    RET_ERR_NOT_ENABLED,
77    RET_ERR_PROPERTY_NOT_EXIST,
78    RET_ERR_ACTION_NOT_SUPPORT,
79};
80
81enum SET_AA_CALLBACK_RESULT : int32_t {
82    FIND_ACCESSIBILITY_NODE_BY_ACCESSIBILITY_ID = 2,
83    FIND_ACCESSIBILITY_NODE_BY_VIEW_ID,
84    FIND_ACCESSIBILITY_NODE_BY_TEXT,
85    FIND_FOCUS,
86    FIND_FOCUS_SEARCH,
87};
88
89enum TARGET_NAME : int32_t {
90    HIGH_CONTRAST_TEXT = 0,
91    INVERT_COLOR,
92    DALTONIZATION_COLOR_FILTER,
93    CONTENT_TIMEOUT,
94    ANIMATION_OFF,
95    BRIGHTNESS_DISCOUNT,
96    AUDIO_MONO,
97    AUDIO_BALANCE,
98    MOUSE_KEY,
99    CAPTION_STATE,
100    CAPTION_STYLE,
101    SCREEN_MAGNIFICATION,
102    MOUSE_AUTOCLICK,
103};
104
105enum GlobalAction : uint32_t {
106    GLOBAL_ACTION_BACK = 0,
107    GLOBAL_ACTION_HOME = 1,
108    GLOBAL_ACTION_RECENT = 2,
109    GLOBAL_ACTION_NOTIFICATION = 3,
110    GLOBAL_ACTION_LOCK_SCREEN = 4,
111    GLOBAL_ACTION_MAX,
112    GLOBAL_ACTION_INVALID = 0xFFFFFFFF,
113};
114
115enum AbilityStateType : int32_t {
116    ABILITY_STATE_INVALID = 0,
117    ABILITY_STATE_ENABLE,
118    ABILITY_STATE_DISABLE,
119    ABILITY_STATE_INSTALLED,
120};
121
122// The capability types of the accessible ability.
123enum Capability : uint32_t {
124    CAPABILITY_RETRIEVE = 0x0001,
125    CAPABILITY_TOUCH_GUIDE = 0x0002,
126    CAPABILITY_GESTURE = 0x0004,
127    CAPABILITY_KEY_EVENT_OBSERVER = 0x0008,
128    CAPABILITY_ZOOM = 0x0010,
129};
130
131// The accessibility ability types for feedbacks.
132enum AccessibilityAbilityTypes : uint32_t {
133    ACCESSIBILITY_ABILITY_TYPE_INVALID = 0x00000000,
134    ACCESSIBILITY_ABILITY_TYPE_SPOKEN = 0x00000001,
135    ACCESSIBILITY_ABILITY_TYPE_HAPTIC = 0x00000002,
136    ACCESSIBILITY_ABILITY_TYPE_AUDIBLE = 0x00000004,
137    ACCESSIBILITY_ABILITY_TYPE_VISUAL = 0x00000008,
138    ACCESSIBILITY_ABILITY_TYPE_GENERIC = 0x00000010,
139    ACCESSIBILITY_ABILITY_TYPE_ALL = 0xFFFFFFFF,
140};
141
142enum CaptionMode : int32_t {
143    CAPTION_BLACK_WHITE = 0,  // CAPTION_background_foreground
144    CAPTION_WHITE_BLACK,
145    CAPTION_BLACK_YELLOW,
146    CAPTION_BLUE_YELLOW,
147    CAPTION_CUSTOM,
148    CAPTION_MODE_MAX,
149};
150
151enum CaptionEdge : int32_t {
152    CAPTION_EDGE_NONEB = 0,
153    CAPTION_EDGE_OUTLINE,
154    CAPTION_EDGE_DROP_SHADOW,
155    CAPTION_EDGE_RAISED,
156    CAPTION_EDGE_DEPRESSED,
157};
158
159enum ActionType : int32_t {
160    ACCESSIBILITY_ACTION_INVALID = 0,
161    ACCESSIBILITY_ACTION_FOCUS =  0x00000001,
162    ACCESSIBILITY_ACTION_CLEAR_FOCUS = 0x00000002,
163    ACCESSIBILITY_ACTION_SPAN_CLICK = 0x00000003,
164    ACCESSIBILITY_ACTION_SELECT = 0x00000004,
165    ACCESSIBILITY_ACTION_CLEAR_SELECTION = 0x00000008,
166    ACCESSIBILITY_ACTION_CLICK = 0x00000010,
167    ACCESSIBILITY_ACTION_LONG_CLICK = 0x00000020,
168    ACCESSIBILITY_ACTION_ACCESSIBILITY_FOCUS = 0x00000040,
169    ACCESSIBILITY_ACTION_CLEAR_ACCESSIBILITY_FOCUS = 0x00000080,
170    ACCESSIBILITY_ACTION_SCROLL_FORWARD = 0x00000100,
171    ACCESSIBILITY_ACTION_SCROLL_BACKWARD = 0x00000200,
172    ACCESSIBILITY_ACTION_COPY = 0x00000400,
173    ACCESSIBILITY_ACTION_PASTE = 0x00000800,
174    ACCESSIBILITY_ACTION_CUT = 0x00001000,
175    ACCESSIBILITY_ACTION_SET_SELECTION = 0x00002000,
176    ACCESSIBILITY_ACTION_SET_TEXT = 0x00004000,
177    ACCESSIBILITY_ACTION_SET_CURSOR_POSITION = 0x00100000,
178    ACCESSIBILITY_ACTION_NEXT_TEXT = 0x00200000,
179    ACCESSIBILITY_ACTION_PREVIOUS_TEXT = 0x00400000,
180    ACCESSIBILITY_ACTION_UNFOLD = 0x00800000,
181    ACCESSIBILITY_ACTION_FOLD = 0x01000000,
182    ACCESSIBILITY_ACTION_NEXT_HTML_ITEM = 0x02000000,
183    ACCESSIBILITY_ACTION_PREVIOUS_HTML_ITEM = 0x04000000,
184    ACCESSIBILITY_ACTION_DELETED = 0x08000000,
185    ACCESSIBILITY_ACTION_COMMON = 0x10000000,
186    ACCESSIBILITY_ACTION_HOME = 0x00010000,
187    ACCESSIBILITY_ACTION_BACK = 0x00020000,
188    ACCESSIBILITY_ACTION_RECENTTASK = 0x00040000,
189    ACCESSIBILITY_ACTION_NOTIFICATIONCENTER = 0x00080000,
190    ACCESSIBILITY_ACTION_CONTROLCENTER = 0x00008000,
191    ACCESSIBILITY_ACTION_TYPE_MASK = 0x1FFFFFFF,
192};
193
194// text move step
195enum TextMoveUnit : int32_t {
196    STEP_INVALID = 0,
197    STEP_CHARACTER = 0x00000001,
198    STEP_WORD = 0x00000002,
199    STEP_LINE = 0x00000004,
200    STEP_PAGE = 0x00000008,
201    STEP_PARAGRAPH = 0x00000010,
202};
203
204enum FocusMoveDirection : int32_t {
205    DIRECTION_INVALID = 0,
206    UP = 0x00000001,
207    DOWN = 0x00000002,
208    LEFT = 0x00000004,
209    RIGHT = 0x00000008,
210    FORWARD = 0x00000010,
211    BACKWARD = 0x00000020,
212};
213
214enum WindowUpdateType : int32_t {
215    WINDOW_UPDATE_INVALID = 0,
216    WINDOW_UPDATE_ACCESSIBILITY_FOCUSED = 0x00000001,
217    WINDOW_UPDATE_FOCUSED = 0x00000002,
218    WINDOW_UPDATE_ACTIVE = 0x00000004,
219    WINDOW_UPDATE_ADDED = 0x00000008,
220    WINDOW_UPDATE_REMOVED = 0x00000010,
221    WINDOW_UPDATE_BOUNDS = 0x00000020,
222    WINDOW_UPDATE_TITLE = 0x00000040,
223    WINDOW_UPDATE_LAYER = 0x00000080,
224    WINDOW_UPDATE_PARENT = 0x00000100,
225    WINDOW_UPDATE_CHILDREN = 0x00000200,
226    WINDOW_UPDATE_PIP = 0x00000400,
227    WINDOW_UPDATE_PROPERTY = 0x00000800,
228};
229
230enum WindowsContentChangeTypes : int32_t {
231    CONTENT_CHANGE_TYPE_INVALID = 0,
232    CONTENT_CHANGE_TYPE_SUBTREE = 0x00000001,
233    CONTENT_CHANGE_TYPE_TEXT = 0x00000002,
234    CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 0x00000004,
235};
236
237enum EventType : uint32_t {
238    TYPE_VIEW_INVALID = 0,
239    TYPE_VIEW_CLICKED_EVENT = 0x00000001,
240    TYPE_VIEW_LONG_CLICKED_EVENT = 0x00000002,
241    TYPE_VIEW_SELECTED_EVENT = 0x00000004,
242    TYPE_VIEW_FOCUSED_EVENT = 0x00000008,
243    TYPE_VIEW_TEXT_UPDATE_EVENT = 0x00000010,
244    TYPE_PAGE_STATE_UPDATE = 0x00000020,
245    TYPE_NOTIFICATION_UPDATE_EVENT = 0x00000040,
246    TYPE_VIEW_HOVER_ENTER_EVENT = 0x00000080,
247    TYPE_VIEW_HOVER_EXIT_EVENT = 0x00000100,
248    TYPE_TOUCH_GUIDE_GESTURE_BEGIN = 0x00000200,
249    TYPE_TOUCH_GUIDE_GESTURE_END = 0x00000400,
250    TYPE_PAGE_CONTENT_UPDATE = 0x00000800,
251    TYPE_VIEW_SCROLLED_EVENT = 0x000001000,
252    TYPE_VIEW_TEXT_SELECTION_UPDATE_EVENT = 0x000002000,
253    TYPE_PUBLIC_NOTICE_EVENT = 0x00004000,
254    TYPE_VIEW_ACCESSIBILITY_FOCUSED_EVENT = 0x00008000,
255    TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED_EVENT = 0x00010000,
256    TYPE_VIEW_TEXT_MOVE_UNIT_EVENT = 0x00020000,
257    TYPE_TOUCH_GUIDE_BEGIN = 0x00040000,
258    TYPE_TOUCH_GUIDE_END = 0x00080000,
259    TYPE_TOUCH_BEGIN = 0x00100000,
260    TYPE_TOUCH_END = 0x00200000,
261    TYPE_WINDOW_UPDATE = 0x00400000,
262    TYPE_INTERRUPT_EVENT = 0x00800000,
263    TYPE_GESTURE_EVENT = 0x01000000,
264    TYPE_VIEW_REQUEST_FOCUS_FOR_ACCESSIBILITY = 0x02000000,
265    TYPE_VIEW_SCROLLED_START = 0x04000000,
266    TYPE_PAGE_CLOSE = 0x08000000,
267    TYPE_VIEW_ANNOUNCE_FOR_ACCESSIBILITY = 0x10000000,
268    TYPE_PAGE_OPEN = 0x20000000,
269    TYPE_MAX_NUM = 0x80000000,
270    TYPES_ALL_MASK = 0xFFFFFFFF,
271};
272
273enum NotificationCategory : int32_t {
274    CATEGORY_INVALID = 0,
275    CATEGORY_CALL = 0x00000001,
276    CATEGORY_MSG = 0x00000002,
277    CATEGORY_EMAIL = 0x00000004,
278    CATEGORY_EVENT = 0x00000008,
279    CATEGORY_PROMO = 0x00000010,
280    CATEGORY_ALARM = 0x00000020,
281    CATEGORY_PROGRESS = 0x00000040,
282    CATEGORY_SOCIAL = 0x00000080,
283    CATEGORY_ERR = 0x00000100,
284    CATEGORY_TRANSPORT = 0x00000200,
285    CATEGORY_SYS = 0x00000400,
286    CATEGORY_SERVICE = 0x00000800,
287    CATEGORY_OTHERS = 0x00001000,
288};
289
290// The types of swipe gestures which are performed on the touch screen.
291enum GestureType : uint32_t {
292    GESTURE_INVALID = 0,
293    GESTURE_SWIPE_UP = 0x0001,
294    GESTURE_SWIPE_DOWN = 0x0002,
295    GESTURE_SWIPE_LEFT = 0x0003,
296    GESTURE_SWIPE_RIGHT = 0x0004,
297    GESTURE_SWIPE_LEFT_THEN_RIGHT = 0x0005,
298    GESTURE_SWIPE_RIGHT_THEN_LEFT = 0x0006,
299    GESTURE_SWIPE_UP_THEN_DOWN = 0x0007,
300    GESTURE_SWIPE_DOWN_THEN_UP = 0x0008,
301    GESTURE_SWIPE_LEFT_THEN_UP = 0x0009,
302    GESTURE_SWIPE_LEFT_THEN_DOWN = 0x000A,
303    GESTURE_SWIPE_RIGHT_THEN_UP = 0x000B,
304    GESTURE_SWIPE_RIGHT_THEN_DOWN = 0x000C,
305    GESTURE_SWIPE_UP_THEN_LEFT = 0x000D,
306    GESTURE_SWIPE_UP_THEN_RIGHT = 0x000E,
307    GESTURE_SWIPE_DOWN_THEN_LEFT = 0x000F,
308    GESTURE_SWIPE_DOWN_THEN_RIGHT = 0x0010,
309
310    GESTURE_TAP = 0x0011,
311    GESTURE_DOUBLETAP = 0x0012,
312    GESTURE_DOUBLETAP_HOLD = 0x0013,
313    GESTURE_DRAG = 0x0014,
314    GESTURE_SWIPE_SLOWLY = 0x0015,
315    GESTURE_TRIPLETAP = 0x0016,
316    GESTURE_SCALE = 0x0017,
317    GESTURE_SCROLL = 0x0018,
318    GESTURE_TWO_FINGER_SINGLE_TAP = 0x0019,
319    GESTURE_TWO_FINGER_DOUBLE_TAP = 0x001A,
320    GESTURE_TWO_FINGER_DOUBLE_TAP_AND_HOLD = 0x001B,
321    GESTURE_TWO_FINGER_TRIPLE_TAP = 0x001C,
322    GESTURE_TWO_FINGER_TRIPLE_TAP_AND_HOLD = 0x001D,
323    GESTURE_THREE_FINGER_SINGLE_TAP = 0x001E,
324    GESTURE_THREE_FINGER_DOUBLE_TAP = 0x001F,
325    GESTURE_THREE_FINGER_DOUBLE_TAP_AND_HOLD = 0x0020,
326    GESTURE_THREE_FINGER_TRIPLE_TAP = 0x0021,
327    GESTURE_THREE_FINGER_TRIPLE_TAP_AND_HOLD = 0x0022,
328    GESTURE_FOUR_FINGER_SINGLE_TAP = 0x0023,
329    GESTURE_FOUR_FINGER_DOUBLE_TAP = 0x0024,
330    GESTURE_FOUR_FINGER_DOUBLE_TAP_AND_HOLD = 0x0025,
331    GESTURE_FOUR_FINGER_TRIPLE_TAP = 0x0026,
332    GESTURE_FOUR_FINGER_TRIPLE_TAP_AND_HOLD = 0x0027,
333    GESTURE_THREE_FINGER_SWIPE_UP = 0x0028,
334    GESTURE_THREE_FINGER_SWIPE_DOWN = 0x0029,
335    GESTURE_THREE_FINGER_SWIPE_LEFT = 0x002A,
336    GESTURE_THREE_FINGER_SWIPE_RIGHT = 0x002B,
337    GESTURE_FOUR_FINGER_SWIPE_UP = 0x002C,
338    GESTURE_FOUR_FINGER_SWIPE_DOWN = 0x002D,
339    GESTURE_FOUR_FINGER_SWIPE_LEFT = 0x002E,
340    GESTURE_FOUR_FINGER_SWIPE_RIGHT = 0x002F,
341    GESTURE_GESTURE_ALL = 0xFFFFFFFF
342};
343
344enum AccessibilityWindowType : int32_t {
345    TYPE_WINDOW_INVALID = 0,
346    TYPE_ACCESSIBILITY_OVERLAY = 0x00000001,
347    TYPE_APPLICATION = 0x00000002,
348    TYPE_INPUT_METHOD = 0x00000004,
349    TYPE_SPLIT_SCREEN_DIVIDER = 0x00000008,
350    TYPE_SYSTEM = 0x00000010,
351};
352
353struct Registration {
354    int32_t windowId = 0;
355    int32_t parentWindowId = 0;
356    int32_t parentTreeId = 0;
357    int64_t elementId = 0;
358};
359
360struct ElementBasicInfo {
361    int32_t windowId = -2;
362    int32_t treeId = -2;
363    int64_t elementId = -2;
364};
365
366constexpr int32_t PARAM0 = 0;
367constexpr int32_t PARAM1 = 1;
368constexpr int32_t PARAM2 = 2;
369} // namespace Accessibility
370} // namespace OHOS
371
372constexpr size_t CALLBACK_SIZE = 1;
373constexpr size_t ARGS_SIZE_ZERO = 0;
374constexpr size_t ARGS_SIZE_ONE = 1;
375constexpr size_t ARGS_SIZE_TWO = 2;
376constexpr size_t ARGS_SIZE_THREE = 3;
377constexpr size_t ARGS_SIZE_FOUR = 4;
378constexpr int32_t DEFAULT_INT32 = 0;
379constexpr int32_t CODE_SUCCESS = 0;
380constexpr int32_t CODE_FAILED = -1;
381constexpr int32_t CHAE_BUFFER_MAX = 1024;
382const std::string ERROR_MESSAGE_PARAMETER_ERROR = "Parameter error. Possible causes:"
383    "1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.";
384const std::string ERROR_MESSAGE_NO_PERMISSION = "Permission verification failed."
385    "The application does not have the permission required to call the API.";
386const std::string ERROR_MESSAGE_NOT_SYSTEM_APP = "Permission verification failed."
387    "A non-system application calls a system API.";
388const std::string ERROR_MESSAGE_NO_RIGHT = "No accessibility permission to perform the operation";
389const std::string ERROR_MESSAGE_SYSTEM_ABNORMALITY = "System abnormality";
390const std::string ERROR_MESSAGE_PROPERTY_NOT_EXIST = "This property does not exist";
391const std::string ERROR_MESSAGE_ACTION_NOT_SUPPORT = "This action is not supported";
392const std::string ERROR_MESSAGE_INVALID_BUNDLE_NAME_OR_ABILITY_NAME = "Invalid bundle name or ability name";
393const std::string ERROR_MESSAGE_TARGET_ABILITY_ALREADY_ENABLED = "Target ability already enabled";
394
395enum class NAccessibilityErrorCode : int32_t {
396    ACCESSIBILITY_OK = 0,
397    ACCESSIBILITY_ERROR_NO_PERMISSION = 201,
398    ACCESSIBILITY_ERROR_NOT_SYSTEM_APP = 202,
399    ACCESSIBILITY_ERROR_INVALID_PARAM = 401,
400    ACCESSIBILITY_ERROR_SYSTEM_ABNORMALITY = 9300000,
401    ACCESSIBILITY_ERROR_ERROR_EXTENSION_NAME = 9300001,
402    ACCESSIBILITY_ERROR_TARGET_ABILITY_ALREADY_ENABLED = 9300002,
403    ACCESSIBILITY_ERROR_NO_RIGHT = 9300003,
404    ACCESSIBILITY_ERROR_PROPERTY_NOT_EXIST = 9300004,
405    ACCESSIBILITY_ERROR_ACTION_NOT_SUPPORT = 9300005,
406};
407
408struct NAccessibilityErrMsg {
409    NAccessibilityErrorCode errCode;
410    std::string message;
411};
412#endif // ACCESSIBILITY_DEFINE_H