diff --git a/services/abilitymgr/src/ability_connect_manager.cpp b/services/abilitymgr/src/ability_connect_manager.cpp index 43d3c1db85f150b28da6e80b1fafae12efc501fe..301f76e21dc33857e0c2194d05faebafc12b4787 100644 --- a/services/abilitymgr/src/ability_connect_manager.cpp +++ b/services/abilitymgr/src/ability_connect_manager.cpp @@ -2412,7 +2412,11 @@ void AbilityConnectManager::OnTimeOut(uint32_t msgId, int64_t abilityRecordId, b auto abilityRecord = GetExtensionByIdFromServiceMap(abilityRecordId); if (abilityRecord == nullptr) { TAG_LOGE(AAFwkTag::SERVICE_EXT, "null abilityRecord"); - return; + abilityRecord = GetExtensionByIdFromTerminatingMap(abilityRecordId); + if (!IsUIExtensionAbility(abilityRecord)) { + TAG_LOGW(AAFwkTag::UI_EXT, "null terminatingRecord or not uea"); + return; + } } PrintTimeOutLog(abilityRecord, msgId, isHalf); if (isHalf) { diff --git a/test/unittest/ability_connect_manager_fourth_test/ability_connect_manager_fourth_test.cpp b/test/unittest/ability_connect_manager_fourth_test/ability_connect_manager_fourth_test.cpp index 7d06182ce69cdff1f61c26b8ed3a25c70eeb547b..8c7ca34cb02bbb80d8d8265c9d6599d797c35bac 100644 --- a/test/unittest/ability_connect_manager_fourth_test/ability_connect_manager_fourth_test.cpp +++ b/test/unittest/ability_connect_manager_fourth_test/ability_connect_manager_fourth_test.cpp @@ -1050,5 +1050,54 @@ HWTEST_F(AbilityConnectManagerFourthTest, AAFWK_Kit_ResumeExtensionAbilityLocked auto result3 = ConnectManager()->ResumeExtensionAbilityLocked(callbackA_); EXPECT_EQ(result3, OHOS::ERR_OK); } + +/* + * Feature: AbilityConnectManager + * Function: OnTimeOut + * SubFunction: OnTimeOut + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Verify AbilityConnectManager OnTimeOut + */ +HWTEST_F(AbilityConnectManagerFourthTest, AAFwk_AbilityMS_OnTimeOut_002, TestSize.Level1) +{ + TAG_LOGI(AAFwkTag::TEST, "AAFwk_AbilityMS_OnTimeOut_002 start"); + std::shared_ptr connectManager = std::make_shared(0); + AbilityRequest abilityRequest; + abilityRequest.appInfo.bundleName = "com.example.unittest"; + abilityRequest.abilityInfo.name = "MainAbility"; + abilityRequest.abilityInfo.type = AbilityType::PAGE; + abilityRequest.abilityInfo.extensionAbilityType = AppExecFwk::ExtensionAbilityType::SHARE; + std::shared_ptr abilityRecord = AbilityRecord::CreateAbilityRecord(abilityRequest); + int64_t abilityRecordId = 1; + uint32_t msgId = 111; + connectManager->terminatingExtensionList_.push_back(abilityRecord); + connectManager->OnTimeOut(msgId, abilityRecordId); + abilityRecordId = abilityRecord->GetAbilityRecordId(); + connectManager->OnTimeOut(msgId, abilityRecordId); + connectManager->terminatingExtensionList_.clear(); + TAG_LOGI(AAFwkTag::TEST, "AAFwk_AbilityMS_OnTimeOut_002 end"); +} + +/* + * Feature: AbilityConnectManager + * Function: OnTimeOut + * SubFunction: OnTimeOut + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Verify AbilityConnectManager OnTimeOut + */ +HWTEST_F(AbilityConnectManagerFourthTest, AAFwk_AbilityMS_OnTimeOut_003, TestSize.Level1) +{ + TAG_LOGI(AAFwkTag::TEST, "AAFwk_AbilityMS_OnTimeOut_003 start"); + std::shared_ptr connectManager = std::make_shared(0); + std::shared_ptr abilityRecord = serviceRecord_; + uint32_t msgId = 111; + connectManager->terminatingExtensionList_.push_back(abilityRecord); + int64_t abilityRecordId = abilityRecord->GetAbilityRecordId(); + connectManager->OnTimeOut(msgId, abilityRecordId); + connectManager->terminatingExtensionList_.clear(); + TAG_LOGI(AAFwkTag::TEST, "AAFwk_AbilityMS_OnTimeOut_003 end"); +} } // namespace AAFwk } // namespace OHOS