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