diff --git a/interfaces/kits/ani/distributed_bundle_manager/BUILD.gn b/interfaces/kits/ani/distributed_bundle_manager/BUILD.gn index 5f651aa46f86ced935b47642b982d3d1f35a8fcd..5d06c593e74d65462190f9629df056e0697ac3a7 100644 --- a/interfaces/kits/ani/distributed_bundle_manager/BUILD.gn +++ b/interfaces/kits/ani/distributed_bundle_manager/BUILD.gn @@ -41,7 +41,7 @@ ohos_shared_library("ani_distributed_bundle_manager") { include_dirs = [ "${dbms_kits_path}/js/distributedBundle" ] - sources = [ "ani_distributed_bundle_manager_convert.cpp" ] + sources = [ "ani_distributed_bundle_manager_common.cpp" ] if (distributed_bundle_framework_enable) { sources += [ "ani_distributed_bundle_manager.cpp" ] } else { diff --git a/interfaces/kits/ani/distributed_bundle_manager/ani_distributed_bundle_manager.cpp b/interfaces/kits/ani/distributed_bundle_manager/ani_distributed_bundle_manager.cpp index a5b999616addceeff962da3a96fe2c3e0d4b74b9..fd49d85894b1d9672919e3a72db081b0ad953daf 100644 --- a/interfaces/kits/ani/distributed_bundle_manager/ani_distributed_bundle_manager.cpp +++ b/interfaces/kits/ani/distributed_bundle_manager/ani_distributed_bundle_manager.cpp @@ -14,7 +14,7 @@ */ #include -#include "ani_distributed_bundle_manager_convert.h" +#include "ani_distributed_bundle_manager_common.h" #include "app_log_wrapper.h" #include "bundle_errors.h" #include "business_error_ani.h" @@ -62,14 +62,14 @@ static ani_object GetRemoteAbilityInfoInner(ani_env *env, if (isArray) { ani_object remoteAbilityInfosObject = CommonFunAni::ConvertAniArray(env, remoteAbilityInfos, - AniDistributedbundleManagerConvert::ConvertRemoteAbilityInfo); + AniDistributedbundleManagerCommon::ConvertRemoteAbilityInfo); if (remoteAbilityInfosObject == nullptr) { APP_LOGE("nullptr remoteAbilityInfosObject"); return nullptr; } return remoteAbilityInfosObject; } else { - return AniDistributedbundleManagerConvert::ConvertRemoteAbilityInfo(env, remoteAbilityInfos[0]); + return AniDistributedbundleManagerCommon::ConvertRemoteAbilityInfo(env, remoteAbilityInfos[0]); } } diff --git a/interfaces/kits/ani/distributed_bundle_manager/ani_distributed_bundle_manager_convert.cpp b/interfaces/kits/ani/distributed_bundle_manager/ani_distributed_bundle_manager_common.cpp similarity index 41% rename from interfaces/kits/ani/distributed_bundle_manager/ani_distributed_bundle_manager_convert.cpp rename to interfaces/kits/ani/distributed_bundle_manager/ani_distributed_bundle_manager_common.cpp index 5d99ba1b0ff7ac94de36e80b5c2df0a716cf1ad6..39fc04fc7de04face585c2d0ac05c98ceb825416 100644 --- a/interfaces/kits/ani/distributed_bundle_manager/ani_distributed_bundle_manager_convert.cpp +++ b/interfaces/kits/ani/distributed_bundle_manager/ani_distributed_bundle_manager_common.cpp @@ -13,20 +13,58 @@ * limitations under the License. */ -#include "ani_distributed_bundle_manager_convert.h" +#include "ani_distributed_bundle_manager_common.h" #include "common_fun_ani.h" namespace OHOS { namespace AppExecFwk { +namespace AniDistributedbundleManagerCommon { namespace { - constexpr const char* CLASSNAME_REMOTEABILITYINFO = "LbundleManager/RemoteAbilityInfoInner/RemoteAbilityInfoInner;"; - constexpr const char* PROPERTYNAME_ELEMENTNAME = "elementName"; - constexpr const char* PROPERTYNAME_ICON = "icon"; - constexpr const char* PROPERTYNAME_LABEL = "label"; +constexpr const char* CLASSNAME_ELEMENTNAME = "bundleManager.ElementNameInner.ElementNameInner"; +constexpr const char* CLASSNAME_REMOTEABILITYINFO = "bundleManager.RemoteAbilityInfoInner.RemoteAbilityInfoInner"; +constexpr const char* PROPERTYNAME_DEVICEID = "deviceId"; +constexpr const char* PROPERTYNAME_BUNDLENAME = "bundleName"; +constexpr const char* PROPERTYNAME_MODULENAME = "moduleName"; +constexpr const char* PROPERTYNAME_ABILITYNAME = "abilityName"; +constexpr const char* PROPERTYNAME_ELEMENTNAME = "elementName"; +constexpr const char* PROPERTYNAME_ICON = "icon"; +constexpr const char* PROPERTYNAME_LABEL = "label"; } -ani_object AniDistributedbundleManagerConvert::ConvertRemoteAbilityInfo(ani_env* env, - const RemoteAbilityInfo& remoteAbilityInfo) +ani_object ConvertDistributedBundleElementName(ani_env* env, const ElementName& elementName) +{ + RETURN_NULL_IF_NULL(env); + + ani_class cls = CommonFunAni::CreateClassByName(env, CLASSNAME_ELEMENTNAME); + RETURN_NULL_IF_NULL(cls); + + ani_object object = CommonFunAni::CreateNewObjectByClass(env, cls); + RETURN_NULL_IF_NULL(object); + + ani_string string = nullptr; + + // deviceId?: string + if (CommonFunAni::StringToAniStr(env, elementName.GetDeviceID(), string)) { + RETURN_NULL_IF_FALSE(CommonFunAni::CallSetterOptional(env, cls, object, PROPERTYNAME_DEVICEID, string)); + } + + // bundleName: string + RETURN_NULL_IF_FALSE(CommonFunAni::StringToAniStr(env, elementName.GetBundleName(), string)); + RETURN_NULL_IF_FALSE(CommonFunAni::CallSetter(env, cls, object, PROPERTYNAME_BUNDLENAME, string)); + + // moduleName?: string + if (CommonFunAni::StringToAniStr(env, elementName.GetModuleName(), string)) { + RETURN_NULL_IF_FALSE(CommonFunAni::CallSetterOptional(env, cls, object, PROPERTYNAME_MODULENAME, string)); + } + + // abilityName: string + RETURN_NULL_IF_FALSE(CommonFunAni::StringToAniStr(env, elementName.GetAbilityName(), string)); + RETURN_NULL_IF_FALSE(CommonFunAni::CallSetter(env, cls, object, PROPERTYNAME_ABILITYNAME, string)); + + return object; +} + +ani_object ConvertRemoteAbilityInfo(ani_env* env, const RemoteAbilityInfo& remoteAbilityInfo) { RETURN_NULL_IF_NULL(env); @@ -39,7 +77,7 @@ ani_object AniDistributedbundleManagerConvert::ConvertRemoteAbilityInfo(ani_env* ani_string string = nullptr; // elementName: ElementName - ani_object aElementNameObject = CommonFunAni::ConvertElementName(env, remoteAbilityInfo.elementName); + ani_object aElementNameObject = ConvertDistributedBundleElementName(env, remoteAbilityInfo.elementName); RETURN_NULL_IF_NULL(aElementNameObject); RETURN_NULL_IF_FALSE(CommonFunAni::CallSetter(env, cls, object, PROPERTYNAME_ELEMENTNAME, aElementNameObject)); @@ -53,5 +91,6 @@ ani_object AniDistributedbundleManagerConvert::ConvertRemoteAbilityInfo(ani_env* return object; } +} // AniDistributedbundleManagerCommon } // AppExecFwk } // OHOS \ No newline at end of file diff --git a/interfaces/kits/ani/distributed_bundle_manager/ani_distributed_bundle_manager_convert.h b/interfaces/kits/ani/distributed_bundle_manager/ani_distributed_bundle_manager_common.h similarity index 56% rename from interfaces/kits/ani/distributed_bundle_manager/ani_distributed_bundle_manager_convert.h rename to interfaces/kits/ani/distributed_bundle_manager/ani_distributed_bundle_manager_common.h index bd1004c202b9573dcc48ccbba2011949b5c13cc8..e4d85fd1adad426bf76f24a88109675f8a33ce08 100644 --- a/interfaces/kits/ani/distributed_bundle_manager/ani_distributed_bundle_manager_convert.h +++ b/interfaces/kits/ani/distributed_bundle_manager/ani_distributed_bundle_manager_common.h @@ -13,8 +13,8 @@ * limitations under the License. */ -#ifndef DISTRIBUTED_BUNDLE_FRAMEWORK_INTERFACE_KITS_ANI_ANI_DISTRIBUTED_BUNDLE_MANAGER_CONVERT_H -#define DISTRIBUTED_BUNDLE_FRAMEWORK_INTERFACE_KITS_ANI_ANI_DISTRIBUTED_BUNDLE_MANAGER_CONVERT_H +#ifndef DISTRIBUTED_BUNDLE_FRAMEWORK_INTERFACE_KITS_ANI_DISTRIBUTED_BUNDLE_MANAGER_CONVERT_H +#define DISTRIBUTED_BUNDLE_FRAMEWORK_INTERFACE_KITS_ANI_DISTRIBUTED_BUNDLE_MANAGER_CONVERT_H #include #include @@ -25,10 +25,10 @@ namespace OHOS { namespace AppExecFwk { -class AniDistributedbundleManagerConvert { -public: - static ani_object ConvertRemoteAbilityInfo(ani_env* env, const RemoteAbilityInfo& remoteAbilityInfo); -}; -} -} -#endif // DISTRIBUTED_BUNDLE_FRAMEWORK_INTERFACE_KITS_ANI_ANI_DISTRIBUTED_BUNDLE_MANAGER_CONVERT_H \ No newline at end of file +namespace AniDistributedbundleManagerCommon { +ani_object ConvertDistributedBundleElementName(ani_env* env, const ElementName& elementName); +ani_object ConvertRemoteAbilityInfo(ani_env* env, const RemoteAbilityInfo& remoteAbilityInfo); +} // AniDistributedbundleManagerCommon +} // AppExecFwk +} // OHOS +#endif // DISTRIBUTED_BUNDLE_FRAMEWORK_INTERFACE_KITS_ANI_DISTRIBUTED_BUNDLE_MANAGER_CONVERT_H \ No newline at end of file diff --git a/interfaces/kits/js/distributedBundle/distributed_helper.h b/interfaces/kits/js/distributedBundle/distributed_helper.h index 819b2f7f63b5a77f0971585960daa3a668f94f9f..3362c4dc0624d25f2ebd66ed858e884c3c2c5e45 100644 --- a/interfaces/kits/js/distributedBundle/distributed_helper.h +++ b/interfaces/kits/js/distributedBundle/distributed_helper.h @@ -21,6 +21,12 @@ namespace OHOS { namespace AppExecFwk { +namespace { +constexpr int32_t GET_REMOTE_ABILITY_INFO_MAX_SIZE = 10; +constexpr const char* RESOURCE_NAME_GET_REMOTE_ABILITY_INFO = "GetRemoteAbilityInfo"; +constexpr const char* PARAMETER_ELEMENT_NAME = "elementName"; +constexpr const char* PARAMETER_LOCALE = "locale"; +} class DistributedHelper { public: static int32_t InnerGetRemoteAbilityInfo(const std::vector &elementNames, const std::string &locale,