From 0daa940fc9bb2093e370b635c343e2b889d6d489 Mon Sep 17 00:00:00 2001 From: zhaoyuan17 Date: Thu, 9 Sep 2021 21:59:56 +0800 Subject: [PATCH] =?UTF-8?q?Add=20CompatibleApplicationInfo=E3=80=81Compati?= =?UTF-8?q?bleAbilityInfo=20and=20implements=20of=20GetAppIdByBundleName?= =?UTF-8?q?=E3=80=81GetUidByBundleName?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhaoyuan17 --- interfaces/innerkits/appexecfwk_base/BUILD.gn | 2 + .../appexecfwk_base/include/ability_info.h | 77 +++++++- .../include/application_info.h | 32 +++ .../include/bundle_constants.h | 2 + .../appexecfwk_base/src/ability_info.cpp | 47 ++++- .../appexecfwk_base/src/application_info.cpp | 15 ++ .../src/compatible_ability_info.cpp | 184 ++++++++++++++++++ .../src/compatible_application_info.cpp | 153 +++++++++++++++ .../src/bundlemgr/bundle_mgr_host.cpp | 28 ++- .../src/bundlemgr/bundle_mgr_proxy.cpp | 2 +- .../innerkits/task_dispatcher/test/BUILD.gn | 2 +- kits/appkit/napi/bundlemgr/bundle_mgr.cpp | 184 +++++++++--------- services/bundlemgr/include/common_profile.h | 8 + .../bundlemgr/include/inner_bundle_info.h | 7 +- .../bundlemgr/src/base_bundle_installer.cpp | 3 +- services/bundlemgr/src/bundle_profile.cpp | 18 +- services/bundlemgr/src/inner_bundle_info.cpp | 13 +- .../bms_bundle_data_storage_database_test.cpp | 5 +- .../bms_bundle_data_storage_test.cpp | 3 +- .../bms_bundle_kit_service_test/BUILD.gn | 2 + .../bms_bundle_kit_service_test.cpp | 147 +++++++++++++- .../bms_bundle_installer_module_test.cpp | 5 +- 22 files changed, 795 insertions(+), 144 deletions(-) create mode 100644 interfaces/innerkits/appexecfwk_base/src/compatible_ability_info.cpp create mode 100644 interfaces/innerkits/appexecfwk_base/src/compatible_application_info.cpp diff --git a/interfaces/innerkits/appexecfwk_base/BUILD.gn b/interfaces/innerkits/appexecfwk_base/BUILD.gn index 1c61dd0eb2..3f302de9ec 100644 --- a/interfaces/innerkits/appexecfwk_base/BUILD.gn +++ b/interfaces/innerkits/appexecfwk_base/BUILD.gn @@ -26,6 +26,8 @@ ohos_shared_library("appexecfwk_base") { "src/ability_info.cpp", "src/application_info.cpp", "src/bundle_info.cpp", + "src/compatible_ability_info.cpp", + "src/compatible_application_info.cpp", "src/element_name.cpp", "src/form_info.cpp", "src/hap_module_info.cpp", diff --git a/interfaces/innerkits/appexecfwk_base/include/ability_info.h b/interfaces/innerkits/appexecfwk_base/include/ability_info.h index d6e0d5e4ed..e452b025f8 100644 --- a/interfaces/innerkits/appexecfwk_base/include/ability_info.h +++ b/interfaces/innerkits/appexecfwk_base/include/ability_info.h @@ -31,6 +31,11 @@ enum class AbilityType { DATA, }; +enum class AbilitySubType { + UNSPECIFIED = 0, + CA, +}; + enum class DisplayOrientation { UNSPECIFIED = 0, LANDSCAPE, @@ -68,6 +73,75 @@ struct MetaData { std::vector customizeData; }; +struct AbilityInfo; + +/* +* According to Ability profile 1.0 +*/ +struct CompatibleAbilityInfo : public Parcelable { + // deprecated: ability code class simple name, use 'className' instead. + std::string package; + std::string name; + std::string label; // display name on screen. + std::string description; + std::string iconPath; // used as icon data (base64) for WEB Ability. + std::string uri; // uri of ability. + std::string moduleName; // indicates the name of the .hap package to which the capability belongs. + std::string process; + std::string targetAbility; + std::string appName; + std::string privacyUrl; + std::string privacyName; + std::string downloadUrl; + std::string versionName; + uint32_t backgroundModes = 0; + uint32_t packageSize = 0; // The size of the package that AbilityInfo.uri points to. + bool visible = false; + bool formEnabled = false; + bool multiUserShared = false; + // deprecated: remove this field in new package format. + AbilityType type = AbilityType::UNKNOWN; + AbilitySubType subType = AbilitySubType::UNSPECIFIED; + DisplayOrientation orientation = DisplayOrientation::UNSPECIFIED; + LaunchMode launchMode = LaunchMode::STANDARD; + std::vector permissions; + std::vector deviceTypes; + std::vector deviceCapabilities; + bool supportPipMode = false; + bool grantPermission = false; + std::string readPermission; + std::string writePermission; + std::string uriPermissionMode; + std::string uriPermissionPath; + bool directLaunch = true; + + // set when install + std::string bundleName; // bundle name which has this ability. + std::string className; // the ability full class name. + std::string originalClassName; // the original ability full class name + std::string deviceId; // device UDID information. + CompatibleApplicationInfo applicationInfo; + + // form widget info + uint32_t formEntity = 1; // where form can be displayed + int32_t minFormHeight = 0; // minimum height of ability. + int32_t defaultFormHeight = 0; // default height of ability. + int32_t minFormWidth = 0; // minimum width of ability. + int32_t defaultFormWidth = 0; // default width of ability. + + uint32_t iconId = 0; + uint32_t labelId = 0; + uint32_t descriptionId = 0; + bool enabled = true; + + bool ReadFromParcel(Parcel& parcel); + virtual bool Marshalling(Parcel& parcel) const override; + static CompatibleAbilityInfo* Unmarshalling(Parcel& parcel); + + void CopyToDest(CompatibleAbilityInfo& dest) const; + void ConvertToAbilityInfo(AbilityInfo& abilityInfo) const; +}; + // configuration information about an ability struct AbilityInfo : public Parcelable { std::string name; // ability name, only the main class name @@ -93,7 +167,7 @@ struct AbilityInfo : public Parcelable { bool enabled = false; std::string readPermission; std::string writePermission; - std::vector formEntity; + uint32_t formEntity = 1; int32_t minFormHeight = 0; int32_t defaultFormHeight = 0; int32_t minFormWidth = 0; @@ -114,6 +188,7 @@ struct AbilityInfo : public Parcelable { virtual bool Marshalling(Parcel &parcel) const override; static AbilityInfo *Unmarshalling(Parcel &parcel); void Dump(std::string prefix, int fd); + void ConvertToCompatiableAbilityInfo(CompatibleAbilityInfo& compatibleAbilityInfo) const; }; } // namespace AppExecFwk diff --git a/interfaces/innerkits/appexecfwk_base/include/application_info.h b/interfaces/innerkits/appexecfwk_base/include/application_info.h index 70e02d5fd6..11ec2d1ae4 100644 --- a/interfaces/innerkits/appexecfwk_base/include/application_info.h +++ b/interfaces/innerkits/appexecfwk_base/include/application_info.h @@ -33,6 +33,37 @@ enum class ApplicationFlag { GET_APPLICATION_INFO_WITH_PERMS = 0x00000008, }; +struct ApplicationInfo; + +struct CompatibleApplicationInfo : public Parcelable { + // items set when installing. + std::string name; // application name. + std::string icon; // application icon resource index. + std::string label; // application name displayed to the user. + std::string description; // description of application. + std::string cpuAbi; // current device cpu abi. + std::string process; + bool isCompressNativeLibs = true; + + uint32_t iconId = 0; + uint32_t labelId = 0; + uint32_t descriptionId = 0; + + bool systemApp = false; + + std::vector permissions; + std::vector moduleInfos; + + uint32_t supportedModes = 0; // supported modes. + bool enabled = true; + bool debug = false; + + bool ReadFromParcel(Parcel& parcel); + virtual bool Marshalling(Parcel& parcel) const override; + static CompatibleApplicationInfo* Unmarshalling(Parcel& parcel); + void ConvertToApplicationInfo(ApplicationInfo& applicationInfo) const; +}; + // configuration information about an application struct ApplicationInfo : public Parcelable { std::string name; // application name is same to bundleName @@ -64,6 +95,7 @@ struct ApplicationInfo : public Parcelable { virtual bool Marshalling(Parcel &parcel) const override; static ApplicationInfo *Unmarshalling(Parcel &parcel); void Dump(std::string prefix, int fd); + void ConvertToCompatibleApplicationInfo(CompatibleApplicationInfo& compatibleApplicationInfo) const; }; } // namespace AppExecFwk diff --git a/interfaces/innerkits/appexecfwk_base/include/bundle_constants.h b/interfaces/innerkits/appexecfwk_base/include/bundle_constants.h index b65bf54f18..b809ba0d01 100755 --- a/interfaces/innerkits/appexecfwk_base/include/bundle_constants.h +++ b/interfaces/innerkits/appexecfwk_base/include/bundle_constants.h @@ -116,6 +116,8 @@ const std::string STORE_ID = "installed_bundle_datas"; // single max hap size constexpr int32_t MAX_HAP_SIZE = 50 * 1024 * 1024; +const int32_t MAX_LIMIT_SIZE = 4; + } // namespace Constants } // namespace AppExecFwk } // namespace OHOS diff --git a/interfaces/innerkits/appexecfwk_base/src/ability_info.cpp b/interfaces/innerkits/appexecfwk_base/src/ability_info.cpp index af6ac77a97..33497a8851 100644 --- a/interfaces/innerkits/appexecfwk_base/src/ability_info.cpp +++ b/interfaces/innerkits/appexecfwk_base/src/ability_info.cpp @@ -102,11 +102,7 @@ bool AbilityInfo::ReadFromParcel(Parcel &parcel) isNativeAbility = parcel.ReadBool(); enabled = parcel.ReadBool(); - int32_t formEntitySize; - READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, formEntitySize); - for (int32_t i = 0; i < formEntitySize; i++) { - formEntity.emplace_back(Str16ToStr8(parcel.ReadString16())); - } + formEntity = parcel.ReadInt32(); minFormHeight = parcel.ReadInt32(); defaultFormHeight = parcel.ReadInt32(); minFormWidth = parcel.ReadInt32(); @@ -226,10 +222,7 @@ bool AbilityInfo::Marshalling(Parcel &parcel) const WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Bool, parcel, isLauncherAbility); WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Bool, parcel, isNativeAbility); WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Bool, parcel, enabled); - WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, formEntity.size()); - for (auto &item : formEntity) { - WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(item)); - } + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, formEntity); WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, minFormHeight); WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, defaultFormHeight); WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, minFormWidth); @@ -424,7 +417,7 @@ void from_json(const nlohmann::json &jsonObject, AbilityInfo &abilityInfo) abilityInfo.enabled = jsonObject.at(JSON_KEY_ENABLED).get(); abilityInfo.readPermission = jsonObject.at(JSON_KEY_READ_PERMISSION).get(); abilityInfo.writePermission = jsonObject.at(JSON_KEY_WRITE_PERMISSION).get(); - abilityInfo.formEntity = jsonObject.at(JSON_KEY_FORM_ENTITY).get>(); + abilityInfo.formEntity = jsonObject.at(JSON_KEY_FORM_ENTITY).get(); abilityInfo.minFormHeight = jsonObject.at(JSON_KEY_MIN_FORM_HEIGHT).get(); abilityInfo.defaultFormHeight = jsonObject.at(JSON_KEY_DEFAULT_FORM_HEIGHT).get(); abilityInfo.minFormWidth = jsonObject.at(JSON_KEY_MIN_FORM_WIDTH).get(); @@ -450,5 +443,39 @@ void from_json(const nlohmann::json &jsonObject, AbilityInfo &abilityInfo) abilityInfo.metaData = jsonObject.at(JSON_KEY_META_DATA).get(); } +void AbilityInfo::ConvertToCompatiableAbilityInfo(CompatibleAbilityInfo& compatibleAbilityInfo) const +{ + APP_LOGE("AbilityInfo::ConvertToCompatiableAbilityInfo called"); + compatibleAbilityInfo.package = package; + compatibleAbilityInfo.name = name; + compatibleAbilityInfo.label = label; + compatibleAbilityInfo.description = description; + compatibleAbilityInfo.iconPath = iconPath; + compatibleAbilityInfo.uri = uri; + compatibleAbilityInfo.moduleName = moduleName; + compatibleAbilityInfo.process = process; + compatibleAbilityInfo.targetAbility = targetAbility; + compatibleAbilityInfo.visible = visible; + compatibleAbilityInfo.type = type; + compatibleAbilityInfo.orientation = orientation; + compatibleAbilityInfo.launchMode = launchMode; + compatibleAbilityInfo.permissions = permissions; + compatibleAbilityInfo.deviceTypes = deviceTypes; + compatibleAbilityInfo.deviceCapabilities = deviceCapabilities; + compatibleAbilityInfo.readPermission = readPermission; + compatibleAbilityInfo.writePermission = writePermission; + compatibleAbilityInfo.bundleName = bundleName; + compatibleAbilityInfo.deviceId = deviceId; + CompatibleApplicationInfo convertedCompatibleApplicationInfo; + applicationInfo.ConvertToCompatibleApplicationInfo(convertedCompatibleApplicationInfo); + compatibleAbilityInfo.applicationInfo = convertedCompatibleApplicationInfo; + compatibleAbilityInfo.formEntity = formEntity; + compatibleAbilityInfo.minFormHeight = minFormHeight; + compatibleAbilityInfo.defaultFormHeight = defaultFormHeight; + compatibleAbilityInfo.minFormWidth = minFormWidth; + compatibleAbilityInfo.defaultFormWidth = defaultFormWidth; + compatibleAbilityInfo.enabled = enabled; +} + } // namespace AppExecFwk } // namespace OHOS diff --git a/interfaces/innerkits/appexecfwk_base/src/application_info.cpp b/interfaces/innerkits/appexecfwk_base/src/application_info.cpp index 9f8404cd0a..7fc357a4e7 100644 --- a/interfaces/innerkits/appexecfwk_base/src/application_info.cpp +++ b/interfaces/innerkits/appexecfwk_base/src/application_info.cpp @@ -214,5 +214,20 @@ void from_json(const nlohmann::json &jsonObject, ApplicationInfo &applicationInf applicationInfo.flags = jsonObject.at("flags").get(); } +void ApplicationInfo::ConvertToCompatibleApplicationInfo(CompatibleApplicationInfo& compatibleApplicationInfo) const +{ + compatibleApplicationInfo.name = name; + compatibleApplicationInfo.label = label; + compatibleApplicationInfo.description = description; + compatibleApplicationInfo.process = process; + compatibleApplicationInfo.systemApp = isSystemApp; + compatibleApplicationInfo.iconId = iconId; + compatibleApplicationInfo.labelId = labelId; + compatibleApplicationInfo.descriptionId = descriptionId; + compatibleApplicationInfo.permissions = permissions; + compatibleApplicationInfo.moduleInfos = moduleInfos; + compatibleApplicationInfo.supportedModes = supportedModes; +} + } // namespace AppExecFwk } // namespace OHOS diff --git a/interfaces/innerkits/appexecfwk_base/src/compatible_ability_info.cpp b/interfaces/innerkits/appexecfwk_base/src/compatible_ability_info.cpp new file mode 100644 index 0000000000..e6253fa5dd --- /dev/null +++ b/interfaces/innerkits/appexecfwk_base/src/compatible_ability_info.cpp @@ -0,0 +1,184 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ability_info.h" + +#include "nlohmann/json.hpp" + +#include "string_ex.h" + +#include "app_log_wrapper.h" +#include "bundle_constants.h" +#include "parcel_macro.h" + +namespace OHOS { +namespace AppExecFwk { +using namespace Constants; + +bool CompatibleAbilityInfo::ReadFromParcel(Parcel& parcel) +{ + APP_LOGD("CompatibleAbilityInfo::ReadFromParcel called"); + package = Str16ToStr8(parcel.ReadString16()); + name = Str16ToStr8(parcel.ReadString16()); + originalClassName = Str16ToStr8(parcel.ReadString16()); + label = Str16ToStr8(parcel.ReadString16()); + description = Str16ToStr8(parcel.ReadString16()); + iconPath = Str16ToStr8(parcel.ReadString16()); + uri = Str16ToStr8(parcel.ReadString16()); + moduleName = Str16ToStr8(parcel.ReadString16()); + process = Str16ToStr8(parcel.ReadString16()); + targetAbility = Str16ToStr8(parcel.ReadString16()); + appName = Str16ToStr8(parcel.ReadString16()); + privacyUrl = Str16ToStr8(parcel.ReadString16()); + privacyName = Str16ToStr8(parcel.ReadString16()); + downloadUrl = Str16ToStr8(parcel.ReadString16()); + versionName = Str16ToStr8(parcel.ReadString16()); + backgroundModes = parcel.ReadInt32(); + packageSize = parcel.ReadInt32(); + visible = parcel.ReadBool(); + formEnabled = parcel.ReadBool(); + multiUserShared = parcel.ReadBool(); + + int32_t typeData; + READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, typeData); + type = static_cast(typeData); + + int32_t orientationData; + READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, orientationData); + orientation = static_cast(orientationData); + + int32_t launchModeData; + READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, launchModeData); + launchMode = static_cast(launchModeData); + + supportPipMode = parcel.ReadBool(); + grantPermission = parcel.ReadBool(); + readPermission = Str16ToStr8(parcel.ReadString16()); + writePermission = Str16ToStr8(parcel.ReadString16()); + uriPermissionMode = Str16ToStr8(parcel.ReadString16()); + uriPermissionPath = Str16ToStr8(parcel.ReadString16()); + directLaunch = parcel.ReadBool(); + bundleName = Str16ToStr8(parcel.ReadString16()); + className = Str16ToStr8(parcel.ReadString16()); + deviceId = Str16ToStr8(parcel.ReadString16()); + formEntity = parcel.ReadInt32(); + minFormHeight = parcel.ReadInt32(); + defaultFormHeight = parcel.ReadInt32(); + minFormWidth = parcel.ReadInt32(); + defaultFormWidth = parcel.ReadInt32(); + iconId = parcel.ReadInt32(); + descriptionId = parcel.ReadInt32(); + labelId = parcel.ReadInt32(); + enabled = parcel.ReadBool(); + return true; +} + +CompatibleAbilityInfo* CompatibleAbilityInfo::Unmarshalling(Parcel& parcel) +{ + APP_LOGD("CompatibleAbilityInfo::Unmarshalling called"); + CompatibleAbilityInfo* info = new CompatibleAbilityInfo(); + if (!info->ReadFromParcel(parcel)) { + APP_LOGW("read from parcel failed"); + delete info; + info = nullptr; + } + return info; +} + +bool CompatibleAbilityInfo::Marshalling(Parcel& parcel) const +{ + APP_LOGD("CompatibleAbilityInfo::Marshalling called"); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(package)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(name)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(originalClassName)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(label)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(description)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(iconPath)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(uri)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(moduleName)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(process)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(targetAbility)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(appName)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(privacyUrl)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(privacyName)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(downloadUrl)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(versionName)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, backgroundModes); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, packageSize); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Bool, parcel, visible); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Bool, parcel, formEnabled); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Bool, parcel, multiUserShared); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, static_cast(type)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, static_cast(orientation)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, static_cast(launchMode)); + + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Bool, parcel, supportPipMode); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Bool, parcel, grantPermission); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(readPermission)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(writePermission)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(uriPermissionMode)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(uriPermissionPath)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Bool, parcel, directLaunch); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(bundleName)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(className)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(deviceId)); + APP_LOGE("CompatibleAbilityInfo::Marshalling start to write application info."); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, formEntity); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, minFormHeight); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, defaultFormHeight); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, minFormWidth); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, defaultFormWidth); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, iconId); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, descriptionId); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, labelId); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Bool, parcel, enabled); + return true; +} + +void CompatibleAbilityInfo::ConvertToAbilityInfo(AbilityInfo& abilityInfo) const +{ + APP_LOGD("CompatibleAbilityInfo::ConvertToAbilityInfo called"); + abilityInfo.package = package; + abilityInfo.name = name; + abilityInfo.label = label; + abilityInfo.description = description; + abilityInfo.iconPath = iconPath; + abilityInfo.uri = uri; + abilityInfo.moduleName = moduleName; + abilityInfo.process = process; + abilityInfo.targetAbility = targetAbility; + abilityInfo.visible = visible; + abilityInfo.type = type; + abilityInfo.orientation = orientation; + abilityInfo.launchMode = launchMode; + abilityInfo.permissions = permissions; + abilityInfo.deviceTypes = deviceTypes; + abilityInfo.deviceCapabilities = deviceCapabilities; + abilityInfo.readPermission = readPermission; + abilityInfo.writePermission = writePermission; + abilityInfo.bundleName = bundleName; + abilityInfo.deviceId = deviceId; + ApplicationInfo convertedApplicationInfo; + applicationInfo.ConvertToApplicationInfo(convertedApplicationInfo); + abilityInfo.applicationInfo = convertedApplicationInfo; + abilityInfo.formEntity = formEntity; + abilityInfo.minFormHeight = minFormHeight; + abilityInfo.defaultFormHeight = defaultFormHeight; + abilityInfo.minFormWidth = minFormWidth; + abilityInfo.defaultFormWidth = defaultFormWidth; + abilityInfo.enabled = enabled; +} +} // namespace AppExecFwk +} // namespace OHOS diff --git a/interfaces/innerkits/appexecfwk_base/src/compatible_application_info.cpp b/interfaces/innerkits/appexecfwk_base/src/compatible_application_info.cpp new file mode 100644 index 0000000000..ec8bab4822 --- /dev/null +++ b/interfaces/innerkits/appexecfwk_base/src/compatible_application_info.cpp @@ -0,0 +1,153 @@ +/** + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "application_info.h" + +#include +#include +#include +#include + +#include "nlohmann/json.hpp" +#include "string_ex.h" +#include "app_log_wrapper.h" +#include "bundle_constants.h" +#include "parcel_macro.h" +#include "json_serializer.h" + +namespace OHOS { +namespace AppExecFwk { +using namespace Constants; + +namespace { + const std::string DEBUG = "debug"; +} // namespace + +bool CompatibleApplicationInfo::ReadFromParcel(Parcel& parcel) +{ + APP_LOGD("CompatibleApplicationInfo::ReadFromParcel called"); + name = Str16ToStr8(parcel.ReadString16()); + icon = Str16ToStr8(parcel.ReadString16()); + label = Str16ToStr8(parcel.ReadString16()); + description = Str16ToStr8(parcel.ReadString16()); + cpuAbi = Str16ToStr8(parcel.ReadString16()); + process = Str16ToStr8(parcel.ReadString16()); + systemApp = parcel.ReadBool(); + supportedModes = parcel.ReadInt32(); + iconId = parcel.ReadInt32(); + descriptionId = parcel.ReadInt32(); + labelId = parcel.ReadInt32(); + isCompressNativeLibs = parcel.ReadBool(); + + int32_t permissionSize; + READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, permissionSize); + if (permissionSize > Constants::MAX_LIMIT_SIZE) { + APP_LOGE("permissions size is overflow"); + return false; + } + for (auto i = 0; i < permissionSize; i++) { + std::string permission = Str16ToStr8(parcel.ReadString16()); + if (permission.empty()) { + APP_LOGE("ReadParcelable failed"); + return false; + } + permissions.emplace_back(permission); + } + + int32_t moduleInfoSize; + READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, moduleInfoSize); + if (moduleInfoSize > Constants::MAX_LIMIT_SIZE) { + APP_LOGE("module info size is overflow"); + return false; + } + for (auto i = 0; i < moduleInfoSize; i++) { + ModuleInfo moduleInfo; + std::string moduleName = Str16ToStr8(parcel.ReadString16()); + std::string moduleSourceDir = Str16ToStr8(parcel.ReadString16()); + if (moduleName.empty() || moduleSourceDir.empty()) { + APP_LOGE("ReadParcelable failed"); + return false; + } + moduleInfo.moduleName = moduleName; + moduleInfo.moduleSourceDir = moduleSourceDir; + moduleInfos.emplace_back(moduleInfo); + } + enabled = parcel.ReadBool(); + debug = parcel.ReadBool(); + return true; +} + +CompatibleApplicationInfo* CompatibleApplicationInfo::Unmarshalling(Parcel& parcel) +{ + APP_LOGD("CompatibleApplicationInfo::Unmarshalling called"); + CompatibleApplicationInfo* info = new CompatibleApplicationInfo(); + if (info && !info->ReadFromParcel(parcel)) { + APP_LOGW("read from parcel failed"); + delete info; + info = nullptr; + } + return info; +} + +bool CompatibleApplicationInfo::Marshalling(Parcel& parcel) const +{ + APP_LOGD("CompatibleApplicationInfo::Marshalling called"); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(name)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(icon)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(label)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(description)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(cpuAbi)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(process)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Bool, parcel, systemApp); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, supportedModes); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, iconId); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, descriptionId); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, labelId); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Bool, parcel, isCompressNativeLibs); + const auto permissionSize = static_cast(permissions.size()); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, permissionSize); + for (auto i = 0; i < permissionSize; i++) { + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(permissions[i])); + } + const auto moduleInfoSize = static_cast(moduleInfos.size()); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, moduleInfoSize); + for (auto i = 0; i < moduleInfoSize; i++) { + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(moduleInfos[i].moduleName)); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(String16, parcel, Str8ToStr16(moduleInfos[i].moduleSourceDir)); + } + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Bool, parcel, enabled); + WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Bool, parcel, debug); + + return true; +} + +void CompatibleApplicationInfo::ConvertToApplicationInfo(ApplicationInfo& applicationInfo) const +{ + APP_LOGD("CompatibleApplicationInfo::ConvertToApplicationInfo called"); + applicationInfo.name = name; + applicationInfo.label = label; + applicationInfo.description = description; + applicationInfo.process = process; + applicationInfo.isSystemApp = systemApp; + applicationInfo.iconId = iconId; + applicationInfo.labelId = labelId; + applicationInfo.descriptionId = descriptionId; + applicationInfo.permissions = permissions; + applicationInfo.moduleInfos = moduleInfos; + applicationInfo.supportedModes = supportedModes; + applicationInfo.enabled = debug; +} +} // namespace AppExecFwk +} // namespace OHOS diff --git a/interfaces/innerkits/appexecfwk_core/src/bundlemgr/bundle_mgr_host.cpp b/interfaces/innerkits/appexecfwk_core/src/bundlemgr/bundle_mgr_host.cpp index ed9d76cc74..4a4ae766db 100755 --- a/interfaces/innerkits/appexecfwk_core/src/bundlemgr/bundle_mgr_host.cpp +++ b/interfaces/innerkits/appexecfwk_core/src/bundlemgr/bundle_mgr_host.cpp @@ -201,16 +201,34 @@ int BundleMgrHost::OnRemoteRequest(uint32_t code, MessageParcel &data, MessagePa return (errCode == ERR_OK) ? NO_ERROR : UNKNOWN_ERROR; } -int BundleMgrHost::GetUidByBundleName([[maybe_unused]] const std::string &bundleName, const int userId) +int BundleMgrHost::GetUidByBundleName(const std::string &bundleName, const int userId) { - APP_LOGD("need not impl for host interface"); - return Constants::INVALID_UID; + APP_LOGI("begin to get uid of %{public}s", bundleName.c_str()); + BundleInfo bundleInfo; + int uid = Constants::INVALID_UID; + bool ret = GetBundleInfo(bundleName, BundleFlag::GET_BUNDLE_DEFAULT, bundleInfo); + if (ret) { + uid = bundleInfo.uid; + APP_LOGD("get bundle uid success"); + } else { + APP_LOGE("can not get bundleInfo's uid"); + } + return uid; } std::string BundleMgrHost::GetAppIdByBundleName([[maybe_unused]] const std::string &bundleName, const int userId) { - APP_LOGD("need not impl for host interface"); - return Constants::EMPTY_STRING; + APP_LOGI("begin to get appId of %{public}s", bundleName.c_str()); + BundleInfo bundleInfo; + std::string appId = Constants::EMPTY_STRING; + bool ret = GetBundleInfo(bundleName, BundleFlag::GET_BUNDLE_DEFAULT, bundleInfo); + if (ret) { + appId = bundleInfo.appId; + APP_LOGD("get bundle appId success"); + } else { + APP_LOGE("can not get bundleInfo's appId"); + } + return appId; } std::string BundleMgrHost::GetAppType([[maybe_unused]] const std::string &bundleName) diff --git a/interfaces/innerkits/appexecfwk_core/src/bundlemgr/bundle_mgr_proxy.cpp b/interfaces/innerkits/appexecfwk_core/src/bundlemgr/bundle_mgr_proxy.cpp index f259ac27db..a80f71e9da 100644 --- a/interfaces/innerkits/appexecfwk_core/src/bundlemgr/bundle_mgr_proxy.cpp +++ b/interfaces/innerkits/appexecfwk_core/src/bundlemgr/bundle_mgr_proxy.cpp @@ -161,7 +161,7 @@ int BundleMgrProxy::GetUidByBundleName(const std::string &bundleName, const int std::string BundleMgrProxy::GetAppIdByBundleName(const std::string &bundleName, const int userId) { - APP_LOGI("begin to get uid of %{public}s", bundleName.c_str()); + APP_LOGI("begin to get appId of %{public}s", bundleName.c_str()); BundleInfo bundleInfo; std::string appId = Constants::EMPTY_STRING; bool ret = GetBundleInfo(bundleName, BundleFlag::GET_BUNDLE_DEFAULT, bundleInfo); diff --git a/interfaces/innerkits/task_dispatcher/test/BUILD.gn b/interfaces/innerkits/task_dispatcher/test/BUILD.gn index 5946121241..5e4dd762e6 100644 --- a/interfaces/innerkits/task_dispatcher/test/BUILD.gn +++ b/interfaces/innerkits/task_dispatcher/test/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (C) 2021 Huawei Device Co., Ltd. +# Copyright (c) 2021 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/kits/appkit/napi/bundlemgr/bundle_mgr.cpp b/kits/appkit/napi/bundlemgr/bundle_mgr.cpp index 6e039fb62a..2e5350e9ef 100644 --- a/kits/appkit/napi/bundlemgr/bundle_mgr.cpp +++ b/kits/appkit/napi/bundlemgr/bundle_mgr.cpp @@ -36,6 +36,12 @@ constexpr size_t ARGS_SIZE_FOUR = 4; constexpr int32_t DEFAULT_INT32 = 0; constexpr int32_t PARAM0 = 0; constexpr int32_t PARAM1 = 1; +constexpr int32_t PARAM2 = 2; +constexpr int32_t NAPI_RETURN_FAILED = -1; +constexpr int32_t NAPI_RETURN_ZERO = 0; +constexpr int32_t NAPI_RETURN_ONE = 1; +constexpr int32_t NAPI_RETURN_TWO = 2; +constexpr int32_t NAPI_RETURN_THREE = 3; constexpr int32_t CODE_SUCCESS = 0; constexpr int32_t CODE_FAILED = -1; enum class InstallErrorCode { @@ -365,15 +371,9 @@ static void ConvertAbilityInfo(napi_env env, napi_value objAbilityInfo, const Ab NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, DEFAULT_INT32, &nLabelId)); NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, objAbilityInfo, "labelId", nLabelId)); - napi_value nFormEntities; - NAPI_CALL_RETURN_VOID(env, napi_create_array(env, &nFormEntities)); - for (size_t idx = 0; idx < abilityInfo.formEntity.size(); idx++) { - napi_value nFormEntity; - NAPI_CALL_RETURN_VOID( - env, napi_create_string_utf8(env, abilityInfo.formEntity[idx].c_str(), NAPI_AUTO_LENGTH, &nFormEntity)); - NAPI_CALL_RETURN_VOID(env, napi_set_element(env, nFormEntities, idx, nFormEntity)); - } - NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, objAbilityInfo, "formEntity", nFormEntities)); + napi_value nFormEntity; + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, abilityInfo.formEntity, &nFormEntity)); + NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, objAbilityInfo, "formEntity", nFormEntity)); napi_value nMinFormHeight; NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, abilityInfo.minFormHeight, &nMinFormHeight)); @@ -700,13 +700,13 @@ static std::string GetStringFromNAPI(napi_env env, napi_value value) std::string result; size_t size = 0; - if (napi_get_value_string_utf8(env, value, nullptr, 0, &size) != napi_ok) { + if (napi_get_value_string_utf8(env, value, nullptr, NAPI_RETURN_ZERO, &size) != napi_ok) { HILOG_ERROR("can not get string size"); return ""; } - result.reserve(size + 1); + result.reserve(size + NAPI_RETURN_ONE); result.resize(size); - if (napi_get_value_string_utf8(env, value, result.data(), (size + 1), &size) != napi_ok) { + if (napi_get_value_string_utf8(env, value, result.data(), (size + NAPI_RETURN_ONE), &size) != napi_ok) { HILOG_ERROR("can not get string value"); return ""; } @@ -726,7 +726,7 @@ static napi_value ParseInt(napi_env env, int ¶m, napi_value args) param = value; // create result code napi_value result; - status = napi_create_int32(env, 1, &result); + status = napi_create_int32(env, NAPI_RETURN_ONE, &result); NAPI_ASSERT(env, status == napi_ok, "napi_create_int32 error!"); return result; } @@ -788,8 +788,8 @@ napi_value GetApplicationInfos(napi_env env, napi_callback_info info) HILOG_INFO("ARGCSIZE is =%{public}zu.", argc); int flag; int userId; - ParseInt(env, flag, argv[0]); - ParseInt(env, userId, argv[1]); + ParseInt(env, flag, argv[PARAM0]); + ParseInt(env, userId, argv[PARAM1]); ApplicationFlag applicationFlag = ApplicationFlag::GET_APPLICATION_INFO_WITH_PERMS; if (flag == static_cast(ApplicationFlag::GET_BASIC_APPLICATION_INFO)) { applicationFlag = ApplicationFlag::GET_BASIC_APPLICATION_INFO; @@ -804,7 +804,7 @@ napi_value GetApplicationInfos(napi_env env, napi_callback_info info) napi_valuetype valuetype = napi_undefined; napi_typeof(env, argv[ARGS_SIZE_TWO], &valuetype); NAPI_ASSERT(env, valuetype == napi_function, "Wrong argument type. Function expected."); - NAPI_CALL(env, napi_create_reference(env, argv[ARGS_SIZE_TWO], 1, &asyncCallbackInfo->callback)); + NAPI_CALL(env, napi_create_reference(env, argv[ARGS_SIZE_TWO], NAPI_RETURN_ONE, &asyncCallbackInfo->callback)); napi_create_async_work( env, @@ -838,7 +838,7 @@ napi_value GetApplicationInfos(napi_env env, napi_callback_info info) &asyncCallbackInfo->asyncWork); NAPI_CALL(env, napi_queue_async_work(env, asyncCallbackInfo->asyncWork)); napi_value result; - NAPI_CALL(env, napi_create_int32(env, 1, &result)); + NAPI_CALL(env, napi_create_int32(env, NAPI_RETURN_ONE, &result)); return result; } else { HILOG_INFO("GetApplicationInfos promise."); @@ -934,7 +934,7 @@ static napi_value ParseWant(napi_env env, Want &want, napi_value args) // create result code napi_value result; - status = napi_create_int32(env, 1, &result); + status = napi_create_int32(env, NAPI_RETURN_ONE, &result); NAPI_ASSERT(env, status == napi_ok, "napi_create_int32 error!"); return result; } @@ -971,7 +971,7 @@ static napi_value ParseQueryParameter(napi_env env, QueryParameter &queryParamet HILOG_INFO("ParseQueryParameter userId=%{public}s.", queryParameter.userId.c_str()); // create result code napi_value result; - status = napi_create_int32(env, 1, &result); + status = napi_create_int32(env, NAPI_RETURN_ONE, &result); NAPI_ASSERT(env, status == napi_ok, "napi_create_int32 error!"); return result; } @@ -988,12 +988,12 @@ napi_value QueryAbilityInfo(napi_env env, napi_callback_info info) NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, NULL, NULL)); HILOG_INFO("argc = [%{public}zu]", argc); Want want; - ParseWant(env, want, argv[0]); + ParseWant(env, want, argv[PARAM0]); HILOG_INFO("After ParseWant action=%{public}s.", want.GetAction().c_str()); HILOG_INFO("After ParseWant bundleName=%{public}s.", want.GetElement().GetBundleName().c_str()); HILOG_INFO("After ParseWant abilityName=%{public}s.", want.GetElement().GetAbilityName().c_str()); QueryParameter queryParameter; - ParseQueryParameter(env, queryParameter, argv[1]); + ParseQueryParameter(env, queryParameter, argv[PARAM1]); AsyncAbilityInfoCallbackInfo *asyncCallbackInfo = new AsyncAbilityInfoCallbackInfo{.env = env, .asyncWork = nullptr, .deferred = nullptr, .want = want}; @@ -1002,7 +1002,7 @@ napi_value QueryAbilityInfo(napi_env env, napi_callback_info info) napi_valuetype valuetype = napi_undefined; napi_typeof(env, argv[ARGS_SIZE_TWO], &valuetype); NAPI_ASSERT(env, valuetype == napi_function, "Wrong argument type. Function expected."); - NAPI_CALL(env, napi_create_reference(env, argv[ARGS_SIZE_TWO], 1, &asyncCallbackInfo->callback)); + NAPI_CALL(env, napi_create_reference(env, argv[ARGS_SIZE_TWO], NAPI_RETURN_ONE, &asyncCallbackInfo->callback)); napi_value resourceName; napi_create_string_latin1(env, "QueryAbilityInfo", NAPI_AUTO_LENGTH, &resourceName); @@ -1039,7 +1039,7 @@ napi_value QueryAbilityInfo(napi_env env, napi_callback_info info) NAPI_CALL(env, napi_queue_async_work(env, asyncCallbackInfo->asyncWork)); napi_value result; - NAPI_CALL(env, napi_create_int32(env, 1, &result)); + NAPI_CALL(env, napi_create_int32(env, NAPI_RETURN_ONE, &result)); return result; } else { HILOG_INFO("QueryAbilityInfo promise."); @@ -1096,7 +1096,7 @@ static napi_value ParseString(napi_env env, std::string ¶m, napi_value args) HILOG_INFO("param=%{public}s.", param.c_str()); // create result code napi_value result; - status = napi_create_int32(env, 1, &result); + status = napi_create_int32(env, NAPI_RETURN_ONE, &result); NAPI_ASSERT(env, status == napi_ok, "napi_create_int32 error!"); return result; } @@ -1113,9 +1113,9 @@ napi_value GetApplicationInfo(napi_env env, napi_callback_info info) int flag; int userId; std::string bundleName; - ParseString(env, bundleName, argv[0]); - ParseInt(env, flag, argv[1]); - ParseInt(env, userId, argv[2]); + ParseString(env, bundleName, argv[PARAM0]); + ParseInt(env, flag, argv[PARAM1]); + ParseInt(env, userId, argv[PARAM2]); ApplicationFlag applicationFlag = ApplicationFlag::GET_APPLICATION_INFO_WITH_PERMS; if (flag == static_cast(ApplicationFlag::GET_BASIC_APPLICATION_INFO)) { applicationFlag = ApplicationFlag::GET_BASIC_APPLICATION_INFO; @@ -1132,7 +1132,7 @@ napi_value GetApplicationInfo(napi_env env, napi_callback_info info) napi_valuetype valuetype = napi_undefined; napi_typeof(env, argv[ARGS_SIZE_THREE], &valuetype); NAPI_ASSERT(env, valuetype == napi_function, "Wrong argument type. Function expected."); - NAPI_CALL(env, napi_create_reference(env, argv[ARGS_SIZE_THREE], 1, &asyncCallbackInfo->callback)); + NAPI_CALL(env, napi_create_reference(env, argv[ARGS_SIZE_THREE], NAPI_RETURN_ONE, &asyncCallbackInfo->callback)); napi_value resourceName; napi_create_string_latin1(env, "NAPI_GetApplicationInfoCallBack", NAPI_AUTO_LENGTH, &resourceName); @@ -1176,7 +1176,7 @@ napi_value GetApplicationInfo(napi_env env, napi_callback_info info) NAPI_CALL(env, napi_queue_async_work(env, asyncCallbackInfo->asyncWork)); napi_value result; - NAPI_CALL(env, napi_create_int32(env, 1, &result)); + NAPI_CALL(env, napi_create_int32(env, NAPI_RETURN_ONE, &result)); return result; } else { HILOG_INFO("GetApplicationInfo promise."); @@ -1265,7 +1265,7 @@ napi_value GetBundleInfos(napi_env env, napi_callback_info info) void *data = nullptr; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisArg, &data)); int flag; - ParseInt(env, flag, argv[0]); + ParseInt(env, flag, argv[PARAM0]); BundleFlag bundleFlag = BundleFlag::GET_BUNDLE_WITH_ABILITIES; if (flag == static_cast(BundleFlag::GET_BUNDLE_DEFAULT)) { bundleFlag = BundleFlag::GET_BUNDLE_DEFAULT; @@ -1279,7 +1279,7 @@ napi_value GetBundleInfos(napi_env env, napi_callback_info info) napi_valuetype valuetype = napi_undefined; napi_typeof(env, argv[ARGS_SIZE_ONE], &valuetype); NAPI_ASSERT(env, valuetype == napi_function, "Wrong argument type. Function expected."); - NAPI_CALL(env, napi_create_reference(env, argv[ARGS_SIZE_ONE], 1, &asyncCallbackInfo->callback)); + NAPI_CALL(env, napi_create_reference(env, argv[ARGS_SIZE_ONE], NAPI_RETURN_ONE, &asyncCallbackInfo->callback)); napi_create_async_work( env, @@ -1313,7 +1313,7 @@ napi_value GetBundleInfos(napi_env env, napi_callback_info info) &asyncCallbackInfo->asyncWork); NAPI_CALL(env, napi_queue_async_work(env, asyncCallbackInfo->asyncWork)); napi_value result; - NAPI_CALL(env, napi_create_int32(env, 1, &result)); + NAPI_CALL(env, napi_create_int32(env, NAPI_RETURN_ONE, &result)); return result; } else { HILOG_INFO("BundleMgr::GetBundleInfos promise."); @@ -1374,8 +1374,8 @@ napi_value GetBundleInfo(napi_env env, napi_callback_info info) HILOG_INFO("argc = [%{public}zu]", argc); std::string bundleName; int flag; - ParseString(env, bundleName, argv[0]); - ParseInt(env, flag, argv[1]); + ParseString(env, bundleName, argv[PARAM0]); + ParseInt(env, flag, argv[PARAM1]); BundleFlag bundleFlag = BundleFlag::GET_BUNDLE_WITH_ABILITIES; if (flag == static_cast(BundleFlag::GET_BUNDLE_DEFAULT)) { bundleFlag = BundleFlag::GET_BUNDLE_DEFAULT; @@ -1388,7 +1388,7 @@ napi_value GetBundleInfo(napi_env env, napi_callback_info info) napi_valuetype valuetype = napi_undefined; napi_typeof(env, argv[ARGS_SIZE_TWO], &valuetype); NAPI_ASSERT(env, valuetype == napi_function, "Wrong argument type. Function expected."); - NAPI_CALL(env, napi_create_reference(env, argv[ARGS_SIZE_TWO], 1, &asyncCallbackInfo->callback)); + NAPI_CALL(env, napi_create_reference(env, argv[ARGS_SIZE_TWO], NAPI_RETURN_ONE, &asyncCallbackInfo->callback)); napi_value resourceName; napi_create_string_latin1(env, "NAPI_InnerGetBundleInfo", NAPI_AUTO_LENGTH, &resourceName); @@ -1425,7 +1425,7 @@ napi_value GetBundleInfo(napi_env env, napi_callback_info info) NAPI_CALL(env, napi_queue_async_work(env, asyncCallbackInfo->asyncWork)); napi_value result; - NAPI_CALL(env, napi_create_int32(env, 1, &result)); + NAPI_CALL(env, napi_create_int32(env, NAPI_RETURN_ONE, &result)); return result; } else { HILOG_INFO("GetBundleinfo promise."); @@ -1488,8 +1488,8 @@ napi_value GetBundleArchiveInfo(napi_env env, napi_callback_info info) HILOG_INFO("argc = [%{public}zu]", argc); std::string hapFilePath; int flag; - ParseString(env, hapFilePath, argv[0]); - ParseInt(env, flag, argv[1]); + ParseString(env, hapFilePath, argv[PARAM0]); + ParseInt(env, flag, argv[PARAM1]); BundleFlag bundleFlag = BundleFlag::GET_BUNDLE_WITH_ABILITIES; if (flag == static_cast(BundleFlag::GET_BUNDLE_DEFAULT)) { bundleFlag = BundleFlag::GET_BUNDLE_DEFAULT; @@ -1502,7 +1502,7 @@ napi_value GetBundleArchiveInfo(napi_env env, napi_callback_info info) napi_valuetype valuetype = napi_undefined; napi_typeof(env, argv[ARGS_SIZE_TWO], &valuetype); NAPI_ASSERT(env, valuetype == napi_function, "Wrong argument type. Function expected."); - NAPI_CALL(env, napi_create_reference(env, argv[ARGS_SIZE_TWO], 1, &asyncCallbackInfo->callback)); + NAPI_CALL(env, napi_create_reference(env, argv[ARGS_SIZE_TWO], NAPI_RETURN_ONE, &asyncCallbackInfo->callback)); napi_value resourceName; napi_create_string_latin1(env, "NAPI_GetBundleArchiveInfo", NAPI_AUTO_LENGTH, &resourceName); @@ -1538,7 +1538,7 @@ napi_value GetBundleArchiveInfo(napi_env env, napi_callback_info info) &asyncCallbackInfo->asyncWork); NAPI_CALL(env, napi_queue_async_work(env, asyncCallbackInfo->asyncWork)); napi_value result; - NAPI_CALL(env, napi_create_int32(env, 1, &result)); + NAPI_CALL(env, napi_create_int32(env, NAPI_RETURN_ONE, &result)); return result; } else { HILOG_INFO("GetBundleArchiveInfo promise."); @@ -1659,7 +1659,7 @@ napi_value GetPermissionDef(napi_env env, napi_callback_info info) NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, NULL, NULL)); HILOG_INFO("argc = [%{public}zu]", argc); std::string permissionName; - ParseString(env, permissionName, argv[0]); + ParseString(env, permissionName, argv[PARAM0]); AsyncPermissionDefCallbackInfo *asyncCallbackInfo = new AsyncPermissionDefCallbackInfo{ .env = env, .asyncWork = nullptr, .deferred = nullptr, .permissionName = permissionName}; @@ -1668,7 +1668,7 @@ napi_value GetPermissionDef(napi_env env, napi_callback_info info) napi_valuetype valuetype = napi_undefined; napi_typeof(env, argv[ARGS_SIZE_ONE], &valuetype); NAPI_ASSERT(env, valuetype == napi_function, "Wrong argument type. Function expected."); - NAPI_CALL(env, napi_create_reference(env, argv[ARGS_SIZE_ONE], 1, &asyncCallbackInfo->callback)); + NAPI_CALL(env, napi_create_reference(env, argv[ARGS_SIZE_ONE], NAPI_RETURN_ONE, &asyncCallbackInfo->callback)); napi_value resourceName; napi_create_string_latin1(env, "GetPermissionDef", NAPI_AUTO_LENGTH, &resourceName); @@ -1704,7 +1704,7 @@ napi_value GetPermissionDef(napi_env env, napi_callback_info info) &asyncCallbackInfo->asyncWork); NAPI_CALL(env, napi_queue_async_work(env, asyncCallbackInfo->asyncWork)); napi_value result; - NAPI_CALL(env, napi_create_int32(env, 1, &result)); + NAPI_CALL(env, napi_create_int32(env, NAPI_RETURN_ONE, &result)); return result; } else { napi_deferred deferred; @@ -1787,9 +1787,9 @@ napi_value GetBundleInstaller(napi_env env, napi_callback_info info) if (argc > (ARGS_SIZE_ONE - CALLBACK_SIZE)) { HILOG_INFO("GetBundleInstaller asyncCallback."); napi_valuetype valuetype = napi_undefined; - NAPI_CALL(env, napi_typeof(env, argv[0], &valuetype)); + NAPI_CALL(env, napi_typeof(env, argv[PARAM0], &valuetype)); NAPI_ASSERT(env, valuetype == napi_function, "Wrong argument type. Function expected."); - napi_create_reference(env, argv[0], 1, &asyncCallbackInfo->callback); + napi_create_reference(env, argv[PARAM0], NAPI_RETURN_ONE, &asyncCallbackInfo->callback); napi_value resourceName; napi_create_string_latin1(env, "GetBundleInstaller", NAPI_AUTO_LENGTH, &resourceName); @@ -1819,7 +1819,7 @@ napi_value GetBundleInstaller(napi_env env, napi_callback_info info) &asyncCallbackInfo->asyncWork); NAPI_CALL(env, napi_queue_async_work(env, asyncCallbackInfo->asyncWork)); napi_value result; - NAPI_CALL(env, napi_create_int32(env, 1, &result)); + NAPI_CALL(env, napi_create_int32(env, NAPI_RETURN_ONE, &result)); return result; } else { napi_deferred deferred; @@ -1885,7 +1885,7 @@ static napi_value ParseInstallParam(napi_env env, InstallParam &installParam, na HILOG_INFO("ParseInstallParam isKeepData=%{public}d.", installParam.isKeepData); // create result code napi_value result; - status = napi_create_int32(env, 1, &result); + status = napi_create_int32(env, NAPI_RETURN_ONE, &result); NAPI_ASSERT(env, status == napi_ok, "napi_create_int32 error!"); return result; } @@ -1913,7 +1913,7 @@ static napi_value ParseStringArray(napi_env env, std::vector &hapFi // create result code napi_value result; napi_status status; - status = napi_create_int32(env, 1, &result); + status = napi_create_int32(env, NAPI_RETURN_ONE, &result); NAPI_ASSERT(env, status == napi_ok, "napi_create_int32 error!"); return result; } @@ -2013,9 +2013,9 @@ napi_value Install(napi_env env, napi_callback_info info) NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, NULL, NULL)); HILOG_INFO("argc = [%{public}zu]", argc); std::vector bundleFilePaths; - ParseStringArray(env, bundleFilePaths, argv[0]); + ParseStringArray(env, bundleFilePaths, argv[PARAM0]); InstallParam installParam; - ParseInstallParam(env, installParam, argv[1]); + ParseInstallParam(env, installParam, argv[PARAM1]); AsyncInstallCallbackInfo *asyncCallbackInfo = new AsyncInstallCallbackInfo{ .env = env, .asyncWork = nullptr, @@ -2029,7 +2029,7 @@ napi_value Install(napi_env env, napi_callback_info info) napi_valuetype valuetype = napi_undefined; NAPI_CALL(env, napi_typeof(env, argv[ARGS_SIZE_TWO], &valuetype)); NAPI_ASSERT(env, valuetype == napi_function, "Wrong argument type. Function expected."); - napi_create_reference(env, argv[ARGS_SIZE_TWO], 1, &asyncCallbackInfo->callback); + napi_create_reference(env, argv[ARGS_SIZE_TWO], NAPI_RETURN_ONE, &asyncCallbackInfo->callback); napi_value resourceName; napi_create_string_latin1(env, "Install", NAPI_AUTO_LENGTH, &resourceName); @@ -2075,7 +2075,7 @@ napi_value Install(napi_env env, napi_callback_info info) &asyncCallbackInfo->asyncWork); NAPI_CALL(env, napi_queue_async_work(env, asyncCallbackInfo->asyncWork)); napi_value result; - NAPI_CALL(env, napi_create_int32(env, 1, &result)); + NAPI_CALL(env, napi_create_int32(env, NAPI_RETURN_ONE, &result)); return result; } else { napi_deferred deferred; @@ -2156,9 +2156,9 @@ napi_value Uninstall(napi_env env, napi_callback_info info) NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, NULL, NULL)); HILOG_INFO("argc = [%{public}zu]", argc); std::string bundleName; - ParseString(env, bundleName, argv[0]); + ParseString(env, bundleName, argv[PARAM0]); InstallParam installParam; - ParseInstallParam(env, installParam, argv[1]); + ParseInstallParam(env, installParam, argv[PARAM1]); AsyncInstallCallbackInfo *asyncCallbackInfo = new AsyncInstallCallbackInfo{ .env = env, .asyncWork = nullptr, @@ -2172,7 +2172,7 @@ napi_value Uninstall(napi_env env, napi_callback_info info) napi_valuetype valuetype = napi_undefined; NAPI_CALL(env, napi_typeof(env, argv[ARGS_SIZE_TWO], &valuetype)); NAPI_ASSERT(env, valuetype == napi_function, "Wrong argument type. Function expected."); - napi_create_reference(env, argv[ARGS_SIZE_TWO], 1, &asyncCallbackInfo->callback); + napi_create_reference(env, argv[ARGS_SIZE_TWO], NAPI_RETURN_ONE, &asyncCallbackInfo->callback); napi_value resourceName; napi_create_string_latin1(env, "Uninstall", NAPI_AUTO_LENGTH, &resourceName); @@ -2217,7 +2217,7 @@ napi_value Uninstall(napi_env env, napi_callback_info info) NAPI_CALL(env, napi_queue_async_work(env, asyncCallbackInfo->asyncWork)); napi_value result; - NAPI_CALL(env, napi_create_int32(env, 1, &result)); + NAPI_CALL(env, napi_create_int32(env, NAPI_RETURN_ONE, &result)); return result; } else { @@ -2315,9 +2315,9 @@ napi_value GetAllFormsInfo(napi_env env, napi_callback_info info) napi_value resourceName; NAPI_CALL(env, napi_create_string_latin1(env, "GetAllFormsInfo", NAPI_AUTO_LENGTH, &resourceName)); napi_valuetype valuetype = napi_undefined; - napi_typeof(env, argv[0], &valuetype); + napi_typeof(env, argv[PARAM0], &valuetype); NAPI_ASSERT(env, valuetype == napi_function, "Wrong argument type. Function expected."); - NAPI_CALL(env, napi_create_reference(env, argv[0], 1, &asyncCallbackInfo->callback)); + NAPI_CALL(env, napi_create_reference(env, argv[PARAM0], NAPI_RETURN_ONE, &asyncCallbackInfo->callback)); napi_create_async_work( env, @@ -2350,7 +2350,7 @@ napi_value GetAllFormsInfo(napi_env env, napi_callback_info info) &asyncCallbackInfo->asyncWork); NAPI_CALL(env, napi_queue_async_work(env, asyncCallbackInfo->asyncWork)); napi_value result; - NAPI_CALL(env, napi_create_int32(env, 1, &result)); + NAPI_CALL(env, napi_create_int32(env, NAPI_RETURN_ONE, &result)); return result; } else { HILOG_INFO("GetFormInfos promise."); @@ -2409,8 +2409,8 @@ napi_value GetFormsInfoByModule(napi_env env, napi_callback_info info) HILOG_INFO("ARGCSIZE is =%{public}zu.", argc); std::string bundleName; std::string moduleName; - ParseString(env, bundleName, argv[0]); - ParseString(env, moduleName, argv[1]); + ParseString(env, bundleName, argv[PARAM0]); + ParseString(env, moduleName, argv[PARAM1]); AsyncFormInfosByModuleCallbackInfo *asyncCallbackInfo = new AsyncFormInfosByModuleCallbackInfo{ .env = env, .asyncWork = nullptr, .deferred = nullptr, .bundleName = bundleName, .moduleName = moduleName}; @@ -2421,7 +2421,7 @@ napi_value GetFormsInfoByModule(napi_env env, napi_callback_info info) napi_valuetype valuetype = napi_undefined; napi_typeof(env, argv[ARGS_SIZE_TWO], &valuetype); NAPI_ASSERT(env, valuetype == napi_function, "Wrong argument type. Function expected."); - NAPI_CALL(env, napi_create_reference(env, argv[ARGS_SIZE_TWO], 1, &asyncCallbackInfo->callback)); + NAPI_CALL(env, napi_create_reference(env, argv[ARGS_SIZE_TWO], NAPI_RETURN_ONE, &asyncCallbackInfo->callback)); napi_create_async_work( env, @@ -2455,7 +2455,7 @@ napi_value GetFormsInfoByModule(napi_env env, napi_callback_info info) &asyncCallbackInfo->asyncWork); NAPI_CALL(env, napi_queue_async_work(env, asyncCallbackInfo->asyncWork)); napi_value result; - NAPI_CALL(env, napi_create_int32(env, 1, &result)); + NAPI_CALL(env, napi_create_int32(env, NAPI_RETURN_ONE, &result)); return result; } else { HILOG_INFO("GetFormsInfoByModule promise."); @@ -2514,7 +2514,7 @@ napi_value GetFormsInfoByApp(napi_env env, napi_callback_info info) NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisArg, &data)); HILOG_INFO("ARGCSIZE is =%{public}zu.", argc); std::string bundleName; - ParseString(env, bundleName, argv[0]); + ParseString(env, bundleName, argv[PARAM0]); AsyncFormInfosByAppCallbackInfo *asyncCallbackInfo = new AsyncFormInfosByAppCallbackInfo{ .env = env, .asyncWork = nullptr, .deferred = nullptr, .bundleName = bundleName}; @@ -2525,7 +2525,7 @@ napi_value GetFormsInfoByApp(napi_env env, napi_callback_info info) napi_valuetype valuetype = napi_undefined; napi_typeof(env, argv[ARGS_SIZE_ONE], &valuetype); NAPI_ASSERT(env, valuetype == napi_function, "Wrong argument type. Function expected."); - NAPI_CALL(env, napi_create_reference(env, argv[ARGS_SIZE_ONE], 1, &asyncCallbackInfo->callback)); + NAPI_CALL(env, napi_create_reference(env, argv[ARGS_SIZE_ONE], NAPI_RETURN_ONE, &asyncCallbackInfo->callback)); napi_create_async_work( env, @@ -2559,7 +2559,7 @@ napi_value GetFormsInfoByApp(napi_env env, napi_callback_info info) &asyncCallbackInfo->asyncWork); NAPI_CALL(env, napi_queue_async_work(env, asyncCallbackInfo->asyncWork)); napi_value result; - NAPI_CALL(env, napi_create_int32(env, 1, &result)); + NAPI_CALL(env, napi_create_int32(env, NAPI_RETURN_ONE, &result)); return result; } else { HILOG_INFO("GetFormsInfoByApp promise."); @@ -2635,7 +2635,7 @@ napi_value GetShortcutInfos(napi_env env, napi_callback_info info) NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisArg, &data)); HILOG_INFO("ARGCSIZE is =%{public}zu.", argc); std::string bundleName; - ParseString(env, bundleName, argv[0]); + ParseString(env, bundleName, argv[PARAM0]); AsyncShortcutInfosCallbackInfo *asyncCallbackInfo = new AsyncShortcutInfosCallbackInfo{ .env = env, .asyncWork = nullptr, .deferred = nullptr, .bundleName = bundleName}; if (argc > (ARGS_SIZE_TWO - CALLBACK_SIZE)) { @@ -2645,7 +2645,7 @@ napi_value GetShortcutInfos(napi_env env, napi_callback_info info) napi_valuetype valuetype = napi_undefined; napi_typeof(env, argv[ARGS_SIZE_ONE], &valuetype); NAPI_ASSERT(env, valuetype == napi_function, "Wrong argument type. Function expected."); - NAPI_CALL(env, napi_create_reference(env, argv[ARGS_SIZE_ONE], 1, &asyncCallbackInfo->callback)); + NAPI_CALL(env, napi_create_reference(env, argv[ARGS_SIZE_ONE], NAPI_RETURN_ONE, &asyncCallbackInfo->callback)); napi_create_async_work( env, @@ -2679,7 +2679,7 @@ napi_value GetShortcutInfos(napi_env env, napi_callback_info info) &asyncCallbackInfo->asyncWork); NAPI_CALL(env, napi_queue_async_work(env, asyncCallbackInfo->asyncWork)); napi_value result; - NAPI_CALL(env, napi_create_int32(env, 1, &result)); + NAPI_CALL(env, napi_create_int32(env, NAPI_RETURN_ONE, &result)); return result; } else { HILOG_INFO("GetShortcutInfos promise."); @@ -2734,10 +2734,10 @@ void CreateAbilityTypeObject(napi_env env, napi_value value) void CreateAbilitySubTypeObject(napi_env env, napi_value value) { napi_value nUnspecified; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, 0, &nUnspecified)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_ZERO, &nUnspecified)); NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, value, "UNSPECIFIED", nUnspecified)); napi_value nCa; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, 1, &nCa)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_ONE, &nCa)); NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, value, "CA", nCa)); } @@ -2776,15 +2776,15 @@ void CreateLaunchModeObject(napi_env env, napi_value value) void CreateModuleUpdateFlagObject(napi_env env, napi_value value) { napi_value nFlagModuleUpgradeCheck; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, 0, &nFlagModuleUpgradeCheck)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_ZERO, &nFlagModuleUpgradeCheck)); NAPI_CALL_RETURN_VOID( env, napi_set_named_property(env, value, "FLAG_MODULE_UPGRADE_CHECK", nFlagModuleUpgradeCheck)); napi_value nFlagModuleUpgradeInstall; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, 1, &nFlagModuleUpgradeInstall)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_ONE, &nFlagModuleUpgradeInstall)); NAPI_CALL_RETURN_VOID( env, napi_set_named_property(env, value, "FLAG_MODULE_UPGRADE_INSTALL", nFlagModuleUpgradeInstall)); napi_value nFlagModuleUpgradeinstallWithConfigWindows; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, 2, &nFlagModuleUpgradeinstallWithConfigWindows)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_TWO, &nFlagModuleUpgradeinstallWithConfigWindows)); NAPI_CALL_RETURN_VOID(env, napi_set_named_property( env, value, "FLAG_MODULE_UPGRADE_INSTALL_WITH_CONFIG_WINDOWS", nFlagModuleUpgradeinstallWithConfigWindows)); @@ -2793,51 +2793,51 @@ void CreateModuleUpdateFlagObject(napi_env env, napi_value value) void CreateFormTypeObject(napi_env env, napi_value value) { napi_value nJava; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, 0, &nJava)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_ZERO, &nJava)); NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, value, "JAVA", nJava)); napi_value nJs; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, 1, &nJs)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_ONE, &nJs)); NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, value, "JS", nJs)); } void CreateColorModeObject(napi_env env, napi_value value) { napi_value nAutoMode; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, -1, &nAutoMode)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_FAILED, &nAutoMode)); NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, value, "AUTO_MODE", nAutoMode)); napi_value nDarkMode; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, 0, &nDarkMode)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_ZERO, &nDarkMode)); NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, value, "DARK_MODE", nDarkMode)); napi_value nLightMode; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, 1, &nLightMode)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_ONE, &nLightMode)); NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, value, "LIGHT_MODE", nLightMode)); } void CreateGrantStatusObject(napi_env env, napi_value value) { napi_value nPermissionDenied; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, -1, &nPermissionDenied)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_FAILED, &nPermissionDenied)); NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, value, "PERMISSION_DENIED", nPermissionDenied)); napi_value nPermissionGranted; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, 0, &nPermissionGranted)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_ZERO, &nPermissionGranted)); NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, value, "PERMISSION_GRANTED", nPermissionGranted)); } void CreateModuleRemoveFlagObject(napi_env env, napi_value value) { napi_value nFlagModuleNotUsedByForm; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, 0, &nFlagModuleNotUsedByForm)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_ZERO, &nFlagModuleNotUsedByForm)); NAPI_CALL_RETURN_VOID( env, napi_set_named_property(env, value, "FLAG_MODULE_NOT_USED_BY_FORM", nFlagModuleNotUsedByForm)); napi_value nFlagModuleUsedByForm; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, 1, &nFlagModuleUsedByForm)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_ONE, &nFlagModuleUsedByForm)); NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, value, "FLAG_MODULE_USED_BY_FORM", nFlagModuleUsedByForm)); napi_value nFlagModuleNotUsedByShortcut; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, 2, &nFlagModuleNotUsedByShortcut)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_TWO, &nFlagModuleNotUsedByShortcut)); NAPI_CALL_RETURN_VOID( env, napi_set_named_property(env, value, "FLAG_MODULE_NOT_USED_BY_SHORTCUT", nFlagModuleNotUsedByShortcut)); napi_value nFlagModuleUsedByShortcut; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, 3, &nFlagModuleUsedByShortcut)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_THREE, &nFlagModuleUsedByShortcut)); NAPI_CALL_RETURN_VOID( env, napi_set_named_property(env, value, "FLAG_MODULE_USED_BY_SHORTCUT", nFlagModuleUsedByShortcut)); } @@ -2845,13 +2845,13 @@ void CreateModuleRemoveFlagObject(napi_env env, napi_value value) void CreateSignatureCompareResultObject(napi_env env, napi_value value) { napi_value nSignatureMatched; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, 0, &nSignatureMatched)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_ZERO, &nSignatureMatched)); NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, value, "SIGNATURE_MATCHED", nSignatureMatched)); napi_value nSignatureNotMatched; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, 1, &nSignatureNotMatched)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_ONE, &nSignatureNotMatched)); NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, value, "SIGNATURE_NOT_MATCHED", nSignatureNotMatched)); napi_value nSignatureUnknownBundle; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, 2, &nSignatureUnknownBundle)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_TWO, &nSignatureUnknownBundle)); NAPI_CALL_RETURN_VOID( env, napi_set_named_property(env, value, "SIGNATURE_UNKNOWN_BUNDLE", nSignatureUnknownBundle)); } @@ -2859,15 +2859,15 @@ void CreateSignatureCompareResultObject(napi_env env, napi_value value) void CreateShortcutExistenceObject(napi_env env, napi_value value) { napi_value nShortcutExistenceExists; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, 0, &nShortcutExistenceExists)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_ZERO, &nShortcutExistenceExists)); NAPI_CALL_RETURN_VOID( env, napi_set_named_property(env, value, "SHORTCUT_EXISTENCE_EXISTS", nShortcutExistenceExists)); napi_value nShortcutExistenceNotExists; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, 1, &nShortcutExistenceNotExists)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_ONE, &nShortcutExistenceNotExists)); NAPI_CALL_RETURN_VOID( env, napi_set_named_property(env, value, "SHORTCUT_EXISTENCE_NOT_EXISTS", nShortcutExistenceNotExists)); napi_value nShortcutExistenceUnknow; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, 2, &nShortcutExistenceUnknow)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_TWO, &nShortcutExistenceUnknow)); NAPI_CALL_RETURN_VOID( env, napi_set_named_property(env, value, "SHORTCUT_EXISTENCE_UNKNOW", nShortcutExistenceUnknow)); } @@ -2875,7 +2875,7 @@ void CreateShortcutExistenceObject(napi_env env, napi_value value) void CreateQueryShortCutFlagObject(napi_env env, napi_value value) { napi_value nQueryShortCutHome; - NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, 0, &nQueryShortCutHome)); + NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, NAPI_RETURN_ZERO, &nQueryShortCutHome)); NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, value, "QUERY_SHORTCUT_HOME", nQueryShortCutHome)); } diff --git a/services/bundlemgr/include/common_profile.h b/services/bundlemgr/include/common_profile.h index 90f202b510..144b19fe04 100644 --- a/services/bundlemgr/include/common_profile.h +++ b/services/bundlemgr/include/common_profile.h @@ -209,6 +209,14 @@ const std::string BUNDLE_MODULE_PROFILE_KEY_SHORTCUT_INTENTS = "intents"; const std::string BUNDLE_MODULE_PROFILE_KEY_TARGET_CLASS = "targetClass"; const std::string BUNDLE_MODULE_PROFILE_KEY_TARGET_BUNDLE = "targetBundle"; +const uint32_t VALUE_HOME_SCREEN = 1 << 0; +// 000010 represents supporting search box +const uint32_t VALUE_SEARCHBOX = 1 << 1; + +const std::string KEY_HOME_SCREEN = "homeScreen"; +const std::string KEY_SEARCHBOX = "searchbox"; +static std::map formEntityMap; + extern thread_local int32_t parseResult; } // namespace ProfileReader diff --git a/services/bundlemgr/include/inner_bundle_info.h b/services/bundlemgr/include/inner_bundle_info.h index f67d5e15d5..d67c71738e 100644 --- a/services/bundlemgr/include/inner_bundle_info.h +++ b/services/bundlemgr/include/inner_bundle_info.h @@ -875,12 +875,12 @@ public: void SetProvisionId(const std::string &provisionId) { - provisionId_ = provisionId; + baseBundleInfo_.appId = provisionId; } std::string GetProvisionId() const { - return provisionId_; + return baseBundleInfo_.appId; } void SetAppFeature(const std::string &appFeature) @@ -966,7 +966,7 @@ public: */ bool CheckSpecialMetaData(const std::string &metaData) const; /** - * @brief Obtains the FormInfo objects provided by all applications on the device. + * @brief Obtains the FormInfo objects provided by all applications on the device. * @param moduleName Indicates the module name of the application. * @param formInfos List of FormInfo objects if obtained; */ @@ -994,7 +994,6 @@ private: ApplicationInfo baseApplicationInfo_; BundleInfo baseBundleInfo_; // applicationInfo and abilityInfo empty std::string mainAbility_; - std::string provisionId_; std::string appFeature_; bool hasEntry_ = false; // only using for install or update progress, doesn't need to save to database diff --git a/services/bundlemgr/src/base_bundle_installer.cpp b/services/bundlemgr/src/base_bundle_installer.cpp index 61f3a1831a..77e367097b 100755 --- a/services/bundlemgr/src/base_bundle_installer.cpp +++ b/services/bundlemgr/src/base_bundle_installer.cpp @@ -192,7 +192,6 @@ ErrCode BaseBundleInstaller::ProcessBundleInstall( newInfo.SetIsKeepData(installParam.isKeepData); auto provisionInfo = hapVerifyResult.GetProvisionInfo(); newInfo.SetProvisionId(provisionInfo.appId); - newInfo.SetAppFeature(provisionInfo.bundleInfo.appFeature); if (!ModifyInstallDirByHapType(newInfo)) { APP_LOGE("modify bundle install dir failed %{public}d", result); @@ -203,6 +202,8 @@ ErrCode BaseBundleInstaller::ProcessBundleInstall( APP_LOGE("bundle parse failed %{public}d", result); return result; } + newInfo.SetAppFeature(provisionInfo.bundleInfo.appFeature); + UpdateInstallerState(InstallerState::INSTALL_PARSED); bundleName_ = newInfo.GetBundleName(); diff --git a/services/bundlemgr/src/bundle_profile.cpp b/services/bundlemgr/src/bundle_profile.cpp index 27611f3061..b1b62331e6 100644 --- a/services/bundlemgr/src/bundle_profile.cpp +++ b/services/bundlemgr/src/bundle_profile.cpp @@ -1687,6 +1687,22 @@ bool CheckModuleInfosIsValid(ProfileReader::ConfigJson &configJson) return true; } +uint32_t GetFormEntity(const std::vector& formEntity) +{ + if (ProfileReader::formEntityMap.empty()) { + ProfileReader::formEntityMap.insert({ProfileReader::KEY_HOME_SCREEN, ProfileReader::VALUE_HOME_SCREEN}); + ProfileReader::formEntityMap.insert({ProfileReader::KEY_SEARCHBOX, ProfileReader::VALUE_SEARCHBOX}); + } + + uint32_t formEntityInBinary = 0; + for (const auto& item : formEntity) { + if (ProfileReader::formEntityMap.find(item) != ProfileReader::formEntityMap.end()) { + formEntityInBinary |= ProfileReader::formEntityMap[item]; + } + } + return formEntityInBinary; +} + bool ConvertFormInfo(FormInfo &forminfos, const ProfileReader::Forms &form) { forminfos.name = form.name; @@ -1875,7 +1891,7 @@ bool TransformToInfo( abilityInfo.enabled = true; abilityInfo.readPermission = ability.readPermission; abilityInfo.writePermission = ability.writePermission; - abilityInfo.formEntity = ability.form.formEntity; + abilityInfo.formEntity = GetFormEntity(ability.form.formEntity); abilityInfo.minFormHeight = ability.form.minHeight; abilityInfo.defaultFormHeight = ability.form.defaultHeight; abilityInfo.minFormWidth = ability.form.minWidth; diff --git a/services/bundlemgr/src/inner_bundle_info.cpp b/services/bundlemgr/src/inner_bundle_info.cpp index f523b5371d..8d4251b3c3 100644 --- a/services/bundlemgr/src/inner_bundle_info.cpp +++ b/services/bundlemgr/src/inner_bundle_info.cpp @@ -35,7 +35,6 @@ const std::string MAIN_ABILITY = "mainAbility"; const std::string SKILL_INFOS = "skillInfos"; const std::string USER_ID = "userId_"; const std::string IS_KEEP_DATA = "isKeepData"; -const std::string PROVISION_ID = "provisionId"; const std::string APP_FEATURE = "appFeature"; const std::string HAS_ENTRY = "hasEntry"; const std::string MODULE_PACKAGE = "modulePackage"; @@ -166,7 +165,6 @@ void InnerBundleInfo::ToJson(nlohmann::json &jsonObject) const jsonObject[IS_KEEP_DATA] = isKeepData_; jsonObject[USER_ID] = userId_; jsonObject[MAIN_ABILITY] = mainAbility_; - jsonObject[PROVISION_ID] = provisionId_; jsonObject[APP_FEATURE] = appFeature_; jsonObject[HAS_ENTRY] = hasEntry_; jsonObject[MODULE_FORMS] = formInfos_; @@ -633,14 +631,6 @@ int32_t InnerBundleInfo::FromJson(const nlohmann::json &jsonObject) true, ProfileReader::parseResult, ArrayType::NOT_ARRAY); - GetValueIfFindKey(jsonObject, - jsonObjectEnd, - PROVISION_ID, - provisionId_, - JsonType::STRING, - true, - ProfileReader::parseResult, - ArrayType::NOT_ARRAY); GetValueIfFindKey(jsonObject, jsonObjectEnd, APP_FEATURE, @@ -851,7 +841,6 @@ std::string InnerBundleInfo::ToString() const j[USER_ID] = userId_; j[MAIN_ABILITY] = mainAbility_; j[APP_FEATURE] = appFeature_; - j[PROVISION_ID] = provisionId_; j[HAS_ENTRY] = hasEntry_; j[MODULE_FORMS] = formInfos_; j[MODULE_SHORTCUT] = shortcutInfos_; @@ -948,7 +937,7 @@ void InnerBundleInfo::GetFormsInfoByApp(std::vector &formInfos) const void InnerBundleInfo::GetShortcutInfos(std::vector &shortcutInfos) const { for (const auto &shortcut : shortcutInfos_) { - shortcutInfos.emplace_back(shortcut.second); + shortcutInfos.emplace_back(shortcut.second); } } diff --git a/services/bundlemgr/test/unittest/bms_bundle_data_storage_test/bms_bundle_data_storage_database_test.cpp b/services/bundlemgr/test/unittest/bms_bundle_data_storage_test/bms_bundle_data_storage_database_test.cpp index c2a9745cb9..c526bc7237 100644 --- a/services/bundlemgr/test/unittest/bms_bundle_data_storage_test/bms_bundle_data_storage_database_test.cpp +++ b/services/bundlemgr/test/unittest/bms_bundle_data_storage_test/bms_bundle_data_storage_database_test.cpp @@ -142,7 +142,7 @@ protected: }, "baseBundleInfo": { "abilityInfos": [], - "appId": "", + "appId": "BNtg4JBClbl92Rgc3jm/RfcAdrHXaM8F0QOiwVEhnV5ebE5jNIYnAx+weFRT3QTyUjRNdhmc2aAzWyi+5t5CoBM=", "applicationInfo": { "bundleName": "", "cacheDir": "", @@ -238,7 +238,6 @@ protected: "isKeepData": false, "isSupportBackup": false, "mainAbility": "com.ohos.launchercom.ohos.launchercom.ohos.launcher.MainAbility", - "provisionId": "BNtg4JBClbl92Rgc3jm/RfcAdrHXaM8F0QOiwVEhnV5ebE5jNIYnAx+weFRT3QTyUjRNdhmc2aAzWyi+5t5CoBM=", "skillInfos": { "com.ohos.launchercom.ohos.launchercom.ohos.launcher.MainAbility": [ { @@ -287,7 +286,7 @@ protected: "name": "originWidgetName", "value": "com.weather.testWidget" } - ] + ] } ] }, diff --git a/services/bundlemgr/test/unittest/bms_bundle_data_storage_test/bms_bundle_data_storage_test.cpp b/services/bundlemgr/test/unittest/bms_bundle_data_storage_test/bms_bundle_data_storage_test.cpp index 0d62478134..cd8daa5ba9 100755 --- a/services/bundlemgr/test/unittest/bms_bundle_data_storage_test/bms_bundle_data_storage_test.cpp +++ b/services/bundlemgr/test/unittest/bms_bundle_data_storage_test/bms_bundle_data_storage_test.cpp @@ -122,7 +122,7 @@ protected: }, "baseBundleInfo": { "abilityInfos": [], - "appId": "", + "appId": "BNtg4JBClbl92Rgc3jm/RfcAdrHXaM8F0QOiwVEhnV5ebE5jNIYnAx+weFRT3QTyUjRNdhmc2aAzWyi+5t5CoBM=", "applicationInfo": { "bundleName": "", "cacheDir": "", @@ -217,7 +217,6 @@ protected: "isKeepData": false, "isSupportBackup": false, "mainAbility": "com.ohos.launchercom.ohos.launchercom.ohos.launcher.MainAbility", - "provisionId": "BNtg4JBClbl92Rgc3jm/RfcAdrHXaM8F0QOiwVEhnV5ebE5jNIYnAx+weFRT3QTyUjRNdhmc2aAzWyi+5t5CoBM=", "skillInfos": { "com.ohos.launchercom.ohos.launchercom.ohos.launcher.MainAbility": [ { diff --git a/services/bundlemgr/test/unittest/bms_bundle_kit_service_test/BUILD.gn b/services/bundlemgr/test/unittest/bms_bundle_kit_service_test/BUILD.gn index 78b57c41d4..455cd359a6 100644 --- a/services/bundlemgr/test/unittest/bms_bundle_kit_service_test/BUILD.gn +++ b/services/bundlemgr/test/unittest/bms_bundle_kit_service_test/BUILD.gn @@ -25,6 +25,8 @@ ohos_unittest("BmsBundleKitServiceTest") { "${innerkits_path}/appexecfwk_base/src/ability_info.cpp", "${innerkits_path}/appexecfwk_base/src/application_info.cpp", "${innerkits_path}/appexecfwk_base/src/bundle_info.cpp", + "${innerkits_path}/appexecfwk_base/src/compatible_ability_info.cpp", + "${innerkits_path}/appexecfwk_base/src/compatible_application_info.cpp", "${services_path}/bundlemgr/src/bundle_data_mgr.cpp", "${services_path}/bundlemgr/src/bundle_data_storage_database.cpp", "${services_path}/bundlemgr/src/bundle_mgr_host_impl.cpp", diff --git a/services/bundlemgr/test/unittest/bms_bundle_kit_service_test/bms_bundle_kit_service_test.cpp b/services/bundlemgr/test/unittest/bms_bundle_kit_service_test/bms_bundle_kit_service_test.cpp index 7e7a0c352e..f22f17d43a 100755 --- a/services/bundlemgr/test/unittest/bms_bundle_kit_service_test/bms_bundle_kit_service_test.cpp +++ b/services/bundlemgr/test/unittest/bms_bundle_kit_service_test/bms_bundle_kit_service_test.cpp @@ -70,7 +70,7 @@ const std::string TARGET_ABILITY = "MockTargetAbility"; const AbilityType ABILITY_TYPE = AbilityType::PAGE; const DisplayOrientation ORIENTATION = DisplayOrientation::PORTRAIT; const LaunchMode LAUNCH_MODE = LaunchMode::SINGLETON; -const std::vector FORM_ENTITY = {"homeScreen","searchbox"}; +const uint32_t FORM_ENTITY = 1; const int DEFAULT_FORM_HEIGHT = 100; const int DEFAULT_FORM_WIDTH = 200; const std::string META_DATA_DESCRIPTION = "description"; @@ -125,6 +125,7 @@ const std::string SHORTCUT_LABEL = "shortcutLabel"; const std::string SHORTCUT_DISABLE_MESSAGE = "shortcutDisableMessage"; const std::string SHORTCUT_INTENTS_TARGET_BUNDLE = "targetBundle"; const std::string SHORTCUT_INTENTS_TARGET_CLASS = "targetClass"; +const int FORMINFO_DESCRIPTIONID = 123; } // namespace @@ -153,6 +154,10 @@ public: const std::string &bundleName, const uint32_t permissionSize, const ApplicationInfo &appInfo) const; void CheckAbilityInfo( const std::string &bundleName, const std::string &abilityName, const AbilityInfo &appInfo) const; + void CheckCompatibleApplicationInfo( + const std::string &bundleName, const uint32_t permissionSize, const CompatibleApplicationInfo &appInfo) const; + void CheckCompatibleAbilityInfo( + const std::string &bundleName, const std::string &abilityName, const CompatibleAbilityInfo &appInfo) const; void CheckInstalledBundleInfos(const uint32_t abilitySize, const std::vector &bundleInfos) const; void CheckInstalledApplicationInfos(const uint32_t permsSize, const std::vector &appInfos) const; void CheckModuleInfo(const HapModuleInfo &hapModuleInfo) const; @@ -288,7 +293,7 @@ FormInfo BmsBundleKitServiceTest::MockFormInfo( formInfo.abilityName = abilityName; formInfo.moduleName = moduleName; formInfo.package = PACKAGE_NAME; - formInfo.descriptionId = 123; + formInfo.descriptionId = FORMINFO_DESCRIPTIONID; formInfo.formConfigAbility = FORM_PATH; formInfo.description = FORM_DESCRIPTION; formInfo.defaultFlag = false; @@ -359,7 +364,7 @@ AbilityInfo BmsBundleKitServiceTest::MockAbilityInfo( abilityInfo.type = ABILITY_TYPE; abilityInfo.orientation = ORIENTATION; abilityInfo.launchMode = LAUNCH_MODE; - abilityInfo.formEntity = {"homeScreen","searchbox"}, + abilityInfo.formEntity = 1; abilityInfo.defaultFormHeight = DEFAULT_FORM_HEIGHT; abilityInfo.defaultFormWidth = DEFAULT_FORM_WIDTH; abilityInfo.codePath = CODE_PATH; @@ -467,6 +472,35 @@ void BmsBundleKitServiceTest::CheckAbilityInfo( } } +void BmsBundleKitServiceTest::CheckCompatibleAbilityInfo( + const std::string &bundleName, const std::string &abilityName, const CompatibleAbilityInfo &abilityInfo) const +{ + EXPECT_EQ(abilityName, abilityInfo.name); + EXPECT_EQ(bundleName, abilityInfo.bundleName); + EXPECT_EQ(LABEL, abilityInfo.label); + EXPECT_EQ(DESCRIPTION, abilityInfo.description); + EXPECT_EQ(DEVICE_ID, abilityInfo.deviceId); + EXPECT_EQ(ICON_PATH, abilityInfo.iconPath); + EXPECT_EQ(ORIENTATION, abilityInfo.orientation); + EXPECT_EQ(LAUNCH_MODE, abilityInfo.launchMode); + EXPECT_EQ(URI, abilityInfo.uri); + EXPECT_EQ(false, abilityInfo.supportPipMode); + EXPECT_EQ(TARGET_ABILITY, abilityInfo.targetAbility); + EXPECT_EQ(FORM_ENTITY, abilityInfo.formEntity); + EXPECT_EQ(DEFAULT_FORM_HEIGHT, abilityInfo.defaultFormHeight); + EXPECT_EQ(DEFAULT_FORM_WIDTH, abilityInfo.defaultFormWidth); + +} +void BmsBundleKitServiceTest::CheckCompatibleApplicationInfo( + const std::string &bundleName, const uint32_t permissionSize, const CompatibleApplicationInfo &appInfo) const +{ + EXPECT_EQ(bundleName, appInfo.name); + EXPECT_EQ(BUNDLE_LABEL, appInfo.label); + EXPECT_EQ(BUNDLE_DESCRIPTION, appInfo.description); + EXPECT_EQ(PROCESS_TEST, appInfo.process); + EXPECT_EQ(permissionSize, static_cast(appInfo.permissions.size())); +} + void BmsBundleKitServiceTest::CheckModuleInfo(const HapModuleInfo &hapModuleInfo) const { EXPECT_EQ(MODULE_NAME_TEST, hapModuleInfo.name); @@ -600,7 +634,7 @@ void BmsBundleKitServiceTest::CheckFormInfoTest(const std::vector &for EXPECT_EQ(formInfo.defaultFlag, false); EXPECT_EQ(formInfo.type, FormType::JS); EXPECT_EQ(formInfo.colorMode, FormsColorMode::LIGHT_MODE); - EXPECT_EQ(formInfo.descriptionId, 123); + EXPECT_EQ(formInfo.descriptionId, FORMINFO_DESCRIPTIONID); EXPECT_EQ(formInfo.deepLink, FORM_PATH); EXPECT_EQ(formInfo.package, PACKAGE_NAME); EXPECT_EQ(formInfo.formVisibleNotify, true); @@ -630,7 +664,7 @@ void BmsBundleKitServiceTest::CheckFormInfoDemo(const std::vector &for EXPECT_EQ(formInfo.defaultFlag, false); EXPECT_EQ(formInfo.type, FormType::JS); EXPECT_EQ(formInfo.colorMode, FormsColorMode::LIGHT_MODE); - EXPECT_EQ(formInfo.descriptionId, 123); + EXPECT_EQ(formInfo.descriptionId, FORMINFO_DESCRIPTIONID); EXPECT_EQ(formInfo.deepLink, FORM_PATH); EXPECT_EQ(formInfo.package, PACKAGE_NAME); EXPECT_EQ(formInfo.formVisibleNotify, true); @@ -648,7 +682,7 @@ void BmsBundleKitServiceTest::CheckFormInfoDemo(const std::vector &for } } -void BmsBundleKitServiceTest::CheckShortcutInfoTest(std::vector &shortcutInfos) const +void BmsBundleKitServiceTest::CheckShortcutInfoTest(std::vector &shortcutInfos) const { for (const auto &shortcutInfo : shortcutInfos) { EXPECT_EQ(shortcutInfo.id, SHORTCUT_TEST_ID); @@ -667,7 +701,7 @@ void BmsBundleKitServiceTest::CheckShortcutInfoTest(std::vector &s } } -void BmsBundleKitServiceTest::CheckShortcutInfoDemo(std::vector &shortcutInfos) const +void BmsBundleKitServiceTest::CheckShortcutInfoDemo(std::vector &shortcutInfos) const { for (const auto &shortcutInfo : shortcutInfos) { EXPECT_EQ(shortcutInfo.id, SHORTCUT_DEMO_ID); @@ -2753,4 +2787,101 @@ HWTEST_F(BmsBundleKitServiceTest, GetShortcutInfos_0500, Function | SmallTest | std::vector shortcutInfos; GetBundleDataMgr()->GetShortcutInfos(BUNDLE_NAME_TEST, shortcutInfos); EXPECT_TRUE(shortcutInfos.empty()); -} \ No newline at end of file +} + +/** + * @tc.number: Ability_0100 + * @tc.name: test can get the compatibleAbilityInfo by one bundle + * @tc.desc: 1.can get compatibleAbilityInfo + */ +HWTEST_F(BmsBundleKitServiceTest, Ability_0100, Function | SmallTest | Level1) +{ + MockInstallBundle(BUNDLE_NAME_TEST, MODULE_NAME_TEST, ABILITY_NAME_TEST); + Want want; + want.SetElementName(BUNDLE_NAME_TEST, ABILITY_NAME_TEST); + AbilityInfo abilityInfo; + bool testRet = GetBundleDataMgr()->QueryAbilityInfo(want, abilityInfo); + EXPECT_TRUE(testRet); + CompatibleAbilityInfo compatibleAbilityInfo; + abilityInfo.ConvertToCompatiableAbilityInfo(compatibleAbilityInfo); + CheckCompatibleAbilityInfo(BUNDLE_NAME_TEST, ABILITY_NAME_TEST, compatibleAbilityInfo); + MockUninstallBundle(BUNDLE_NAME_TEST); +} + +/** + * @tc.number: Ability_0200 + * @tc.name: test can get the compatibleAbilityInfo by two bundle + * @tc.desc: 1.can get compatibleAbilityInfo + */ +HWTEST_F(BmsBundleKitServiceTest, Ability_0200, Function | SmallTest | Level1) +{ + MockInstallBundle(BUNDLE_NAME_TEST, MODULE_NAME_TEST, ABILITY_NAME_TEST); + MockInstallBundle(BUNDLE_NAME_DEMO, MODULE_NAME_DEMO, ABILITY_NAME_DEMO); + Want want1; + want1.SetElementName(BUNDLE_NAME_TEST, ABILITY_NAME_TEST); + AbilityInfo abilityInfo1; + bool testRet1 = GetBundleDataMgr()->QueryAbilityInfo(want1, abilityInfo1); + EXPECT_TRUE(testRet1); + CompatibleAbilityInfo compatibleAbilityInfo1; + abilityInfo1.ConvertToCompatiableAbilityInfo(compatibleAbilityInfo1); + CheckCompatibleAbilityInfo(BUNDLE_NAME_TEST, ABILITY_NAME_TEST, compatibleAbilityInfo1); + Want want2; + want2.SetElementName(BUNDLE_NAME_DEMO, ABILITY_NAME_DEMO); + AbilityInfo abilityInfo2; + bool testRet2 = GetBundleDataMgr()->QueryAbilityInfo(want2, abilityInfo2); + EXPECT_TRUE(testRet2); + CompatibleAbilityInfo compatibleAbilityInfo2; + abilityInfo2.ConvertToCompatiableAbilityInfo(compatibleAbilityInfo2); + CheckCompatibleAbilityInfo(BUNDLE_NAME_DEMO, ABILITY_NAME_DEMO, compatibleAbilityInfo2); + MockUninstallBundle(BUNDLE_NAME_TEST); + MockUninstallBundle(BUNDLE_NAME_DEMO); +} + +/** + * @tc.number: Application_0100 + * @tc.name: test can get the compatibleApplicationInfo by one bundle + * @tc.desc: 1.can get compatibleApplicationInfo + */ +HWTEST_F(BmsBundleKitServiceTest, Application_0100, Function | SmallTest | Level1) +{ + MockInstallBundle(BUNDLE_NAME_TEST, MODULE_NAME_TEST, ABILITY_NAME_TEST); + + ApplicationInfo testResult; + bool testRet = GetBundleDataMgr()->GetApplicationInfo( + BUNDLE_NAME_TEST, ApplicationFlag::GET_BASIC_APPLICATION_INFO, DEFAULT_USER_ID, testResult); + EXPECT_TRUE(testRet); + CompatibleApplicationInfo appInfo; + testResult.ConvertToCompatibleApplicationInfo(appInfo); + CheckCompatibleApplicationInfo(BUNDLE_NAME_TEST, PERMISSION_SIZE_ZERO, appInfo); + + MockUninstallBundle(BUNDLE_NAME_TEST); +} + +/** + * @tc.number: Application_0100 + * @tc.name: test can get the compatibleApplicationInfo by two bundle + * @tc.desc: 1.can get compatibleApplicationInfo + */ +HWTEST_F(BmsBundleKitServiceTest, Application_0200, Function | SmallTest | Level1) +{ + MockInstallBundle(BUNDLE_NAME_TEST, MODULE_NAME_TEST, ABILITY_NAME_TEST); + MockInstallBundle(BUNDLE_NAME_DEMO, MODULE_NAME_DEMO, ABILITY_NAME_DEMO); + + ApplicationInfo testResult1; + bool testRet1 = GetBundleDataMgr()->GetApplicationInfo( + BUNDLE_NAME_TEST, ApplicationFlag::GET_BASIC_APPLICATION_INFO, DEFAULT_USER_ID, testResult1); + EXPECT_TRUE(testRet1); + CompatibleApplicationInfo appInfo1; + testResult1.ConvertToCompatibleApplicationInfo(appInfo1); + CheckCompatibleApplicationInfo(BUNDLE_NAME_TEST, PERMISSION_SIZE_ZERO, appInfo1); + + ApplicationInfo testResult2; + bool testRet2 = GetBundleDataMgr()->GetApplicationInfo( + BUNDLE_NAME_DEMO, ApplicationFlag::GET_BASIC_APPLICATION_INFO, DEFAULT_USER_ID, testResult2); + EXPECT_TRUE(testRet2); + CompatibleApplicationInfo appInfo2; + testResult2.ConvertToCompatibleApplicationInfo(appInfo2); + CheckCompatibleApplicationInfo(BUNDLE_NAME_DEMO, PERMISSION_SIZE_ZERO, appInfo2); + MockUninstallBundle(BUNDLE_NAME_TEST); + MockUninstallBundle(BUNDLE_NAME_DEMO); +} diff --git a/services/test/moduletest/common/bms/bundle_installer_test/bms_bundle_installer_module_test.cpp b/services/test/moduletest/common/bms/bundle_installer_test/bms_bundle_installer_module_test.cpp index 42541c91d2..e2b949af39 100644 --- a/services/test/moduletest/common/bms/bundle_installer_test/bms_bundle_installer_module_test.cpp +++ b/services/test/moduletest/common/bms/bundle_installer_test/bms_bundle_installer_module_test.cpp @@ -225,7 +225,7 @@ protected: }, "baseBundleInfo": { "abilityInfos": [], - "appId": "", + "appId": "BNtg4JBClbl92Rgc3jm/RfcAdrHXaM8F0QOiwVEhnV5ebE5jNIYnAx+weFRT3QTyUjRNdhmc2aAzWyi+5t5CoBM=", "applicationInfo": { "bundleName": "", "cacheDir": "", @@ -348,7 +348,6 @@ protected: "isKeepData": false, "isSupportBackup": false, "mainAbility": "com.ohos.launchercom.ohos.launchercom.ohos.launcher.MainAbility", - "provisionId": "BNtg4JBClbl92Rgc3jm/RfcAdrHXaM8F0QOiwVEhnV5ebE5jNIYnAx+weFRT3QTyUjRNdhmc2aAzWyi+5t5CoBM=", "skillInfos": { "com.ohos.launchercom.ohos.launcher.recentscom.ohos.launcher.recents.MainAbility": [], "com.ohos.launchercom.ohos.launchercom.ohos.launcher.MainAbility": [ @@ -398,7 +397,7 @@ protected: "name": "originWidgetName", "value": "com.weather.testWidget" } - ] + ] } ] }, -- Gitee