diff --git a/interfaces/kits/js/launcher_bundle_manager/launcher_bundle_manager.cpp b/interfaces/kits/js/launcher_bundle_manager/launcher_bundle_manager.cpp index 1748190f4baa1391345d0ead5afbc5518c02de47..e986d69cc37637e3e4ba56d083748430d096e799 100644 --- a/interfaces/kits/js/launcher_bundle_manager/launcher_bundle_manager.cpp +++ b/interfaces/kits/js/launcher_bundle_manager/launcher_bundle_manager.cpp @@ -30,8 +30,10 @@ namespace OHOS { namespace AppExecFwk { namespace { constexpr const char* GET_LAUNCHER_ABILITY_INFO = "GetLauncherAbilityInfo"; + constexpr const char* GET_LAUNCHER_ABILITY_INFO_SYNC = "GetLauncherAbilityInfoSync"; constexpr const char* GET_ALL_LAUNCHER_ABILITY_INFO = "GetAllLauncherAbilityInfo"; constexpr const char* GET_SHORTCUT_INFO = "GetShortcutInfo"; + constexpr const char* GET_SHORTCUT_INFO_SYNC = "GetShortcutInfoSync"; constexpr const char* BUNDLE_NAME = "bundleName"; constexpr const char* USER_ID = "userId"; } @@ -139,6 +141,51 @@ napi_value GetLauncherAbilityInfo(napi_env env, napi_callback_info info) return promise; } +napi_value GetLauncherAbilityInfoSync(napi_env env, napi_callback_info info) +{ + APP_LOGD("GetLauncherAbilityInfoSync called"); + NapiArg args(env, info); + if (!args.Init(ARGS_SIZE_TWO, ARGS_SIZE_TWO)) { + APP_LOGE("param count invalid."); + BusinessError::ThrowTooFewParametersError(env, ERROR_PARAM_CHECK_ERROR); + return nullptr; + } + std::string bundleName; + int32_t userId = Constants::UNSPECIFIED_USERID; + if (!CommonFunc::ParseString(env, args[ARGS_POS_ZERO], bundleName)) { + BusinessError::ThrowParameterTypeError(env, ERROR_PARAM_CHECK_ERROR, BUNDLE_NAME, TYPE_STRING); + return nullptr; + } + if (!CommonFunc::ParseInt(env, args[ARGS_POS_ONE], userId)) { + BusinessError::ThrowParameterTypeError(env, ERROR_PARAM_CHECK_ERROR, USER_ID, TYPE_NUMBER); + return nullptr; + } + + std::vector launcherAbilityInfos; + auto launcherService = GetLauncherService(); + if (launcherService == nullptr) { + napi_value businessError = BusinessError::CreateCommonError( + env, ERROR_BUNDLE_SERVICE_EXCEPTION, GET_LAUNCHER_ABILITY_INFO_SYNC, + Constants::PERMISSION_GET_BUNDLE_INFO_PRIVILEGED); + napi_throw(env, businessError); + return nullptr; + } + ErrCode ret = CommonFunc::ConvertErrCode(launcherService-> + GetLauncherAbilityByBundleName(bundleName, userId, launcherAbilityInfos)); + if (ret != SUCCESS) { + APP_LOGE("GetLauncherAbilityByBundleName failed"); + napi_value businessError = BusinessError::CreateCommonError( + env, ret, GET_LAUNCHER_ABILITY_INFO_SYNC, Constants::PERMISSION_GET_BUNDLE_INFO_PRIVILEGED); + napi_throw(env, businessError); + return nullptr; + } + napi_value nLauncherAbilityInfos = nullptr; + NAPI_CALL(env, napi_create_object(env, &nLauncherAbilityInfos)); + CommonFunc::ConvertLauncherAbilityInfos(env, launcherAbilityInfos, nLauncherAbilityInfos); + APP_LOGD("call GetLauncherAbilityInfoSync done."); + return nLauncherAbilityInfos; +} + static ErrCode InnerGetAllLauncherAbilityInfo(int32_t userId, std::vector& launcherAbilityInfos) { @@ -326,5 +373,44 @@ napi_value GetShortcutInfo(napi_env env, napi_callback_info info) APP_LOGD("call GetShortcutInfo done"); return promise; } + +napi_value GetShortcutInfoSync(napi_env env, napi_callback_info info) +{ + APP_LOGD("GetShortcutInfoSync called"); + NapiArg args(env, info); + if (!args.Init(ARGS_SIZE_ONE, ARGS_SIZE_ONE)) { + APP_LOGE("param count invalid."); + BusinessError::ThrowTooFewParametersError(env, ERROR_PARAM_CHECK_ERROR); + return nullptr; + } + std::string bundleName; + if (!CommonFunc::ParseString(env, args[ARGS_POS_ZERO], bundleName)) { + BusinessError::ThrowParameterTypeError(env, ERROR_PARAM_CHECK_ERROR, USER_ID, TYPE_NUMBER); + return nullptr; + } + + std::vector shortcutInfos; + auto launcherService = GetLauncherService(); + if (launcherService == nullptr) { + napi_value businessError = BusinessError::CreateCommonError( + env, ERROR_BUNDLE_SERVICE_EXCEPTION, GET_SHORTCUT_INFO_SYNC, + Constants::PERMISSION_GET_BUNDLE_INFO_PRIVILEGED); + napi_throw(env, businessError); + return nullptr; + } + ErrCode ret = CommonFunc::ConvertErrCode(launcherService->GetShortcutInfoV9(bundleName, shortcutInfos)); + if (ret != SUCCESS) { + APP_LOGE("GetShortcutInfoV9 failed"); + napi_value businessError = BusinessError::CreateCommonError( + env, ret, GET_SHORTCUT_INFO_SYNC, Constants::PERMISSION_GET_BUNDLE_INFO_PRIVILEGED); + napi_throw(env, businessError); + return nullptr; + } + napi_value nShortcutInfos = nullptr; + NAPI_CALL(env, napi_create_object(env, &nShortcutInfos)); + CommonFunc::ConvertShortCutInfos(env, shortcutInfos, nShortcutInfos); + APP_LOGD("call GetShortcutInfoSync done."); + return nShortcutInfos; +} } } \ No newline at end of file diff --git a/interfaces/kits/js/launcher_bundle_manager/launcher_bundle_manager.h b/interfaces/kits/js/launcher_bundle_manager/launcher_bundle_manager.h index cae8342350ec68427e0134f26a782ca7249f44dc..88e41bfafe5e825f42a0601c00b91517606b43bc 100644 --- a/interfaces/kits/js/launcher_bundle_manager/launcher_bundle_manager.h +++ b/interfaces/kits/js/launcher_bundle_manager/launcher_bundle_manager.h @@ -50,8 +50,10 @@ struct GetShortcutInfoCallbackInfo : public BaseCallbackInfo { }; napi_value GetLauncherAbilityInfo(napi_env env, napi_callback_info info); +napi_value GetLauncherAbilityInfoSync(napi_env env, napi_callback_info info); napi_value GetAllLauncherAbilityInfo(napi_env env, napi_callback_info info); napi_value GetShortcutInfo(napi_env env, napi_callback_info info); +napi_value GetShortcutInfoSync(napi_env env, napi_callback_info info); } } #endif \ No newline at end of file diff --git a/interfaces/kits/js/launcher_bundle_manager/launcher_bundle_manager_unsupported.cpp b/interfaces/kits/js/launcher_bundle_manager/launcher_bundle_manager_unsupported.cpp index 4457b69b0330ee740245308b52bde7cf8469e515..11d6dd630430de6bbc5ede8ee761186dba02a421 100644 --- a/interfaces/kits/js/launcher_bundle_manager/launcher_bundle_manager_unsupported.cpp +++ b/interfaces/kits/js/launcher_bundle_manager/launcher_bundle_manager_unsupported.cpp @@ -33,6 +33,15 @@ napi_value GetLauncherAbilityInfo(napi_env env, napi_callback_info info) return nullptr; } +napi_value GetLauncherAbilityInfoSync(napi_env env, napi_callback_info info) +{ + APP_LOGE("SystemCapability.BundleManager.BundleFramework.Launcher not supported."); + napi_value error = BusinessError::CreateCommonError(env, ERROR_SYSTEM_ABILITY_NOT_FOUND, + "GetLauncherAbilityInfoSync"); + napi_throw(env, error); + return nullptr; +} + napi_value GetAllLauncherAbilityInfo(napi_env env, napi_callback_info info) { APP_LOGE("SystemCapability.BundleManager.BundleFramework.Launcher not supported."); @@ -50,5 +59,14 @@ napi_value GetShortcutInfo(napi_env env, napi_callback_info info) napi_throw(env, error); return nullptr; } + +napi_value GetShortcutInfoSync(napi_env env, napi_callback_info info) +{ + APP_LOGE("SystemCapability.BundleManager.BundleFramework.Launcher not supported."); + napi_value error = BusinessError::CreateCommonError(env, ERROR_SYSTEM_ABILITY_NOT_FOUND, + "GetShortcutInfoSync"); + napi_throw(env, error); + return nullptr; +} } // AppExecFwk } // OHOS diff --git a/interfaces/kits/js/launcher_bundle_manager/native_module.cpp b/interfaces/kits/js/launcher_bundle_manager/native_module.cpp index d1791e6fd00d3576475d7c27bd6c36622845670c..3faa396d3130f343041f9c385dac207e2c31aa8c 100644 --- a/interfaces/kits/js/launcher_bundle_manager/native_module.cpp +++ b/interfaces/kits/js/launcher_bundle_manager/native_module.cpp @@ -30,8 +30,10 @@ static napi_value LauncherBundleManagerExport(napi_env env, napi_value exports) APP_LOGD("LauncherBundleManagerExport init"); napi_property_descriptor desc[] = { DECLARE_NAPI_FUNCTION("getLauncherAbilityInfo", GetLauncherAbilityInfo), + DECLARE_NAPI_FUNCTION("getLauncherAbilityInfoSync", GetLauncherAbilityInfoSync), DECLARE_NAPI_FUNCTION("getAllLauncherAbilityInfo", GetAllLauncherAbilityInfo), DECLARE_NAPI_FUNCTION("getShortcutInfo", GetShortcutInfo), + DECLARE_NAPI_FUNCTION("getShortcutInfoSync", GetShortcutInfoSync), }; NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc));