diff --git a/interfaces/kits/js/bundle_manager/bundle_manager.cpp b/interfaces/kits/js/bundle_manager/bundle_manager.cpp index 9534244e19fc64167165f6b4da7f10481200bafe..e25b1aaf7a6db069cee5e9b963a85aa44b1da298 100644 --- a/interfaces/kits/js/bundle_manager/bundle_manager.cpp +++ b/interfaces/kits/js/bundle_manager/bundle_manager.cpp @@ -749,7 +749,7 @@ napi_value QueryAbilityInfos(napi_env env, napi_callback_info info) napi_valuetype valueType = napi_undefined; napi_typeof(env, args[i], &valueType); if ((i == ARGS_POS_ZERO) && (valueType == napi_object)) { - if (!CommonFunc::ParseWant(env, args[i], asyncCallbackInfo->want)) { + if (!CommonFunc::ParseWantPerformance(env, args[i], asyncCallbackInfo->want)) { APP_LOGE("invalid want"); BusinessError::ThrowError(env, ERROR_PARAM_CHECK_ERROR, INVALID_WANT_ERROR); return nullptr; diff --git a/interfaces/kits/js/common/common_func.cpp b/interfaces/kits/js/common/common_func.cpp index 3c2efd42a8296d294b576eb77a1756f4fbb5fa2a..f07f3b9c8609a0388bf3603d5beb760f634854c9 100644 --- a/interfaces/kits/js/common/common_func.cpp +++ b/interfaces/kits/js/common/common_func.cpp @@ -584,6 +584,34 @@ bool CommonFunc::ParseWant(napi_env env, napi_value args, Want &want) return true; } +bool CommonFunc::ParseWantPerformance(napi_env env, napi_value args, Want &want) +{ + APP_LOGD("begin to parse want performance"); + napi_valuetype valueType; + NAPI_CALL_BASE(env, napi_typeof(env, args, &valueType), false); + if (valueType != napi_object) { + APP_LOGE("args not object type"); + return false; + } + napi_value prop = nullptr; + napi_get_named_property(env, args, BUNDLE_NAME, &prop); + std::string bundleName = GetStringFromNAPI(env, prop); + + prop = nullptr; + napi_get_named_property(env, args, MODULE_NAME, &prop); + std::string moduleName = GetStringFromNAPI(env, prop); + + prop = nullptr; + napi_get_named_property(env, args, ABILITY_NAME, &prop); + std::string abilityName = GetStringFromNAPI(env, prop); + if (!bundleName.empty() && !abilityName.empty()) { + ElementName elementName("", bundleName, abilityName, moduleName); + want.SetElement(elementName); + return true; + } + return ParseWant(env, args, want); +} + bool CommonFunc::ParseWantWithoutVerification(napi_env env, napi_value args, Want &want) { napi_valuetype valueType; diff --git a/interfaces/kits/js/common/common_func.h b/interfaces/kits/js/common/common_func.h index 8482e28fd0a64c7a89b4a60b562fb056d23fbafb..834842b641f7f3d099342c2092a693a6dd3ee45e 100644 --- a/interfaces/kits/js/common/common_func.h +++ b/interfaces/kits/js/common/common_func.h @@ -72,6 +72,8 @@ static void ConvertElementName(napi_env env, napi_value elementInfo, const OHOS: static bool ParseWant(napi_env env, napi_value args, Want &want); +static bool ParseWantPerformance(napi_env env, napi_value args, Want &want); + static bool ParseWantWithoutVerification(napi_env env, napi_value args, Want &want); static bool ParseAbilityInfo(napi_env env, napi_value param, AbilityInfo& abilityInfo);