已开启
清理windowFocusEventMap_逻辑 #2711
清理windowFocusEventMap_逻辑 #2711
已开启
taojuncun创建于 22 天前
1 个文件变更+8-0
@@ -1171,6 +1171,7 @@ RetError AccessibleAbilityManagerService::DeregisterElementOperator(int32_t wind
1171 RemoveTreeDeathRecipient(windowId, treeId, connection);1171 RemoveTreeDeathRecipient(windowId, treeId, connection);
1172 }1172 }
1173 accountData->RemoveAccessibilityWindowConnection(windowId);1173 accountData->RemoveAccessibilityWindowConnection(windowId);
1174+ windowFocusEventMap_.Erase(windowId);
1174 }, "TASK_DEREGISTER_ELEMENT_OPERATOR");1175 }, "TASK_DEREGISTER_ELEMENT_OPERATOR");
1175 return RET_OK;1176 return RET_OK;
1176}1177}
@@ -1201,6 +1202,7 @@ RetError AccessibleAbilityManagerService::DeregisterElementOperator(int32_t wind
1201 // remove connection when all proxy and children tree proxy deregistered1202 // remove connection when all proxy and children tree proxy deregistered
1202 if (connection->GetProxy() == nullptr && connection->GetCardProxySize() == 0) {1203 if (connection->GetProxy() == nullptr && connection->GetCardProxySize() == 0) {
1203 accountData->RemoveAccessibilityWindowConnection(windowId);1204 accountData->RemoveAccessibilityWindowConnection(windowId);
1205+ windowFocusEventMap_.Erase(windowId);
1204 }1206 }
1205 Singleton<AccessibilityWindowManager>::GetInstance().RemoveTreeIdWindowIdPair(treeId);1207 Singleton<AccessibilityWindowManager>::GetInstance().RemoveTreeIdWindowIdPair(treeId);
1206 }, "TASK_DEREGISTER_ELEMENT_OPERATOR");1208 }, "TASK_DEREGISTER_ELEMENT_OPERATOR");
@@ -1536,6 +1538,9 @@ RetError AccessibleAbilityManagerService::InnerDisableAbility(const std::string
1536 accountData->SetAbilityAutoStartState(name, false);1538 accountData->SetAbilityAutoStartState(name, false);
1537 accountData->RemoveConnectingA11yAbility(name);1539 accountData->RemoveConnectingA11yAbility(name);
1538 accountData->UpdateAbilities();1540 accountData->UpdateAbilities();
1541+ if (accountData->GetEnabledAbilities().empty()) {
1542+ windowFocusEventMap_.Clear();
1543+ }
1539 return RET_OK;1544 return RET_OK;
1540}1545}
1541 1546 
@@ -1608,6 +1613,9 @@ RetError AccessibleAbilityManagerService::DisableUITestAbility()
1608 std::bind(&AccessibilityAccountData::RemoveUITestClient, accountData, connection, UI_TEST_BUNDLE_NAME);1613 std::bind(&AccessibilityAccountData::RemoveUITestClient, accountData, connection, UI_TEST_BUNDLE_NAME);
1609 handler_->PostTask(removeUITestClientFunc, "RemoveUITestClient");1614 handler_->PostTask(removeUITestClientFunc, "RemoveUITestClient");
1610 accountData->RemoveEnabledAbility(uiTestUri);1615 accountData->RemoveEnabledAbility(uiTestUri);
1616+ if (accountData->GetEnabledAbilities().empty()) {
1617+ windowFocusEventMap_.Clear();
1618+ }
1611 syncPromise->set_value(RET_OK);1619 syncPromise->set_value(RET_OK);
1612 }, "TASK_DISABLE_UI_TEST_ABILITIES");1620 }, "TASK_DISABLE_UI_TEST_ABILITIES");
1613 1621