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