mirror of
https://github.com/openharmony/accessibility.git
synced 2026-08-24 22:11:28 -04:00
!2254 merge codesync into master
代码整改
Created-by: fanzexuan
Commit-by: fanzexuan
Merged-by: openharmony_ci
Description: ### 一、内容说明(相关的Issue)
### 二、建议测试周期和提测地址
建议测试完成时间:xxxx.xx.xx
投产上线时间:xxxx.xx.xx
提测地址:CI环境/压测环境
测试账号:
### 三、变更内容
* 3.1 关联PR列表
* 3.2 数据库和部署说明
1. 常规更新
2. 重启unicorn
3. 重启sidekiq
4. 迁移任务:是否有迁移任务,没有写 "无"
5. rake脚本:`bundle exec xxx RAILS_ENV = production`;没有写 "无"
* 3.4 其他技术优化内容(做了什么,变更了什么)
- 重构了 xxxx 代码
- xxxx 算法优化
* 3.5 废弃通知(什么字段、方法弃用?)
* 3.6 后向不兼容变更(是否有无法向后兼容的变更?)
### 四、研发自测点(自测哪些?冒烟用例全部自测?)
自测测试结论:
### 五、测试关注点(需要提醒QA重点关注的、可能会忽略的地方)
检查点:
| 需求名称 | 是否影响xx公共模块 | 是否需要xx功能 | 需求升级是否依赖其他子产品 |
|------|------------|----------|---------------|
| xxx | 否 | 需要 | 不需要 |
| | | | |
接口测试:
性能测试:
并发测试:
其他:
See merge request: openharmony/accessibility!2254
This commit is contained in:
@@ -1,104 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2025 Huawei Device Co., Ltd.
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef MOCK_FOR_ELEMENT_OPERATOR_MANAGER_H
|
||||
#define MOCK_FOR_ELEMENT_OPERATOR_MANAGER_H
|
||||
|
||||
#include <gmock/gmock.h>
|
||||
#include "accessibility_window_connection.h"
|
||||
#include "iaccessibility_element_operator.h"
|
||||
#include "iaccessibility_element_operator_callback.h"
|
||||
#include "accessibility_element_info.h"
|
||||
#include "accessibility_def.h"
|
||||
|
||||
#define MOCK_ROOT_PARENT_ELEMENT_ID 1000
|
||||
|
||||
struct SpecificPropertyParam {};
|
||||
|
||||
namespace OHOS {
|
||||
namespace Accessibility {
|
||||
|
||||
class MockElementOperatorManagerWindowConnection : public AccessibilityWindowConnection {
|
||||
public:
|
||||
MockElementOperatorManagerWindowConnection(int32_t windowId, const sptr<IAccessibilityElementOperator>& connection,
|
||||
int32_t accountId) : AccessibilityWindowConnection(windowId, connection, accountId) {}
|
||||
virtual ~MockElementOperatorManagerWindowConnection() = default;
|
||||
|
||||
sptr<IAccessibilityElementOperator> GetProxy() { return mockOperator_; }
|
||||
sptr<IAccessibilityElementOperator> GetCardProxy(const int32_t treeId) { return mockOperator_; }
|
||||
RetError SetCardProxy(const int32_t treeId, sptr<IAccessibilityElementOperator> operation)
|
||||
{
|
||||
return RET_OK;
|
||||
}
|
||||
void EraseProxy(const int32_t treeId) {}
|
||||
void GetAllTreeId(std::vector<int32_t> &treeIds) {}
|
||||
void GetRootParentId(int32_t treeId, int64_t &elementId) { elementId = MOCK_ROOT_PARENT_ELEMENT_ID; }
|
||||
RetError SetRootParentId(const int32_t treeId, const int64_t elementId) { return RET_OK; }
|
||||
|
||||
private:
|
||||
sptr<IAccessibilityElementOperator> mockOperator_ = nullptr;
|
||||
};
|
||||
|
||||
class MockElementOperatorManagerElementOperator : public IAccessibilityElementOperator {
|
||||
public:
|
||||
MockElementOperatorManagerElementOperator() = default;
|
||||
virtual ~MockElementOperatorManagerElementOperator() = default;
|
||||
|
||||
RetError SearchElementInfoByAccessibilityId(const int64_t elementId,
|
||||
const int32_t requestId, const sptr<IAccessibilityElementOperatorCallback> &callback,
|
||||
const int32_t mode, bool isFilter) override { return RET_OK; }
|
||||
|
||||
void SearchDefaultFocusedByWindowId(const int32_t windowId, const int32_t requestId,
|
||||
const sptr<IAccessibilityElementOperatorCallback> &callback, const int32_t mode, bool isFilter) override {}
|
||||
|
||||
void SearchElementInfosByText(const int64_t elementId, const std::string &text,
|
||||
const int32_t requestId, const sptr<IAccessibilityElementOperatorCallback> &callback) override {}
|
||||
|
||||
void FindFocusedElementInfo(const int64_t elementId, const int32_t focusType,
|
||||
const int32_t requestId, const sptr<IAccessibilityElementOperatorCallback> &callback) override {}
|
||||
|
||||
void FocusMoveSearch(const int64_t elementId, const int32_t direction,
|
||||
const int32_t requestId, const sptr<IAccessibilityElementOperatorCallback> &callback) override {}
|
||||
|
||||
void ExecuteAction(const int64_t elementId, const int32_t action,
|
||||
const std::map<std::string, std::string> &actionArguments, const int32_t requestId,
|
||||
const sptr<IAccessibilityElementOperatorCallback> &callback) override {}
|
||||
|
||||
void GetCursorPosition(const int64_t elementId, const int32_t requestId,
|
||||
const sptr<IAccessibilityElementOperatorCallback> &callback) override {}
|
||||
|
||||
void SearchElementInfoBySpecificProperty(const int64_t elementId,
|
||||
const SpecificPropertyParam& param, const int32_t requestId,
|
||||
const sptr<IAccessibilityElementOperatorCallback> &callback) override {}
|
||||
|
||||
void ClearFocus() override {}
|
||||
|
||||
void OutsideTouch() override {}
|
||||
|
||||
void SetChildTreeIdAndWinId(const int64_t elementId, const int32_t treeId,
|
||||
const int32_t childWindowId) override {}
|
||||
|
||||
void SetBelongTreeId(const int32_t treeId) override {}
|
||||
|
||||
void SetParentWindowId(const int32_t parentWindowId) override {}
|
||||
|
||||
sptr<IRemoteObject> AsObject() override
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
};
|
||||
} // namespace Accessibility
|
||||
} // namespace OHOS
|
||||
#endif // MOCK_FOR_ELEMENT_OPERATOR_MANAGER_H
|
||||
@@ -1,648 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2021 Huawei Device Co., Ltd.
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "accessibility_account_data.h"
|
||||
#include "accessible_ability_manager_service.h"
|
||||
#include "element_operator_manager.h"
|
||||
#include "hilog_wrapper.h"
|
||||
#include "utils.h"
|
||||
|
||||
namespace OHOS {
|
||||
namespace Accessibility {
|
||||
namespace {
|
||||
const std::string PREF_TEST_PATH = "/data/service/el1/public/barrierfree/accessibility_ability_manager_service/";
|
||||
std::vector<uint32_t> needEvents_ = {};
|
||||
} // namespace
|
||||
|
||||
AccessibilityAccountData::AccessibilityAccountData(int32_t accountId)
|
||||
{
|
||||
id_ = accountId;
|
||||
{
|
||||
std::lock_guard<ffrt::mutex> lock(abilityManagerMutex_);
|
||||
abilityManagerMap_[id_] = std::make_shared<AccessibilityAbilityManager>(id_);
|
||||
}
|
||||
}
|
||||
|
||||
AccessibilityAccountData::~AccessibilityAccountData()
|
||||
{}
|
||||
|
||||
int32_t AccessibilityAccountData::GetAccountId()
|
||||
{
|
||||
HILOG_DEBUG("start.");
|
||||
return id_;
|
||||
}
|
||||
|
||||
// get client state.
|
||||
uint32_t AccessibilityAccountData::GetAccessibilityState()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// switch the user causes state changed.
|
||||
void AccessibilityAccountData::OnAccountSwitched()
|
||||
{
|
||||
HILOG_DEBUG("start.");
|
||||
auto abilityManager = GetAbilityManager();
|
||||
if (abilityManager) {
|
||||
abilityManager->OnAccountSwitched();
|
||||
}
|
||||
|
||||
// Clear Setting State.
|
||||
isEventTouchGuideState_ = false;
|
||||
isScreenMagnification_ = false;
|
||||
isFilteringKeyEvents_ = false;
|
||||
isGesturesSimulation_ = false;
|
||||
}
|
||||
|
||||
// add connect ability.
|
||||
void AccessibilityAccountData::AddConnectedAbility(sptr<AccessibleAbilityConnection>& connection)
|
||||
{
|
||||
if (!connection) {
|
||||
HILOG_ERROR("connection is nullptr");
|
||||
return;
|
||||
}
|
||||
auto abilityManager = GetAbilityManager();
|
||||
if (abilityManager) {
|
||||
abilityManager->AddConnectedAbility(connection);
|
||||
}
|
||||
}
|
||||
|
||||
// remove connect ability.
|
||||
void AccessibilityAccountData::RemoveConnectedAbility(const AppExecFwk::ElementName &element)
|
||||
{
|
||||
auto abilityManager = GetAbilityManager();
|
||||
if (abilityManager) {
|
||||
abilityManager->RemoveConnectedAbility(element);
|
||||
}
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::AddCaptionPropertyCallback(
|
||||
const sptr<IAccessibleAbilityManagerCaptionObserver>& callback)
|
||||
{
|
||||
(void)callback;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::RemoveCaptionPropertyCallback(const wptr<IRemoteObject>& callback)
|
||||
{
|
||||
(void)callback;
|
||||
HILOG_DEBUG("start.");
|
||||
}
|
||||
// add AccessibilityInteractionConnection
|
||||
void AccessibilityAccountData::AddAccessibilityWindowConnection(
|
||||
const int32_t windowId, const sptr<AccessibilityWindowConnection>& interactionConnection)
|
||||
{
|
||||
HILOG_DEBUG("Mock: AddAccessibilityWindowConnection windowId(%{public}d)", windowId);
|
||||
operatorManager_.AddAccessibilityWindowConnection(windowId, interactionConnection);
|
||||
}
|
||||
|
||||
// remove AccessibilityWindowConnection
|
||||
void AccessibilityAccountData::RemoveAccessibilityWindowConnection(const int32_t windowId)
|
||||
{
|
||||
HILOG_DEBUG("Mock: RemoveAccessibilityWindowConnection windowId(%{public}d)", windowId);
|
||||
operatorManager_.RemoveAccessibilityWindowConnection(windowId);
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::AddConnectingA11yAbility(const std::string &uri,
|
||||
const sptr<AccessibleAbilityConnection> &connection)
|
||||
{
|
||||
auto abilityManager = GetAbilityManager();
|
||||
if (abilityManager) {
|
||||
abilityManager->AddConnectingA11yAbility(uri, connection);
|
||||
}
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::RemoveConnectingA11yAbility(const std::string &uri)
|
||||
{
|
||||
auto abilityManager = GetAbilityManager();
|
||||
if (abilityManager) {
|
||||
abilityManager->RemoveConnectingA11yAbility(uri);
|
||||
}
|
||||
}
|
||||
|
||||
// For UT
|
||||
void AccessibilityAccountData::AddEnabledAbility(const std::string& bundleName)
|
||||
{
|
||||
auto abilityManager = GetAbilityManager();
|
||||
if (abilityManager) {
|
||||
abilityManager->AddEnabledAbility(bundleName);
|
||||
}
|
||||
}
|
||||
|
||||
RetError AccessibilityAccountData::RemoveEnabledAbility(const std::string &name)
|
||||
{
|
||||
auto abilityManager = GetAbilityManager();
|
||||
if (abilityManager) {
|
||||
return abilityManager->RemoveEnabledAbility(name);
|
||||
}
|
||||
return RET_ERR_NOT_ENABLED;
|
||||
}
|
||||
|
||||
// For UT
|
||||
void AccessibilityAccountData::AddInstalledAbility(AccessibilityAbilityInfo& abilityInfo)
|
||||
{
|
||||
(void)abilityInfo;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::RemoveInstalledAbility(const std::string &bundleName)
|
||||
{
|
||||
(void)bundleName;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::ClearInstalledAbility()
|
||||
{}
|
||||
|
||||
const sptr<AccessibleAbilityConnection> AccessibilityAccountData::GetAccessibleAbilityConnection(
|
||||
const std::string &elementName)
|
||||
{
|
||||
(void)elementName;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const sptr<AccessibilityWindowConnection> AccessibilityAccountData::GetAccessibilityWindowConnection(
|
||||
const int32_t windowId)
|
||||
{
|
||||
HILOG_DEBUG("Mock: GetAccessibilityWindowConnection windowId(%{public}d)", windowId);
|
||||
return operatorManager_.GetAccessibilityWindowConnection(windowId);
|
||||
}
|
||||
|
||||
const std::map<std::string, sptr<AccessibleAbilityConnection>> AccessibilityAccountData::GetConnectedA11yAbilities()
|
||||
{
|
||||
auto abilityManager = GetAbilityManager();
|
||||
if (abilityManager) {
|
||||
return abilityManager->GetConnectedA11yAbilities();
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
||||
const std::map<int32_t, sptr<AccessibilityWindowConnection>> AccessibilityAccountData::GetAsacConnections()
|
||||
{
|
||||
HILOG_DEBUG("Mock: GetAsacConnections start");
|
||||
return operatorManager_.GetAsacConnections();
|
||||
}
|
||||
|
||||
const CaptionPropertyCallbacks AccessibilityAccountData::GetCaptionPropertyCallbacks()
|
||||
{
|
||||
HILOG_DEBUG("GetCaptionPropertyCallbacks start");
|
||||
return captionPropertyCallbacks_;
|
||||
}
|
||||
|
||||
sptr<AccessibleAbilityConnection> AccessibilityAccountData::GetConnectingA11yAbility(const std::string &uri)
|
||||
{
|
||||
auto abilityManager = GetAbilityManager();
|
||||
if (abilityManager) {
|
||||
return abilityManager->GetConnectingA11yAbility(uri);
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const std::vector<std::string>& AccessibilityAccountData::GetEnabledAbilities()
|
||||
{
|
||||
auto abilityManager = GetAbilityManager();
|
||||
if (abilityManager) {
|
||||
return abilityManager->GetEnabledAbilities();
|
||||
}
|
||||
static std::vector<std::string> emptyVector;
|
||||
return emptyVector;
|
||||
}
|
||||
|
||||
const std::vector<AccessibilityAbilityInfo> &AccessibilityAccountData::GetInstalledAbilities() const
|
||||
{
|
||||
auto abilityManager = GetAbilityManager();
|
||||
if (abilityManager) {
|
||||
return abilityManager->GetInstalledAbilities();
|
||||
}
|
||||
static std::vector<AccessibilityAbilityInfo> emptyVector;
|
||||
return emptyVector;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::GetAbilitiesByState(
|
||||
AbilityStateType state, std::vector<AccessibilityAbilityInfo> &abilities)
|
||||
{
|
||||
(void)state;
|
||||
(void)abilities;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::UpdateAccountCapabilities()
|
||||
{}
|
||||
|
||||
void AccessibilityAccountData::UpdateEventTouchGuideCapability()
|
||||
{}
|
||||
|
||||
void AccessibilityAccountData::UpdateGesturesSimulationCapability()
|
||||
{}
|
||||
|
||||
void AccessibilityAccountData::UpdateFilteringKeyEventsCapability()
|
||||
{
|
||||
isFilteringKeyEvents_ = false;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::UpdateMagnificationCapability()
|
||||
{
|
||||
isScreenMagnification_ = false;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::UpdateEnableAbilityListsState()
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
RetError AccessibilityAccountData::EnableAbility(const std::string &name, const uint32_t capabilities)
|
||||
{
|
||||
auto abilityManager = GetAbilityManager();
|
||||
if (abilityManager) {
|
||||
return abilityManager->EnableAbility(name, capabilities);
|
||||
}
|
||||
return RET_ERR_INVALID_PARAM;
|
||||
}
|
||||
|
||||
bool AccessibilityAccountData::GetInstalledAbilitiesFromBMS()
|
||||
{
|
||||
HILOG_DEBUG("start.");
|
||||
return true;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::SetScreenReaderState(const std::string &name, const std::string &state)
|
||||
{
|
||||
HILOG_DEBUG("start.");
|
||||
(void)name;
|
||||
(void)state;
|
||||
}
|
||||
|
||||
bool AccessibilityAccountData::GetDefaultUserScreenReaderState()
|
||||
{
|
||||
HILOG_DEBUG("start.");
|
||||
return true;
|
||||
}
|
||||
|
||||
bool AccessibilityAccountData::GetScreenReaderState()
|
||||
{
|
||||
HILOG_DEBUG("start.");
|
||||
return true;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::Init()
|
||||
{
|
||||
HILOG_DEBUG("start.");
|
||||
if (!config_) {
|
||||
config_ = std::make_shared<AccessibilitySettingsConfig>(id_);
|
||||
}
|
||||
|
||||
auto abilityManager = GetAbilityManager();
|
||||
if (abilityManager) {
|
||||
abilityManager->SetConfig(config_);
|
||||
}
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::AddEnableAbilityListsObserver(
|
||||
const sptr<IAccessibilityEnableAbilityListsObserver>& observer)
|
||||
{
|
||||
HILOG_DEBUG("start.");
|
||||
(void)observer;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::RemoveEnableAbilityListsObserver(const wptr<IRemoteObject>& observer)
|
||||
{
|
||||
(void)observer;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::AddConfigCallback(
|
||||
const sptr<IAccessibleAbilityManagerConfigObserver>& callback)
|
||||
{
|
||||
HILOG_DEBUG("AddConfigCallback start");
|
||||
configCallbacks_.push_back(callback);
|
||||
}
|
||||
|
||||
const std::vector<sptr<IAccessibleAbilityManagerConfigObserver>> AccessibilityAccountData::GetConfigCallbacks()
|
||||
{
|
||||
HILOG_DEBUG("GetConfigCallbacks start");
|
||||
return configCallbacks_;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::SetConfigCallbacks(std::vector<sptr<IAccessibleAbilityManagerConfigObserver>>& observer)
|
||||
{
|
||||
HILOG_DEBUG("SetConfigCallbacks start");
|
||||
configCallbacks_ = observer;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::RemoveConfigCallback(const wptr<IRemoteObject>& callback)
|
||||
{
|
||||
HILOG_DEBUG("RemoveConfigCallback start");
|
||||
for (auto iter = configCallbacks_.begin(); iter != configCallbacks_.end(); iter++) {
|
||||
if ((*iter)->AsObject() == callback) {
|
||||
configCallbacks_.erase(iter);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::shared_ptr<AccessibilitySettingsConfig> AccessibilityAccountData::GetConfig()
|
||||
{
|
||||
HILOG_DEBUG("GetConfig start");
|
||||
return config_;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::GetImportantEnabledAbilities(
|
||||
std::map<std::string, uint32_t> &importantEnabledAbilities) const
|
||||
{
|
||||
HILOG_DEBUG("GetImportantEnabledAbilities start");
|
||||
(void)importantEnabledAbilities;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::UpdateImportantEnabledAbilities(
|
||||
std::map<std::string, uint32_t> &importantEnabledAbilities)
|
||||
{
|
||||
HILOG_DEBUG("UpdateImportantEnabledAbilities start");
|
||||
(void)importantEnabledAbilities;
|
||||
}
|
||||
|
||||
uint32_t AccessibilityAccountData::GetInputFilterFlag() const
|
||||
{
|
||||
HILOG_DEBUG("GetInputFilterFlag start");
|
||||
return 0;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::UpdateAbilities()
|
||||
{
|
||||
HILOG_DEBUG("UpdateAbilities start");
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::AddUITestClient(const sptr<IRemoteObject> &obj,
|
||||
const std::string &bundleName, const std::string &abilityName)
|
||||
{
|
||||
(void)obj;
|
||||
(void)bundleName;
|
||||
(void)abilityName;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::RemoveUITestClient(
|
||||
sptr<AccessibleAbilityConnection> &connection, const std::string &bundleName)
|
||||
{
|
||||
(void)connection;
|
||||
(void)bundleName;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::SetAbilityAutoStartState(const std::string &name, const bool state)
|
||||
{
|
||||
(void)name;
|
||||
(void)state;
|
||||
}
|
||||
|
||||
bool AccessibilityAccountData::GetAbilityAutoStartState(const std::string &key)
|
||||
{
|
||||
(void)key;
|
||||
return true;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::GetConfigValueAtoHos(ConfigValueAtoHosUpdate &value)
|
||||
{
|
||||
(void)value;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::DelAutoStartPrefKeyInRemovePkg(const std::string &bundleName)
|
||||
{
|
||||
(void)bundleName;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::UpdateAutoStartEnabledAbilities()
|
||||
{
|
||||
}
|
||||
|
||||
sptr<AccessibilityAccountData> AccessibilityAccountDataMap::AddAccountData(
|
||||
int32_t accountId)
|
||||
{
|
||||
auto iter = accountDataMap_.find(accountId);
|
||||
if (iter != accountDataMap_.end()) {
|
||||
HILOG_DEBUG("accountId is existed");
|
||||
return iter->second;
|
||||
}
|
||||
|
||||
sptr<AccessibilityAccountData> accountData = new(std::nothrow) AccessibilityAccountData(accountId);
|
||||
if (accountData == nullptr) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
accountData->Init();
|
||||
accountDataMap_[accountId] = accountData;
|
||||
return accountData;
|
||||
}
|
||||
|
||||
sptr<AccessibilityAccountData> AccessibilityAccountDataMap::GetCurrentAccountData(
|
||||
int32_t accountId)
|
||||
{
|
||||
auto iter = accountDataMap_.find(accountId);
|
||||
if (iter != accountDataMap_.end()) {
|
||||
return iter->second;
|
||||
}
|
||||
|
||||
sptr<AccessibilityAccountData> accountData = new(std::nothrow) AccessibilityAccountData(accountId);
|
||||
if (!accountData) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
accountDataMap_[accountId] = accountData;
|
||||
return accountData;
|
||||
}
|
||||
|
||||
sptr<AccessibilityAccountData> AccessibilityAccountDataMap::GetAccountData(
|
||||
int32_t accountId)
|
||||
{
|
||||
auto iter = accountDataMap_.find(accountId);
|
||||
if (iter != accountDataMap_.end()) {
|
||||
return iter->second;
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
sptr<AccessibilityAccountData> AccessibilityAccountDataMap::RemoveAccountData(
|
||||
int32_t accountId)
|
||||
{
|
||||
sptr<AccessibilityAccountData> accountData = nullptr;
|
||||
auto iter = accountDataMap_.find(accountId);
|
||||
if (iter != accountDataMap_.end()) {
|
||||
accountData = iter->second;
|
||||
accountDataMap_.erase(iter);
|
||||
}
|
||||
|
||||
return accountData;
|
||||
}
|
||||
|
||||
void AccessibilityAccountDataMap::Clear()
|
||||
{
|
||||
accountDataMap_.clear();
|
||||
}
|
||||
|
||||
AccountSA::OsAccountType AccessibilityAccountData::GetAccountType()
|
||||
{
|
||||
return AccountSA::OsAccountType::PRIVATE;
|
||||
}
|
||||
|
||||
const sptr<AccessibleAbilityConnection> AccessibilityAccountData::GetWaitDisConnectAbility(
|
||||
const std::string &elementName)
|
||||
{
|
||||
auto abilityManager = GetAbilityManager();
|
||||
if (abilityManager) {
|
||||
return abilityManager->GetWaitDisConnectAbility(elementName);
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::AddWaitDisconnectAbility(sptr<AccessibleAbilityConnection>& connection)
|
||||
{
|
||||
HILOG_INFO();
|
||||
auto abilityManager = GetAbilityManager();
|
||||
if (abilityManager) {
|
||||
abilityManager->AddWaitDisconnectAbility(connection);
|
||||
}
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::RemoveWaitDisconnectAbility(const std::string &uri)
|
||||
{
|
||||
HILOG_INFO();
|
||||
auto abilityManager = GetAbilityManager();
|
||||
if (abilityManager) {
|
||||
abilityManager->RemoveWaitDisconnectAbility(uri);
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<uint32_t> AccessibilityAccountData::UpdateNeedEvents()
|
||||
{
|
||||
return needEvents_;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::AddNeedEvent(std::string &name, std::vector<uint32_t> needEvents)
|
||||
{
|
||||
(void)name;
|
||||
(void)needEvents;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::RemoveNeedEvent(const std::string &name)
|
||||
{
|
||||
(void)name;
|
||||
}
|
||||
|
||||
std::vector<uint32_t> AccessibilityAccountData::GetNeedEvents()
|
||||
{
|
||||
return needEvents_;
|
||||
}
|
||||
|
||||
std::shared_ptr<AccessibilityAbilityManager> AccessibilityAccountData::GetAbilityManager() const
|
||||
{
|
||||
std::lock_guard<ffrt::mutex> lock(abilityManagerMutex_);
|
||||
auto it = abilityManagerMap_.find(id_);
|
||||
if (it != abilityManagerMap_.end()) {
|
||||
return it->second;
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void AccountSubscriber::OnStateChanged(const AccountSA::OsAccountStateData &data)
|
||||
{
|
||||
(void)data;
|
||||
}
|
||||
|
||||
ErrCode AccessibilityAccountData::RegisterElementOperatorByWindowId(const uint32_t tokenId, const int32_t windowId,
|
||||
const sptr<IAccessibilityElementOperator>& elementOperator, bool isApp)
|
||||
{
|
||||
(void)tokenId;
|
||||
(void)windowId;
|
||||
(void)elementOperator;
|
||||
(void)isApp;
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
ErrCode AccessibilityAccountData::RegisterElementOperatorByParameter(const RegistrationPara& parameter,
|
||||
const sptr<IAccessibilityElementOperator>& elementOperator, const int32_t treeId,
|
||||
const int64_t nodeId, const uint32_t tokenId, bool isApp)
|
||||
{
|
||||
(void)parameter;
|
||||
(void)elementOperator;
|
||||
(void)treeId;
|
||||
(void)nodeId;
|
||||
(void)tokenId;
|
||||
(void)isApp;
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
ErrCode AccessibilityAccountData::DeregisterElementOperatorByWindowId(const int32_t windowId)
|
||||
{
|
||||
(void)windowId;
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
ErrCode AccessibilityAccountData::DeregisterElementOperatorByWindowIdAndTreeId(const int32_t windowId,
|
||||
const int32_t treeId)
|
||||
{
|
||||
(void)windowId;
|
||||
(void)treeId;
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
RetError AccessibilityAccountData::VerifyingToKenId(const uint32_t tokenId, const int32_t windowId,
|
||||
const int64_t elementId)
|
||||
{
|
||||
(void)tokenId;
|
||||
(void)windowId;
|
||||
(void)elementId;
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
ElementOperatorManager& AccessibilityAccountData::GetOperatorManager()
|
||||
{
|
||||
static ElementOperatorManager mockOperatorManager;
|
||||
return mockOperatorManager;
|
||||
}
|
||||
|
||||
int32_t AccessibilityAccountData::ApplyTreeId()
|
||||
{
|
||||
static int32_t mockTreeId = 1;
|
||||
return mockTreeId++;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::RecycleTreeId(int32_t treeId)
|
||||
{
|
||||
(void)treeId;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::InsertWindowIdEventPair(int32_t windowId, const AccessibilityEventInfo &event)
|
||||
{
|
||||
(void)windowId;
|
||||
(void)event;
|
||||
}
|
||||
|
||||
bool AccessibilityAccountData::CheckWindowIdEventExist(int32_t windowId)
|
||||
{
|
||||
(void)windowId;
|
||||
return false;
|
||||
}
|
||||
|
||||
AccessibilityEventInfoParcel AccessibilityAccountData::GetWindowFocusEvent(int32_t windowId)
|
||||
{
|
||||
(void)windowId;
|
||||
AccessibilityEventInfo emptyEvent;
|
||||
return AccessibilityEventInfoParcel(emptyEvent);
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::EraseWindowFocusEvent(int32_t windowId)
|
||||
{
|
||||
(void)windowId;
|
||||
}
|
||||
|
||||
void AccessibilityAccountData::IsCheckWindowIdEventExist(const int32_t windowId)
|
||||
{
|
||||
(void)windowId;
|
||||
}
|
||||
} // namespace Accessibility
|
||||
} // namespace OHOS
|
||||
@@ -1,504 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2025 Huawei Device Co., Ltd.
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
#include "accessibility_ability_info.h"
|
||||
#include "accessibility_settings_config.h"
|
||||
#include "accessible_ability_connection.h"
|
||||
#define private public
|
||||
#define protected public
|
||||
#include "accessibility_ability_manager.h"
|
||||
#include "accessible_ability_manager_service.h"
|
||||
#undef private
|
||||
#undef protected
|
||||
#include "utils.h"
|
||||
#include "mock_accessible_ability_connection.h"
|
||||
#include "mock_accessibility_ability_info.h"
|
||||
#include "mock_accessible_ability_manager_service_config_observer_proxy.h"
|
||||
#include "mock_accessible_ability_manager_service_config_observer_stub.h"
|
||||
|
||||
using namespace testing;
|
||||
using namespace testing::ext;
|
||||
|
||||
namespace OHOS {
|
||||
namespace Accessibility {
|
||||
namespace {
|
||||
constexpr int32_t TEST_ACCOUNT_ID = 1;
|
||||
constexpr char TEST_BUNDLE_NAME[] = "test.bundle";
|
||||
constexpr char TEST_ABILITY_NAME[] = "TestAbility";
|
||||
}
|
||||
|
||||
class AccessibilityAbilityManagerTest : public testing::Test {
|
||||
public:
|
||||
void SetUp() override
|
||||
{
|
||||
manager_ = std::make_shared<AccessibilityAbilityManager>(TEST_ACCOUNT_ID);
|
||||
}
|
||||
void TearDown() override
|
||||
{
|
||||
manager_.reset();
|
||||
}
|
||||
std::shared_ptr<AccessibilityAbilityManager> manager_;
|
||||
};
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, SetConfig_Normal, TestSize.Level1)
|
||||
{
|
||||
auto config = std::make_shared<AccessibilitySettingsConfig>(TEST_ACCOUNT_ID);
|
||||
manager_->SetConfig(config);
|
||||
AccessibilityAbilityInitParams params;
|
||||
params.bundleName = TEST_BUNDLE_NAME;
|
||||
params.name = TEST_ABILITY_NAME;
|
||||
params.staticCapabilities = CAPABILITY_RETRIEVE;
|
||||
auto info = std::make_shared<AccessibilityAbilityInfo>(params);
|
||||
manager_->AddInstalledAbility(*info);
|
||||
std::string name = std::string(TEST_BUNDLE_NAME) + "/" + TEST_ABILITY_NAME;
|
||||
auto ret = manager_->EnableAbility(name, CAPABILITY_RETRIEVE);
|
||||
EXPECT_EQ(ret, RET_OK);
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, AddConnectedAbility, TestSize.Level1)
|
||||
{
|
||||
AccessibilityAbilityInitParams params;
|
||||
params.bundleName = TEST_BUNDLE_NAME;
|
||||
params.name = TEST_ABILITY_NAME;
|
||||
auto info = std::make_shared<AccessibilityAbilityInfo>(params);
|
||||
sptr<AccessibleAbilityConnection> conn = new MockAccessibleAbilityConnection(TEST_ACCOUNT_ID, 0, *info);
|
||||
manager_->AddConnectedAbility(conn);
|
||||
auto abilities = manager_->GetConnectedA11yAbilities();
|
||||
std::string uri = Utils::GetUri(conn->GetElementName());
|
||||
EXPECT_EQ(abilities.size(), 1);
|
||||
EXPECT_EQ(abilities[uri], conn);
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, RemoveConnectedAbility, TestSize.Level1)
|
||||
{
|
||||
AccessibilityAbilityInitParams params;
|
||||
params.bundleName = TEST_BUNDLE_NAME;
|
||||
params.name = TEST_ABILITY_NAME;
|
||||
auto info = std::make_shared<AccessibilityAbilityInfo>(params);
|
||||
sptr<AccessibleAbilityConnection> conn = new MockAccessibleAbilityConnection(TEST_ACCOUNT_ID, 0, *info);
|
||||
manager_->AddConnectedAbility(conn);
|
||||
manager_->RemoveConnectedAbility(conn->GetElementName());
|
||||
auto abilities = manager_->GetConnectedA11yAbilities();
|
||||
EXPECT_EQ(abilities.size(), 0);
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, RemoveConnectingA11yAbility_Normal, TestSize.Level1)
|
||||
{
|
||||
AccessibilityAbilityInitParams params;
|
||||
params.bundleName = TEST_BUNDLE_NAME;
|
||||
params.name = TEST_ABILITY_NAME;
|
||||
auto info = std::make_shared<AccessibilityAbilityInfo>(params);
|
||||
sptr<AccessibleAbilityConnection> conn = new MockAccessibleAbilityConnection(TEST_ACCOUNT_ID, 0, *info);
|
||||
std::string uri = Utils::GetUri(conn->GetElementName());
|
||||
manager_->AddConnectingA11yAbility(uri, conn);
|
||||
EXPECT_EQ(manager_->GetConnectingA11yAbility(uri), conn);
|
||||
manager_->RemoveConnectingA11yAbility(uri);
|
||||
EXPECT_EQ(manager_->GetConnectingA11yAbility(uri), nullptr);
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, WaitDisconnectAbility, TestSize.Level1)
|
||||
{
|
||||
AccessibilityAbilityInitParams params;
|
||||
params.bundleName = TEST_BUNDLE_NAME;
|
||||
params.name = TEST_ABILITY_NAME;
|
||||
auto info = std::make_shared<AccessibilityAbilityInfo>(params);
|
||||
sptr<AccessibleAbilityConnection> conn = new MockAccessibleAbilityConnection(TEST_ACCOUNT_ID, 0, *info);
|
||||
std::string uri = Utils::GetUri(conn->GetElementName());
|
||||
manager_->AddWaitDisconnectAbility(conn);
|
||||
EXPECT_EQ(manager_->GetWaitDisConnectAbility(uri), nullptr);
|
||||
manager_->RemoveWaitDisconnectAbility(uri);
|
||||
EXPECT_EQ(manager_->GetWaitDisConnectAbility(uri), nullptr);
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, AddRemoveEnableAbilityListsObserver, TestSize.Level1)
|
||||
{
|
||||
sptr<AccessibilityEnableAbilityListsObserverStub> stub = new MockAccessibilityEnableAbilityListsObserverStub();
|
||||
sptr<IAccessibilityEnableAbilityListsObserver> observer =
|
||||
new MockAccessibilityEnableAbilityListsObserverProxy(stub);
|
||||
manager_->AddEnableAbilityListsObserver(observer);
|
||||
manager_->RemoveEnableAbilityListsObserver(observer->AsObject());
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, AddConnectingA11yAbility_Normal, TestSize.Level1)
|
||||
{
|
||||
AccessibilityAbilityInitParams params;
|
||||
params.bundleName = TEST_BUNDLE_NAME;
|
||||
params.name = TEST_ABILITY_NAME;
|
||||
auto info = std::make_shared<AccessibilityAbilityInfo>(params);
|
||||
sptr<AccessibleAbilityConnection> conn = new MockAccessibleAbilityConnection(TEST_ACCOUNT_ID, 0, *info);
|
||||
std::string uri = Utils::GetUri(conn->GetElementName());
|
||||
manager_->AddConnectingA11yAbility(uri, conn);
|
||||
EXPECT_EQ(manager_->GetConnectingA11yAbility(uri), conn);
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, GetConnectingAbilitiesCount, TestSize.Level1)
|
||||
{
|
||||
EXPECT_EQ(manager_->GetConnectingAbilitiesCount(), 0);
|
||||
AccessibilityAbilityInitParams params;
|
||||
params.bundleName = TEST_BUNDLE_NAME;
|
||||
params.name = TEST_ABILITY_NAME;
|
||||
auto info = std::make_shared<AccessibilityAbilityInfo>(params);
|
||||
sptr<AccessibleAbilityConnection> conn = new MockAccessibleAbilityConnection(TEST_ACCOUNT_ID, 0, *info);
|
||||
std::string uri = Utils::GetUri(conn->GetElementName());
|
||||
manager_->AddConnectingA11yAbility(uri, conn);
|
||||
EXPECT_EQ(manager_->GetConnectingAbilitiesCount(), 1);
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, AddEnabledAbility, TestSize.Level1)
|
||||
{
|
||||
std::string name = std::string(TEST_BUNDLE_NAME) + "/" + TEST_ABILITY_NAME;
|
||||
manager_->AddEnabledAbility(name);
|
||||
manager_->AddEnabledAbility(name);
|
||||
auto enabled = manager_->GetEnabledAbilities();
|
||||
EXPECT_EQ(enabled.size(), 1);
|
||||
EXPECT_EQ(enabled[0], name);
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, RemoveEnabledAbility, TestSize.Level1)
|
||||
{
|
||||
std::string name = std::string(TEST_BUNDLE_NAME) + "/" + TEST_ABILITY_NAME;
|
||||
auto ret = manager_->RemoveEnabledAbility(name);
|
||||
EXPECT_EQ(ret, RET_ERR_NOT_ENABLED);
|
||||
manager_->AddEnabledAbility(name);
|
||||
ret = manager_->RemoveEnabledAbility(name);
|
||||
EXPECT_EQ(ret, RET_OK);
|
||||
EXPECT_TRUE(manager_->GetEnabledAbilities().empty());
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, AddInstalledAbility, TestSize.Level1)
|
||||
{
|
||||
AccessibilityAbilityInitParams params;
|
||||
params.bundleName = TEST_BUNDLE_NAME;
|
||||
params.name = TEST_ABILITY_NAME;
|
||||
auto info = std::make_shared<AccessibilityAbilityInfo>(params);
|
||||
manager_->AddInstalledAbility(*info);
|
||||
auto installed = manager_->GetInstalledAbilities();
|
||||
EXPECT_EQ(installed.size(), 1);
|
||||
EXPECT_EQ(installed[0].GetName(), TEST_ABILITY_NAME);
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, GetAbilitiesByState, TestSize.Level1)
|
||||
{
|
||||
std::vector<AccessibilityAbilityInfo> abilities;
|
||||
manager_->GetAbilitiesByState(AbilityStateType::ABILITY_STATE_ENABLE, abilities);
|
||||
EXPECT_TRUE(abilities.empty());
|
||||
|
||||
AccessibilityAbilityInitParams params;
|
||||
params.bundleName = TEST_BUNDLE_NAME;
|
||||
params.name = TEST_ABILITY_NAME;
|
||||
params.staticCapabilities = CAPABILITY_RETRIEVE;
|
||||
auto info = std::make_shared<AccessibilityAbilityInfo>(params);
|
||||
manager_->AddInstalledAbility(*info);
|
||||
sptr<AccessibleAbilityConnection> conn = new MockAccessibleAbilityConnection(TEST_ACCOUNT_ID, 0, *info);
|
||||
manager_->AddConnectedAbility(conn);
|
||||
|
||||
abilities.clear();
|
||||
manager_->GetAbilitiesByState(AbilityStateType::ABILITY_STATE_ENABLE, abilities);
|
||||
EXPECT_FALSE(abilities.empty());
|
||||
EXPECT_EQ(abilities[0].GetName(), TEST_ABILITY_NAME);
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, GetDisableAbilities, TestSize.Level1)
|
||||
{
|
||||
std::vector<AccessibilityAbilityInfo> abilities;
|
||||
manager_->GetDisableAbilities(abilities);
|
||||
EXPECT_TRUE(abilities.empty());
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, GetInstalledAbilitiesFromBMS, TestSize.Level1)
|
||||
{
|
||||
EXPECT_TRUE(manager_->GetInstalledAbilitiesFromBMS());
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, EnableAbility, TestSize.Level1)
|
||||
{
|
||||
std::string name = std::string(TEST_BUNDLE_NAME) + "/" + TEST_ABILITY_NAME;
|
||||
auto ret = manager_->EnableAbility(name, CAPABILITY_RETRIEVE);
|
||||
EXPECT_EQ(ret, RET_ERR_NOT_INSTALLED);
|
||||
AccessibilityAbilityInitParams params;
|
||||
params.bundleName = TEST_BUNDLE_NAME;
|
||||
params.name = TEST_ABILITY_NAME;
|
||||
params.staticCapabilities = 0;
|
||||
auto info = std::make_shared<AccessibilityAbilityInfo>(params);
|
||||
manager_->AddInstalledAbility(*info);
|
||||
ret = manager_->EnableAbility(name, CAPABILITY_RETRIEVE);
|
||||
EXPECT_EQ(ret, RET_ERR_NO_CAPABILITY);
|
||||
manager_->RemoveAbility(TEST_BUNDLE_NAME);
|
||||
params.staticCapabilities = CAPABILITY_RETRIEVE;
|
||||
auto info2 = std::make_shared<AccessibilityAbilityInfo>(params);
|
||||
manager_->AddInstalledAbility(*info2);
|
||||
ret = manager_->EnableAbility(name, CAPABILITY_RETRIEVE);
|
||||
EXPECT_EQ(ret, RET_OK);
|
||||
auto enabled = manager_->GetEnabledAbilities();
|
||||
EXPECT_FALSE(enabled.empty());
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, UpdateEnableAbilityListsState, TestSize.Level1)
|
||||
{
|
||||
manager_->UpdateEnableAbilityListsState();
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, UpdateInstallAbilityListsState, TestSize.Level1)
|
||||
{
|
||||
manager_->UpdateInstallAbilityListsState();
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, UpdateAbilities, TestSize.Level1)
|
||||
{
|
||||
manager_->UpdateAbilities();
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, RemoveAbility, TestSize.Level1)
|
||||
{
|
||||
EXPECT_FALSE(manager_->RemoveAbility(TEST_BUNDLE_NAME));
|
||||
AccessibilityAbilityInitParams params;
|
||||
params.bundleName = TEST_BUNDLE_NAME;
|
||||
params.name = TEST_ABILITY_NAME;
|
||||
auto info = std::make_shared<AccessibilityAbilityInfo>(params);
|
||||
manager_->AddInstalledAbility(*info);
|
||||
manager_->AddEnabledAbility(Utils::GetUri(params.bundleName, params.name));
|
||||
EXPECT_TRUE(manager_->RemoveAbility(TEST_BUNDLE_NAME) || !manager_->RemoveAbility(TEST_BUNDLE_NAME));
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, AddAbility, TestSize.Level1)
|
||||
{
|
||||
manager_->AddAbility(TEST_BUNDLE_NAME);
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, ChangeAbility, TestSize.Level1)
|
||||
{
|
||||
manager_->ChangeAbility(TEST_BUNDLE_NAME);
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, AddRemoveUITestClient, TestSize.Level1)
|
||||
{
|
||||
manager_->AddUITestClient(nullptr, TEST_BUNDLE_NAME, TEST_ABILITY_NAME);
|
||||
sptr<AccessibleAbilityConnection> conn = nullptr;
|
||||
manager_->RemoveUITestClient(conn, TEST_BUNDLE_NAME);
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, SetGetAbilityAutoStartState, TestSize.Level1)
|
||||
{
|
||||
std::string name = std::string(TEST_BUNDLE_NAME) + "/" + TEST_ABILITY_NAME;
|
||||
manager_->AddEnabledAbility(name);
|
||||
const auto &enabledAbilities = manager_->GetEnabledAbilities();
|
||||
bool isEnabled = std::find(enabledAbilities.begin(), enabledAbilities.end(), name) != enabledAbilities.end();
|
||||
EXPECT_TRUE(isEnabled);
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, DelAutoStartPrefKeyInRemovePkg, TestSize.Level1)
|
||||
{
|
||||
auto config = std::make_shared<AccessibilitySettingsConfig>(TEST_ACCOUNT_ID);
|
||||
EXPECT_NE(config, nullptr);
|
||||
config->Init();
|
||||
manager_->SetConfig(config);
|
||||
AccessibilityAbilityInitParams params;
|
||||
params.bundleName = TEST_BUNDLE_NAME;
|
||||
params.name = TEST_ABILITY_NAME;
|
||||
params.staticCapabilities = CAPABILITY_RETRIEVE;
|
||||
auto info = std::make_shared<AccessibilityAbilityInfo>(params);
|
||||
manager_->AddInstalledAbility(*info);
|
||||
std::string uri = Utils::GetUri(TEST_BUNDLE_NAME, TEST_ABILITY_NAME);
|
||||
auto ret = manager_->EnableAbility(uri, CAPABILITY_RETRIEVE);
|
||||
EXPECT_EQ(ret, RET_OK);
|
||||
|
||||
manager_->SetAbilityAutoStartState(uri, true);
|
||||
const auto &enabledAbilities = manager_->GetEnabledAbilities();
|
||||
bool isAdded = std::find(enabledAbilities.begin(), enabledAbilities.end(), uri) != enabledAbilities.end();
|
||||
ASSERT_TRUE(isAdded) << "Failed to add auto-start ability (URI: " << uri << ")";
|
||||
|
||||
auto services = config->GetEnabledAccessibilityServices();
|
||||
EXPECT_TRUE(std::find(services.begin(), services.end(), uri) != services.end());
|
||||
|
||||
bool enabled = manager_->GetAbilityAutoStartState(uri);
|
||||
EXPECT_TRUE(enabled);
|
||||
|
||||
manager_->DelAutoStartPrefKeyInRemovePkg(TEST_BUNDLE_NAME);
|
||||
bool isEnabled = manager_->GetAbilityAutoStartState(uri);
|
||||
EXPECT_FALSE(isEnabled) << "Auto-start preference not removed after DelAutoStartPrefKeyInRemovePkg call (URI: " <<
|
||||
uri << ")";
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, ScreenReaderState, TestSize.Level1)
|
||||
{
|
||||
std::string name = std::string(TEST_BUNDLE_NAME) + "/" + TEST_ABILITY_NAME;
|
||||
EXPECT_FALSE(manager_->GetScreenReaderState());
|
||||
manager_->TryToSetScreenReaderState(name, true);
|
||||
manager_->SetScreenReaderState(true);
|
||||
EXPECT_TRUE(manager_->GetScreenReaderState());
|
||||
manager_->SetScreenReaderState(false);
|
||||
EXPECT_FALSE(manager_->GetScreenReaderState());
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, NeedEvent, TestSize.Level1)
|
||||
{
|
||||
std::string name = std::string(TEST_BUNDLE_NAME) + "/" + TEST_ABILITY_NAME;
|
||||
std::vector<uint32_t> events = { 1, 2 };
|
||||
manager_->AddNeedEvent(name, events);
|
||||
manager_->RemoveNeedEvent(name);
|
||||
auto updated = manager_->UpdateNeedEvents();
|
||||
auto got = manager_->GetNeedEvents();
|
||||
EXPECT_TRUE(updated.empty());
|
||||
EXPECT_TRUE(got.empty());
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, OnAccountSwitched, TestSize.Level1)
|
||||
{
|
||||
manager_->OnAccountSwitched();
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, IsExistCapability, TestSize.Level1)
|
||||
{
|
||||
AccessibilityAbilityInitParams params;
|
||||
params.bundleName = TEST_BUNDLE_NAME;
|
||||
params.name = TEST_ABILITY_NAME;
|
||||
auto abilityInfo = std::make_shared<AccessibilityAbilityInfo>(params);
|
||||
abilityInfo->SetCapabilityValues(CAPABILITY_RETRIEVE | CAPABILITY_TOUCH_GUIDE | CAPABILITY_GESTURE |
|
||||
CAPABILITY_KEY_EVENT_OBSERVER);
|
||||
sptr<AccessibleAbilityConnection> conn = new MockAccessibleAbilityConnection(TEST_ACCOUNT_ID, 0, *abilityInfo);
|
||||
manager_->AddConnectedAbility(conn);
|
||||
|
||||
EXPECT_TRUE(manager_->IsExistCapability(CAPABILITY_RETRIEVE));
|
||||
EXPECT_FALSE(manager_->IsExistCapability(CAPABILITY_ZOOM));
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, ImportantEnabledAbilities, TestSize.Level1)
|
||||
{
|
||||
std::map<std::string, uint32_t> abilities;
|
||||
manager_->GetImportantEnabledAbilities(abilities);
|
||||
EXPECT_TRUE(abilities.empty());
|
||||
manager_->UpdateImportantEnabledAbilities(abilities);
|
||||
manager_->UpdateAutoStartEnabledAbilities();
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, AccessibilityAbility_AddGetRemove, TestSize.Level1)
|
||||
{
|
||||
AccessibilityAbilityInitParams params;
|
||||
params.bundleName = TEST_BUNDLE_NAME;
|
||||
params.name = TEST_ABILITY_NAME;
|
||||
auto info = std::make_shared<AccessibilityAbilityInfo>(params);
|
||||
sptr<AccessibleAbilityConnection> conn = new MockAccessibleAbilityConnection(TEST_ACCOUNT_ID, 0, *info);
|
||||
|
||||
AccessibilityAbilityManager::AccessibilityAbility ability;
|
||||
std::string uri = Utils::GetUri(conn->GetElementName());
|
||||
|
||||
// Test AddAccessibilityAbility
|
||||
ability.AddAccessibilityAbility(uri, conn);
|
||||
EXPECT_EQ(ability.GetSize(), 1) << "Failed to add ability";
|
||||
|
||||
// Test GetAccessibilityAbilityByUri
|
||||
auto getConn = ability.GetAccessibilityAbilityByUri(uri);
|
||||
ASSERT_NE(getConn, nullptr) << "Failed to retrieve ability by URI";
|
||||
EXPECT_EQ(getConn, conn) << "Retrieved connection mismatch";
|
||||
|
||||
// Test GetAccessibilityAbilityByName - Use full URI instead of just ability name
|
||||
getConn = ability.GetAccessibilityAbilityByName(uri);
|
||||
ASSERT_NE(getConn, nullptr) << "Failed to retrieve ability by name";
|
||||
EXPECT_EQ(getConn, conn) << "Retrieved connection mismatch";
|
||||
|
||||
// Test GetAccessibilityAbilitiesMap
|
||||
std::map<std::string, sptr<AccessibleAbilityConnection>> connMap;
|
||||
ability.GetAccessibilityAbilitiesMap(connMap);
|
||||
EXPECT_EQ(connMap.size(), 1) << "Connection map size mismatch";
|
||||
EXPECT_EQ(connMap[uri], conn) << "Connection map entry mismatch";
|
||||
|
||||
// Test GetAccessibilityAbilities
|
||||
std::vector<sptr<AccessibleAbilityConnection>> connList;
|
||||
ability.GetAccessibilityAbilities(connList);
|
||||
EXPECT_EQ(connList.size(), 1) << "Connection list size mismatch";
|
||||
EXPECT_EQ(connList[0], conn) << "Connection list entry mismatch";
|
||||
|
||||
// Test GetAbilitiesInfo
|
||||
std::vector<AccessibilityAbilityInfo> abilitiesInfo;
|
||||
ability.GetAbilitiesInfo(abilitiesInfo);
|
||||
EXPECT_EQ(abilitiesInfo.size(), 1) << "Ability info list size mismatch";
|
||||
EXPECT_EQ(abilitiesInfo[0].GetName(), TEST_ABILITY_NAME) << "Ability name mismatch";
|
||||
|
||||
// Test IsExistCapability
|
||||
bool hasCapability = ability.IsExistCapability(CAPABILITY_RETRIEVE);
|
||||
EXPECT_FALSE(hasCapability) << "Unexpected capability detected";
|
||||
|
||||
// Test RemoveAccessibilityAbilityByUri
|
||||
ability.RemoveAccessibilityAbilityByUri(uri);
|
||||
EXPECT_EQ(ability.GetSize(), 0) << "Failed to remove ability by URI";
|
||||
}
|
||||
|
||||
HWTEST_F(AccessibilityAbilityManagerTest, AccessibilityAbility_DisableAndSize, TestSize.Level1)
|
||||
{
|
||||
AccessibilityAbilityInitParams params;
|
||||
params.bundleName = TEST_BUNDLE_NAME;
|
||||
params.name = TEST_ABILITY_NAME;
|
||||
auto info = std::make_shared<AccessibilityAbilityInfo>(params);
|
||||
sptr<AccessibleAbilityConnection> conn = new MockAccessibleAbilityConnection(TEST_ACCOUNT_ID, 0, *info);
|
||||
ASSERT_NE(conn, nullptr) << "Failed to create mock connection";
|
||||
|
||||
AccessibilityAbilityManager::AccessibilityAbility ability;
|
||||
std::string uri = Utils::GetUri(conn->GetElementName());
|
||||
std::string fullAbilityName = params.bundleName + "/" + params.name;
|
||||
EXPECT_FALSE(uri.empty()) << "URI generation failed for connection";
|
||||
|
||||
// Add ability
|
||||
ability.AddAccessibilityAbility(uri, conn);
|
||||
EXPECT_EQ(ability.GetSize(), 1) << "Failed to add ability";
|
||||
|
||||
// Test GetAccessibilityAbilityByUri
|
||||
auto getConn = ability.GetAccessibilityAbilityByUri(uri);
|
||||
ASSERT_NE(getConn, nullptr) << "Failed to retrieve ability by URI";
|
||||
EXPECT_EQ(getConn, conn) << "Retrieved connection mismatch";
|
||||
|
||||
// Test GetAccessibilityAbilityByName - Use full URI instead of just ability name
|
||||
getConn = ability.GetAccessibilityAbilityByName(uri);
|
||||
ASSERT_NE(getConn, nullptr) << "Failed to retrieve ability by name";
|
||||
EXPECT_EQ(getConn, conn) << "Retrieved connection mismatch";
|
||||
|
||||
// Test GetAccessibilityAbilitiesMap
|
||||
std::map<std::string, sptr<AccessibleAbilityConnection>> connMap;
|
||||
ability.GetAccessibilityAbilitiesMap(connMap);
|
||||
EXPECT_EQ(connMap.size(), 1) << "Connection map size mismatch";
|
||||
EXPECT_EQ(connMap[uri], conn) << "Connection map entry mismatch";
|
||||
|
||||
// Test GetAccessibilityAbilities
|
||||
std::vector<sptr<AccessibleAbilityConnection>> connList;
|
||||
ability.GetAccessibilityAbilities(connList);
|
||||
EXPECT_EQ(connList.size(), 1) << "Connection list size mismatch";
|
||||
EXPECT_EQ(connList[0], conn) << "Connection list entry mismatch";
|
||||
|
||||
// Test GetAbilitiesInfo
|
||||
std::vector<AccessibilityAbilityInfo> abilitiesInfo;
|
||||
ability.GetAbilitiesInfo(abilitiesInfo);
|
||||
EXPECT_EQ(abilitiesInfo.size(), 1) << "Ability info list size mismatch";
|
||||
EXPECT_EQ(abilitiesInfo[0].GetName(), TEST_ABILITY_NAME) << "Ability name mismatch";
|
||||
|
||||
// Test IsExistCapability
|
||||
bool hasCapability = ability.IsExistCapability(CAPABILITY_RETRIEVE);
|
||||
EXPECT_FALSE(hasCapability) << "Unexpected capability detected";
|
||||
|
||||
// Test RemoveAccessibilityAbilityByUri
|
||||
ability.RemoveAccessibilityAbilityByUri(uri);
|
||||
EXPECT_EQ(ability.GetSize(), 0) << "Failed to remove ability by URI";
|
||||
}
|
||||
} // namespace Accessibility
|
||||
} // namespace OHOS
|
||||
@@ -1,531 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2025 Huawei Device Co., Ltd.
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
#include <gmock/gmock.h>
|
||||
#include "accessibility_element_info.h"
|
||||
#include "accessibility_window_connection.h"
|
||||
#include "iaccessibility_element_operator.h"
|
||||
#include "iaccessibility_element_operator_callback.h"
|
||||
#define private public
|
||||
#define protected public
|
||||
#include "element_operator_manager.h"
|
||||
#undef private
|
||||
#undef protected
|
||||
#include "mock_element_operator_manager.h"
|
||||
|
||||
using namespace testing;
|
||||
using namespace testing::ext;
|
||||
|
||||
namespace OHOS {
|
||||
namespace Accessibility {
|
||||
namespace {
|
||||
constexpr int32_t TEST_WINDOW_ID = 1;
|
||||
constexpr int32_t TEST_TREE_ID = 2;
|
||||
constexpr int32_t TEST_ACCOUNT_ID = 100;
|
||||
constexpr int64_t TEST_ELEMENT_ID = 1000;
|
||||
constexpr int32_t TEST_TOKEN_ID = 12345;
|
||||
constexpr int32_t TEST_REQUEST_ID = 999;
|
||||
}
|
||||
|
||||
class ElementOperatorManagerTest : public testing::Test {
|
||||
public:
|
||||
void SetUp() override
|
||||
{
|
||||
manager_ = std::make_unique<ElementOperatorManager>();
|
||||
mockOperator_ = new MockElementOperatorManagerElementOperator();
|
||||
mockConnection_ = CreateMockConnection(TEST_WINDOW_ID, TEST_ACCOUNT_ID);
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
{
|
||||
manager_.reset();
|
||||
mockConnection_ = nullptr;
|
||||
mockOperator_ = nullptr;
|
||||
}
|
||||
|
||||
protected:
|
||||
std::unique_ptr<ElementOperatorManager> manager_;
|
||||
sptr<AccessibilityWindowConnection> mockConnection_;
|
||||
sptr<MockElementOperatorManagerElementOperator> mockOperator_;
|
||||
|
||||
sptr<AccessibilityWindowConnection> CreateMockConnection(int32_t windowId, int32_t accountId)
|
||||
{
|
||||
auto mockOp = new MockElementOperatorManagerElementOperator();
|
||||
return new MockElementOperatorManagerWindowConnection(windowId, mockOp, accountId);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_AddAccessibilityWindowConnection_001
|
||||
* @tc.name: AddAccessibilityWindowConnection
|
||||
* @tc.desc: Test adding accessibility window connection successfully.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, AddAccessibilityWindowConnection_001, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_AddAccessibilityWindowConnection_001 start";
|
||||
manager_->AddAccessibilityWindowConnection(TEST_WINDOW_ID, mockConnection_);
|
||||
auto connection = manager_->GetAccessibilityWindowConnection(TEST_WINDOW_ID);
|
||||
EXPECT_EQ(connection, mockConnection_);
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_AddAccessibilityWindowConnection_001 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_RemoveAccessibilityWindowConnection_001
|
||||
* @tc.name: RemoveAccessibilityWindowConnection
|
||||
* @tc.desc: Test removing accessibility window connection successfully.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, RemoveAccessibilityWindowConnection_001, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_RemoveAccessibilityWindowConnection_001 start";
|
||||
manager_->AddAccessibilityWindowConnection(TEST_WINDOW_ID, mockConnection_);
|
||||
EXPECT_EQ(manager_->GetAccessibilityWindowConnection(TEST_WINDOW_ID), mockConnection_);
|
||||
manager_->RemoveAccessibilityWindowConnection(TEST_WINDOW_ID);
|
||||
EXPECT_EQ(manager_->GetAccessibilityWindowConnection(TEST_WINDOW_ID), nullptr);
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_RemoveAccessibilityWindowConnection_001 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_GetAccessibilityWindowConnection_001
|
||||
* @tc.name: GetAccessibilityWindowConnection
|
||||
* @tc.desc: Test getting accessibility window connection successfully.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, GetAccessibilityWindowConnection_001, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_GetAccessibilityWindowConnection_001 start";
|
||||
auto connection = manager_->GetAccessibilityWindowConnection(TEST_WINDOW_ID);
|
||||
EXPECT_EQ(connection, nullptr);
|
||||
manager_->AddAccessibilityWindowConnection(TEST_WINDOW_ID, mockConnection_);
|
||||
connection = manager_->GetAccessibilityWindowConnection(TEST_WINDOW_ID);
|
||||
EXPECT_EQ(connection, mockConnection_);
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_GetAccessibilityWindowConnection_001 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_GetRootParentId_001
|
||||
* @tc.name: GetRootParentId
|
||||
* @tc.desc: Test getting root parent ID successfully.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, GetRootParentId_001, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_GetRootParentId_001 start";
|
||||
int64_t parentId = 0;
|
||||
ErrCode result = manager_->GetRootParentId(TEST_WINDOW_ID, TEST_TREE_ID, parentId);
|
||||
EXPECT_EQ(result, RET_ERR_NO_CONNECTION);
|
||||
|
||||
manager_->AddAccessibilityWindowConnection(TEST_WINDOW_ID, mockConnection_);
|
||||
mockConnection_->SetRootParentId(TEST_TREE_ID, 1000);
|
||||
result = manager_->GetRootParentId(TEST_WINDOW_ID, TEST_TREE_ID, parentId);
|
||||
EXPECT_EQ(result, RET_OK);
|
||||
EXPECT_EQ(parentId, 1000);
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_GetRootParentId_001 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_ClearFocus_001
|
||||
* @tc.name: ClearFocus
|
||||
* @tc.desc: Test clearing focus successfully.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, ClearFocus_001, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_ClearFocus_001 start";
|
||||
RetError result = manager_->ClearFocus(TEST_WINDOW_ID);
|
||||
EXPECT_EQ(result, RET_ERR_NO_CONNECTION);
|
||||
manager_->AddAccessibilityWindowConnection(TEST_WINDOW_ID, mockConnection_);
|
||||
result = manager_->ClearFocus(TEST_WINDOW_ID);
|
||||
EXPECT_EQ(result, RET_OK);
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_ClearFocus_001 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_ClearFocus_002
|
||||
* @tc.name: ClearFocus
|
||||
* @tc.desc: Test clearing focus with no element operator.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, ClearFocus_002, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_ClearFocus_002 start";
|
||||
sptr<AccessibilityWindowConnection> nullConnection =
|
||||
new MockElementOperatorManagerWindowConnection(TEST_WINDOW_ID, nullptr, TEST_ACCOUNT_ID);
|
||||
manager_->AddAccessibilityWindowConnection(TEST_WINDOW_ID, nullConnection);
|
||||
RetError result = manager_->ClearFocus(TEST_WINDOW_ID);
|
||||
EXPECT_EQ(result, RET_ERR_NO_CONNECTION);
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_ClearFocus_002 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_OutsideTouch_001
|
||||
* @tc.name: OutsideTouch
|
||||
* @tc.desc: Test outside touch functionality with valid connection.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, OutsideTouch_001, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_OutsideTouch_001 start";
|
||||
manager_->AddAccessibilityWindowConnection(TEST_WINDOW_ID, mockConnection_);
|
||||
auto connection = manager_->GetAccessibilityWindowConnection(TEST_WINDOW_ID);
|
||||
EXPECT_NE(connection, nullptr);
|
||||
EXPECT_EQ(connection, mockConnection_);
|
||||
EXPECT_NO_THROW(manager_->OutsideTouch(TEST_WINDOW_ID));
|
||||
connection = manager_->GetAccessibilityWindowConnection(TEST_WINDOW_ID);
|
||||
EXPECT_NE(connection, nullptr);
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_OutsideTouch_001 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_OutsideTouch_002
|
||||
* @tc.name: OutsideTouch
|
||||
* @tc.desc: Test outside touch with no connection.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, OutsideTouch_002, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_OutsideTouch_002 start";
|
||||
auto connection = manager_->GetAccessibilityWindowConnection(TEST_WINDOW_ID);
|
||||
EXPECT_EQ(connection, nullptr);
|
||||
EXPECT_NO_THROW(manager_->OutsideTouch(TEST_WINDOW_ID));
|
||||
connection = manager_->GetAccessibilityWindowConnection(TEST_WINDOW_ID);
|
||||
EXPECT_EQ(connection, nullptr);
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_OutsideTouch_002 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_OutsideTouch_003
|
||||
* @tc.name: OutsideTouch
|
||||
* @tc.desc: Test outside touch with null proxy.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, OutsideTouch_003, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_OutsideTouch_003 start";
|
||||
sptr<AccessibilityWindowConnection> nullProxyConnection =
|
||||
new MockElementOperatorManagerWindowConnection(TEST_WINDOW_ID, nullptr, TEST_ACCOUNT_ID);
|
||||
manager_->AddAccessibilityWindowConnection(TEST_WINDOW_ID, nullProxyConnection);
|
||||
auto connection = manager_->GetAccessibilityWindowConnection(TEST_WINDOW_ID);
|
||||
EXPECT_NE(connection, nullptr);
|
||||
EXPECT_NO_THROW(manager_->OutsideTouch(TEST_WINDOW_ID));
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_OutsideTouch_003 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_GetAsacConnections_001
|
||||
* @tc.name: GetAsacConnections
|
||||
* @tc.desc: Test getting all accessibility connections.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, GetAsacConnections_001, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_GetAsacConnections_001 start";
|
||||
const auto& connections = manager_->GetAsacConnections();
|
||||
EXPECT_EQ(connections.size(), 0);
|
||||
manager_->AddAccessibilityWindowConnection(TEST_WINDOW_ID, mockConnection_);
|
||||
const auto& updatedConnections = manager_->GetAsacConnections();
|
||||
EXPECT_EQ(updatedConnections.size(), 1);
|
||||
EXPECT_EQ(updatedConnections.at(TEST_WINDOW_ID), mockConnection_);
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_GetAsacConnections_001 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_ClearAllConnections_001
|
||||
* @tc.name: ClearAllConnections
|
||||
* @tc.desc: Test clearing all connections successfully.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, ClearAllConnections_001, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_ClearAllConnections_001 start";
|
||||
manager_->AddAccessibilityWindowConnection(TEST_WINDOW_ID, mockConnection_);
|
||||
manager_->AddAccessibilityWindowConnection(TEST_WINDOW_ID + 1, mockConnection_);
|
||||
EXPECT_EQ(manager_->GetAsacConnections().size(), 2);
|
||||
manager_->ClearAllConnections();
|
||||
EXPECT_EQ(manager_->GetAsacConnections().size(), 0);
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_ClearAllConnections_001 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_GenerateRequestId_001
|
||||
* @tc.name: GenerateRequestId
|
||||
* @tc.desc: Test generating request ID successfully.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, GenerateRequestId_001, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_GenerateRequestId_001 start";
|
||||
int32_t requestId1 = manager_->GenerateRequestId();
|
||||
int32_t requestId2 = manager_->GenerateRequestId();
|
||||
EXPECT_NE(requestId1, requestId2);
|
||||
EXPECT_GT(requestId1, 0);
|
||||
EXPECT_GT(requestId2, 0);
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_GenerateRequestId_001 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_GetTreeIdBySplitElementId_001
|
||||
* @tc.name: GetTreeIdBySplitElementId
|
||||
* @tc.desc: Test getting tree ID by split element ID.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, GetTreeIdBySplitElementId_001, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_GetTreeIdBySplitElementId_001 start";
|
||||
int64_t elementId = (static_cast<int64_t>(TEST_TREE_ID) << 40) | TEST_ELEMENT_ID;
|
||||
int32_t treeId = ElementOperatorManager::GetTreeIdBySplitElementId(elementId);
|
||||
EXPECT_EQ(treeId, TEST_TREE_ID);
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_GetTreeIdBySplitElementId_001 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_DeleteConnectionAndDeathRecipient_001
|
||||
* @tc.name: DeleteConnectionAndDeathRecipient
|
||||
* @tc.desc: Test deleting connection and death recipient successfully.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, DeleteConnectionAndDeathRecipient_001, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_DeleteConnectionAndDeathRecipient_001 start";
|
||||
manager_->AddAccessibilityWindowConnection(TEST_WINDOW_ID, mockConnection_);
|
||||
EXPECT_EQ(manager_->GetAccessibilityWindowConnection(TEST_WINDOW_ID), mockConnection_);
|
||||
manager_->DeleteConnectionAndDeathRecipient(TEST_WINDOW_ID, mockConnection_);
|
||||
EXPECT_EQ(manager_->GetAccessibilityWindowConnection(TEST_WINDOW_ID), nullptr);
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_DeleteConnectionAndDeathRecipient_001 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_VerifyingToKenId_001
|
||||
* @tc.name: VerifyingToKenId
|
||||
* @tc.desc: Test verifying token ID successfully.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, VerifyingToKenId_001, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_VerifyingToKenId_001 start";
|
||||
RetError result = manager_->VerifyingToKenId(TEST_TOKEN_ID, TEST_WINDOW_ID, TEST_ELEMENT_ID);
|
||||
EXPECT_NE(result, RET_OK);
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_VerifyingToKenId_001 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_GetParentElementRecursively_001
|
||||
* @tc.name: GetParentElementRecursively
|
||||
* @tc.desc: Test getting parent element recursively.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, GetParentElementRecursively_001, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_GetParentElementRecursively_001 start";
|
||||
std::vector<AccessibilityElementInfo> infos;
|
||||
bool result = manager_->GetParentElementRecursively(TEST_WINDOW_ID, TEST_ELEMENT_ID, infos);
|
||||
EXPECT_FALSE(result);
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_GetParentElementRecursively_001 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_SetElementOperatorDeathRecipient_001
|
||||
* @tc.name: SetElementOperatorDeathRecipient
|
||||
* @tc.desc: Test setting element operator death recipient successfully.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, SetElementOperatorDeathRecipient_001, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_SetElementOperatorDeathRecipient_001 start";
|
||||
sptr<IRemoteObject> remoteObject = mockOperator_->AsObject();
|
||||
EXPECT_NO_THROW(manager_->SetElementOperatorDeathRecipient(TEST_WINDOW_ID, remoteObject, TEST_ACCOUNT_ID));
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_SetElementOperatorDeathRecipient_001 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_SetElementOperatorDeathRecipient_002
|
||||
* @tc.name: SetElementOperatorDeathRecipient
|
||||
* @tc.desc: Test setting element operator death recipient with tree ID.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, SetElementOperatorDeathRecipient_002, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_SetElementOperatorDeathRecipient_002 start";
|
||||
sptr<IRemoteObject> remoteObject = mockOperator_->AsObject();
|
||||
EXPECT_NO_THROW(manager_->SetElementOperatorDeathRecipient(TEST_WINDOW_ID, TEST_TREE_ID,
|
||||
remoteObject, TEST_ACCOUNT_ID));
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_SetElementOperatorDeathRecipient_002 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_RemoveElementOperatorDeathRecipient_001
|
||||
* @tc.name: RemoveElementOperatorDeathRecipient
|
||||
* @tc.desc: Test removing element operator death recipient successfully.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, RemoveElementOperatorDeathRecipient_001, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_RemoveElementOperatorDeathRecipient_001 start";
|
||||
sptr<IRemoteObject> remoteObject = mockOperator_->AsObject();
|
||||
EXPECT_NO_THROW(manager_->SetElementOperatorDeathRecipient(TEST_WINDOW_ID, remoteObject, TEST_ACCOUNT_ID));
|
||||
EXPECT_NO_THROW(manager_->RemoveElementOperatorDeathRecipient(TEST_WINDOW_ID, remoteObject));
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_RemoveElementOperatorDeathRecipient_001 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_AddDeathRecipient_001
|
||||
* @tc.name: AddDeathRecipient
|
||||
* @tc.desc: Test adding death recipient successfully.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, AddDeathRecipient_001, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_AddDeathRecipient_001 start";
|
||||
sptr<IRemoteObject::DeathRecipient> deathRecipient =
|
||||
new ElementOperatorManager::ElementOperatorDeathRecipient(TEST_WINDOW_ID, TEST_ACCOUNT_ID);
|
||||
EXPECT_NO_THROW(manager_->AddDeathRecipient(TEST_WINDOW_ID, deathRecipient));
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_AddDeathRecipient_001 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_AddDeathRecipient_002
|
||||
* @tc.name: AddDeathRecipient
|
||||
* @tc.desc: Test adding death recipient with tree ID successfully.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, AddDeathRecipient_002, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_AddDeathRecipient_002 start";
|
||||
sptr<IRemoteObject::DeathRecipient> deathRecipient =
|
||||
new ElementOperatorManager::ElementOperatorDeathRecipient(TEST_WINDOW_ID, TEST_TREE_ID, TEST_ACCOUNT_ID);
|
||||
EXPECT_NO_THROW(manager_->AddDeathRecipient(TEST_WINDOW_ID, TEST_TREE_ID, deathRecipient));
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_AddDeathRecipient_002 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_RemoveDeathRecipient_001
|
||||
* @tc.name: RemoveDeathRecipient
|
||||
* @tc.desc: Test removing death recipient successfully.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, RemoveDeathRecipient_001, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_RemoveDeathRecipient_001 start";
|
||||
sptr<IRemoteObject::DeathRecipient> deathRecipient =
|
||||
new ElementOperatorManager::ElementOperatorDeathRecipient(TEST_WINDOW_ID, TEST_ACCOUNT_ID);
|
||||
EXPECT_NO_THROW(manager_->AddDeathRecipient(TEST_WINDOW_ID, deathRecipient));
|
||||
EXPECT_NO_THROW(manager_->RemoveDeathRecipient(TEST_WINDOW_ID));
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_RemoveDeathRecipient_001 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_RemoveDeathRecipient_002
|
||||
* @tc.name: RemoveDeathRecipient
|
||||
* @tc.desc: Test removing death recipient with tree ID successfully.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, RemoveDeathRecipient_002, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_RemoveDeathRecipient_002 start";
|
||||
sptr<IRemoteObject::DeathRecipient> deathRecipient =
|
||||
new ElementOperatorManager::ElementOperatorDeathRecipient(TEST_WINDOW_ID, TEST_TREE_ID, TEST_ACCOUNT_ID);
|
||||
EXPECT_NO_THROW(manager_->AddDeathRecipient(TEST_WINDOW_ID, TEST_TREE_ID, deathRecipient));
|
||||
EXPECT_NO_THROW(manager_->RemoveDeathRecipient(TEST_WINDOW_ID, TEST_TREE_ID));
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_RemoveDeathRecipient_002 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_AddRequestId_001
|
||||
* @tc.name: AddRequestId
|
||||
* @tc.desc: Test adding request ID successfully.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, AddRequestId_001, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_AddRequestId_001 start";
|
||||
sptr<IAccessibilityElementOperatorCallback> callback = nullptr;
|
||||
EXPECT_NO_THROW(manager_->AddRequestId(TEST_WINDOW_ID, TEST_TREE_ID, TEST_REQUEST_ID, callback));
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_AddRequestId_001 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_RemoveRequestId_001
|
||||
* @tc.name: RemoveRequestId
|
||||
* @tc.desc: Test removing request ID successfully.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, RemoveRequestId_001, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_RemoveRequestId_001 start";
|
||||
sptr<IAccessibilityElementOperatorCallback> callback = nullptr;
|
||||
manager_->AddRequestId(TEST_WINDOW_ID, TEST_TREE_ID, TEST_REQUEST_ID, callback);
|
||||
ErrCode result = manager_->RemoveRequestId(TEST_REQUEST_ID);
|
||||
EXPECT_EQ(result, ERR_OK);
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_RemoveRequestId_001 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_RemoveRequestId_002
|
||||
* @tc.name: RemoveRequestId
|
||||
* @tc.desc: Test removing non-existent request ID
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, RemoveRequestId_002, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_RemoveRequestId_002 start";
|
||||
ErrCode result = manager_->RemoveRequestId(TEST_REQUEST_ID);
|
||||
EXPECT_EQ(result, ERR_OK);
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_RemoveRequestId_002 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_StopCallbackWait_001
|
||||
* @tc.name: StopCallbackWait
|
||||
* @tc.desc: Test stopping callback wait by window ID.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, StopCallbackWait_001, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_StopCallbackWait_001 start";
|
||||
EXPECT_NO_THROW(manager_->StopCallbackWait(TEST_WINDOW_ID));
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_StopCallbackWait_001 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_StopCallbackWait_002
|
||||
* @tc.name: StopCallbackWait
|
||||
* @tc.desc: Test stopping callback wait by window ID and tree ID.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, StopCallbackWait_002, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_StopCallbackWait_002 start";
|
||||
EXPECT_NO_THROW(manager_->StopCallbackWait(TEST_WINDOW_ID, TEST_TREE_ID));
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_StopCallbackWait_002 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_MultipleConnections_001
|
||||
* @tc.name: MultipleConnections
|
||||
* @tc.desc: Test managing multiple connections.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, MultipleConnections_001, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_MultipleConnections_001 start";
|
||||
sptr<AccessibilityWindowConnection> mockConnection2 = CreateMockConnection(TEST_WINDOW_ID + 1, TEST_ACCOUNT_ID);
|
||||
manager_->AddAccessibilityWindowConnection(TEST_WINDOW_ID, mockConnection_);
|
||||
manager_->AddAccessibilityWindowConnection(TEST_WINDOW_ID + 1, mockConnection2);
|
||||
|
||||
EXPECT_EQ(manager_->GetAccessibilityWindowConnection(TEST_WINDOW_ID), mockConnection_);
|
||||
EXPECT_EQ(manager_->GetAccessibilityWindowConnection(TEST_WINDOW_ID + 1), mockConnection2);
|
||||
EXPECT_EQ(manager_->GetAsacConnections().size(), 2);
|
||||
|
||||
manager_->RemoveAccessibilityWindowConnection(TEST_WINDOW_ID);
|
||||
EXPECT_EQ(manager_->GetAccessibilityWindowConnection(TEST_WINDOW_ID), nullptr);
|
||||
EXPECT_EQ(manager_->GetAccessibilityWindowConnection(TEST_WINDOW_ID + 1), mockConnection2);
|
||||
EXPECT_EQ(manager_->GetAsacConnections().size(), 1);
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_MultipleConnections_001 end";
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.number: ElementOperatorManager_EdgeCases_001
|
||||
* @tc.name: EdgeCases
|
||||
* @tc.desc: Test edge cases and error conditions.
|
||||
*/
|
||||
HWTEST_F(ElementOperatorManagerTest, EdgeCases_001, TestSize.Level1)
|
||||
{
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_EdgeCases_001 start";
|
||||
EXPECT_EQ(manager_->GetAccessibilityWindowConnection(-1), nullptr);
|
||||
int64_t parentId = 0;
|
||||
EXPECT_EQ(manager_->GetRootParentId(-1, TEST_TREE_ID, parentId), RET_ERR_NO_CONNECTION);
|
||||
EXPECT_EQ(manager_->ClearFocus(-1), RET_ERR_NO_CONNECTION);
|
||||
|
||||
manager_->RemoveAccessibilityWindowConnection(-1);
|
||||
int32_t treeId = ElementOperatorManager::GetTreeIdBySplitElementId(0);
|
||||
EXPECT_EQ(treeId, 0);
|
||||
GTEST_LOG_(INFO) << "ElementOperatorManager_EdgeCases_001 end";
|
||||
}
|
||||
|
||||
} // namespace Accessibility
|
||||
} // namespace OHOS
|
||||
Reference in New Issue
Block a user