1 /* 2 * Copyright (c) 2021-2023 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 FOUNDATION_ACE_FRAMEWORKS_CORE_ACCESSIBILITY_ACCESSIBILITY_UTILS_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_ACCESSIBILITY_ACCESSIBILITY_UTILS_H 18 19 #include <cstddef> 20 #include <cstdint> 21 22 #include "base/geometry/rect.h" 23 24 namespace OHOS::Ace { 25 26 // define accessibility node tags 27 extern const char ACCESSIBILITY_TAG_DIV[]; 28 extern const char ACCESSIBILITY_TAG_CALENDAR[]; 29 extern const char ACCESSIBILITY_TAG_TEXT[]; 30 extern const char ACCESSIBILITY_TAG_PICKER[]; 31 extern const char ACCESSIBILITY_TAG_OPTION[]; 32 extern const char ACCESSIBILITY_TAG_POPUP[]; 33 extern const char ACCESSIBILITY_TAG_PROGRESS[]; 34 extern const char ACCESSIBILITY_TAG_SELECT[]; 35 extern const char ACCESSIBILITY_TAG_MENU[]; 36 extern const char ACCESSIBILITY_TAG_SLIDER[]; 37 extern const char ACCESSIBILITY_TAG_SPAN[]; 38 extern const char ACCESSIBILITY_TAG_STACK[]; 39 extern const char ACCESSIBILITY_TAG_SWIPER[]; 40 extern const char ACCESSIBILITY_TAG_SWITCH[]; 41 extern const char ACCESSIBILITY_TAG_TABS[]; 42 extern const char ACCESSIBILITY_TAG_TAB_BAR[]; 43 extern const char ACCESSIBILITY_TAG_TAB_CONTENT[]; 44 extern const char ACCESSIBILITY_TAG_REFRESH[]; 45 extern const char ACCESSIBILITY_TAG_IMAGE[]; 46 extern const char ACCESSIBILITY_TAG_LIST[]; 47 extern const char ACCESSIBILITY_TAG_LIST_ITEM[]; 48 extern const char ACCESSIBILITY_TAG_LIST_ITEM_GROUP[]; 49 extern const char ACCESSIBILITY_TAG_VIDEO[]; 50 extern const char ACCESSIBILITY_TAG_RATING[]; 51 extern const char ACCESSIBILITY_TAG_MARQUEE[]; 52 extern const char ACCESSIBILITY_TAG_NAVIGATION_BAR[]; 53 extern const char ACCESSIBILITY_TAG_NAVIGATION_MENU[]; 54 extern const char ACCESSIBILITY_TAG_TEXTAREA[]; 55 extern const char ACCESSIBILITY_TAG_INPUT[]; 56 extern const char ACCESSIBILITY_TAG_LABEL[]; 57 extern const char ACCESSIBILITY_TAG_DIVIDER[]; 58 extern const char ACCESSIBILITY_TAG_CANVAS[]; 59 extern const char ACCESSIBILITY_TAG_BUTTON[]; 60 extern const char ACCESSIBILITY_TAG_CHART[]; 61 extern const char ACCESSIBILITY_TAG_CLOCK[]; 62 extern const char ACCESSIBILITY_TAG_DIALOG[]; 63 extern const char ACCESSIBILITY_TAG_SEARCH[]; 64 65 extern const int32_t FOCUS_DIRECTION_UP; 66 extern const int32_t FOCUS_DIRECTION_DOWN; 67 extern const int32_t FOCUS_DIRECTION_LEFT; 68 extern const int32_t FOCUS_DIRECTION_RIGHT; 69 extern const int32_t FOCUS_DIRECTION_FORWARD; 70 extern const int32_t FOCUS_DIRECTION_BACKWARD; 71 72 enum class AccessibilityEventType : size_t { 73 CLICK = 0x00000001, 74 LONG_PRESS = 0x00000002, 75 SELECTED = 0x00000004, 76 BLUR = 0x00000007, 77 FOCUS = 0x00000008, 78 TEXT_CHANGE = 0x00000010, 79 EJECT_DISMISS = 0x00000020, 80 MOUSE = 149, 81 KEYBOARD_BACK = 150, 82 KEYBOARD_UP = 151, 83 KEYBOARD_DOWN = 152, 84 KEYBOARD_LEFT = 153, 85 KEYBOARD_RIGHT = 154, 86 KEYBOARD_CENTER = 155, 87 HANDLE_A = 156, 88 HANDLE_SELECT = 157, 89 KEYBOARD_TAB = 158, 90 KEYBOARD_SPACE = 159, 91 KEYBOARD_ENTER = 160, 92 KEYBOARD_ESCAPE = 161, 93 KEYBOARD_NUMBER_ENTER = 162, 94 TV_CONTROL_MEDIA_PLAY = 163, 95 PAGE_CHANGE = 200, 96 HOVER_ENTER_EVENT = 0x0000080, 97 HOVER_EXIT_EVENT = 0x0000100, 98 TOUCH_START = 0x00000200, 99 TOUCH_MOVE = 0x00000201, 100 TOUCH_CANCEL = 0x00000202, 101 TOUCH_END = 0x00000400, 102 CHANGE = 0x00000800, 103 COMPONENT_CHANGE = 0x00000801, 104 SCROLL_END = 0x00001000, 105 TEXT_SELECTION_UPDATE = 0x000002000, 106 ACCESSIBILITY_FOCUSED = 0x00008000, 107 ACCESSIBILITY_FOCUS_CLEARED = 0x00010000, 108 TEXT_MOVE_UNIT = 0x00020000, 109 REQUEST_FOCUS = 0x00800000, 110 SCROLL_START = 0x01000000, 111 PAGE_CLOSE = 0x08000000, 112 ANNOUNCE_FOR_ACCESSIBILITY = 0x10000000, 113 PAGE_OPEN = 0x20000000, 114 ELEMENT_INFO_CHANGE = 0x40000000, 115 UNKNOWN, 116 }; 117 118 enum WindowUpdateType : int32_t { 119 WINDOW_UPDATE_INVALID = 0, 120 WINDOW_UPDATE_ACCESSIBILITY_FOCUSED = 0x00000001, 121 WINDOW_UPDATE_FOCUSED = 0x00000002, 122 WINDOW_UPDATE_ACTIVE = 0x00000004, 123 WINDOW_UPDATE_ADDED = 0x00000008, 124 WINDOW_UPDATE_REMOVED = 0x00000010, 125 WINDOW_UPDATE_BOUNDS = 0x00000020, 126 WINDOW_UPDATE_TITLE = 0x00000040, 127 WINDOW_UPDATE_LAYER = 0x00000080, 128 WINDOW_UPDATE_PARENT = 0x00000100, 129 WINDOW_UPDATE_CHILDREN = 0x00000200, 130 WINDOW_UPDATE_PIP = 0x00000400, 131 }; 132 133 enum WindowsContentChangeTypes : int32_t { 134 CONTENT_CHANGE_TYPE_INVALID = 0, 135 CONTENT_CHANGE_TYPE_SUBTREE = 0x00000001, 136 CONTENT_CHANGE_TYPE_TEXT = 0x00000002, 137 CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 0x00000004, 138 }; 139 140 struct OperableInfo { 141 bool checkable = false; 142 bool clickable = false; 143 bool scrollable = false; 144 bool longClickable = false; 145 bool focusable = false; 146 }; 147 148 enum class AceAction : uint32_t { 149 ACTION_NONE = 0, 150 GLOBAL_ACTION_BACK, 151 CUSTOM_ACTION, 152 ACTION_CLICK = 10, 153 ACTION_LONG_CLICK, 154 ACTION_SCROLL_FORWARD, 155 ACTION_SCROLL_BACKWARD, 156 ACTION_FOCUS, 157 ACTION_CLEAR_FOCUS, 158 ACTION_ACCESSIBILITY_FOCUS, 159 ACTION_CLEAR_ACCESSIBILITY_FOCUS, 160 ACTION_NEXT_AT_MOVEMENT_GRANULARITY, 161 ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY, 162 ACTION_SET_TEXT, 163 ACTION_COPY, 164 ACTION_PASTE, 165 ACTION_CUT, 166 ACTION_SELECT, 167 ACTION_SET_SELECTION, 168 ACTION_CLEAR_SELECTION, 169 ACTION_SET_CURSOR_POSITION, 170 ACTION_EXEC_SUB_COMPONENT, 171 }; 172 173 struct AccessibilityValue { 174 double min = 0.0; 175 double max = 0.0; 176 double current = 0.0; 177 }; 178 179 enum class AceTextCategory { 180 INPUT_TYPE_DEFAULT = 0, 181 INPUT_TYPE_TEXT, 182 INPUT_TYPE_EMAIL, 183 INPUT_TYPE_DATE, 184 INPUT_TYPE_TIME, 185 INPUT_TYPE_NUMBER, 186 INPUT_TYPE_PASSWORD, 187 INPUT_TYPE_PHONENUMBER, 188 INPUT_TYPE_USER_NAME, 189 INPUT_TYPE_NEW_PASSWORD, 190 }; 191 192 struct AceCollectionInfo { 193 int32_t rows = 0; 194 int32_t columns = 0; 195 int32_t selectMode = 0; 196 }; 197 198 struct AceCollectionItemInfo { 199 bool heading = false; 200 int32_t row = 0; 201 int32_t column = 0; 202 int32_t rowSpan = 0; 203 int32_t columnSpan = 0; 204 }; 205 206 enum class AccessibilityScrollType : int32_t { 207 SCROLL_DEFAULT = -1, // no parameter trans, do not add enum before 208 SCROLL_HALF = 0, 209 SCROLL_FULL = 1, 210 SCROLL_MAX_TYPE = SCROLL_FULL, // for check parameter, do not add enum after 211 }; 212 213 struct SubComponentInfo { 214 int32_t spanId = 0; 215 std::string spanText = ""; 216 std::string accessibilityText = ""; 217 std::string accessibilityDescription = ""; 218 std::string accessibilityLevel = ""; 219 }; 220 221 bool CheckBetterRect(const Rect& nodeRect, int direction, const Rect& itemRect, const Rect& tempBest); 222 223 } // namespace OHOS::Ace 224 225 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_ACCESSIBILITY_ACCESSIBILITY_UTILS_H 226