1 /* 2 * Copyright (c) 2023-2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef INTERFACES_KITS_BUNDLE_MANAGER_INCLUDE_BUNDLE_MANAGER_ADDON_H 17 #define INTERFACES_KITS_BUNDLE_MANAGER_INCLUDE_BUNDLE_MANAGER_ADDON_H 18 19 #include "bundle_manager_proxy.h" 20 #include "edm_errors.h" 21 #include "napi/native_api.h" 22 #include "napi/native_common.h" 23 #include "napi/native_node_api.h" 24 #include "napi_edm_common.h" 25 #include "napi_edm_error.h" 26 #include "want.h" 27 28 namespace OHOS { 29 namespace EDM { 30 struct AsyncBundlesCallbackInfo : AsyncCallbackInfo { 31 OHOS::AppExecFwk::ElementName elementName; 32 std::vector<std::string> bundles; 33 int32_t userId = 0; 34 int32_t policyType = 0; 35 }; 36 37 struct AsyncUninstallCallbackInfo : AsyncCallbackInfo { 38 OHOS::AppExecFwk::ElementName elementName; 39 std::string bundleName; 40 int32_t userId = 0; 41 bool isKeepData = false; 42 }; 43 44 #ifdef BUNDLE_FRAMEWORK_EDM_ENABLE 45 struct AsyncInstallCallbackInfo : AsyncCallbackInfo { 46 OHOS::AppExecFwk::ElementName elementName; 47 std::vector<std::string> hapFilePaths; 48 OHOS::AppExecFwk::InstallParam installParam; 49 }; 50 #endif 51 52 class BundleManagerAddon { 53 public: 54 BundleManagerAddon(); 55 ~BundleManagerAddon() = default; 56 57 static napi_value Init(napi_env env, napi_value exports); 58 59 static napi_value AddAllowedInstallBundles(napi_env env, napi_callback_info info); 60 static napi_value RemoveAllowedInstallBundles(napi_env env, napi_callback_info info); 61 static napi_value GetAllowedInstallBundles(napi_env env, napi_callback_info info); 62 static napi_value AddDisallowedInstallBundles(napi_env env, napi_callback_info info); 63 static napi_value RemoveDisallowedInstallBundles(napi_env env, napi_callback_info info); 64 static napi_value GetDisallowedInstallBundles(napi_env env, napi_callback_info info); 65 static napi_value AddDisallowedUninstallBundles(napi_env env, napi_callback_info info); 66 static napi_value RemoveDisallowedUninstallBundles(napi_env env, napi_callback_info info); 67 static napi_value GetDisallowedUninstallBundles(napi_env env, napi_callback_info info); 68 static napi_value Uninstall(napi_env env, napi_callback_info info); 69 static napi_value Install(napi_env env, napi_callback_info info); 70 static napi_value AddAllowedInstallBundlesSync(napi_env env, napi_callback_info info); 71 static napi_value RemoveAllowedInstallBundlesSync(napi_env env, napi_callback_info info); 72 static napi_value GetAllowedInstallBundlesSync(napi_env env, napi_callback_info info); 73 static napi_value AddDisallowedInstallBundlesSync(napi_env env, napi_callback_info info); 74 static napi_value RemoveDisallowedInstallBundlesSync(napi_env env, napi_callback_info info); 75 static napi_value GetDisallowedInstallBundlesSync(napi_env env, napi_callback_info info); 76 static napi_value AddDisallowedUninstallBundlesSync(napi_env env, napi_callback_info info); 77 static napi_value RemoveDisallowedUninstallBundlesSync(napi_env env, napi_callback_info info); 78 static napi_value GetDisallowedUninstallBundlesSync(napi_env env, napi_callback_info info); 79 80 private: 81 static napi_value AddOrRemoveInstallBundles(napi_env env, napi_callback_info info, const std::string &workName, 82 napi_async_execute_callback execute); 83 static napi_value GetAllowedOrDisallowedInstallBundles(napi_env env, napi_callback_info info, 84 const std::string &workName, napi_async_execute_callback execute); 85 86 static void NativeAddBundlesByPolicyType(napi_env env, void *data); 87 static void NativeRemoveBundlesByPolicyType(napi_env env, void *data); 88 static void NativeGetBundlesByPolicyType(napi_env env, void *data); 89 static void InitCallbackInfoPolicyType(const std::string &workName, AsyncBundlesCallbackInfo *callback); 90 static void NativeUninstall(napi_env env, void *data); 91 static void NativeUninstallCallbackComplete(napi_env env, napi_status status, void *data); 92 static void NativeInstall(napi_env env, void *data); 93 static bool CheckAddInstallBundlesParamType(napi_env env, size_t argc, napi_value *argv, bool &hasCallback, 94 bool &hasUserId); 95 static bool CheckAndParseUninstallParamType(napi_env env, size_t argc, napi_value *argv, 96 AsyncUninstallCallbackInfo *asyncCallbackInfo); 97 #ifdef BUNDLE_FRAMEWORK_EDM_ENABLE 98 static bool CheckAndParseInstallParamType(napi_env env, size_t argc, napi_value *argv, 99 AsyncInstallCallbackInfo *asyncCallbackInfo); 100 static bool jsObjectToInstallParam(napi_env env, napi_value object, OHOS::AppExecFwk::InstallParam &installParam); 101 #endif 102 static napi_value AddOrRemoveInstallBundlesSync(napi_env env, napi_callback_info info, const std::string &workName, 103 bool isAdd); 104 static void InitPolicyType(const std::string &workName, int32_t &policyType); 105 static napi_value GetAllowedOrDisallowedInstallBundlesSync(napi_env env, napi_callback_info info, 106 const std::string &workName); 107 }; 108 } // namespace EDM 109 } // namespace OHOS 110 111 #endif // INTERFACES_KITS_BUNDLE_MANAGER_INCLUDE_BUNDLE_MANAGER_ADDON_H 112