No appCloneSelector for scb

Signed-off-by: wangzhen <wangzhen416@huawei.com>
This commit is contained in:
wangzhen
2025-11-29 16:20:10 +08:00
parent 19174c4505
commit ded8c1cf5d
4 changed files with 41 additions and 3 deletions
@@ -70,6 +70,7 @@ struct StartAbilityUtils {
static thread_local int32_t ermsResultCode;
static thread_local bool isWantWithAppCloneIndex;
static thread_local bool ermsSupportBackToCallerFlag;
static thread_local bool startSpecifiedBySCB;
};
struct StartAbilityInfoWrap {
@@ -12330,8 +12330,11 @@ int32_t AbilityManagerService::StartSpecifiedAbilityBySCB(const Want &want)
TAG_LOGE(AAFwkTag::ABILITYMGR, "no sceneboard called, no allowed");
return ERR_PERMISSION_DENIED;
}
return StartAbilityInner(want, nullptr, DEFAULT_INVAL_VALUE, false, DEFAULT_INVAL_VALUE, false, 0, false,
StartAbilityUtils::startSpecifiedBySCB = true;
auto ret = StartAbilityInner(want, nullptr, DEFAULT_INVAL_VALUE, false, DEFAULT_INVAL_VALUE, false, 0, false,
false, false, false, false, true);
StartAbilityUtils::startSpecifiedBySCB = false;
return ret;
}
int32_t AbilityManagerService::RegisterIAbilityManagerCollaborator(
@@ -37,6 +37,7 @@ thread_local bool StartAbilityUtils::skipErms = false;
thread_local int32_t StartAbilityUtils::ermsResultCode = ERMS_ISALLOW_RESULTCODE;
thread_local bool StartAbilityUtils::isWantWithAppCloneIndex = false;
thread_local bool StartAbilityUtils::ermsSupportBackToCallerFlag = false;
thread_local bool StartAbilityUtils::startSpecifiedBySCB = false;
bool StartAbilityUtils::GetAppIndex(const Want &want, sptr<IRemoteObject> callerToken, int32_t &appIndex)
{
@@ -162,8 +163,8 @@ StartAbilityInfoWrap::StartAbilityInfoWrap(const Want &want, int32_t validUserId
StartAbilityUtils::ermsResultCode = ERMS_ISALLOW_RESULTCODE;
StartAbilityUtils::isWantWithAppCloneIndex = false;
if (want.HasParameter(AAFwk::Want::PARAM_APP_CLONE_INDEX_KEY) && appIndex >= 0 &&
appIndex < AbilityRuntime::GlobalConstant::MAX_APP_CLONE_INDEX) {
if ((want.HasParameter(AAFwk::Want::PARAM_APP_CLONE_INDEX_KEY) && appIndex >= 0 &&
appIndex < AbilityRuntime::GlobalConstant::MAX_APP_CLONE_INDEX) || StartAbilityUtils::startSpecifiedBySCB) {
StartAbilityUtils::isWantWithAppCloneIndex = true;
}
}
@@ -271,6 +271,39 @@ HWTEST_F(StartAbilityUtilsTest, SetStartAbilityInfo_001, TestSize.Level1)
EXPECT_NE(abilityName, abilityInfo.name);
}
/**
* @tc.name: StartAbilityInfoWrap_001
* @tc.desc: test class StartAbilityUtil StartAbilityInfoWrap constructor
* @tc.type: FUNC
*/
HWTEST_F(StartAbilityUtilsTest, StartAbilityInfoWrap_001, TestSize.Level1)
{
Want want;
int32_t userId = 0;
int32_t appIndex = 0;
int32_t validUserId = 0;
StartAbilityUtils::startSpecifiedBySCB = true;
StartAbilityInfoWrap threadLocalInfo(want, validUserId, appIndex, nullptr);
EXPECT_TRUE(StartAbilityUtils::isWantWithAppCloneIndex);
StartAbilityUtils::startSpecifiedBySCB = false;
}
/**
* @tc.name: StartAbilityInfoWrap_002
* @tc.desc: test class StartAbilityUtil StartAbilityInfoWrap constructor
* @tc.type: FUNC
*/
HWTEST_F(StartAbilityUtilsTest, StartAbilityInfoWrap_002, TestSize.Level1)
{
Want want;
int32_t userId = 0;
int32_t appIndex = 0;
int32_t validUserId = 0;
StartAbilityUtils::startSpecifiedBySCB = false;
StartAbilityInfoWrap threadLocalInfo(want, validUserId, appIndex, nullptr);
EXPECT_FALSE(StartAbilityUtils::isWantWithAppCloneIndex);
}
/**
* @tc.name: CreateStartAbilityInfo_001
* @tc.desc: test class StartAbilityUtil CreateStartAbilityInfo function