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 "gtest/gtest.h" 17 18 #include "adapter/ohos/osal/js_third_provider_interaction_operation_utils.h" 19 #include "frameworks/core/accessibility/accessibility_node.h" 20 #include "frameworks/core/accessibility/accessibility_utils.h" 21 #include "securec.h" 22 23 using namespace testing; 24 using namespace testing::ext; 25 26 namespace OHOS::Ace::NG { 27 namespace { 28 const int32_t BOOL_MASK = 2; 29 const int32_t MAX_CHILD_COUNT = 20; 30 const int32_t MAX_ACTION_COUNT = 20; 31 const int32_t MAX_C_STR_COUNT = 30; 32 const int32_t MAX_C_STR_CHAR_COUNT = 100; 33 } // namespace 34 35 class AccessibilityProviderUtilsTestNg : public testing::Test { 36 public: SetUpTestCase()37 static void SetUpTestCase() {}; TearDownTestCase()38 static void TearDownTestCase() {}; 39 FillNativeAccessibilityElementInfoPart(const OHOS::Accessibility::AccessibilityElementInfo & accessibilityElementInfo,ArkUI_AccessibilityElementInfo & nativeInfo)40 void FillNativeAccessibilityElementInfoPart( 41 const OHOS::Accessibility::AccessibilityElementInfo& accessibilityElementInfo, 42 ArkUI_AccessibilityElementInfo& nativeInfo) 43 { 44 // screen rect 45 ArkUI_AccessibleRect screenRect { 46 accessibilityElementInfo.GetRectInScreen().GetLeftTopXScreenPostion(), 47 accessibilityElementInfo.GetRectInScreen().GetLeftTopYScreenPostion(), 48 accessibilityElementInfo.GetRectInScreen().GetRightBottomXScreenPostion(), 49 accessibilityElementInfo.GetRectInScreen().GetRightBottomYScreenPostion()}; 50 nativeInfo.SetRect(screenRect); 51 // rangeInfo 52 ArkUI_AccessibleRangeInfo rangeInfo { 53 accessibilityElementInfo.GetRange().GetMin(), 54 accessibilityElementInfo.GetRange().GetMax(), 55 accessibilityElementInfo.GetRange().GetCurrent()}; 56 nativeInfo.SetRangeInfo(rangeInfo); 57 // GridInfo 58 ArkUI_AccessibleGridInfo gridInfo { 59 accessibilityElementInfo.GetGrid().GetRowCount(), 60 accessibilityElementInfo.GetGrid().GetColumnCount(), 61 accessibilityElementInfo.GetGrid().GetSelectionMode()}; 62 nativeInfo.SetGridInfo(gridInfo); 63 // GridItemInfo 64 ArkUI_AccessibleGridItemInfo gridItemInfo { 65 accessibilityElementInfo.GetGridItem().IsHeading(), 66 accessibilityElementInfo.GetGridItem().IsSelected(), 67 accessibilityElementInfo.GetGridItem().GetColumnIndex(), 68 accessibilityElementInfo.GetGridItem().GetRowIndex(), 69 accessibilityElementInfo.GetGridItem().GetColumnSpan(), 70 accessibilityElementInfo.GetGridItem().GetRowSpan()}; 71 nativeInfo.SetGridItemInfo(gridItemInfo); 72 73 nativeInfo.SetComponentType(accessibilityElementInfo.GetComponentType()); 74 nativeInfo.SetContents(accessibilityElementInfo.GetContent()); 75 nativeInfo.SetHintText(accessibilityElementInfo.GetHint()); 76 nativeInfo.SetAccessibilityText(accessibilityElementInfo.GetAccessibilityText()); 77 nativeInfo.SetAccessibilityDescription(accessibilityElementInfo.GetDescriptionInfo()); 78 nativeInfo.SetAccessibilityLevel(accessibilityElementInfo.GetAccessibilityLevel()); 79 nativeInfo.SetBackgroundColor(accessibilityElementInfo.GetBackgroundColor()); 80 nativeInfo.SetBackgroundImage(accessibilityElementInfo.GetBackgroundImage()); 81 nativeInfo.SetBlur(accessibilityElementInfo.GetBlur()); 82 nativeInfo.SetHitTestBehavior(accessibilityElementInfo.GetHitTestBehavior()); 83 } 84 FillNativeAccessibilityElementInfo(const OHOS::Accessibility::AccessibilityElementInfo & accessibilityElementInfo,ArkUI_AccessibilityElementInfo & nativeInfo)85 void FillNativeAccessibilityElementInfo( 86 const OHOS::Accessibility::AccessibilityElementInfo& accessibilityElementInfo, 87 ArkUI_AccessibilityElementInfo& nativeInfo) 88 { 89 nativeInfo.SetPageId(accessibilityElementInfo.GetPageId()); 90 nativeInfo.SetParentId(accessibilityElementInfo.GetParentNodeId()); 91 nativeInfo.SetElementId(accessibilityElementInfo.GetAccessibilityId()); 92 nativeInfo.SetTextBeginSelected(accessibilityElementInfo.GetSelectedBegin()); 93 nativeInfo.SetTextEndSelected(accessibilityElementInfo.GetSelectedEnd()); 94 nativeInfo.SetCurrentIndex(accessibilityElementInfo.GetCurrentIndex()); 95 nativeInfo.SetBeginIndex(accessibilityElementInfo.GetBeginIndex()); 96 nativeInfo.SetEndIndex(accessibilityElementInfo.GetEndIndex()); 97 nativeInfo.SetItemCount(accessibilityElementInfo.GetItemCounts()); 98 nativeInfo.SetOffset(accessibilityElementInfo.GetOffset()); 99 nativeInfo.SetZIndex(accessibilityElementInfo.GetZIndex()); 100 nativeInfo.SetOpacity(accessibilityElementInfo.GetOpacity()); 101 nativeInfo.SetCheckable(accessibilityElementInfo.IsCheckable()); 102 nativeInfo.SetChecked(accessibilityElementInfo.IsChecked()); 103 nativeInfo.SetFocusable(accessibilityElementInfo.IsFocusable()); 104 nativeInfo.SetFocused(accessibilityElementInfo.IsFocused()); 105 nativeInfo.SetVisible(accessibilityElementInfo.IsVisible()); 106 nativeInfo.SetAccessibilityFocused(accessibilityElementInfo.HasAccessibilityFocus()); 107 nativeInfo.SetSelected(accessibilityElementInfo.IsSelected()); 108 nativeInfo.SetClickable(accessibilityElementInfo.IsClickable()); 109 nativeInfo.SetLongClickable(accessibilityElementInfo.IsLongClickable()); 110 nativeInfo.SetEnabled(accessibilityElementInfo.IsEnabled()); 111 nativeInfo.SetPassword(accessibilityElementInfo.IsPassword()); 112 nativeInfo.SetScrollable(accessibilityElementInfo.IsScrollable()); 113 nativeInfo.SetEditable(accessibilityElementInfo.IsEditable()); 114 nativeInfo.SetHint(accessibilityElementInfo.IsGivingHint()); 115 nativeInfo.SetAccessibilityGroup(accessibilityElementInfo.GetAccessibilityGroup()); 116 117 FillNativeAccessibilityElementInfoPart(accessibilityElementInfo, nativeInfo); 118 } 119 BuildAccessibilityElementInfoPart(int32_t index,OHOS::Accessibility::AccessibilityElementInfo & accessibilityElementInfo)120 void BuildAccessibilityElementInfoPart( 121 int32_t index, 122 OHOS::Accessibility::AccessibilityElementInfo& accessibilityElementInfo) 123 { 124 std::string content; 125 // screen rect 126 auto leftTopX = ++index; 127 auto leftTopY = ++index; 128 auto rightBottomX = ++index; 129 auto rightBottomY = ++index; 130 OHOS::Accessibility::Rect screenRect (leftTopX, leftTopY, rightBottomX, rightBottomY); 131 accessibilityElementInfo.SetRectInScreen(screenRect); 132 // rangeInfo 133 auto min = ++index; 134 auto max = ++index; 135 auto current = ++index; 136 OHOS::Accessibility::RangeInfo rangeInfo (min, max, current); 137 accessibilityElementInfo.SetRange(rangeInfo); 138 // GridInfo 139 auto rowCount = ++index; 140 auto columnCount = ++index; 141 auto selectionMode = ++index; 142 OHOS::Accessibility::GridInfo gridInfo (rowCount, columnCount, selectionMode); 143 accessibilityElementInfo.SetGrid(gridInfo); 144 // GridItemInfo 145 auto heading = (++index) % BOOL_MASK; 146 auto columnIndex = ++index; 147 auto rowIndex = ++index; 148 auto columnSpan = ++index; 149 auto rowSpan = ++index; 150 auto selected = (++index) % BOOL_MASK; 151 OHOS::Accessibility::GridItemInfo gridItemInfo 152 (heading, columnIndex, rowIndex, columnSpan, rowSpan, selected); 153 accessibilityElementInfo.SetGridItem(gridItemInfo); 154 155 content = std::to_string(++index); 156 accessibilityElementInfo.SetComponentType(content); 157 content = std::to_string(++index); 158 accessibilityElementInfo.SetContent(content); 159 content = std::to_string(++index); 160 accessibilityElementInfo.SetHint(content); 161 content = std::to_string(++index); 162 accessibilityElementInfo.SetAccessibilityText(content); 163 content = std::to_string(++index); 164 accessibilityElementInfo.SetDescriptionInfo(content); 165 content = std::to_string(++index); 166 accessibilityElementInfo.SetAccessibilityLevel(content); 167 content = std::to_string(++index); 168 accessibilityElementInfo.SetBackgroundColor(content); 169 content = std::to_string(++index); 170 accessibilityElementInfo.SetBackgroundImage(content); 171 content = std::to_string(++index); 172 accessibilityElementInfo.SetBlur(content); 173 content = std::to_string(++index); 174 accessibilityElementInfo.SetHitTestBehavior(content); 175 } 176 BuildAccessibilityElementInfo(int32_t index,OHOS::Accessibility::AccessibilityElementInfo & accessibilityElementInfo)177 void BuildAccessibilityElementInfo( 178 int32_t index, 179 OHOS::Accessibility::AccessibilityElementInfo& accessibilityElementInfo) 180 { 181 std::string content; 182 183 accessibilityElementInfo.SetPageId(index); 184 accessibilityElementInfo.SetParent(++index); 185 accessibilityElementInfo.SetAccessibilityId(++index); 186 accessibilityElementInfo.SetSelectedBegin(++index); 187 accessibilityElementInfo.SetSelectedEnd(++index); 188 189 accessibilityElementInfo.SetCurrentIndex(++index); 190 accessibilityElementInfo.SetBeginIndex(++index); 191 accessibilityElementInfo.SetEndIndex(++index); 192 accessibilityElementInfo.SetItemCounts(++index); 193 accessibilityElementInfo.SetOffset(++index); 194 accessibilityElementInfo.SetZIndex(++index); 195 accessibilityElementInfo.SetOpacity(++index); 196 accessibilityElementInfo.SetCheckable((++index) % BOOL_MASK); 197 accessibilityElementInfo.SetChecked((++index) % BOOL_MASK); 198 accessibilityElementInfo.SetFocusable((++index) % BOOL_MASK); 199 accessibilityElementInfo.SetFocused((++index) % BOOL_MASK); 200 accessibilityElementInfo.SetVisible((++index) % BOOL_MASK); 201 accessibilityElementInfo.SetAccessibilityFocus((++index) % BOOL_MASK); 202 accessibilityElementInfo.SetSelected((++index) % BOOL_MASK); 203 accessibilityElementInfo.SetClickable((++index) % BOOL_MASK); 204 accessibilityElementInfo.SetLongClickable((++index) % BOOL_MASK); 205 accessibilityElementInfo.SetEnabled((++index) % BOOL_MASK); 206 accessibilityElementInfo.SetPassword((++index) % BOOL_MASK); 207 accessibilityElementInfo.SetScrollable((++index) % BOOL_MASK); 208 accessibilityElementInfo.SetEditable((++index) % BOOL_MASK); 209 accessibilityElementInfo.SetHinting((++index) % BOOL_MASK); 210 accessibilityElementInfo.SetAccessibilityGroup((++index) % BOOL_MASK); 211 212 BuildAccessibilityElementInfoPart(index, accessibilityElementInfo); 213 } 214 CheckTransformElementInfoResultPart(const OHOS::Accessibility::AccessibilityElementInfo & beforeInfo,const OHOS::Accessibility::AccessibilityElementInfo & afterInfo)215 void CheckTransformElementInfoResultPart( 216 const OHOS::Accessibility::AccessibilityElementInfo& beforeInfo, 217 const OHOS::Accessibility::AccessibilityElementInfo& afterInfo) 218 { 219 // screen rect 220 EXPECT_EQ(beforeInfo.GetRectInScreen().GetLeftTopXScreenPostion(), 221 afterInfo.GetRectInScreen().GetLeftTopXScreenPostion()); 222 EXPECT_EQ(beforeInfo.GetRectInScreen().GetLeftTopYScreenPostion(), 223 afterInfo.GetRectInScreen().GetLeftTopYScreenPostion()); 224 EXPECT_EQ(beforeInfo.GetRectInScreen().GetRightBottomXScreenPostion(), 225 afterInfo.GetRectInScreen().GetRightBottomXScreenPostion()); 226 EXPECT_EQ(beforeInfo.GetRectInScreen().GetRightBottomYScreenPostion(), 227 afterInfo.GetRectInScreen().GetRightBottomYScreenPostion()); 228 229 // rangeInfo 230 EXPECT_EQ(beforeInfo.GetRange().GetMin(), 231 afterInfo.GetRange().GetMin()); 232 EXPECT_EQ(beforeInfo.GetRange().GetMax(), 233 afterInfo.GetRange().GetMax()); 234 EXPECT_EQ(beforeInfo.GetRange().GetCurrent(), 235 afterInfo.GetRange().GetCurrent()); 236 237 // GridInfo 238 EXPECT_EQ(beforeInfo.GetGrid().GetRowCount(), 239 afterInfo.GetGrid().GetRowCount()); 240 EXPECT_EQ(beforeInfo.GetGrid().GetColumnCount(), 241 afterInfo.GetGrid().GetColumnCount()); 242 EXPECT_EQ(beforeInfo.GetGrid().GetSelectionMode(), 243 afterInfo.GetGrid().GetSelectionMode()); 244 245 // GridItemInfo 246 EXPECT_EQ(beforeInfo.GetGridItem().GetColumnIndex(), 247 afterInfo.GetGridItem().GetColumnIndex()); 248 EXPECT_EQ(beforeInfo.GetGridItem().GetRowIndex(), 249 afterInfo.GetGridItem().GetRowIndex()); 250 EXPECT_EQ(beforeInfo.GetGridItem().GetColumnSpan(), 251 afterInfo.GetGridItem().GetColumnSpan()); 252 EXPECT_EQ(beforeInfo.GetGridItem().GetRowSpan(), 253 afterInfo.GetGridItem().GetRowSpan()); 254 EXPECT_EQ(beforeInfo.GetGridItem().IsHeading(), 255 afterInfo.GetGridItem().IsHeading()); 256 EXPECT_EQ(beforeInfo.GetGridItem().IsSelected(), 257 afterInfo.GetGridItem().IsSelected()); 258 259 EXPECT_EQ(beforeInfo.GetComponentType(), afterInfo.GetComponentType()); 260 EXPECT_EQ(beforeInfo.GetContent(), afterInfo.GetContent()); 261 EXPECT_EQ(beforeInfo.GetHint(), afterInfo.GetHint()); 262 EXPECT_EQ(beforeInfo.GetAccessibilityText(), afterInfo.GetAccessibilityText()); 263 EXPECT_EQ(beforeInfo.GetDescriptionInfo(), afterInfo.GetDescriptionInfo()); 264 EXPECT_EQ(beforeInfo.GetAccessibilityLevel(), afterInfo.GetAccessibilityLevel()); 265 EXPECT_EQ(beforeInfo.GetBackgroundColor(), afterInfo.GetBackgroundColor()); 266 EXPECT_EQ(beforeInfo.GetBlur(), afterInfo.GetBlur()); 267 EXPECT_EQ(beforeInfo.GetHitTestBehavior(), afterInfo.GetHitTestBehavior()); 268 } 269 CheckTransformElementInfoResult(const OHOS::Accessibility::AccessibilityElementInfo & beforeInfo,const OHOS::Accessibility::AccessibilityElementInfo & afterInfo)270 void CheckTransformElementInfoResult( 271 const OHOS::Accessibility::AccessibilityElementInfo& beforeInfo, 272 const OHOS::Accessibility::AccessibilityElementInfo& afterInfo) 273 { 274 // Page ID not trans 275 EXPECT_EQ(beforeInfo.GetParentNodeId(), afterInfo.GetParentNodeId()); 276 EXPECT_EQ(beforeInfo.GetAccessibilityId(), afterInfo.GetAccessibilityId()); 277 EXPECT_EQ(beforeInfo.GetSelectedBegin(), afterInfo.GetSelectedBegin()); 278 EXPECT_EQ(beforeInfo.GetSelectedEnd(), afterInfo.GetSelectedEnd()); 279 EXPECT_EQ(beforeInfo.GetCurrentIndex(), afterInfo.GetCurrentIndex()); 280 EXPECT_EQ(beforeInfo.GetBeginIndex(), afterInfo.GetBeginIndex()); 281 EXPECT_EQ(beforeInfo.GetEndIndex(), afterInfo.GetEndIndex()); 282 EXPECT_EQ(beforeInfo.GetItemCounts(), afterInfo.GetItemCounts()); 283 EXPECT_EQ(beforeInfo.GetOffset(), afterInfo.GetOffset()); 284 EXPECT_EQ(beforeInfo.GetZIndex(), afterInfo.GetZIndex()); 285 EXPECT_EQ(beforeInfo.GetOpacity(), afterInfo.GetOpacity()); 286 EXPECT_EQ(beforeInfo.IsCheckable(), afterInfo.IsCheckable()); 287 EXPECT_EQ(beforeInfo.IsChecked(), afterInfo.IsChecked()); 288 EXPECT_EQ(beforeInfo.IsFocusable(), afterInfo.IsFocusable()); 289 EXPECT_EQ(beforeInfo.IsFocused(), afterInfo.IsFocused()); 290 EXPECT_EQ(beforeInfo.IsVisible(), afterInfo.IsVisible()); 291 EXPECT_EQ(beforeInfo.HasAccessibilityFocus(), afterInfo.HasAccessibilityFocus()); 292 EXPECT_EQ(beforeInfo.IsSelected(), afterInfo.IsSelected()); 293 EXPECT_EQ(beforeInfo.IsClickable(), afterInfo.IsClickable()); 294 EXPECT_EQ(beforeInfo.IsLongClickable(), afterInfo.IsLongClickable()); 295 EXPECT_EQ(beforeInfo.IsEnabled(), afterInfo.IsEnabled()); 296 EXPECT_EQ(beforeInfo.IsPassword(), afterInfo.IsPassword()); 297 EXPECT_EQ(beforeInfo.IsScrollable(), afterInfo.IsScrollable()); 298 EXPECT_EQ(beforeInfo.IsEditable(), afterInfo.IsEditable()); 299 EXPECT_EQ(beforeInfo.IsGivingHint(), afterInfo.IsGivingHint()); 300 EXPECT_EQ(beforeInfo.GetAccessibilityGroup(), afterInfo.GetAccessibilityGroup()); 301 302 CheckTransformElementInfoResultPart(beforeInfo, afterInfo); 303 } 304 BuildAccessibilityEventInfo(int32_t index,OHOS::Accessibility::AccessibilityEventInfo & beforeEventInfo,OHOS::Accessibility::AccessibilityElementInfo & beforeElementInfo)305 void BuildAccessibilityEventInfo( 306 int32_t index, 307 OHOS::Accessibility::AccessibilityEventInfo& beforeEventInfo, 308 OHOS::Accessibility::AccessibilityElementInfo& beforeElementInfo) 309 { 310 beforeEventInfo.SetEventType(static_cast<OHOS::Accessibility::EventType>(index)); 311 beforeEventInfo.SetPageId(++index); 312 beforeEventInfo.SetRequestFocusElementId(++index); 313 beforeEventInfo.SetElementInfo(beforeElementInfo); 314 beforeEventInfo.SetTextAnnouncedForAccessibility(std::to_string(++index)); 315 } 316 FillNativeAccessibilityEventInfo(ArkUI_AccessibilityEventInfo & nativeEventInfo,OHOS::Accessibility::AccessibilityEventInfo & beforeEventInfo,ArkUI_AccessibilityElementInfo & info)317 void FillNativeAccessibilityEventInfo( 318 ArkUI_AccessibilityEventInfo& nativeEventInfo, 319 OHOS::Accessibility::AccessibilityEventInfo& beforeEventInfo, 320 ArkUI_AccessibilityElementInfo &info) 321 { 322 nativeEventInfo.SetEventType( 323 static_cast<ArkUI_AccessibilityEventType>(beforeEventInfo.GetEventType())); 324 nativeEventInfo.SetPageId(beforeEventInfo.GetPageId()); 325 nativeEventInfo.SetRequestFocusId(beforeEventInfo.GetRequestFocusElementId()); 326 nativeEventInfo.SetElementInfo(&(info)); 327 nativeEventInfo.SetTextAnnouncedForAccessibility( 328 beforeEventInfo.GetTextAnnouncedForAccessibility()); 329 } 330 CheckTransformEventInfoResult(const OHOS::Accessibility::AccessibilityEventInfo & beforeEventInfo,const OHOS::Accessibility::AccessibilityEventInfo & afterEventInfo)331 void CheckTransformEventInfoResult( 332 const OHOS::Accessibility::AccessibilityEventInfo& beforeEventInfo, 333 const OHOS::Accessibility::AccessibilityEventInfo& afterEventInfo) 334 { 335 EXPECT_EQ(beforeEventInfo.GetEventType(), afterEventInfo.GetEventType()); 336 // page not transform 337 EXPECT_EQ(beforeEventInfo.GetRequestFocusElementId(), 338 afterEventInfo.GetRequestFocusElementId()); 339 CheckTransformElementInfoResult(beforeEventInfo.GetElementInfo(), 340 afterEventInfo.GetElementInfo()); 341 EXPECT_EQ(beforeEventInfo.GetTextAnnouncedForAccessibility(), 342 afterEventInfo.GetTextAnnouncedForAccessibility()); 343 } 344 345 std::vector<ArkUI_Accessibility_ActionType> actionTypeVector = { 346 ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_INVALID, 347 ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_CLICK, 348 ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_CLICK, 349 ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_LONG_CLICK, 350 ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_GAIN_ACCESSIBILITY_FOCUS, 351 ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_CLEAR_ACCESSIBILITY_FOCUS, 352 ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_SCROLL_FORWARD, 353 ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_SCROLL_BACKWARD, 354 ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_COPY, 355 ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_PASTE, 356 ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_CUT, 357 ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_SELECT_TEXT, 358 ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_SET_TEXT, 359 ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_SET_CURSOR_POSITION, 360 }; 361 }; 362 363 /** 364 * @tc.name: accessibilityTest001 365 * @tc.desc: TransformAccessbilityElementInfo 366 * @tc.type: FUNC 367 */ 368 HWTEST_F(AccessibilityProviderUtilsTestNg, AccessibilityUtilsTest001, TestSize.Level1) 369 { 370 OHOS::Accessibility::AccessibilityElementInfo beforeInfo; 371 BuildAccessibilityElementInfo(1, beforeInfo); 372 ArkUI_AccessibilityElementInfo info; 373 FillNativeAccessibilityElementInfo(beforeInfo, info); 374 OHOS::Accessibility::AccessibilityElementInfo afterInfo; 375 Framework::TransformAccessbilityElementInfo(info, afterInfo); 376 CheckTransformElementInfoResult(beforeInfo, afterInfo); 377 } 378 379 /** 380 * @tc.name: accessibilityTest002 381 * @tc.desc: TransformAccessbilityEventInfo 382 * @tc.type: FUNC 383 */ 384 HWTEST_F(AccessibilityProviderUtilsTestNg, AccessibilityUtilsTest002, TestSize.Level1) 385 { 386 OHOS::Accessibility::AccessibilityElementInfo beforeElementInfo; 387 BuildAccessibilityElementInfo(1, beforeElementInfo); 388 ArkUI_AccessibilityElementInfo info; 389 FillNativeAccessibilityElementInfo(beforeElementInfo, info); 390 391 OHOS::Accessibility::AccessibilityEventInfo beforeEventInfo; 392 BuildAccessibilityEventInfo(1, beforeEventInfo, beforeElementInfo); 393 ArkUI_AccessibilityEventInfo nativeEventInfo; 394 FillNativeAccessibilityEventInfo(nativeEventInfo, beforeEventInfo, info); 395 396 OHOS::Accessibility::AccessibilityEventInfo accessibilityEventInfo; 397 Framework::TransformAccessbilityEventInfo(nativeEventInfo, accessibilityEventInfo); 398 399 CheckTransformEventInfoResult(beforeEventInfo, accessibilityEventInfo); 400 } 401 402 /** 403 * @tc.name: accessibilityTest003 404 * @tc.desc: Check child 405 * @tc.type: FUNC 406 */ 407 HWTEST_F(AccessibilityProviderUtilsTestNg, AccessibilityUtilsTest003, TestSize.Level1) 408 { 409 OHOS::Accessibility::AccessibilityElementInfo beforeInfo; 410 BuildAccessibilityElementInfo(1, beforeInfo); 411 ArkUI_AccessibilityElementInfo info; 412 FillNativeAccessibilityElementInfo(beforeInfo, info); 413 414 // add child 415 std::vector<int64_t> childIds; 416 auto now = std::chrono::system_clock::now(); 417 int64_t childCount = 418 std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()) 419 .count(); 420 childCount = (childCount % MAX_CHILD_COUNT) + 1; 421 for (int64_t i = 0; i < childCount; i++) { 422 info.AddChildNodeId(i); 423 childIds.push_back(i); 424 } 425 426 OHOS::Accessibility::AccessibilityElementInfo afterInfo; 427 Framework::TransformAccessbilityElementInfo(info, afterInfo); 428 CheckTransformElementInfoResult(beforeInfo, afterInfo); 429 430 EXPECT_EQ(afterInfo.GetChildCount(), childCount); 431 EXPECT_EQ(afterInfo.GetChildIds(), childIds); 432 433 // clear child 434 info.ClearChildNodeIds(); 435 OHOS::Accessibility::AccessibilityElementInfo afterInfo2; 436 Framework::TransformAccessbilityElementInfo(info, afterInfo2); 437 CheckTransformElementInfoResult(beforeInfo, afterInfo2); 438 EXPECT_EQ(afterInfo2.GetChildCount(), 0); 439 } 440 441 /** 442 * @tc.name: accessibilityTest004 443 * @tc.desc: Check action 444 * @tc.type: FUNC 445 */ 446 HWTEST_F(AccessibilityProviderUtilsTestNg, AccessibilityUtilsTest004, TestSize.Level1) 447 { 448 OHOS::Accessibility::AccessibilityElementInfo beforeInfo; 449 BuildAccessibilityElementInfo(1, beforeInfo); 450 ArkUI_AccessibilityElementInfo info; 451 FillNativeAccessibilityElementInfo(beforeInfo, info); 452 453 // add action 454 std::vector<Accessibility::AccessibleAction> accessibilityActions; 455 auto now = std::chrono::system_clock::now(); 456 int64_t actionCount = 457 std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()) 458 .count(); 459 actionCount = (actionCount % MAX_ACTION_COUNT) + 1; 460 auto startIndex = actionCount; 461 char string[MAX_C_STR_COUNT][MAX_C_STR_CHAR_COUNT]; 462 for (int64_t i = 0; i < actionCount; i++) { 463 ArkUI_Accessibility_ActionType actionType 464 = actionTypeVector[(startIndex + i) % actionTypeVector.size()]; 465 auto content = std::to_string(startIndex + i); 466 (void)strcpy_s(string[i], MAX_C_STR_CHAR_COUNT, content.c_str()); 467 ArkUI_AccessibleAction tempAction { actionType, string[i]}; 468 info.AddOperationAction(tempAction); 469 Accessibility::AccessibleAction tempAccessibilityActions 470 {static_cast<Accessibility::ActionType>(actionType), string[i]}; 471 accessibilityActions.push_back(tempAccessibilityActions); 472 } 473 474 OHOS::Accessibility::AccessibilityElementInfo afterInfo; 475 Framework::TransformAccessbilityElementInfo(info, afterInfo); 476 CheckTransformElementInfoResult(beforeInfo, afterInfo); 477 478 EXPECT_EQ(afterInfo.GetActionList().size(), actionCount); 479 EXPECT_EQ(accessibilityActions.size(), actionCount); 480 auto afterActionList = afterInfo.GetActionList(); 481 for (int64_t i = 0; i < actionCount; i++) { 482 EXPECT_EQ(afterActionList[i].GetActionType(), 483 accessibilityActions[i].GetActionType()); 484 EXPECT_EQ(afterActionList[i].GetDescriptionInfo(), 485 accessibilityActions[i].GetDescriptionInfo()); 486 } 487 488 // clear action 489 info.ClearOperationActions(); 490 OHOS::Accessibility::AccessibilityElementInfo afterInfo2; 491 Framework::TransformAccessbilityElementInfo(info, afterInfo2); 492 CheckTransformElementInfoResult(beforeInfo, afterInfo2); 493 EXPECT_EQ(afterInfo2.GetActionList().size(), 0); 494 } 495 496 } // namespace OHOS::Ace::NG 497