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