1 /*
2 * Copyright (c) 2024 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 #include "native_interface_accessibility.h"
17
18 #include <cmath>
19 #include <map>
20
21 #include "base/utils/utils.h"
22 #include "frameworks/core/accessibility/native_interface_accessibility_impl.h"
23 #include "frameworks/core/accessibility/native_interface_accessibility_provider.h"
24 #include "native_type.h"
25
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29
30 using ::ArkUI_AccessibilityElementInfo;
31 using ::ArkUI_AccessibilityEventInfo;
32 using ::ArkUI_AccessibilityActionArguments;
33 using ::ArkUI_AccessibilityElementInfoList;
34
OH_ArkUI_AccessibilityProviderRegisterCallback(ArkUI_AccessibilityProvider * provider,ArkUI_AccessibilityProviderCallbacks * callbacks)35 int32_t OH_ArkUI_AccessibilityProviderRegisterCallback(
36 ArkUI_AccessibilityProvider* provider, ArkUI_AccessibilityProviderCallbacks* callbacks)
37 {
38 if ((provider == nullptr) || (callbacks == nullptr)) {
39 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER;
40 }
41 return provider->AccessibilityProviderRegisterCallback(callbacks);
42 }
43
OH_ArkUI_SendAccessibilityAsyncEvent(ArkUI_AccessibilityProvider * provider,ArkUI_AccessibilityEventInfo * eventInfo,void (* callback)(int32_t errorCode))44 void OH_ArkUI_SendAccessibilityAsyncEvent(
45 ArkUI_AccessibilityProvider* provider, ArkUI_AccessibilityEventInfo* eventInfo,
46 void (*callback)(int32_t errorCode))
47 {
48 if ((provider == nullptr) || (callback == nullptr)) {
49 return;
50 }
51 provider->SendAccessibilityAsyncEvent(eventInfo, callback);
52 }
53
OH_ArkUI_AddAndGetAccessibilityElementInfo(ArkUI_AccessibilityElementInfoList * list)54 ArkUI_AccessibilityElementInfo* OH_ArkUI_AddAndGetAccessibilityElementInfo(
55 ArkUI_AccessibilityElementInfoList* list)
56 {
57 auto elementInfo = list->AddAndGetElementInfo();
58 return elementInfo;
59 }
60
OH_ArkUI_CreateAccessibilityElementInfo(void)61 ArkUI_AccessibilityElementInfo* OH_ArkUI_CreateAccessibilityElementInfo(void)
62 {
63 auto elementInfo = new (std::nothrow) ArkUI_AccessibilityElementInfo();
64 if (elementInfo == nullptr) {
65 return nullptr;
66 }
67 return elementInfo;
68 }
69
OH_ArkUI_DestoryAccessibilityElementInfo(ArkUI_AccessibilityElementInfo * elementInfo)70 void OH_ArkUI_DestoryAccessibilityElementInfo(
71 ArkUI_AccessibilityElementInfo* elementInfo)
72 {
73 if (elementInfo == nullptr) {
74 return;
75 }
76 delete elementInfo;
77 }
78
OH_ArkUI_CreateAccessibilityEventInfo(void)79 ArkUI_AccessibilityEventInfo* OH_ArkUI_CreateAccessibilityEventInfo(void)
80 {
81 auto eventInfo = new (std::nothrow) ArkUI_AccessibilityEventInfo();
82 if (eventInfo == nullptr) {
83 return nullptr;
84 }
85 return eventInfo;
86 }
87
OH_ArkUI_DestoryAccessibilityEventInfo(ArkUI_AccessibilityEventInfo * eventInfo)88 void OH_ArkUI_DestoryAccessibilityEventInfo(ArkUI_AccessibilityEventInfo* eventInfo)
89 {
90 if (eventInfo == nullptr) {
91 return;
92 }
93 delete eventInfo;
94 }
95
OH_ArkUI_AccessibilityElementInfoSetElementId(ArkUI_AccessibilityElementInfo * elementInfo,int32_t elementId)96 int32_t OH_ArkUI_AccessibilityElementInfoSetElementId(
97 ArkUI_AccessibilityElementInfo* elementInfo, int32_t elementId)
98 {
99 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
100 elementInfo->SetElementId(elementId);
101 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
102 }
103
OH_ArkUI_AccessibilityElementInfoSetParentId(ArkUI_AccessibilityElementInfo * elementInfo,int32_t parentId)104 int32_t OH_ArkUI_AccessibilityElementInfoSetParentId(
105 ArkUI_AccessibilityElementInfo* elementInfo, int32_t parentId)
106 {
107 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
108 elementInfo->SetParentId(parentId);
109 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
110 }
111
OH_ArkUI_AccessibilityElementInfoSetComponentType(ArkUI_AccessibilityElementInfo * elementInfo,const char * componentType)112 int32_t OH_ArkUI_AccessibilityElementInfoSetComponentType(
113 ArkUI_AccessibilityElementInfo* elementInfo, const char* componentType)
114 {
115 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
116 CHECK_NULL_RETURN(componentType, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
117 elementInfo->SetComponentType(componentType);
118 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
119 }
120
OH_ArkUI_AccessibilityElementInfoSetContents(ArkUI_AccessibilityElementInfo * elementInfo,const char * contents)121 int32_t OH_ArkUI_AccessibilityElementInfoSetContents(
122 ArkUI_AccessibilityElementInfo* elementInfo, const char* contents)
123 {
124 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
125 CHECK_NULL_RETURN(contents, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
126 elementInfo->SetContents(contents);
127 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
128 }
129
OH_ArkUI_AccessibilityElementInfoSetHintText(ArkUI_AccessibilityElementInfo * elementInfo,const char * hintText)130 int32_t OH_ArkUI_AccessibilityElementInfoSetHintText(
131 ArkUI_AccessibilityElementInfo* elementInfo, const char* hintText)
132 {
133 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
134 CHECK_NULL_RETURN(hintText, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
135 elementInfo->SetHintText(hintText);
136 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
137 }
138
OH_ArkUI_AccessibilityElementInfoSetAccessibilityText(ArkUI_AccessibilityElementInfo * elementInfo,const char * accessibilityText)139 int32_t OH_ArkUI_AccessibilityElementInfoSetAccessibilityText(
140 ArkUI_AccessibilityElementInfo* elementInfo, const char* accessibilityText)
141 {
142 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
143 CHECK_NULL_RETURN(accessibilityText, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
144 elementInfo->SetAccessibilityText(accessibilityText);
145 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
146 }
147
OH_ArkUI_AccessibilityElementInfoSetAccessibilityDescription(ArkUI_AccessibilityElementInfo * elementInfo,const char * accessibilityDescription)148 int32_t OH_ArkUI_AccessibilityElementInfoSetAccessibilityDescription(
149 ArkUI_AccessibilityElementInfo* elementInfo, const char* accessibilityDescription)
150 {
151 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
152 CHECK_NULL_RETURN(accessibilityDescription, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
153 elementInfo->SetAccessibilityDescription(accessibilityDescription);
154 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
155 }
156
OH_ArkUI_AccessibilityElementInfoSetChildNodeIds(ArkUI_AccessibilityElementInfo * elementInfo,int32_t childCount,int64_t * childNodeIds)157 int32_t OH_ArkUI_AccessibilityElementInfoSetChildNodeIds(
158 ArkUI_AccessibilityElementInfo* elementInfo, int32_t childCount, int64_t* childNodeIds)
159 {
160 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
161 CHECK_NULL_RETURN(childNodeIds, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
162 if (childCount <= 0) {
163 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER;
164 }
165 elementInfo->ClearChildNodeIds();
166 for (int32_t i = 0; i < childCount; i++) {
167 elementInfo->AddChildNodeId(childNodeIds[i]);
168 }
169 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
170 }
171
OH_ArkUI_AccessibilityElementInfoSetOperationActions(ArkUI_AccessibilityElementInfo * elementInfo,int32_t operationCount,ArkUI_AccessibleAction * operationActions)172 int32_t OH_ArkUI_AccessibilityElementInfoSetOperationActions(
173 ArkUI_AccessibilityElementInfo* elementInfo, int32_t operationCount,
174 ArkUI_AccessibleAction* operationActions)
175 {
176 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
177 CHECK_NULL_RETURN(operationActions, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
178 if (operationCount <= 0) {
179 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER;
180 }
181 elementInfo->ClearOperationActions();
182 for (int32_t i = 0; i < operationCount; i++) {
183 elementInfo->AddOperationAction(operationActions[i]);
184 }
185 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
186 }
187
OH_ArkUI_AccessibilityElementInfoSetScreenRect(ArkUI_AccessibilityElementInfo * elementInfo,ArkUI_AccessibleRect * screenRect)188 int32_t OH_ArkUI_AccessibilityElementInfoSetScreenRect(
189 ArkUI_AccessibilityElementInfo* elementInfo, ArkUI_AccessibleRect* screenRect)
190 {
191 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
192 CHECK_NULL_RETURN(screenRect, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
193 elementInfo->SetRect(*screenRect);
194 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
195 }
196
OH_ArkUI_AccessibilityElementInfoSetCheckable(ArkUI_AccessibilityElementInfo * elementInfo,bool checkable)197 int32_t OH_ArkUI_AccessibilityElementInfoSetCheckable(
198 ArkUI_AccessibilityElementInfo* elementInfo, bool checkable)
199 {
200 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
201 elementInfo->SetCheckable(checkable);
202 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
203 }
204
OH_ArkUI_AccessibilityElementInfoSetChecked(ArkUI_AccessibilityElementInfo * elementInfo,bool checked)205 int32_t OH_ArkUI_AccessibilityElementInfoSetChecked(
206 ArkUI_AccessibilityElementInfo* elementInfo, bool checked)
207 {
208 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
209 elementInfo->SetChecked(checked);
210 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
211 }
212
OH_ArkUI_AccessibilityElementInfoSetFocusable(ArkUI_AccessibilityElementInfo * elementInfo,bool focusable)213 int32_t OH_ArkUI_AccessibilityElementInfoSetFocusable(
214 ArkUI_AccessibilityElementInfo* elementInfo, bool focusable)
215 {
216 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
217 elementInfo->SetFocusable(focusable);
218 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
219 }
220
OH_ArkUI_AccessibilityElementInfoSetFocused(ArkUI_AccessibilityElementInfo * elementInfo,bool isFocused)221 int32_t OH_ArkUI_AccessibilityElementInfoSetFocused(
222 ArkUI_AccessibilityElementInfo* elementInfo, bool isFocused)
223 {
224 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
225 elementInfo->SetFocused(isFocused);
226 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
227 }
228
OH_ArkUI_AccessibilityElementInfoSetVisible(ArkUI_AccessibilityElementInfo * elementInfo,bool isVisible)229 int32_t OH_ArkUI_AccessibilityElementInfoSetVisible(
230 ArkUI_AccessibilityElementInfo* elementInfo, bool isVisible)
231 {
232 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
233 elementInfo->SetVisible(isVisible);
234 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
235 }
236
OH_ArkUI_AccessibilityElementInfoSetAccessibilityFocused(ArkUI_AccessibilityElementInfo * elementInfo,bool accessibilityFocused)237 int32_t OH_ArkUI_AccessibilityElementInfoSetAccessibilityFocused(
238 ArkUI_AccessibilityElementInfo* elementInfo, bool accessibilityFocused)
239 {
240 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
241 elementInfo->SetAccessibilityFocused(accessibilityFocused);
242 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
243 }
244
OH_ArkUI_AccessibilityElementInfoSetSelected(ArkUI_AccessibilityElementInfo * elementInfo,bool selected)245 int32_t OH_ArkUI_AccessibilityElementInfoSetSelected(
246 ArkUI_AccessibilityElementInfo* elementInfo, bool selected)
247 {
248 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
249 elementInfo->SetSelected(selected);
250 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
251 }
252
OH_ArkUI_AccessibilityElementInfoSetClickable(ArkUI_AccessibilityElementInfo * elementInfo,bool clickable)253 int32_t OH_ArkUI_AccessibilityElementInfoSetClickable(
254 ArkUI_AccessibilityElementInfo* elementInfo, bool clickable)
255 {
256 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
257 elementInfo->SetClickable(clickable);
258 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
259 }
260
OH_ArkUI_AccessibilityElementInfoSetLongClickable(ArkUI_AccessibilityElementInfo * elementInfo,bool longClickable)261 int32_t OH_ArkUI_AccessibilityElementInfoSetLongClickable(
262 ArkUI_AccessibilityElementInfo* elementInfo, bool longClickable)
263 {
264 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
265 elementInfo->SetLongClickable(longClickable);
266 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
267 }
268
OH_ArkUI_AccessibilityElementInfoSetEnabled(ArkUI_AccessibilityElementInfo * elementInfo,bool isEnabled)269 int32_t OH_ArkUI_AccessibilityElementInfoSetEnabled(
270 ArkUI_AccessibilityElementInfo* elementInfo, bool isEnabled)
271 {
272 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
273 elementInfo->SetEnabled(isEnabled);
274 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
275 }
276
OH_ArkUI_AccessibilityElementInfoSetIsPassword(ArkUI_AccessibilityElementInfo * elementInfo,bool isPassword)277 int32_t OH_ArkUI_AccessibilityElementInfoSetIsPassword(
278 ArkUI_AccessibilityElementInfo* elementInfo, bool isPassword)
279 {
280 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
281 elementInfo->SetPassword(isPassword);
282 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
283 }
284
OH_ArkUI_AccessibilityElementInfoSetScrollable(ArkUI_AccessibilityElementInfo * elementInfo,bool scrollable)285 int32_t OH_ArkUI_AccessibilityElementInfoSetScrollable(
286 ArkUI_AccessibilityElementInfo* elementInfo, bool scrollable)
287 {
288 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
289 elementInfo->SetScrollable(scrollable);
290 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
291 }
292
OH_ArkUI_AccessibilityElementInfoSetEditable(ArkUI_AccessibilityElementInfo * elementInfo,bool editable)293 int32_t OH_ArkUI_AccessibilityElementInfoSetEditable(
294 ArkUI_AccessibilityElementInfo* elementInfo, bool editable)
295 {
296 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
297 elementInfo->SetEditable(editable);
298 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
299 }
300
OH_ArkUI_AccessibilityElementInfoSetIsHint(ArkUI_AccessibilityElementInfo * elementInfo,bool isHint)301 int32_t OH_ArkUI_AccessibilityElementInfoSetIsHint(
302 ArkUI_AccessibilityElementInfo* elementInfo, bool isHint)
303 {
304 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
305 elementInfo->SetHint(isHint);
306 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
307 }
308
OH_ArkUI_AccessibilityElementInfoSetRangeInfo(ArkUI_AccessibilityElementInfo * elementInfo,ArkUI_AccessibleRangeInfo * rangeInfo)309 int32_t OH_ArkUI_AccessibilityElementInfoSetRangeInfo(
310 ArkUI_AccessibilityElementInfo* elementInfo, ArkUI_AccessibleRangeInfo* rangeInfo)
311 {
312 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
313 CHECK_NULL_RETURN(rangeInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
314 elementInfo->SetRangeInfo(*rangeInfo);
315 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
316 }
317
OH_ArkUI_AccessibilityElementInfoSetGridInfo(ArkUI_AccessibilityElementInfo * elementInfo,ArkUI_AccessibleGridInfo * gridInfo)318 int32_t OH_ArkUI_AccessibilityElementInfoSetGridInfo(
319 ArkUI_AccessibilityElementInfo* elementInfo, ArkUI_AccessibleGridInfo* gridInfo)
320 {
321 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
322 CHECK_NULL_RETURN(gridInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
323 elementInfo->SetGridInfo(*gridInfo);
324 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
325 }
326
OH_ArkUI_AccessibilityElementInfoSetGridItemInfo(ArkUI_AccessibilityElementInfo * elementInfo,ArkUI_AccessibleGridItemInfo * gridItem)327 int32_t OH_ArkUI_AccessibilityElementInfoSetGridItemInfo(
328 ArkUI_AccessibilityElementInfo* elementInfo, ArkUI_AccessibleGridItemInfo* gridItem)
329 {
330 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
331 CHECK_NULL_RETURN(gridItem, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
332 elementInfo->SetGridItemInfo(*gridItem);
333 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
334 }
335
OH_ArkUI_AccessibilityElementInfoSetSelectedTextStart(ArkUI_AccessibilityElementInfo * elementInfo,int32_t selectedTextStart)336 int32_t OH_ArkUI_AccessibilityElementInfoSetSelectedTextStart(
337 ArkUI_AccessibilityElementInfo* elementInfo, int32_t selectedTextStart)
338 {
339 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
340 elementInfo->SetTextBeginSelected(selectedTextStart);
341 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
342 }
343
OH_ArkUI_AccessibilityElementInfoSetSelectedTextEnd(ArkUI_AccessibilityElementInfo * elementInfo,int32_t selectedTextEnd)344 int32_t OH_ArkUI_AccessibilityElementInfoSetSelectedTextEnd(
345 ArkUI_AccessibilityElementInfo* elementInfo, int32_t selectedTextEnd)
346 {
347 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
348 elementInfo->SetTextEndSelected(selectedTextEnd);
349 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
350 }
351
OH_ArkUI_AccessibilityElementInfoSetCurrentItemIndex(ArkUI_AccessibilityElementInfo * elementInfo,int32_t currentItemIndex)352 int32_t OH_ArkUI_AccessibilityElementInfoSetCurrentItemIndex(
353 ArkUI_AccessibilityElementInfo* elementInfo, int32_t currentItemIndex)
354 {
355 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
356 elementInfo->SetCurrentIndex(currentItemIndex);
357 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
358 }
359
OH_ArkUI_AccessibilityElementInfoSetStartItemIndex(ArkUI_AccessibilityElementInfo * elementInfo,int32_t startItemIndex)360 int32_t OH_ArkUI_AccessibilityElementInfoSetStartItemIndex(
361 ArkUI_AccessibilityElementInfo* elementInfo, int32_t startItemIndex)
362 {
363 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
364 elementInfo->SetBeginIndex(startItemIndex);
365 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
366 }
367
OH_ArkUI_AccessibilityElementInfoSetEndItemIndex(ArkUI_AccessibilityElementInfo * elementInfo,int32_t endItemIndex)368 int32_t OH_ArkUI_AccessibilityElementInfoSetEndItemIndex(
369 ArkUI_AccessibilityElementInfo* elementInfo, int32_t endItemIndex)
370 {
371 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
372 elementInfo->SetEndIndex(endItemIndex);
373 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
374 }
375
OH_ArkUI_AccessibilityElementInfoSetItemCount(ArkUI_AccessibilityElementInfo * elementInfo,int32_t itemCount)376 int32_t OH_ArkUI_AccessibilityElementInfoSetItemCount(
377 ArkUI_AccessibilityElementInfo* elementInfo, int32_t itemCount)
378 {
379 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
380 elementInfo->SetItemCount(itemCount);
381 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
382 }
383
OH_ArkUI_AccessibilityElementInfoSetAccessibilityOffset(ArkUI_AccessibilityElementInfo * elementInfo,int32_t offset)384 int32_t OH_ArkUI_AccessibilityElementInfoSetAccessibilityOffset(
385 ArkUI_AccessibilityElementInfo* elementInfo, int32_t offset)
386 {
387 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
388 elementInfo->SetOffset(offset);
389 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
390 }
391
OH_ArkUI_AccessibilityElementInfoSetAccessibilityGroup(ArkUI_AccessibilityElementInfo * elementInfo,bool accessibilityGroup)392 int32_t OH_ArkUI_AccessibilityElementInfoSetAccessibilityGroup(
393 ArkUI_AccessibilityElementInfo* elementInfo, bool accessibilityGroup)
394 {
395 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
396 elementInfo->SetAccessibilityGroup(accessibilityGroup);
397 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
398 }
399
OH_ArkUI_AccessibilityElementInfoSetAccessibilityLevel(ArkUI_AccessibilityElementInfo * elementInfo,const char * accessibilityLevel)400 int32_t OH_ArkUI_AccessibilityElementInfoSetAccessibilityLevel(
401 ArkUI_AccessibilityElementInfo* elementInfo, const char* accessibilityLevel)
402 {
403 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
404 CHECK_NULL_RETURN(accessibilityLevel, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
405 elementInfo->SetAccessibilityLevel(accessibilityLevel);
406 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
407 }
408
OH_ArkUI_AccessibilityElementInfoSetZIndex(ArkUI_AccessibilityElementInfo * elementInfo,int32_t zIndex)409 int32_t OH_ArkUI_AccessibilityElementInfoSetZIndex(
410 ArkUI_AccessibilityElementInfo* elementInfo, int32_t zIndex)
411 {
412 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
413 elementInfo->SetZIndex(zIndex);
414 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
415 }
416
OH_ArkUI_AccessibilityElementInfoSetAccessibilityOpacity(ArkUI_AccessibilityElementInfo * elementInfo,float opacity)417 int32_t OH_ArkUI_AccessibilityElementInfoSetAccessibilityOpacity(
418 ArkUI_AccessibilityElementInfo* elementInfo, float opacity)
419 {
420 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
421 if (std::isnan(opacity)) {
422 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER;
423 }
424 elementInfo->SetOpacity(opacity);
425 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
426 }
427
OH_ArkUI_AccessibilityElementInfoSetBackgroundColor(ArkUI_AccessibilityElementInfo * elementInfo,const char * backgroundColor)428 int32_t OH_ArkUI_AccessibilityElementInfoSetBackgroundColor(
429 ArkUI_AccessibilityElementInfo* elementInfo, const char* backgroundColor)
430 {
431 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
432 CHECK_NULL_RETURN(backgroundColor, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
433 elementInfo->SetBackgroundColor(backgroundColor);
434 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
435 }
436
OH_ArkUI_AccessibilityElementInfoSetBackgroundImage(ArkUI_AccessibilityElementInfo * elementInfo,const char * backgroundImage)437 int32_t OH_ArkUI_AccessibilityElementInfoSetBackgroundImage(
438 ArkUI_AccessibilityElementInfo* elementInfo, const char* backgroundImage)
439 {
440 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
441 CHECK_NULL_RETURN(backgroundImage, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
442 elementInfo->SetBackgroundImage(backgroundImage);
443 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
444 }
445
OH_ArkUI_AccessibilityElementInfoSetBlur(ArkUI_AccessibilityElementInfo * elementInfo,const char * blur)446 int32_t OH_ArkUI_AccessibilityElementInfoSetBlur(
447 ArkUI_AccessibilityElementInfo* elementInfo, const char* blur)
448 {
449 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
450 CHECK_NULL_RETURN(blur, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
451 elementInfo->SetBlur(blur);
452 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
453 }
454
OH_ArkUI_AccessibilityElementInfoSetHitTestBehavior(ArkUI_AccessibilityElementInfo * elementInfo,const char * hitTestBehavior)455 int32_t OH_ArkUI_AccessibilityElementInfoSetHitTestBehavior(
456 ArkUI_AccessibilityElementInfo* elementInfo, const char* hitTestBehavior)
457 {
458 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
459 CHECK_NULL_RETURN(hitTestBehavior, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
460 elementInfo->SetHitTestBehavior(hitTestBehavior);
461 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
462 }
463
OH_ArkUI_AccessibilityEventSetEventType(ArkUI_AccessibilityEventInfo * eventInfo,ArkUI_AccessibilityEventType eventType)464 int32_t OH_ArkUI_AccessibilityEventSetEventType(
465 ArkUI_AccessibilityEventInfo* eventInfo, ArkUI_AccessibilityEventType eventType)
466 {
467 CHECK_NULL_RETURN(eventInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
468 eventInfo->SetEventType(eventType);
469 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
470 }
471
OH_ArkUI_AccessibilityEventSetTextAnnouncedForAccessibility(ArkUI_AccessibilityEventInfo * eventInfo,const char * textAnnouncedForAccessibility)472 int32_t OH_ArkUI_AccessibilityEventSetTextAnnouncedForAccessibility(
473 ArkUI_AccessibilityEventInfo* eventInfo, const char* textAnnouncedForAccessibility)
474 {
475 CHECK_NULL_RETURN(eventInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
476 eventInfo->SetTextAnnouncedForAccessibility(textAnnouncedForAccessibility);
477 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
478 }
479
OH_ArkUI_AccessibilityEventSetRequestFocusId(ArkUI_AccessibilityEventInfo * eventInfo,int32_t requestFocusId)480 int32_t OH_ArkUI_AccessibilityEventSetRequestFocusId(
481 ArkUI_AccessibilityEventInfo* eventInfo, int32_t requestFocusId)
482 {
483 CHECK_NULL_RETURN(eventInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
484 eventInfo->SetRequestFocusId(requestFocusId);
485 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
486 }
487
OH_ArkUI_AccessibilityEventSetElementInfo(ArkUI_AccessibilityEventInfo * eventInfo,ArkUI_AccessibilityElementInfo * elementInfo)488 int32_t OH_ArkUI_AccessibilityEventSetElementInfo(
489 ArkUI_AccessibilityEventInfo* eventInfo, ArkUI_AccessibilityElementInfo* elementInfo)
490 {
491 CHECK_NULL_RETURN(eventInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
492 CHECK_NULL_RETURN(elementInfo, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
493 eventInfo->SetElementInfo(elementInfo);
494 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
495 }
496
OH_ArkUI_FindAccessibilityActionArgumentByKey(ArkUI_AccessibilityActionArguments * arguments,const char * key,char ** value)497 int32_t OH_ArkUI_FindAccessibilityActionArgumentByKey(
498 ArkUI_AccessibilityActionArguments* arguments, const char* key, char** value)
499 {
500 CHECK_NULL_RETURN(arguments, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
501 CHECK_NULL_RETURN(key, ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER);
502 *value = const_cast<char*>(arguments->FindValueByKey(key));
503 return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL;
504 }
505
506 #ifdef __cplusplus
507 };
508 #endif
509
510