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 27extern "C" { 28#endif 29 30using ::ArkUI_AccessibilityElementInfo; 31using ::ArkUI_AccessibilityEventInfo; 32using ::ArkUI_AccessibilityActionArguments; 33using ::ArkUI_AccessibilityElementInfoList; 34 35int32_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 44void 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 54ArkUI_AccessibilityElementInfo* OH_ArkUI_AddAndGetAccessibilityElementInfo( 55 ArkUI_AccessibilityElementInfoList* list) 56{ 57 auto elementInfo = list->AddAndGetElementInfo(); 58 return elementInfo; 59} 60 61ArkUI_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 70void OH_ArkUI_DestoryAccessibilityElementInfo( 71 ArkUI_AccessibilityElementInfo* elementInfo) 72{ 73 if (elementInfo == nullptr) { 74 return; 75 } 76 delete elementInfo; 77} 78 79ArkUI_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 88void OH_ArkUI_DestoryAccessibilityEventInfo(ArkUI_AccessibilityEventInfo* eventInfo) 89{ 90 if (eventInfo == nullptr) { 91 return; 92 } 93 delete eventInfo; 94} 95 96int32_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 104int32_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 112int32_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 121int32_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 130int32_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 139int32_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 148int32_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 157int32_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 172int32_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 188int32_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 197int32_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 205int32_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 213int32_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 221int32_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 229int32_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 237int32_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 245int32_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 253int32_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 261int32_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 269int32_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 277int32_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 285int32_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 293int32_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 301int32_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 309int32_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 318int32_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 327int32_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 336int32_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 344int32_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 352int32_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 360int32_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 368int32_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 376int32_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 384int32_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 392int32_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 400int32_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 409int32_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 417int32_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 428int32_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 437int32_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 446int32_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 455int32_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 464int32_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 472int32_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 480int32_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 488int32_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 497int32_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