• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
25 namespace OHOS {
26 namespace AccessibilityConfig {
27 
28 enum DALTONIZATION_TYPE : uint32_t {
29     Normal = 0,
30     Protanomaly,
31     Deuteranomaly,
32     Tritanomaly,
33 };
34 
35 }
36 }
37 
38 namespace OHOS {
39 namespace Accessibility {
40 enum RetError : int32_t {
41     RET_OK = 0,
42     RET_ERR_FAILED = -1,
43     RET_ERR_INVALID_PARAM = 1001,
44     RET_ERR_NULLPTR,
45     RET_ERR_IPC_FAILED,
46     RET_ERR_SAMGR,
47     RET_ERR_NO_PERMISSION,
48     RET_ERR_NOT_SYSTEM_APP,
49     RET_ERR_TIME_OUT,
50 
51     RET_ERR_REGISTER_EXIST = 4001,
52     RET_ERR_NO_REGISTER,
53     RET_ERR_CONNECTION_EXIST,
54     RET_ERR_NO_CONNECTION,
55     RET_ERR_NO_WINDOW_CONNECTION,
56     RET_ERR_NO_CAPABILITY,
57     RET_ERR_INVALID_ELEMENT_INFO_FROM_ACE,
58     RET_ERR_PERFORM_ACTION_FAILED_BY_ACE,
59     RET_ERR_NO_INJECTOR,
60     RET_ERR_NOT_INSTALLED,
61     RET_ERR_NOT_ENABLED,
62     RET_ERR_PROPERTY_NOT_EXIST,
63     RET_ERR_ACTION_NOT_SUPPORT,
64 };
65 
66 enum TARGET_NAME : int32_t {
67     HIGH_CONTRAST_TEXT = 0,
68     INVERT_COLOR,
69     DALTONIZATION_COLOR_FILTER,
70     CONTENT_TIMEOUT,
71     ANIMATION_OFF,
72     BRIGHTNESS_DISCOUNT,
73     AUDIO_MONO,
74     AUDIO_BALANCE,
75     MOUSE_KEY,
76     CAPTION_STATE,
77     CAPTION_STYLE,
78     SCREEN_MAGNIFICATION,
79     MOUSE_AUTOCLICK,
80 };
81 
82 enum GlobalAction : uint32_t {
83     GLOBAL_ACTION_BACK = 0,
84     GLOBAL_ACTION_HOME = 1,
85     GLOBAL_ACTION_RECENT = 2,
86     GLOBAL_ACTION_NOTIFICATION = 3,
87     GLOBAL_ACTION_LOCK_SCREEN = 4,
88     GLOBAL_ACTION_MAX,
89     GLOBAL_ACTION_INVALID = 0xFFFFFFFF,
90 };
91 
92 enum AbilityStateType : int32_t {
93     ABILITY_STATE_INVALID = 0,
94     ABILITY_STATE_ENABLE,
95     ABILITY_STATE_DISABLE,
96     ABILITY_STATE_INSTALLED,
97 };
98 
99 // The capability types of the accessible ability.
100 enum Capability : uint32_t {
101     CAPABILITY_RETRIEVE = 0x0001,
102     CAPABILITY_TOUCH_GUIDE = 0x0002,
103     CAPABILITY_GESTURE = 0x0004,
104     CAPABILITY_KEY_EVENT_OBSERVER = 0x0008,
105     CAPABILITY_ZOOM = 0x0010,
106 };
107 
108 // The accessibility ability types for feedbacks.
109 enum AccessibilityAbilityTypes : uint32_t {
110     ACCESSIBILITY_ABILITY_TYPE_INVALID = 0x00000000,
111     ACCESSIBILITY_ABILITY_TYPE_SPOKEN = 0x00000001,
112     ACCESSIBILITY_ABILITY_TYPE_HAPTIC = 0x00000002,
113     ACCESSIBILITY_ABILITY_TYPE_AUDIBLE = 0x00000004,
114     ACCESSIBILITY_ABILITY_TYPE_VISUAL = 0x00000008,
115     ACCESSIBILITY_ABILITY_TYPE_GENERIC = 0x00000010,
116     ACCESSIBILITY_ABILITY_TYPE_ALL = 0xFFFFFFFF,
117 };
118 
119 enum CaptionMode : int32_t {
120     CAPTION_BLACK_WHITE = 0,  // CAPTION_background_foreground
121     CAPTION_WHITE_BLACK,
122     CAPTION_BLACK_YELLOW,
123     CAPTION_BLUE_YELLOW,
124     CAPTION_CUSTOM,
125     CAPTION_MODE_MAX,
126 };
127 
128 enum CaptionEdge : int32_t {
129     CAPTION_EDGE_NONEB = 0,
130     CAPTION_EDGE_OUTLINE,
131     CAPTION_EDGE_DROP_SHADOW,
132     CAPTION_EDGE_RAISED,
133     CAPTION_EDGE_DEPRESSED,
134 };
135 
136 enum ActionType : int32_t {
137     ACCESSIBILITY_ACTION_INVALID = 0,
138     ACCESSIBILITY_ACTION_FOCUS =  0x00000001,
139     ACCESSIBILITY_ACTION_CLEAR_FOCUS = 0x00000002,
140     ACCESSIBILITY_ACTION_SELECT = 0x00000004,
141     ACCESSIBILITY_ACTION_CLEAR_SELECTION = 0x00000008,
142     ACCESSIBILITY_ACTION_CLICK = 0x00000010,
143     ACCESSIBILITY_ACTION_LONG_CLICK = 0x00000020,
144     ACCESSIBILITY_ACTION_ACCESSIBILITY_FOCUS = 0x00000040,
145     ACCESSIBILITY_ACTION_CLEAR_ACCESSIBILITY_FOCUS = 0x00000080,
146     ACCESSIBILITY_ACTION_SCROLL_FORWARD = 0x00000100,
147     ACCESSIBILITY_ACTION_SCROLL_BACKWARD = 0x00000200,
148     ACCESSIBILITY_ACTION_COPY = 0x00000400,
149     ACCESSIBILITY_ACTION_PASTE = 0x00000800,
150     ACCESSIBILITY_ACTION_CUT = 0x00001000,
151     ACCESSIBILITY_ACTION_SET_SELECTION = 0x00002000,
152     ACCESSIBILITY_ACTION_SET_TEXT = 0x00004000,
153     ACCESSIBILITY_ACTION_NEXT_TEXT = 0x00200000,
154     ACCESSIBILITY_ACTION_PREVIOUS_TEXT = 0x00400000,
155     ACCESSIBILITY_ACTION_UNFOLD = 0x00800000,
156     ACCESSIBILITY_ACTION_FOLD = 0x01000000,
157     ACCESSIBILITY_ACTION_NEXT_HTML_ITEM = 0x02000000,
158     ACCESSIBILITY_ACTION_PREVIOUS_HTML_ITEM = 0x04000000,
159     ACCESSIBILITY_ACTION_DELETED = 0x08000000,
160     ACCESSIBILITY_ACTION_TYPE_MASK = 0x1FFFFFFF,
161 };
162 
163 // text move step
164 enum TextMoveUnit : int32_t {
165     STEP_INVALID = 0,
166     STEP_CHARACTER = 0x00000001,
167     STEP_WORD = 0x00000002,
168     STEP_LINE = 0x00000004,
169     STEP_PAGE = 0x00000008,
170     STEP_PARAGRAPH = 0x00000010,
171 };
172 
173 enum FocusMoveDirection : int32_t {
174     DIRECTION_INVALID = 0,
175     UP = 0x00000001,
176     DOWN = 0x00000002,
177     LEFT = 0x00000004,
178     RIGHT = 0x00000008,
179     FORWARD = 0x00000010,
180     BACKWARD = 0x00000020,
181 };
182 
183 enum WindowUpdateType : int32_t {
184     WINDOW_UPDATE_INVALID = 0,
185     WINDOW_UPDATE_ACCESSIBILITY_FOCUSED = 0x00000001,
186     WINDOW_UPDATE_FOCUSED = 0x00000002,
187     WINDOW_UPDATE_ACTIVE = 0x00000004,
188     WINDOW_UPDATE_ADDED = 0x00000008,
189     WINDOW_UPDATE_REMOVED = 0x00000010,
190     WINDOW_UPDATE_BOUNDS = 0x00000020,
191     WINDOW_UPDATE_TITLE = 0x00000040,
192     WINDOW_UPDATE_LAYER = 0x00000080,
193     WINDOW_UPDATE_PARENT = 0x00000100,
194     WINDOW_UPDATE_CHILDREN = 0x00000200,
195     WINDOW_UPDATE_PIP = 0x00000400,
196     WINDOW_UPDATE_PROPERTY = 0x00000800,
197 };
198 
199 enum WindowsContentChangeTypes : int32_t {
200     CONTENT_CHANGE_TYPE_INVALID = 0,
201     CONTENT_CHANGE_TYPE_SUBTREE = 0x00000001,
202     CONTENT_CHANGE_TYPE_TEXT = 0x00000002,
203     CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 0x00000004,
204 };
205 
206 enum EventType : uint32_t {
207     TYPE_VIEW_INVALID = 0,
208     TYPE_VIEW_CLICKED_EVENT = 0x00000001,
209     TYPE_VIEW_LONG_CLICKED_EVENT = 0x00000002,
210     TYPE_VIEW_SELECTED_EVENT = 0x00000004,
211     TYPE_VIEW_FOCUSED_EVENT = 0x00000008,
212     TYPE_VIEW_TEXT_UPDATE_EVENT = 0x00000010,
213     TYPE_PAGE_STATE_UPDATE = 0x00000020,
214     TYPE_NOTIFICATION_UPDATE_EVENT = 0x00000040,
215     TYPE_VIEW_HOVER_ENTER_EVENT = 0x00000080,
216     TYPE_VIEW_HOVER_EXIT_EVENT = 0x00000100,
217     TYPE_TOUCH_GUIDE_GESTURE_BEGIN = 0x00000200,
218     TYPE_TOUCH_GUIDE_GESTURE_END = 0x00000400,
219     TYPE_PAGE_CONTENT_UPDATE = 0x00000800,
220     TYPE_VIEW_SCROLLED_EVENT = 0x000001000,
221     TYPE_VIEW_TEXT_SELECTION_UPDATE_EVENT = 0x000002000,
222     TYPE_PUBLIC_NOTICE_EVENT = 0x00004000,
223     TYPE_VIEW_ACCESSIBILITY_FOCUSED_EVENT = 0x00008000,
224     TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED_EVENT = 0x00010000,
225     TYPE_VIEW_TEXT_MOVE_UNIT_EVENT = 0x00020000,
226     TYPE_TOUCH_GUIDE_BEGIN = 0x00040000,
227     TYPE_TOUCH_GUIDE_END = 0x00080000,
228     TYPE_TOUCH_BEGIN = 0x00100000,
229     TYPE_TOUCH_END = 0x00200000,
230     TYPE_WINDOW_UPDATE = 0x00400000,
231     TYPE_INTERRUPT_EVENT = 0x00800000,
232     TYPE_GESTURE_EVENT = 0x01000000,
233     TYPE_MAX_NUM = 0x02000000,
234     TYPES_ALL_MASK = 0xFFFFFFFF,
235 };
236 
237 enum NotificationCategory : int32_t {
238     CATEGORY_INVALID = 0,
239     CATEGORY_CALL = 0x00000001,
240     CATEGORY_MSG = 0x00000002,
241     CATEGORY_EMAIL = 0x00000004,
242     CATEGORY_EVENT = 0x00000008,
243     CATEGORY_PROMO = 0x00000010,
244     CATEGORY_ALARM = 0x00000020,
245     CATEGORY_PROGRESS = 0x00000040,
246     CATEGORY_SOCIAL = 0x00000080,
247     CATEGORY_ERR = 0x00000100,
248     CATEGORY_TRANSPORT = 0x00000200,
249     CATEGORY_SYS = 0x00000400,
250     CATEGORY_SERVICE = 0x00000800,
251     CATEGORY_OTHERS = 0x00001000,
252 };
253 
254 // The types of swipe gestures which are performed on the touch screen.
255 enum GestureType : uint32_t {
256     GESTURE_INVALID = 0,
257     GESTURE_SWIPE_UP = 0x0001,
258     GESTURE_SWIPE_DOWN = 0x0002,
259     GESTURE_SWIPE_LEFT = 0x0003,
260     GESTURE_SWIPE_RIGHT = 0x0004,
261     GESTURE_SWIPE_LEFT_THEN_RIGHT = 0x0005,
262     GESTURE_SWIPE_RIGHT_THEN_LEFT = 0x0006,
263     GESTURE_SWIPE_UP_THEN_DOWN = 0x0007,
264     GESTURE_SWIPE_DOWN_THEN_UP = 0x0008,
265     GESTURE_SWIPE_LEFT_THEN_UP = 0x0009,
266     GESTURE_SWIPE_LEFT_THEN_DOWN = 0x000A,
267     GESTURE_SWIPE_RIGHT_THEN_UP = 0x000B,
268     GESTURE_SWIPE_RIGHT_THEN_DOWN = 0x000C,
269     GESTURE_SWIPE_UP_THEN_LEFT = 0x000D,
270     GESTURE_SWIPE_UP_THEN_RIGHT = 0x000E,
271     GESTURE_SWIPE_DOWN_THEN_LEFT = 0x000F,
272     GESTURE_SWIPE_DOWN_THEN_RIGHT = 0x0010,
273 
274     GESTURE_TAP = 0x0011,
275     GESTURE_DOUBLETAP = 0x0012,
276     GESTURE_DOUBLETAP_HOLD = 0x0013,
277     GESTURE_DRAG = 0x0014,
278     GESTURE_SWIPE_SLOWLY = 0x0015,
279     GESTURE_TRIPLETAP = 0x0016,
280     GESTURE_SCALE = 0x0017,
281     GESTURE_SCROLL = 0x0018,
282     GESTURE_GESTURE_ALL = 0xFFFFFFFF
283 };
284 
285 enum AccessibilityWindowType : int32_t {
286     TYPE_WINDOW_INVALID = 0,
287     TYPE_ACCESSIBILITY_OVERLAY = 0x00000001,
288     TYPE_APPLICATION = 0x00000002,
289     TYPE_INPUT_METHOD = 0x00000004,
290     TYPE_SPLIT_SCREEN_DIVIDER = 0x00000008,
291     TYPE_SYSTEM = 0x00000010,
292 };
293 
294 } // namespace Accessibility
295 } // namespace OHOS
296 
297 constexpr size_t CALLBACK_SIZE = 1;
298 constexpr size_t ARGS_SIZE_ZERO = 0;
299 constexpr size_t ARGS_SIZE_ONE = 1;
300 constexpr size_t ARGS_SIZE_TWO = 2;
301 constexpr size_t ARGS_SIZE_THREE = 3;
302 constexpr size_t ARGS_SIZE_FOUR = 4;
303 constexpr int32_t DEFAULT_INT32 = 0;
304 constexpr int32_t PARAM0 = 0;
305 constexpr int32_t PARAM1 = 1;
306 constexpr int32_t PARAM2 = 2;
307 constexpr int32_t CODE_SUCCESS = 0;
308 constexpr int32_t CODE_FAILED = -1;
309 constexpr int32_t CHAE_BUFFER_MAX = 1024;
310 const std::string ERROR_MESSAGE_PARAMETER_ERROR = "Input parameter error";
311 const std::string ERROR_MESSAGE_NO_PERMISSION = "Permission denied";
312 const std::string ERROR_MESSAGE_NOT_SYSTEM_APP = "Not system App";
313 const std::string ERROR_MESSAGE_NO_RIGHT = "Do not have accessibility right for this operation";
314 const std::string ERROR_MESSAGE_SYSTEM_ABNORMALITY = "System abnormality";
315 const std::string ERROR_MESSAGE_PROPERTY_NOT_EXIST = "This property does not exist";
316 const std::string ERROR_MESSAGE_ACTION_NOT_SUPPORT = "This action is not supported";
317 const std::string ERROR_MESSAGE_INVALID_BUNDLE_NAME_OR_ABILITY_NAME = "Invalid bundle name or ability name";
318 const std::string ERROR_MESSAGE_TARGET_ABILITY_ALREADY_ENABLED = "Target ability already enabled";
319 
320 enum class NAccessibilityErrorCode : int32_t {
321     ACCESSIBILITY_OK = 0,
322     ACCESSIBILITY_ERROR_NO_PERMISSION = 201,
323     ACCESSIBILITY_ERROR_NOT_SYSTEM_APP = 202,
324     ACCESSIBILITY_ERROR_INVALID_PARAM = 401,
325     ACCESSIBILITY_ERROR_SYSTEM_ABNORMALITY = 9300000,
326     ACCESSIBILITY_ERROR_ERROR_EXTENSION_NAME = 9300001,
327     ACCESSIBILITY_ERROR_TARGET_ABILITY_ALREADY_ENABLED = 9300002,
328     ACCESSIBILITY_ERROR_NO_RIGHT = 9300003,
329     ACCESSIBILITY_ERROR_PROPERTY_NOT_EXIST = 9300004,
330     ACCESSIBILITY_ERROR_ACTION_NOT_SUPPORT = 9300005,
331 };
332 
333 struct NAccessibilityErrMsg {
334     NAccessibilityErrorCode errCode;
335     std::string message;
336 };
337 
338 const std::map<OHOS::Accessibility::RetError, NAccessibilityErrMsg> ACCESSIBILITY_JS_TO_ERROR_CODE_MAP {
339     {OHOS::Accessibility::RetError::RET_OK,
340         {NAccessibilityErrorCode::ACCESSIBILITY_OK, ""}},
341     {OHOS::Accessibility::RetError::RET_ERR_FAILED,
342         {NAccessibilityErrorCode::ACCESSIBILITY_ERROR_SYSTEM_ABNORMALITY, ERROR_MESSAGE_SYSTEM_ABNORMALITY}},
343     {OHOS::Accessibility::RetError::RET_ERR_INVALID_PARAM,
344         {NAccessibilityErrorCode::ACCESSIBILITY_ERROR_INVALID_PARAM, ERROR_MESSAGE_PARAMETER_ERROR}},
345     {OHOS::Accessibility::RetError::RET_ERR_NULLPTR,
346         {NAccessibilityErrorCode::ACCESSIBILITY_ERROR_SYSTEM_ABNORMALITY, ERROR_MESSAGE_SYSTEM_ABNORMALITY}},
347     {OHOS::Accessibility::RetError::RET_ERR_IPC_FAILED,
348         {NAccessibilityErrorCode::ACCESSIBILITY_ERROR_SYSTEM_ABNORMALITY, ERROR_MESSAGE_SYSTEM_ABNORMALITY}},
349     {OHOS::Accessibility::RetError::RET_ERR_SAMGR,
350         {NAccessibilityErrorCode::ACCESSIBILITY_ERROR_SYSTEM_ABNORMALITY, ERROR_MESSAGE_SYSTEM_ABNORMALITY}},
351     {OHOS::Accessibility::RetError::RET_ERR_NO_PERMISSION,
352         {NAccessibilityErrorCode::ACCESSIBILITY_ERROR_NO_PERMISSION, ERROR_MESSAGE_NO_PERMISSION}},
353     {OHOS::Accessibility::RetError::RET_ERR_TIME_OUT,
354         {NAccessibilityErrorCode::ACCESSIBILITY_ERROR_SYSTEM_ABNORMALITY, ERROR_MESSAGE_SYSTEM_ABNORMALITY}},
355     {OHOS::Accessibility::RetError::RET_ERR_REGISTER_EXIST,
356         {NAccessibilityErrorCode::ACCESSIBILITY_ERROR_SYSTEM_ABNORMALITY, ERROR_MESSAGE_SYSTEM_ABNORMALITY}},
357     {OHOS::Accessibility::RetError::RET_ERR_NO_REGISTER,
358         {NAccessibilityErrorCode::ACCESSIBILITY_ERROR_SYSTEM_ABNORMALITY, ERROR_MESSAGE_SYSTEM_ABNORMALITY}},
359     {OHOS::Accessibility::RetError::RET_ERR_CONNECTION_EXIST,
360         {NAccessibilityErrorCode::ACCESSIBILITY_ERROR_TARGET_ABILITY_ALREADY_ENABLED,
361         ERROR_MESSAGE_TARGET_ABILITY_ALREADY_ENABLED}},
362     {OHOS::Accessibility::RetError::RET_ERR_NO_CONNECTION,
363         {NAccessibilityErrorCode::ACCESSIBILITY_ERROR_SYSTEM_ABNORMALITY, ERROR_MESSAGE_SYSTEM_ABNORMALITY}},
364     {OHOS::Accessibility::RetError::RET_ERR_NO_WINDOW_CONNECTION,
365         {NAccessibilityErrorCode::ACCESSIBILITY_ERROR_SYSTEM_ABNORMALITY, ERROR_MESSAGE_SYSTEM_ABNORMALITY}},
366     {OHOS::Accessibility::RetError::RET_ERR_NO_CAPABILITY,
367         {NAccessibilityErrorCode::ACCESSIBILITY_ERROR_NO_RIGHT, ERROR_MESSAGE_NO_RIGHT}},
368     {OHOS::Accessibility::RetError::RET_ERR_INVALID_ELEMENT_INFO_FROM_ACE,
369         {NAccessibilityErrorCode::ACCESSIBILITY_ERROR_SYSTEM_ABNORMALITY, ERROR_MESSAGE_SYSTEM_ABNORMALITY}},
370     {OHOS::Accessibility::RetError::RET_ERR_PERFORM_ACTION_FAILED_BY_ACE,
371         {NAccessibilityErrorCode::ACCESSIBILITY_ERROR_SYSTEM_ABNORMALITY, ERROR_MESSAGE_SYSTEM_ABNORMALITY}},
372     {OHOS::Accessibility::RetError::RET_ERR_NO_INJECTOR,
373         {NAccessibilityErrorCode::ACCESSIBILITY_ERROR_SYSTEM_ABNORMALITY, ERROR_MESSAGE_SYSTEM_ABNORMALITY}},
374     {OHOS::Accessibility::RetError::RET_ERR_NOT_INSTALLED,
375         {NAccessibilityErrorCode::ACCESSIBILITY_ERROR_ERROR_EXTENSION_NAME,
376         ERROR_MESSAGE_INVALID_BUNDLE_NAME_OR_ABILITY_NAME}},
377     {OHOS::Accessibility::RetError::RET_ERR_NOT_ENABLED,
378         {NAccessibilityErrorCode::ACCESSIBILITY_ERROR_ERROR_EXTENSION_NAME,
379         ERROR_MESSAGE_INVALID_BUNDLE_NAME_OR_ABILITY_NAME}},
380     {OHOS::Accessibility::RetError::RET_ERR_PROPERTY_NOT_EXIST,
381         {NAccessibilityErrorCode::ACCESSIBILITY_ERROR_PROPERTY_NOT_EXIST, ERROR_MESSAGE_PROPERTY_NOT_EXIST}},
382     {OHOS::Accessibility::RetError::RET_ERR_ACTION_NOT_SUPPORT,
383         {NAccessibilityErrorCode::ACCESSIBILITY_ERROR_ACTION_NOT_SUPPORT, ERROR_MESSAGE_ACTION_NOT_SUPPORT}},
384     {OHOS::Accessibility::RetError::RET_ERR_NOT_SYSTEM_APP,
385         {NAccessibilityErrorCode::ACCESSIBILITY_ERROR_NOT_SYSTEM_APP, ERROR_MESSAGE_NOT_SYSTEM_APP}},
386 };
387 
388 #endif // ACCESSIBILITY_DEFINE_H