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