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