diff --git a/services/abilitymgr/src/ability_manager_service.cpp b/services/abilitymgr/src/ability_manager_service.cpp index 45ef9befee7ef6bbed44bde050f4b1d2d689496d..2f091d7117e45580431928f962ff6c005cccfc80 100644 --- a/services/abilitymgr/src/ability_manager_service.cpp +++ b/services/abilitymgr/src/ability_manager_service.cpp @@ -672,7 +672,7 @@ int32_t AbilityManagerService::StartAbilityByFreeInstall(const Want &want, sptr< TAG_LOGD(AAFwkTag::ABILITYMGR, "Start ability come, ability is %{public}s, userId is %{public}d", want.GetElement().GetAbilityName().c_str(), userId); StartAbilityWrapParam startAbilityWrapParam = { - want, callerToken, requestCode, false, userId, false, 0, false, false, false, hideFailureTipDialog }; + want, callerToken, requestCode, false, userId, false, 0, false, false, false, false, hideFailureTipDialog }; int32_t ret = StartAbilityWrap(startAbilityWrapParam); if (ret != ERR_OK) { TAG_LOGE(AAFwkTag::ABILITYMGR, "StartAbilityByFreeInstall error:%{public}d", ret); diff --git a/services/abilitymgr/src/implicit_start_processor.cpp b/services/abilitymgr/src/implicit_start_processor.cpp index 73cc584a549aed7641a86d7d251687f66e1a0b35..707c59ac4bef440a931075aa65b779c4f92f2a67 100644 --- a/services/abilitymgr/src/implicit_start_processor.cpp +++ b/services/abilitymgr/src/implicit_start_processor.cpp @@ -216,8 +216,10 @@ int ImplicitStartProcessor::ImplicitStartAbility(AbilityRequest &request, int32_ } if (want.GetBoolParam("isCreateAppGallerySelector", false)) { want.RemoveParam("isCreateAppGallerySelector"); - DialogSessionManager::GetInstance().CreateImplicitSelectorModalDialog(request, want, userId, - dialogAppInfos); + if (!request.hideFailureTipDialog) { + DialogSessionManager::GetInstance().CreateImplicitSelectorModalDialog(request, want, userId, + dialogAppInfos); + } return ERR_IMPLICIT_START_ABILITY_FAIL; } std::vector dialogAllAppInfos; diff --git a/test/unittest/implicit_start_processor_test/implicit_start_processor_test.cpp b/test/unittest/implicit_start_processor_test/implicit_start_processor_test.cpp index 6cdb8fee6884fd94beb65995404fda6d9c9f5d42..0aeb8513cc77a2b8635baf4e91ccab56b1f5006d 100644 --- a/test/unittest/implicit_start_processor_test/implicit_start_processor_test.cpp +++ b/test/unittest/implicit_start_processor_test/implicit_start_processor_test.cpp @@ -270,6 +270,36 @@ HWTEST_F(ImplicitStartProcessorTest, ImplicitStartAbility_008, TestSize.Level1) TAG_LOGI(AAFwkTag::TEST, "ImplicitStartAbility_008 end"); } +/* + * Feature: ImplicitStartProcessor + * Function: ImplicitStartAbility + * SubFunction: NA + * FunctionPoints: ImplicitStartProcessor ImplicitStartAbility + * EnvConditions: NA + * CaseDescription: dialogAppInfos.size() == 0 and !IsSelectorDialogDefaultPossion() + */ +HWTEST_F(ImplicitStartProcessorTest, ImplicitStartAbility_009, TestSize.Level1) +{ + TAG_LOGI(AAFwkTag::TEST, "ImplicitStartAbility_009 start"); + auto processor = std::make_shared(); + AbilityRequest request; + int32_t userId = 0; + std::string mockAction = "action.system.home"; + request.want.SetAction(mockAction); + request.want.SetParam("isCreateAppGallerySelector", true); + request.hideFailureTipDialog = false; + + int32_t res = processor->ImplicitStartAbility(request, userId, + AbilityWindowConfiguration::MULTI_WINDOW_DISPLAY_UNDEFINED, "", false); + EXPECT_EQ(res, ERR_IMPLICIT_START_ABILITY_FAIL); + + request.hideFailureTipDialog = true; + res = processor->ImplicitStartAbility(request, userId, + AbilityWindowConfiguration::MULTI_WINDOW_DISPLAY_UNDEFINED, "", false); + EXPECT_EQ(res, ERR_IMPLICIT_START_ABILITY_FAIL); + TAG_LOGI(AAFwkTag::TEST, "ImplicitStartAbility_009 end"); +} + /* * Feature: ImplicitStartProcessor * Function: TrustlistIntersectionProcess