From 1f4fd58fb9f2dc358a77b4fb110b9678bb1f739c Mon Sep 17 00:00:00 2001 From: fanzexuan Date: Sat, 11 Jan 2025 18:46:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96uitest=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: fanzexuan --- .../aafwk/include/accessibility_ui_test_ability_impl.h | 4 +++- .../aafwk/include/accessible_ability_client_impl.h | 4 +++- .../aafwk/src/accessibility_ui_test_ability_impl.cpp | 4 ++-- frameworks/aafwk/src/accessible_ability_client_impl.cpp | 9 +++++---- .../mock/src/mock_accessible_ability_client_impl.cpp | 2 +- .../unittest/accessibility_ui_test_ability_impl_test.cpp | 4 ++-- .../unittest/accessible_ability_client_impl_test.cpp | 2 +- frameworks/common/src/accessibility_constants.cpp | 1 + .../aafwk/include/accessibility_ui_test_ability.h | 4 +++- .../innerkits/aafwk/include/accessible_ability_client.h | 4 +++- .../innerkits/common/include/accessibility_constants.h | 1 + 11 files changed, 25 insertions(+), 14 deletions(-) diff --git a/frameworks/aafwk/include/accessibility_ui_test_ability_impl.h b/frameworks/aafwk/include/accessibility_ui_test_ability_impl.h index 99db5190..bd4e53ac 100644 --- a/frameworks/aafwk/include/accessibility_ui_test_ability_impl.h +++ b/frameworks/aafwk/include/accessibility_ui_test_ability_impl.h @@ -106,10 +106,12 @@ public: * @brief Obtains elementInfos of the accessible root node in batchs. * @param windowInfo The source window info to get root. * @param elementInfos ElementInfos of the accessible root node and its recursive subnodes. + * @param isFilter Indicates whether to filter nodes. + * @param needCut Indicates whether to remove invisible nodes. * @return Return RET_OK if obtains elementInfos successfully, otherwise refer to the RetError for the failure. */ virtual RetError GetRootByWindowBatch(const AccessibilityWindowInfo &windowInfo, - std::vector& elementInfos, bool isFilter) override; + std::vector& elementInfos, bool isFilter, bool needCut) override; /** * @brief Get the window information related with the event diff --git a/frameworks/aafwk/include/accessible_ability_client_impl.h b/frameworks/aafwk/include/accessible_ability_client_impl.h index a3cfb5ab..fec92084 100644 --- a/frameworks/aafwk/include/accessible_ability_client_impl.h +++ b/frameworks/aafwk/include/accessible_ability_client_impl.h @@ -145,10 +145,12 @@ public: * @brief Obtains elementInfos of the accessible root node in batchs. * @param windowInfo The source window info to get root. * @param elementInfos ElementInfos of the accessible root node and its recursive subnodes. + * @param isFilter Indicates whether to filter nodes. + * @param needCut Indicates whether to remove invisible nodes. * @return Return RET_OK if obtains elementInfos successfully, otherwise refer to the RetError for the failure. */ virtual RetError GetRootByWindowBatch(const AccessibilityWindowInfo &windowInfo, - std::vector& elementInfos, bool isFilter) override; + std::vector& elementInfos, bool isFilter, bool needCut) override; /** * @brief Get the window information related with the event diff --git a/frameworks/aafwk/src/accessibility_ui_test_ability_impl.cpp b/frameworks/aafwk/src/accessibility_ui_test_ability_impl.cpp index 6aaa045e..56c99062 100644 --- a/frameworks/aafwk/src/accessibility_ui_test_ability_impl.cpp +++ b/frameworks/aafwk/src/accessibility_ui_test_ability_impl.cpp @@ -146,7 +146,7 @@ RetError AccessibilityUITestAbilityImpl::GetRootBatch(std::vector& elementInfos, bool isFilter) + std::vector& elementInfos, bool isFilter, bool needCut) { HILOG_DEBUG(); sptr aaClient = AccessibleAbilityClient::GetInstance(); @@ -154,7 +154,7 @@ RetError AccessibilityUITestAbilityImpl::GetRootByWindowBatch(const Accessibilit HILOG_ERROR("aaClient is nullptr"); return RET_ERR_NULLPTR; } - return aaClient->GetRootByWindowBatch(windowInfo, elementInfos, isFilter); + return aaClient->GetRootByWindowBatch(windowInfo, elementInfos, isFilter, needCut); } RetError AccessibilityUITestAbilityImpl::GetWindow(const int32_t windowId, AccessibilityWindowInfo &windowInfo) diff --git a/frameworks/aafwk/src/accessible_ability_client_impl.cpp b/frameworks/aafwk/src/accessible_ability_client_impl.cpp index d775ee5f..6725c7f6 100644 --- a/frameworks/aafwk/src/accessible_ability_client_impl.cpp +++ b/frameworks/aafwk/src/accessible_ability_client_impl.cpp @@ -613,7 +613,7 @@ void AccessibleAbilityClientImpl::SortElementInfosIfNecessary(std::vector& elementInfos, bool isFilter) + std::vector& elementInfos, bool isFilter, bool needCut) { HILOG_DEBUG("GetRootByWindowBatch %{public}d", windowInfo.GetWindowId()); if (!isConnected_) { @@ -634,8 +634,9 @@ RetError AccessibleAbilityClientImpl::GetRootByWindowBatch(const AccessibilityWi int32_t windowId = windowInfo.GetWindowId(); int64_t elementId = ROOT_NONE_ID; + int32_t mode = needCut ? PREFETCH_RECURSIVE_CHILDREN_REDUCED : PREFETCH_RECURSIVE_CHILDREN; RetError ret = SearchElementInfoRecursiveByWinid(windowId, elementId, - PREFETCH_RECURSIVE_CHILDREN, elementInfos, ROOT_TREE_ID, isFilter); + mode, elementInfos, ROOT_TREE_ID, isFilter); if (ret != RET_OK) { HILOG_ERROR("get window element failed"); return ret; @@ -1403,8 +1404,8 @@ RetError AccessibleAbilityClientImpl::SearchElementInfoRecursiveByWinid(const in const int64_t elementId, uint32_t mode, std::vector &elementInfos, int32_t treeId, bool isFilter, uint64_t parentIndex) { - HILOG_INFO("windowId %{public}d}, elementId %{public}" PRId64 ", treeId %{public}d", - windowId, elementId, treeId); + HILOG_INFO("windowId %{public}d}, elementId %{public}" PRId64 ", treeId %{public}d, mode %{public}d", + windowId, elementId, treeId, mode); if (windowId <= 0) { HILOG_ERROR("window Id is failed windowId %{public}d", windowId); return RET_ERR_INVALID_ELEMENT_INFO_FROM_ACE; diff --git a/frameworks/aafwk/test/mock/src/mock_accessible_ability_client_impl.cpp b/frameworks/aafwk/test/mock/src/mock_accessible_ability_client_impl.cpp index ba10c1ab..3dfffcb5 100644 --- a/frameworks/aafwk/test/mock/src/mock_accessible_ability_client_impl.cpp +++ b/frameworks/aafwk/test/mock/src/mock_accessible_ability_client_impl.cpp @@ -297,7 +297,7 @@ RetError AccessibleAbilityClientImpl::GetRootBatch(std::vector& elementInfos, bool isFilter) + std::vector& elementInfos, bool isFilter, bool needCut) { HILOG_DEBUG(); return RET_OK; diff --git a/frameworks/aafwk/test/unittest/accessibility_ui_test_ability_impl_test.cpp b/frameworks/aafwk/test/unittest/accessibility_ui_test_ability_impl_test.cpp index 0f7df491..980519d5 100644 --- a/frameworks/aafwk/test/unittest/accessibility_ui_test_ability_impl_test.cpp +++ b/frameworks/aafwk/test/unittest/accessibility_ui_test_ability_impl_test.cpp @@ -877,7 +877,7 @@ HWTEST_F(AccessibilityUITestAbilityImplTest, GetRootByWindowBatch_001, TestSize. AccessibilityAbilityUtHelper::GetInstance().SetAbilityClientNullFlag(true); AccessibilityWindowInfo windowInfo {}; std::vector elementInfos; - EXPECT_EQ(instance_->GetRootByWindowBatch(windowInfo, elementInfos, true), RET_ERR_NULLPTR); + EXPECT_EQ(instance_->GetRootByWindowBatch(windowInfo, elementInfos, true, false), RET_ERR_NULLPTR); AccessibilityAbilityUtHelper::GetInstance().SetAbilityClientNullFlag(false); GTEST_LOG_(INFO) << "GetRootByWindowBatch_001 end"; @@ -898,7 +898,7 @@ HWTEST_F(AccessibilityUITestAbilityImplTest, GetRootByWindowBatch_002, TestSize. } AccessibilityWindowInfo windowInfo {}; std::vector elementInfos; - EXPECT_EQ(instance_->GetRootByWindowBatch(windowInfo, elementInfos, true), RET_OK); + EXPECT_EQ(instance_->GetRootByWindowBatch(windowInfo, elementInfos, true, false), RET_OK); GTEST_LOG_(INFO) << "GetRootByWindowBatch_002 end"; } diff --git a/frameworks/aafwk/test/unittest/accessible_ability_client_impl_test.cpp b/frameworks/aafwk/test/unittest/accessible_ability_client_impl_test.cpp index 2547b4bd..94c3a28e 100644 --- a/frameworks/aafwk/test/unittest/accessible_ability_client_impl_test.cpp +++ b/frameworks/aafwk/test/unittest/accessible_ability_client_impl_test.cpp @@ -971,7 +971,7 @@ HWTEST_F(AccessibleAbilityClientImplTest, GetRootByWindowBatch_001, TestSize.Lev Connect(); std::vector info; AccessibilityWindowInfo windowInfo {}; - EXPECT_EQ(instance_->GetRootByWindowBatch(windowInfo, info, true), RET_ERR_INVALID_ELEMENT_INFO_FROM_ACE); + EXPECT_EQ(instance_->GetRootByWindowBatch(windowInfo, info, true, false), RET_ERR_INVALID_ELEMENT_INFO_FROM_ACE); GTEST_LOG_(INFO) << "GetRootByWindowBatch_001 end"; } diff --git a/frameworks/common/src/accessibility_constants.cpp b/frameworks/common/src/accessibility_constants.cpp index 323b9e96..720ae5a3 100644 --- a/frameworks/common/src/accessibility_constants.cpp +++ b/frameworks/common/src/accessibility_constants.cpp @@ -66,6 +66,7 @@ const int32_t PREFETCH_PREDECESSORS = 1 << 0; const int32_t PREFETCH_SIBLINGS = 1 << 1; const int32_t PREFETCH_CHILDREN = 1 << 2; const int32_t PREFETCH_RECURSIVE_CHILDREN = 1 << 3; +const int32_t PREFETCH_RECURSIVE_CHILDREN_REDUCED = 1 << 4; const int32_t GET_SOURCE_MODE = PREFETCH_RECURSIVE_CHILDREN | PREFETCH_PREDECESSORS; const int32_t UNDEFINED = -1; const int32_t GET_SOURCE_PREFETCH_MODE = PREFETCH_PREDECESSORS | PREFETCH_SIBLINGS | PREFETCH_CHILDREN; diff --git a/interfaces/innerkits/aafwk/include/accessibility_ui_test_ability.h b/interfaces/innerkits/aafwk/include/accessibility_ui_test_ability.h index a9f78916..dbb2c704 100644 --- a/interfaces/innerkits/aafwk/include/accessibility_ui_test_ability.h +++ b/interfaces/innerkits/aafwk/include/accessibility_ui_test_ability.h @@ -110,10 +110,12 @@ public: * @brief Obtains elementInfos of the accessible root node in batchs. * @param windowInfo The source window info to get root. * @param elementInfos ElementInfos of the accessible root node and its recursive subnodes. + * @param isFilter Indicates whether to filter nodes. + * @param needCut Indicates whether to remove invisible nodes. * @return Return RET_OK if obtains elementInfos successfully, otherwise refer to the RetError for the failure. */ virtual RetError GetRootByWindowBatch(const AccessibilityWindowInfo &windowInfo, - std::vector& elementInfos, bool isFilter = false) = 0; + std::vector& elementInfos, bool isFilter = false, bool needCut = false) = 0; /** * @brief Get the window information related with the event diff --git a/interfaces/innerkits/aafwk/include/accessible_ability_client.h b/interfaces/innerkits/aafwk/include/accessible_ability_client.h index 01d227b9..026cc224 100644 --- a/interfaces/innerkits/aafwk/include/accessible_ability_client.h +++ b/interfaces/innerkits/aafwk/include/accessible_ability_client.h @@ -98,10 +98,12 @@ public: * @brief Obtains elementInfos of the accessible root node in batchs. * @param windowInfo The source window info to get root. * @param elementInfos ElementInfos of the accessible root node and its recursive subnodes. + * @param isFilter Indicates whether to filter nodes. + * @param needCut Indicates whether to remove invisible nodes. * @return Return RET_OK if obtains elementInfos successfully, otherwise refer to the RetError for the failure. */ virtual RetError GetRootByWindowBatch(const AccessibilityWindowInfo &windowInfo, - std::vector& elementInfos, bool isFilter = false) = 0; + std::vector& elementInfos, bool isFilter = false, bool needCut = false) = 0; /** * @brief Get the window information related with the event diff --git a/interfaces/innerkits/common/include/accessibility_constants.h b/interfaces/innerkits/common/include/accessibility_constants.h index 16aa95aa..5d81ad0b 100644 --- a/interfaces/innerkits/common/include/accessibility_constants.h +++ b/interfaces/innerkits/common/include/accessibility_constants.h @@ -70,6 +70,7 @@ extern const int32_t PREFETCH_PREDECESSORS; extern const int32_t PREFETCH_SIBLINGS; extern const int32_t PREFETCH_CHILDREN; extern const int32_t PREFETCH_RECURSIVE_CHILDREN; +extern const int32_t PREFETCH_RECURSIVE_CHILDREN_REDUCED; extern const int32_t GET_SOURCE_MODE; extern const int32_t UNDEFINED; extern const int32_t GET_SOURCE_PREFETCH_MODE; -- Gitee