From 1ef3c6ea12c6efa99c5aababe2f6963e5fe0c90c Mon Sep 17 00:00:00 2001 From: xiehd Date: Mon, 14 Jul 2025 22:21:28 +0800 Subject: [PATCH] fix timeout Signed-off-by: xiehd --- .../src/ability_connect_manager.cpp | 6 ++- .../ability_connect_manager_fourth_test.cpp | 49 +++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/services/abilitymgr/src/ability_connect_manager.cpp b/services/abilitymgr/src/ability_connect_manager.cpp index 43d3c1db85f..301f76e21dc 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 7d06182ce69..8c7ca34cb02 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 -- Gitee