diff --git a/services/abilitymgr/src/ability_manager_service.cpp b/services/abilitymgr/src/ability_manager_service.cpp index 079930e113987ed147cf67bb5d7e85cec60354a7..cad6069eeaff88a43720f22565166576aff33085 100644 --- a/services/abilitymgr/src/ability_manager_service.cpp +++ b/services/abilitymgr/src/ability_manager_service.cpp @@ -11616,16 +11616,16 @@ bool AbilityManagerService::GetStartUpNewRuleFlag() const void AbilityManagerService::CallRequestDone(const sptr &token, const sptr &callStub) { - { - std::lock_guard autoLock(abilityTokenLock_); - callStubTokenMap_[callStub] = token; - } auto abilityRecord = Token::GetAbilityRecordByToken(token); CHECK_POINTER(abilityRecord); if (!JudgeSelfCalled(abilityRecord)) { return; } + { + std::lock_guard autoLock(abilityTokenLock_); + callStubTokenMap_[callStub] = token; + } if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) { auto uiAbilityManager = GetCurrentUIAbilityManager(); CHECK_POINTER(uiAbilityManager); diff --git a/test/unittest/ability_manager_service_third_test/ability_manager_service_third_test.cpp b/test/unittest/ability_manager_service_third_test/ability_manager_service_third_test.cpp index 83ea004b24c73ec2438b985b29b6988e3e763adf..0838837ceebb4a58550eff62cb14545954f1787d 100644 --- a/test/unittest/ability_manager_service_third_test/ability_manager_service_third_test.cpp +++ b/test/unittest/ability_manager_service_third_test/ability_manager_service_third_test.cpp @@ -625,10 +625,17 @@ HWTEST_F(AbilityManagerServiceThirdTest, CallRequestDone_001, TestSize.Level1) auto abilityMs_ = std::make_shared(); abilityMs_->subManagersHelper_ = std::make_shared(nullptr, nullptr); abilityMs_->subManagersHelper_->currentUIAbilityManager_ = std::make_shared(); + abilityMs_->callStubTokenMap_.clear(); sptr token = nullptr; sptr callStub = nullptr; - ASSERT_NE(abilityMs_, nullptr); abilityMs_->CallRequestDone(token, callStub); + EXPECT_TRUE(abilityMs_->callStubTokenMap_.empty()); + + auto abilityRecord = MockAbilityRecord(AbilityType::SERVICE); + token = abilityRecord->GetToken(); + abilityMs_->CallRequestDone(token, callStub); + EXPECT_NE(abilityMs_->callStubTokenMap_[callStub], nullptr); + EXPECT_EQ(abilityMs_->callStubTokenMap_[callStub], token); TAG_LOGI(AAFwkTag::TEST, "AbilityManagerServiceThirdTest CallRequestDone_001 end"); }