无障碍增加空指针判断

Signed-off-by: qianchuang <qianchuang1@huawei.com>
This commit is contained in:
qianchuang 2024-06-26 10:41:29 +08:00
parent cf71585377
commit 7dd8310381
2 changed files with 48 additions and 9 deletions

View File

@ -538,6 +538,10 @@ void AccessibilitySystemAbilityClientImpl::SetSearchElementInfoByAccessibilityId
{
std::lock_guard<std::mutex> lock(mutex_);
HILOG_DEBUG("search element requestId[%{public}d]", requestId);
if (serviceProxy_ == nullptr) {
HILOG_ERROR("serviceProxy_ is nullptr");
return;
}
int32_t windId = AccessibilityElementOperatorImpl::GetWindIdByRequestId(requestId);
if (requestId >= 0) {
auto iter = elementOperators_.find(static_cast<uint32_t>(windId));
@ -555,6 +559,10 @@ void AccessibilitySystemAbilityClientImpl::SetSearchElementInfoByTextResult(
{
std::lock_guard<std::mutex> lock(mutex_);
HILOG_DEBUG("requestId[%{public}d]", requestId);
if (serviceProxy_ == nullptr) {
HILOG_ERROR("serviceProxy_ is nullptr");
return;
}
int32_t windId = AccessibilityElementOperatorImpl::GetWindIdByRequestId(requestId);
if (requestId >= 0) {
auto iter = elementOperators_.find(static_cast<uint32_t>(windId));
@ -572,6 +580,10 @@ void AccessibilitySystemAbilityClientImpl::SetFindFocusedElementInfoResult(
{
std::lock_guard<std::mutex> lock(mutex_);
HILOG_DEBUG("requestId[%{public}d]", requestId);
if (serviceProxy_ == nullptr) {
HILOG_ERROR("serviceProxy_ is nullptr");
return;
}
int32_t windId = AccessibilityElementOperatorImpl::GetWindIdByRequestId(requestId);
if (requestId >= 0) {
auto iter = elementOperators_.find(static_cast<uint32_t>(windId));
@ -589,6 +601,10 @@ void AccessibilitySystemAbilityClientImpl::SetFocusMoveSearchResult(
{
std::lock_guard<std::mutex> lock(mutex_);
HILOG_DEBUG("requestId[%{public}d]", requestId);
if (serviceProxy_ == nullptr) {
HILOG_ERROR("serviceProxy_ is nullptr");
return;
}
int32_t windId = AccessibilityElementOperatorImpl::GetWindIdByRequestId(requestId);
if (requestId >= 0) {
auto iter = elementOperators_.find(static_cast<uint32_t>(windId));
@ -606,6 +622,10 @@ void AccessibilitySystemAbilityClientImpl::SetExecuteActionResult(
{
std::lock_guard<std::mutex> lock(mutex_);
HILOG_DEBUG("requestId[%{public}d]", requestId);
if (serviceProxy_ == nullptr) {
HILOG_ERROR("serviceProxy_ is nullptr");
return;
}
int32_t windId = AccessibilityElementOperatorImpl::GetWindIdByRequestId(requestId);
if (requestId >= 0) {
auto iter = elementOperators_.find(static_cast<uint32_t>(windId));
@ -623,6 +643,10 @@ void AccessibilitySystemAbilityClientImpl::SetCursorPositionResult(
{
std::lock_guard<std::mutex> lock(mutex_);
HILOG_DEBUG("requestId[%{public}d] cursorPosition[%{public}d]", requestId, cursorPosition);
if (serviceProxy_ == nullptr) {
HILOG_ERROR("serviceProxy_ is nullptr");
return;
}
int32_t windId = AccessibilityElementOperatorImpl::GetWindIdByRequestId(requestId);
if (requestId >= 0) {
auto iter = elementOperators_.find(static_cast<uint32_t>(windId));

View File

@ -52,7 +52,6 @@ RetError AccessibleAbilityChannel::SearchElementInfoByAccessibilityId(const int3
const int64_t elementId, const int32_t requestId, const sptr<IAccessibilityElementOperatorCallback> &callback,
const int32_t mode, bool isFilter)
{
HILOG_DEBUG();
HILOG_DEBUG("channel SearchElementInfo elementId: %{public}" PRId64 " winId: %{public}d",
elementId, accessibilityWindowId);
Singleton<AccessibleAbilityManagerService>::GetInstance().PostDelayUnloadTask();
@ -61,6 +60,10 @@ RetError AccessibleAbilityChannel::SearchElementInfoByAccessibilityId(const int3
HILOG_ERROR("eventHandler_ is nullptr.");
return RET_ERR_NULLPTR;
}
if (callback == nullptr) {
HILOG_ERROR("callback is nullptr.");
return RET_ERR_NULLPTR;
}
std::shared_ptr<std::promise<RetError>> syncPromise = std::make_shared<std::promise<RetError>>();
std::future syncFuture = syncPromise->get_future();
@ -116,6 +119,10 @@ RetError AccessibleAbilityChannel::SearchElementInfosByText(const int32_t access
HILOG_ERROR("eventHandler_ is nullptr.");
return RET_ERR_NULLPTR;
}
if (callback == nullptr) {
HILOG_ERROR("callback is nullptr.");
return RET_ERR_NULLPTR;
}
int32_t treeId = AccessibleAbilityManagerService::GetTreeIdBySplitElementId(elementId);
HILOG_DEBUG("SearchElementInfosByText :channel SearchElementInfo treeId: %{public}d", treeId);
@ -165,6 +172,10 @@ RetError AccessibleAbilityChannel::FindFocusedElementInfo(const int32_t accessib
HILOG_ERROR("eventHandler_ is nullptr.");
return RET_ERR_NULLPTR;
}
if (callback == nullptr) {
HILOG_ERROR("callback is nullptr.");
return RET_ERR_NULLPTR;
}
std::shared_ptr<std::promise<RetError>> syncPromise = std::make_shared<std::promise<RetError>>();
std::future syncFuture = syncPromise->get_future();
@ -207,10 +218,14 @@ RetError AccessibleAbilityChannel::FocusMoveSearch(const int32_t accessibilityWi
elementId, accessibilityWindowId);
Singleton<AccessibleAbilityManagerService>::GetInstance().PostDelayUnloadTask();
if (eventHandler_== nullptr) {
if (eventHandler_ == nullptr) {
HILOG_ERROR("eventHandler_ is nullptr.");
return RET_ERR_NULLPTR;
}
if (callback == nullptr) {
HILOG_ERROR("callback is nullptr.");
return RET_ERR_NULLPTR;
}
std::shared_ptr<std::promise<RetError>> syncPromise = std::make_shared<std::promise<RetError>>();
std::future syncFuture = syncPromise->get_future();
@ -322,14 +337,17 @@ RetError AccessibleAbilityChannel::ExecuteAction(const int32_t accessibilityWind
const int32_t action, const std::map<std::string, std::string> &actionArguments, const int32_t requestId,
const sptr<IAccessibilityElementOperatorCallback> &callback)
{
HILOG_DEBUG();
HILOG_DEBUG("ExecuteAction :channel ExecuteAction elementId: %{public}" PRId64 " winId: %{public}d",
elementId, accessibilityWindowId);
HILOG_DEBUG("ExecuteAction elementId:%{public}" PRId64 " winId:%{public}d, action:%{public}d, requestId:%{public}d",
elementId, accessibilityWindowId, action, requestId);
Singleton<AccessibleAbilityManagerService>::GetInstance().PostDelayUnloadTask();
if (eventHandler_== nullptr) {
HILOG_ERROR("eventHandler_ is nullptr.");
return RET_ERR_NULLPTR;
}
if (callback == nullptr) {
HILOG_ERROR("callback is nullptr.");
return RET_ERR_NULLPTR;
}
if (accessibleKeyCodeTable.find(action) != accessibleKeyCodeTable.end()) {
RetError ret = TransmitActionToMmi(action);
@ -342,14 +360,11 @@ RetError AccessibleAbilityChannel::ExecuteAction(const int32_t accessibilityWind
return RET_OK;
}
SetFocusWindowIdAndElementId(accessibilityWindowId, elementId, action);
HILOG_DEBUG("ExecuteAction : action: %{public}d", action);
std::shared_ptr<std::promise<RetError>> syncPromise = std::make_shared<std::promise<RetError>>();
std::future syncFuture = syncPromise->get_future();
int32_t treeId = AccessibleAbilityManagerService::GetTreeIdBySplitElementId(elementId);
HILOG_DEBUG("ExecuteAction :channel ExecuteAction treeId: %{public}d", treeId);
eventHandler_->PostTask(std::bind([syncPromise, accessibilityWindowId, elementId, treeId, action,
actionArguments, requestId, callback](int32_t accountId, const std::string &name) -> void {
HILOG_DEBUG("accountId[%{public}d], name[%{public}s]", accountId, name.c_str());
sptr<IAccessibilityElementOperator> elementOperator = nullptr;
RetError ret = GetElementOperator(accountId, accessibilityWindowId, FOCUS_TYPE_INVALID, name,
elementOperator, treeId);
@ -366,7 +381,7 @@ RetError AccessibleAbilityChannel::ExecuteAction(const int32_t accessibilityWind
elementOperator->ExecuteAction(realElementId, action, actionArguments, requestId, callback);
syncPromise->set_value(RET_OK);
}, accountId_, clientName_), "ExecuteAction");
std::future_status wait = syncFuture.wait_for(std::chrono::milliseconds(TIME_OUT_OPERATOR));
if (wait != std::future_status::ready) {
HILOG_ERROR("Failed to wait ExecuteAction result");