diff --git a/interfaces/inner_api/appexecfwk_core/BUILD.gn b/interfaces/inner_api/appexecfwk_core/BUILD.gn index da872f3e119e7d677425b41f931c46a43c542417..120c41c9be7a3b7e6946c2a41b53cff9aa154e0e 100644 --- a/interfaces/inner_api/appexecfwk_core/BUILD.gn +++ b/interfaces/inner_api/appexecfwk_core/BUILD.gn @@ -25,6 +25,15 @@ idl_gen_interface("verify_manager_interface") { hitrace = "HITRACE_TAG_APP" } +idl_gen_interface("extend_resource_manager_interface") { + sources = [ "IExtendResourceManager.idl" ] + # log_domainid = "0xD001120" + # log_tag = "BMS" + subsystem_name = "bundlemanager" + part_name = "bundle_framework" + hitrace = "HITRACE_TAG_APP" +} + config("bundlemgr_ipc_public_config") { include_dirs = [ "${target_gen_dir}" ] } @@ -98,8 +107,7 @@ ohos_shared_library("appexecfwk_core") { "src/bundlemgr/process_cache_callback_proxy.cpp", "src/bundlemgr/status_receiver_host.cpp", "src/bundlemgr_ext/bundle_mgr_ext_client.cpp", - "src/extend_resource/extend_resource_manager_host.cpp", - "src/extend_resource/extend_resource_manager_proxy.cpp", + "src/extend_resource/extend_resource_manager_client.cpp", "src/verify/verify_manager_client.cpp", ] output_values = get_target_outputs(":verify_manager_interface") @@ -137,6 +145,8 @@ ohos_shared_library("appexecfwk_core") { deps = [ ":bundle_mgr_ext_proxy", ":bundle_mgr_ext_stub", + ":extend_resource_manager_proxy", + ":extend_resource_manager_stub", "${base_path}:appexecfwk_base", "${common_path}:libappexecfwk_common", ] @@ -259,6 +269,7 @@ ohos_shared_library("bundlemgr_mini") { } deps = [ ":bundle_mgr_ext_interface", + ":extend_resource_manager_interface", ":verify_manager_interface", "${base_path}:appexecfwk_base", "${common_path}:libappexecfwk_common", @@ -431,4 +442,84 @@ ohos_source_set("bundle_mgr_ext_stub") { ] subsystem_name = "bundlemanager" part_name = "bundle_framework" -} \ No newline at end of file +} + +ohos_source_set("extend_resource_manager_proxy") { + sanitize = { + boundary_sanitize = true + cfi = true + cfi_cross_dso = true + debug = false + integer_overflow = true + ubsan = true + } + + cflags = [ + "-Os", + "-fstack-protector-strong", + ] + + cflags_cc = [ + "-Os", + "-fstack-protector-strong", + ] + + if (target_cpu == "arm") { + cflags += [ "-DBINDER_IPC_32BIT" ] + } + + output_values = get_target_outputs(":extend_resource_manager_interface") + sources = filter_include(output_values, [ "*extend_resource_manager_proxy.cpp" ]) + deps = [ + ":extend_resource_manager_interface", + "${base_path}:appexecfwk_base", + ] + external_deps = [ + "c_utils:utils", + "hilog:libhilog", + "hitrace:hitrace_meter", + "ipc:ipc_core", + ] + subsystem_name = "bundlemanager" + part_name = "bundle_framework" +} + +ohos_source_set("extend_resource_manager_stub") { + sanitize = { + boundary_sanitize = true + cfi = true + cfi_cross_dso = true + debug = false + integer_overflow = true + ubsan = true + } + + cflags = [ + "-Os", + "-fstack-protector-strong", + ] + + cflags_cc = [ + "-Os", + "-fstack-protector-strong", + ] + + if (target_cpu == "arm") { + cflags += [ "-DBINDER_IPC_32BIT" ] + } + + output_values = get_target_outputs(":extend_resource_manager_interface") + sources = filter_include(output_values, [ "*extend_resource_manager_stub.cpp" ]) + deps = [ + ":extend_resource_manager_interface", + "${base_path}:appexecfwk_base", + ] + external_deps = [ + "c_utils:utils", + "hilog:libhilog", + "hitrace:hitrace_meter", + "ipc:ipc_core", + ] + subsystem_name = "bundlemanager" + part_name = "bundle_framework" +} diff --git a/interfaces/inner_api/appexecfwk_core/IExtendResourceManager.idl b/interfaces/inner_api/appexecfwk_core/IExtendResourceManager.idl new file mode 100644 index 0000000000000000000000000000000000000000..7d751729d7caa2eb717cabc06b7347fd58007102 --- /dev/null +++ b/interfaces/inner_api/appexecfwk_core/IExtendResourceManager.idl @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2025 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. + */ + +sequenceable OHOS.AppExecFwk.DynamicIconInfo; + +option_stub_hooks on; +interface_token ohos.bundleManager.ExtendResourceManager; +interface OHOS.AppExecFwk.IExtendResourceManager { + [ipccode 0] void AddExtResource([in] String bundleName, [in] String[] filePaths, [out] int funcResult); + [ipccode 1] void RemoveExtResource([in] String bundleName, [in] String[] moduleNames, [out] int funcResult); + [ipccode 2] void GetExtResource([in] String bundleName, [out] String[] moduleNames, [out] int funcResult); + [ipccode 3] void EnableDynamicIcon([in] String bundleName, [in] String moduleName, [in] int userId, [in] int appIndex, [out] int funcResult); + [ipccode 4] void DisableDynamicIcon([in] String bundleName, [in] int userId, [in] int appIndex, [out] int funcResult); + [ipccode 5] void GetDynamicIcon([in] String bundleName, [in] int userId, [in] int appIndex, [out] String moduleName, [out] int funcResult); + [ipccode 6] void CreateFd([in] String fileName, [out] FileDescriptor fd, [out] String path, [out] int funcResult); + [ipccode 7] void GetAllDynamicIconInfo([in] int userId, [out] DynamicIconInfo[] dynamicInfos, [out] int funcResult); + [ipccode 8] void GetDynamicIconInfo([in] String bundleName, [out] DynamicIconInfo[] dynamicInfos, [out] int funcResult); + } \ No newline at end of file diff --git a/interfaces/inner_api/appexecfwk_core/include/bundle_framework_core_ipc_interface_code.h b/interfaces/inner_api/appexecfwk_core/include/bundle_framework_core_ipc_interface_code.h index fa43eea1e577a3d58fc54e4fdd95545d14f62aaa..490cdc307bd48080658c6ec16e2a4f4800953f44 100644 --- a/interfaces/inner_api/appexecfwk_core/include/bundle_framework_core_ipc_interface_code.h +++ b/interfaces/inner_api/appexecfwk_core/include/bundle_framework_core_ipc_interface_code.h @@ -365,20 +365,6 @@ enum class BundleResourceInterfaceCode : uint8_t { DELETE_RESOURCE_INFO = 6, GET_EXTENSION_ABILITY_RESOURCE_INFO = 7, }; - -/* SAID: 401-127 Interface No.127 subservice also provides the following interfaces */ -enum class ExtendResourceManagerInterfaceCode : uint8_t { - ADD_EXT_RESOURCE = 0, - REMOVE_EXT_RESOURCE = 1, - GET_EXT_RESOURCE = 2, - ENABLE_DYNAMIC_ICON = 3, - DISABLE_DYNAMIC_ICON = 4, - GET_DYNAMIC_ICON = 5, - CREATE_FD = 6, - GET_ALL_DYNAMIC_ICON_INFO = 7, - GET_DYNAMIC_ICON_INFO = 8, -}; - } // namespace AppExecFwk } // namespace OHOS #endif // OHOS_BUNDLE_APPEXECFWK_CORE_IPC_INTERFACE_CODE_H diff --git a/interfaces/inner_api/appexecfwk_core/include/bundlemgr/bundle_mgr_interface.h b/interfaces/inner_api/appexecfwk_core/include/bundlemgr/bundle_mgr_interface.h index 5eb6ba8a9999f87000dc60d56c9d4c2900a31039..31fee486c632b4012cdf000172e07ec4c6ef203c 100644 --- a/interfaces/inner_api/appexecfwk_core/include/bundlemgr/bundle_mgr_interface.h +++ b/interfaces/inner_api/appexecfwk_core/include/bundlemgr/bundle_mgr_interface.h @@ -37,8 +37,8 @@ #include "app_control_interface.h" #include "bundle_resource_interface.h" #include "default_app_interface.h" -#include "extend_resource_manager_interface.h" #include "ibundle_mgr_ext.h" +#include "iextend_resource_manager.h" #include "overlay_manager_interface.h" #include "plugin/plugin_bundle_info.h" #include "quick_fix_manager_interface.h" diff --git a/interfaces/inner_api/appexecfwk_core/include/extend_resource/extend_resource_manager_client.h b/interfaces/inner_api/appexecfwk_core/include/extend_resource/extend_resource_manager_client.h new file mode 100644 index 0000000000000000000000000000000000000000..089295db30731e88648befc2ca5b7ba5f9eb531e --- /dev/null +++ b/interfaces/inner_api/appexecfwk_core/include/extend_resource/extend_resource_manager_client.h @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2025 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. + */ + +#ifndef FOUNDATION_APPEXECFWK_INTERFACES_INNERKITS_APPEXECFWK_CORE_INCLUDE_EXTEND_RESOURCE_MANAGER_CLIENT_H +#define FOUNDATION_APPEXECFWK_INTERFACES_INNERKITS_APPEXECFWK_CORE_INCLUDE_EXTEND_RESOURCE_MANAGER_CLIENT_H + +#include + +#include "appexecfwk_errors.h" +#include "bundle_mgr_interface.h" +#include "dynamic_icon_info.h" +#include "iextend_resource_manager.h" + +namespace OHOS { +namespace AppExecFwk { + +class ExtendResourceManagerClient { +public: + static ExtendResourceManagerClient &GetInstance(); + + ErrCode AddExtResource(const std::string &bundleName, const std::vector &filePaths); + ErrCode RemoveExtResource(const std::string &bundleName, const std::vector &moduleNames); + ErrCode GetExtResource(const std::string &bundleName, std::vector &moduleNames); + ErrCode EnableDynamicIcon(const std::string &bundleName, const std::string &moduleName); + ErrCode EnableDynamicIcon( + const std::string &bundleName, const std::string &moduleName, const int32_t userId, const int32_t appIndex); + ErrCode DisableDynamicIcon(const std::string &bundleName); + ErrCode DisableDynamicIcon(const std::string &bundleName, const int32_t userId, const int32_t appIndex); + ErrCode GetDynamicIcon(const std::string &bundleName, std::string &moduleName); + ErrCode GetDynamicIcon(const std::string &bundleName, const int32_t userId, + const int32_t appIndex, std::string &moduleName); + ErrCode GetAllDynamicIconInfo(std::vector &dynamicInfos); + ErrCode GetAllDynamicIconInfo(const int32_t userId, std::vector &dynamicInfos); + ErrCode CreateFd(const std::string &fileName, int32_t &fd, std::string &path); + ErrCode CopyFiles(const std::vector &sourceFiles, std::vector &destFiles); + ErrCode GetDynamicIconInfo(const std::string &bundleName, std::vector &dynamicInfos); + +private: + ExtendResourceManagerClient(); + ~ExtendResourceManagerClient(); + DISALLOW_COPY_AND_MOVE(ExtendResourceManagerClient); + + class ExtendResourceManagerDeathRecipient : public IRemoteObject::DeathRecipient { + public: + ExtendResourceManagerDeathRecipient() = default; + ~ExtendResourceManagerDeathRecipient() override = default; + void OnRemoteDied(const wptr& remote) override; + + private: + DISALLOW_COPY_AND_MOVE(ExtendResourceManagerDeathRecipient); + }; + void ResetExtendResourceManagerProxy(const wptr& remote); + sptr GetExtendResourceManagerProxy(); + + std::mutex mutex_; + sptr deathRecipient_ = nullptr; + sptr extendResourceManager_; +}; +} +} +#endif // FOUNDATION_APPEXECFWK_INTERFACES_INNERKITS_APPEXECFWK_CORE_INCLUDE_EXTEND_RESOURCE_MANAGER_CLIENT_H \ No newline at end of file diff --git a/interfaces/inner_api/appexecfwk_core/include/extend_resource/extend_resource_manager_host.h b/interfaces/inner_api/appexecfwk_core/include/extend_resource/extend_resource_manager_host.h deleted file mode 100644 index 9bd8a6c7872a951f414dfed54eec1c90fc6d40f2..0000000000000000000000000000000000000000 --- a/interfaces/inner_api/appexecfwk_core/include/extend_resource/extend_resource_manager_host.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2024 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. - */ - -#ifndef FOUNDATION_BUNDLEMANAGER_BUNDLE_FRAMEWORK_INNERKITS_APPEXECFWK_CORE_INCLUDE_EXTEND_RESOURCE_MANAGER_HOST_H -#define FOUNDATION_BUNDLEMANAGER_BUNDLE_FRAMEWORK_INNERKITS_APPEXECFWK_CORE_INCLUDE_EXTEND_RESOURCE_MANAGER_HOST_H - -#include "extend_resource_manager_interface.h" -#include "iremote_stub.h" -#include "nocopyable.h" - -namespace OHOS { -namespace AppExecFwk { -class ExtendResourceManagerHost : public IRemoteStub { -public: - ExtendResourceManagerHost(); - virtual ~ExtendResourceManagerHost(); - - int OnRemoteRequest( - uint32_t code, MessageParcel& data, MessageParcel& reply, MessageOption& option) override; - -private: - ErrCode HandleAddExtResource(MessageParcel &data, MessageParcel &reply); - ErrCode HandleRemoveExtResource(MessageParcel &data, MessageParcel &reply); - ErrCode HandleGetExtResource(MessageParcel &data, MessageParcel &reply); - ErrCode HandleEnableDynamicIcon(MessageParcel &data, MessageParcel &reply); - ErrCode HandleDisableDynamicIcon(MessageParcel &data, MessageParcel &reply); - ErrCode HandleGetDynamicIcon(MessageParcel &data, MessageParcel &reply); - ErrCode HandleCreateFd(MessageParcel& data, MessageParcel& reply); - ErrCode HandleGetAllDynamicIconInfo(MessageParcel& data, MessageParcel& reply); - ErrCode HandleGetDynamicIconInfo(MessageParcel& data, MessageParcel& reply); - template - ErrCode WriteParcelableVector(std::vector &parcelableVector, MessageParcel &reply); - - DISALLOW_COPY_AND_MOVE(ExtendResourceManagerHost); -}; -} // AppExecFwk -} // OHOS -#endif // FOUNDATION_BUNDLEMANAGER_BUNDLE_FRAMEWORK_INNERKITS_APPEXECFWK_CORE_INCLUDE_EXTEND_RESOURCE_MANAGER_HOST_H diff --git a/interfaces/inner_api/appexecfwk_core/include/extend_resource/extend_resource_manager_interface.h b/interfaces/inner_api/appexecfwk_core/include/extend_resource/extend_resource_manager_interface.h deleted file mode 100644 index 130ccacaff6454546d6947ed222f776fa9414533..0000000000000000000000000000000000000000 --- a/interfaces/inner_api/appexecfwk_core/include/extend_resource/extend_resource_manager_interface.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (c) 2024 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. - */ - -#ifndef FOUNDATION_BUNDLEMANAGER_BUNDLE_FRAMEWORK_INNERKITS_APPEXECFWK_CORE_INCLUDE_EXTEND_RESOURCE_MGR_INTERFACE_H -#define FOUNDATION_BUNDLEMANAGER_BUNDLE_FRAMEWORK_INNERKITS_APPEXECFWK_CORE_INCLUDE_EXTEND_RESOURCE_MGR_INTERFACE_H - -#include -#include - -#include "appexecfwk_errors.h" -#include "dynamic_icon_info.h" -#include "iremote_broker.h" - -namespace OHOS { -namespace AppExecFwk { -class IExtendResourceManager : public IRemoteBroker { -public: - DECLARE_INTERFACE_DESCRIPTOR(u"ohos.bundleManager.ExtendResourceManager"); - - virtual ErrCode AddExtResource( - const std::string &bundleName, const std::vector &filePaths) - { - return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; - } - - virtual ErrCode RemoveExtResource( - const std::string &bundleName, const std::vector &moduleNames) - { - return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; - } - - virtual ErrCode GetExtResource( - const std::string &bundleName, std::vector &moduleNames) - { - return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; - } - - virtual ErrCode EnableDynamicIcon( - const std::string &bundleName, const std::string &moduleName) - { - return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; - } - - virtual ErrCode EnableDynamicIcon( - const std::string &bundleName, const std::string &moduleName, const int32_t userId, const int32_t appIndex) - { - return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; - } - - virtual ErrCode DisableDynamicIcon(const std::string &bundleName) - { - return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; - } - - virtual ErrCode DisableDynamicIcon(const std::string &bundleName, const int32_t userId, const int32_t appIndex) - { - return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; - } - - virtual ErrCode GetDynamicIcon(const std::string &bundleName, std::string &moduleName) - { - return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; - } - - virtual ErrCode GetDynamicIcon(const std::string &bundleName, const int32_t userId, - const int32_t appIndex, std::string &moduleName) - { - return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; - } - - virtual ErrCode CreateFd(const std::string &fileName, int32_t &fd, std::string &path) - { - return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; - } - - virtual ErrCode CopyFiles( - const std::vector &sourceFiles, std::vector &destFiles) - { - return ERR_BUNDLEMANAGER_QUICK_FIX_INTERNAL_ERROR; - } - - virtual ErrCode GetAllDynamicIconInfo(std::vector &dynamicInfos) - { - return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; - } - - virtual ErrCode GetAllDynamicIconInfo(const int32_t userId, std::vector &dynamicInfos) - { - return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; - } - - virtual ErrCode GetDynamicIconInfo(const std::string &bundleName, std::vector &dynamicInfos) - { - return ERR_APPEXECFWK_SERVICE_INTERNAL_ERROR; - } -}; -} // AppExecFwk -} // OHOS -#endif // FOUNDATION_BUNDLEMANAGER_BUNDLE_FRAMEWORK_INNERKITS_APPEXECFWK_CORE_INCLUDE_EXTEND_RESOURCE_MGR_INTERFACE_H \ No newline at end of file diff --git a/interfaces/inner_api/appexecfwk_core/include/extend_resource/extend_resource_manager_proxy.h b/interfaces/inner_api/appexecfwk_core/include/extend_resource/extend_resource_manager_proxy.h deleted file mode 100644 index 7367b83f069082043e3045649e1acdc24d6c9173..0000000000000000000000000000000000000000 --- a/interfaces/inner_api/appexecfwk_core/include/extend_resource/extend_resource_manager_proxy.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2024 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. - */ - -#ifndef FOUNDATION_BUNDLEMANAGER_BUNDLE_FRAMEWORK_INNERKITS_APPEXECFWK_CORE_INCLUDE_EXTEND_RESOURCE_MANAGER_PROXY_H -#define FOUNDATION_BUNDLEMANAGER_BUNDLE_FRAMEWORK_INNERKITS_APPEXECFWK_CORE_INCLUDE_EXTEND_RESOURCE_MANAGER_PROXY_H - -#include "bundle_framework_core_ipc_interface_code.h" -#include "extend_resource_manager_interface.h" -#include "iremote_proxy.h" - -namespace OHOS { -namespace AppExecFwk { -class ExtendResourceManagerProxy : public IRemoteProxy { -public: - explicit ExtendResourceManagerProxy(const sptr &object); - virtual ~ExtendResourceManagerProxy(); - - virtual ErrCode AddExtResource( - const std::string &bundleName, const std::vector &filePaths) override; - virtual ErrCode RemoveExtResource( - const std::string &bundleName, const std::vector &moduleNames) override; - virtual ErrCode GetExtResource( - const std::string &bundleName, std::vector &moduleNames) override; - - virtual ErrCode EnableDynamicIcon( - const std::string &bundleName, const std::string &moduleName) override; - virtual ErrCode EnableDynamicIcon( - const std::string &bundleName, const std::string &moduleName, - const int32_t userId, const int32_t appIndex) override; - virtual ErrCode DisableDynamicIcon(const std::string &bundleName) override; - virtual ErrCode DisableDynamicIcon(const std::string &bundleName, - const int32_t userId, const int32_t appIndex) override; - virtual ErrCode GetDynamicIcon( - const std::string &bundleName, std::string &moduleName) override; - virtual ErrCode GetDynamicIcon( - const std::string &bundleName, const int32_t userId, const int32_t appIndex, std::string &moduleName) override; - - virtual ErrCode GetAllDynamicIconInfo(std::vector &dynamicInfos) override; - - virtual ErrCode GetAllDynamicIconInfo(const int32_t userId, std::vector &dynamicInfos) override; - - virtual ErrCode GetDynamicIconInfo(const std::string &bundleName, - std::vector &dynamicInfos) override; - -private: - virtual ErrCode CopyFiles( - const std::vector &sourceFiles, std::vector &destFiles) override; - virtual ErrCode CreateFd(const std::string &fileName, int32_t &fd, std::string &path) override; - bool SendRequest(ExtendResourceManagerInterfaceCode code, MessageParcel &data, MessageParcel &reply); - template - ErrCode GetParcelableInfosWithErrCode(ExtendResourceManagerInterfaceCode code, MessageParcel &data, - std::vector &parcelableInfos); - - static inline BrokerDelegator delegator_; -}; -} // AppExecFwk -} // OHOS -#endif // FOUNDATION_BUNDLEMANAGER_BUNDLE_FRAMEWORK_INNERKITS_APPEXECFWK_CORE_INCLUDE_EXTEND_RESOURCE_MANAGER_PROXY_H diff --git a/interfaces/inner_api/appexecfwk_core/src/extend_resource/extend_resource_manager_proxy.cpp b/interfaces/inner_api/appexecfwk_core/src/extend_resource/extend_resource_manager_client.cpp similarity index 36% rename from interfaces/inner_api/appexecfwk_core/src/extend_resource/extend_resource_manager_proxy.cpp rename to interfaces/inner_api/appexecfwk_core/src/extend_resource/extend_resource_manager_client.cpp index ba1c59138b311394eed0bed0373b7ee0a91371e6..8969dd638754d27a68a79c5a88a648f724f6b488 100644 --- a/interfaces/inner_api/appexecfwk_core/src/extend_resource/extend_resource_manager_proxy.cpp +++ b/interfaces/inner_api/appexecfwk_core/src/extend_resource/extend_resource_manager_client.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024-2025 Huawei Device Co., Ltd. + * Copyright (c) 2025 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 @@ -12,44 +12,47 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -#include "extend_resource_manager_proxy.h" +#include "extend_resource_manager_client.h" #include #include #include #include "app_log_wrapper.h" -#include "appexecfwk_errors.h" -#include "bundle_constants.h" +#include "app_log_tag_wrapper.h" #include "bundle_file_util.h" -#include "directory_ex.h" +#include "bundle_mgr_interface.h" +#include "bundle_mgr_proxy.h" +#include "bundle_mgr_service_death_recipient.h" #include "hitrace_meter.h" -#include "ipc_types.h" -#include "parcel_macro.h" +#include "iservice_registry.h" +#include "system_ability_definition.h" namespace OHOS { namespace AppExecFwk { -namespace { -const char* SEPARATOR = "/"; +const std::string SEPARATOR = "/"; const int32_t DEFAULT_BUFFER_SIZE = 65536; + +ExtendResourceManagerClient &ExtendResourceManagerClient::GetInstance() +{ + static ExtendResourceManagerClient instance; + return instance; } -ExtendResourceManagerProxy::ExtendResourceManagerProxy(const sptr &object) - : IRemoteProxy(object) + +ExtendResourceManagerClient::ExtendResourceManagerClient() { - APP_LOGI_NOFUNC("create ExtendResourceManagerProxy"); + APP_LOGI_NOFUNC("create ExtendResourceManagerClient"); } -ExtendResourceManagerProxy::~ExtendResourceManagerProxy() +ExtendResourceManagerClient::~ExtendResourceManagerClient() { - APP_LOGI_NOFUNC("destroy ExtendResourceManagerProxy"); + APP_LOGI_NOFUNC("destory ExtendResourceManagerClient"); } -ErrCode ExtendResourceManagerProxy::AddExtResource( +ErrCode ExtendResourceManagerClient::AddExtResource( const std::string &bundleName, const std::vector &filePaths) { APP_LOGD("begin to AddExtResource"); - HITRACE_METER_NAME_EX(HITRACE_LEVEL_INFO, HITRACE_TAG_APP, __PRETTY_FUNCTION__, nullptr); if (bundleName.empty()) { APP_LOGE("fail to AddExtResource due to bundleName is empty"); return ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; @@ -58,34 +61,24 @@ ErrCode ExtendResourceManagerProxy::AddExtResource( APP_LOGE("fail to AddExtResource due to filePaths is empty"); return ERR_EXT_RESOURCE_MANAGER_COPY_FILE_FAILED; } - MessageParcel data; - if (!data.WriteInterfaceToken(GetDescriptor())) { - APP_LOGE("fail to AddExtResource due to WriteInterfaceToken failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; + auto proxy = GetExtendResourceManagerProxy(); + if (proxy == nullptr) { + APP_LOGE("failed to get extend resource manager proxy"); + return ERR_APPEXECFWK_NULL_PTR; } - if (!data.WriteString(bundleName)) { - APP_LOGE("fail to AddExtResource due to write bundleName failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - if (!data.WriteStringVector(filePaths)) { - APP_LOGE("fail to AddExtResource due to write filePaths failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - - MessageParcel reply; - if (!SendRequest(ExtendResourceManagerInterfaceCode::ADD_EXT_RESOURCE, data, reply)) { - APP_LOGE("fail to AddExtResource from server"); - return ERR_APPEXECFWK_PARCEL_ERROR; + ErrCode funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + ErrCode ipcRet = proxy->AddExtResource(bundleName, filePaths, funcResult); + if (ipcRet != ERR_OK) { + APP_LOGE("failed to AddExtResource due to ipc error, err: %{public}d", ipcRet); + return ipcRet; } - - return reply.ReadInt32(); + return funcResult; } -ErrCode ExtendResourceManagerProxy::RemoveExtResource( +ErrCode ExtendResourceManagerClient::RemoveExtResource( const std::string &bundleName, const std::vector &moduleNames) { APP_LOGD("begin to RemoveExtResource"); - HITRACE_METER_NAME_EX(HITRACE_LEVEL_INFO, HITRACE_TAG_APP, __PRETTY_FUNCTION__, nullptr); if (bundleName.empty()) { APP_LOGE("fail to RemoveExtResource due to bundleName is empty"); return ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; @@ -94,77 +87,52 @@ ErrCode ExtendResourceManagerProxy::RemoveExtResource( APP_LOGE("fail to RemoveExtResource due to moduleNames is empty"); return ERR_EXT_RESOURCE_MANAGER_REMOVE_EXT_RESOURCE_FAILED; } - MessageParcel data; - if (!data.WriteInterfaceToken(GetDescriptor())) { - APP_LOGE("fail to RemoveExtResource due to WriteInterfaceToken failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - if (!data.WriteString(bundleName)) { - APP_LOGE("fail to RemoveExtResource due to write bundleName failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - if (!data.WriteStringVector(moduleNames)) { - APP_LOGE("fail to RemoveExtResource due to write moduleNames failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; + auto proxy = GetExtendResourceManagerProxy(); + if (proxy == nullptr) { + APP_LOGE("failed to get extend resource manager proxy"); + return ERR_APPEXECFWK_NULL_PTR; } - - MessageParcel reply; - if (!SendRequest(ExtendResourceManagerInterfaceCode::REMOVE_EXT_RESOURCE, data, reply)) { - APP_LOGE("fail to RemoveExtResource from server"); - return ERR_APPEXECFWK_PARCEL_ERROR; + ErrCode funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + ErrCode ipcRet = proxy->RemoveExtResource(bundleName, moduleNames, funcResult); + if (ipcRet != ERR_OK) { + APP_LOGE("failed to RemoveExtResource due to ipc error, err: %{public}d", ipcRet); + return ipcRet; } - - return reply.ReadInt32(); + return funcResult; } -ErrCode ExtendResourceManagerProxy::GetExtResource( +ErrCode ExtendResourceManagerClient::GetExtResource( const std::string &bundleName, std::vector &moduleNames) { APP_LOGD("begin to GetExtResource"); - HITRACE_METER_NAME_EX(HITRACE_LEVEL_INFO, HITRACE_TAG_APP, __PRETTY_FUNCTION__, nullptr); if (bundleName.empty()) { APP_LOGE("fail to GetExtResource due to bundleName is empty"); return ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; } - MessageParcel data; - if (!data.WriteInterfaceToken(GetDescriptor())) { - APP_LOGE("fail to GetExtResource due to WriteInterfaceToken failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - if (!data.WriteString(bundleName)) { - APP_LOGE("fail to GetExtResource due to write bundleName failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; + auto proxy = GetExtendResourceManagerProxy(); + if (proxy == nullptr) { + APP_LOGE("failed to get extend resource manager proxy"); + return ERR_APPEXECFWK_NULL_PTR; } - - MessageParcel reply; - if (!SendRequest(ExtendResourceManagerInterfaceCode::GET_EXT_RESOURCE, data, reply)) { - APP_LOGE("fail to GetExtResource from server"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - - ErrCode ret = reply.ReadInt32(); - if (ret != ERR_OK) { - APP_LOGE("fail to GetExtResource from server"); - return ret; - } - if (!reply.ReadStringVector(&moduleNames)) { - APP_LOGE("read moduleNames failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; + ErrCode funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + ErrCode ipcRet = proxy->GetExtResource(bundleName, moduleNames, funcResult); + if (ipcRet != ERR_OK) { + APP_LOGE("failed to GetExtResource due to ipc error, err: %{public}d", ipcRet); + return ipcRet; } - return ERR_OK; + return funcResult; } -ErrCode ExtendResourceManagerProxy::EnableDynamicIcon( +ErrCode ExtendResourceManagerClient::EnableDynamicIcon( const std::string &bundleName, const std::string &moduleName) { return EnableDynamicIcon(bundleName, moduleName, Constants::UNSPECIFIED_USERID, Constants::DEFAULT_APP_INDEX); } -ErrCode ExtendResourceManagerProxy::EnableDynamicIcon( +ErrCode ExtendResourceManagerClient::EnableDynamicIcon( const std::string &bundleName, const std::string &moduleName, const int32_t userId, const int32_t appIndex) { APP_LOGD("begin to EnableDynamicIcon"); - HITRACE_METER_NAME_EX(HITRACE_LEVEL_INFO, HITRACE_TAG_APP, __PRETTY_FUNCTION__, nullptr); if (bundleName.empty()) { APP_LOGE("fail to EnableDynamicIcon due to bundleName is empty"); return ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; @@ -173,170 +141,109 @@ ErrCode ExtendResourceManagerProxy::EnableDynamicIcon( APP_LOGE("fail to EnableDynamicIcon due to moduleName is empty"); return ERR_BUNDLE_MANAGER_MODULE_NOT_EXIST; } - MessageParcel data; - if (!data.WriteInterfaceToken(GetDescriptor())) { - APP_LOGE("fail to EnableDynamicIcon due to WriteInterfaceToken failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - if (!data.WriteString(bundleName)) { - APP_LOGE("fail to EnableDynamicIcon due to write bundleName failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - if (!data.WriteString(moduleName)) { - APP_LOGE("fail to EnableDynamicIcon due to write moduleName failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; + auto proxy = GetExtendResourceManagerProxy(); + if (proxy == nullptr) { + APP_LOGE("failed to get extend resource manager proxy"); + return ERR_APPEXECFWK_NULL_PTR; } - if (!data.WriteInt32(userId)) { - APP_LOGE("fail to EnableDynamicIcon due to write userId failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; + ErrCode funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + ErrCode ipcRet = proxy->EnableDynamicIcon(bundleName, moduleName, userId, appIndex, funcResult); + if (ipcRet != ERR_OK) { + APP_LOGE("failed to EnableDynamicIcon due to ipc error, err: %{public}d", ipcRet); + return ipcRet; } - if (!data.WriteInt32(appIndex)) { - APP_LOGE("fail to EnableDynamicIcon due to write appIndex failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - - MessageParcel reply; - if (!SendRequest(ExtendResourceManagerInterfaceCode::ENABLE_DYNAMIC_ICON, data, reply)) { - APP_LOGE("fail to EnableDynamicIcon from server"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - - return reply.ReadInt32(); + return funcResult; } -ErrCode ExtendResourceManagerProxy::DisableDynamicIcon(const std::string &bundleName) +ErrCode ExtendResourceManagerClient::DisableDynamicIcon(const std::string &bundleName) { return DisableDynamicIcon(bundleName, Constants::UNSPECIFIED_USERID, Constants::DEFAULT_APP_INDEX); } -ErrCode ExtendResourceManagerProxy::DisableDynamicIcon(const std::string &bundleName, +ErrCode ExtendResourceManagerClient::DisableDynamicIcon(const std::string &bundleName, const int32_t userId, const int32_t appIndex) { APP_LOGD("begin to DisableDynamicIcon"); - HITRACE_METER_NAME_EX(HITRACE_LEVEL_INFO, HITRACE_TAG_APP, __PRETTY_FUNCTION__, nullptr); if (bundleName.empty()) { APP_LOGE("fail to DisableDynamicIcon due to bundleName is empty"); return ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; } - MessageParcel data; - if (!data.WriteInterfaceToken(GetDescriptor())) { - APP_LOGE("fail to DisableDynamicIcon due to WriteInterfaceToken failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - if (!data.WriteString(bundleName)) { - APP_LOGE("fail to DisableDynamicIcon due to write bundleName fail"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - if (!data.WriteInt32(userId)) { - APP_LOGE("fail to DisableDynamicIcon due to write userId failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; + auto proxy = GetExtendResourceManagerProxy(); + if (proxy == nullptr) { + APP_LOGE("failed to get extend resource manager proxy"); + return ERR_APPEXECFWK_NULL_PTR; } - if (!data.WriteInt32(appIndex)) { - APP_LOGE("fail to DisableDynamicIcon due to write appIndex failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; + ErrCode funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + ErrCode ipcRet = proxy->DisableDynamicIcon(bundleName, userId, appIndex, funcResult); + if (ipcRet != ERR_OK) { + APP_LOGE("failed to DisableDynamicIcon due to ipc error, err: %{public}d", ipcRet); + return ipcRet; } - - MessageParcel reply; - if (!SendRequest(ExtendResourceManagerInterfaceCode::DISABLE_DYNAMIC_ICON, data, reply)) { - APP_LOGE("fail to DisableDynamicIcon from server"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - - return reply.ReadInt32(); + return funcResult; } -ErrCode ExtendResourceManagerProxy::GetDynamicIcon( +ErrCode ExtendResourceManagerClient::GetDynamicIcon( const std::string &bundleName, std::string &moduleName) { return GetDynamicIcon(bundleName, Constants::UNSPECIFIED_USERID, Constants::DEFAULT_APP_INDEX, moduleName); } -ErrCode ExtendResourceManagerProxy::GetDynamicIcon( +ErrCode ExtendResourceManagerClient::GetDynamicIcon( const std::string &bundleName, const int32_t userId, const int32_t appIndex, std::string &moduleName) { APP_LOGD("begin to GetDynamicIcon"); - HITRACE_METER_NAME_EX(HITRACE_LEVEL_INFO, HITRACE_TAG_APP, __PRETTY_FUNCTION__, nullptr); if (bundleName.empty()) { APP_LOGE("fail to GetDynamicIcon due to bundleName is empty"); return ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; } - MessageParcel data; - if (!data.WriteInterfaceToken(GetDescriptor())) { - APP_LOGE("fail to GetDynamicIcon due to WriteInterfaceToken failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - if (!data.WriteString(bundleName)) { - APP_LOGE("fail to GetDynamicIcon due to write bundleName fail"); - return ERR_APPEXECFWK_PARCEL_ERROR; + auto proxy = GetExtendResourceManagerProxy(); + if (proxy == nullptr) { + APP_LOGE("failed to get extend resource manager proxy"); + return ERR_APPEXECFWK_NULL_PTR; } - if (!data.WriteInt32(userId)) { - APP_LOGE("fail to GetDynamicIcon due to write userId failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - if (!data.WriteInt32(appIndex)) { - APP_LOGE("fail to GetDynamicIcon due to write appIndex failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - - MessageParcel reply; - if (!SendRequest(ExtendResourceManagerInterfaceCode::GET_DYNAMIC_ICON, data, reply)) { - APP_LOGE("fail to GetDynamicIcon from server"); - return ERR_APPEXECFWK_PARCEL_ERROR; + ErrCode funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + ErrCode ipcRet = proxy->GetDynamicIcon(bundleName, userId, appIndex, moduleName, funcResult); + if (ipcRet != ERR_OK) { + APP_LOGE("failed to GetDynamicIcon due to ipc error, err: %{public}d", ipcRet); + return ipcRet; } - - ErrCode ret = reply.ReadInt32(); - if (ret != ERR_OK) { - APP_LOGE_NOFUNC("GetDynamicIcon failed: %{public}d", ret); - return ret; - } - - moduleName = reply.ReadString(); - return ERR_OK; + return funcResult; } -ErrCode ExtendResourceManagerProxy::CreateFd( - const std::string &fileName, int32_t &fd, std::string &path) +ErrCode ExtendResourceManagerClient::CreateFd(const std::string &fileName, int32_t &fd, std::string &path) { APP_LOGD("begin to create fd"); if (fileName.empty()) { APP_LOGE("fileName is empty"); return ERR_EXT_RESOURCE_MANAGER_CREATE_FD_FAILED; } - MessageParcel data; - if (!data.WriteInterfaceToken(GetDescriptor())) { - APP_LOGE("write interface token failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - if (!data.WriteString(fileName)) { - APP_LOGE("write fileName failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - MessageParcel reply; - if (!SendRequest(ExtendResourceManagerInterfaceCode::CREATE_FD, data, reply)) { - APP_LOGE("send request failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; + auto proxy = GetExtendResourceManagerProxy(); + if (proxy == nullptr) { + APP_LOGE("failed to get extend resource manager proxy"); + return ERR_APPEXECFWK_NULL_PTR; } - auto ret = reply.ReadInt32(); - if (ret != ERR_OK) { - APP_LOGE("reply return false"); - return ret; + ErrCode funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + ErrCode ipcRet = proxy->CreateFd(fileName, fd, path, funcResult); + if (ipcRet != ERR_OK) { + APP_LOGE("failed to CreateFd due to ipc error, err: %{public}d", ipcRet); + return ipcRet; } - fd = reply.ReadFileDescriptor(); if (fd < 0) { APP_LOGE("invalid fd"); return ERR_EXT_RESOURCE_MANAGER_CREATE_FD_FAILED; } - path = reply.ReadString(); if (path.empty()) { APP_LOGE("invalid path"); close(fd); return ERR_EXT_RESOURCE_MANAGER_INVALID_TARGET_DIR; } - APP_LOGD("create fd success"); - return ERR_OK; + if (funcResult != ERR_OK) { + APP_LOGE("failed to CreateFd, err: %{public}d", funcResult); + close(fd); + } + return funcResult; } - -ErrCode ExtendResourceManagerProxy::CopyFiles( +ErrCode ExtendResourceManagerClient::CopyFiles( const std::vector &sourceFiles, std::vector &destFiles) { APP_LOGD("begin to copy files"); @@ -389,95 +296,116 @@ ErrCode ExtendResourceManagerProxy::CopyFiles( return ERR_OK; } -ErrCode ExtendResourceManagerProxy::GetAllDynamicIconInfo(std::vector &dynamicInfos) +ErrCode ExtendResourceManagerClient::GetAllDynamicIconInfo(std::vector &dynamicInfos) { return GetAllDynamicIconInfo(Constants::UNSPECIFIED_USERID, dynamicInfos); } -ErrCode ExtendResourceManagerProxy::GetAllDynamicIconInfo( +ErrCode ExtendResourceManagerClient::GetAllDynamicIconInfo( const int32_t userId, std::vector &dynamicInfos) { APP_LOGD("begin to GetAllDynamicIconInfo"); - HITRACE_METER_NAME_EX(HITRACE_LEVEL_INFO, HITRACE_TAG_APP, __PRETTY_FUNCTION__, nullptr); - MessageParcel data; - if (!data.WriteInterfaceToken(GetDescriptor())) { - APP_LOGE("fail to GetAllDynamicIconInfo due to WriteInterfaceToken failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - if (!data.WriteInt32(userId)) { - APP_LOGE("fail to GetAllDynamicIconInfo due to write userId fail"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - return GetParcelableInfosWithErrCode( - ExtendResourceManagerInterfaceCode::GET_ALL_DYNAMIC_ICON_INFO, data, dynamicInfos); + auto proxy = GetExtendResourceManagerProxy(); + if (proxy == nullptr) { + APP_LOGE("failed to get extend resource manager proxy"); + return ERR_APPEXECFWK_NULL_PTR; + } + ErrCode funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + ErrCode ipcRet = proxy->GetAllDynamicIconInfo(userId, dynamicInfos, funcResult); + if (ipcRet != ERR_OK) { + APP_LOGE("failed to GetAllDynamicIconInfo due to ipc error, err: %{public}d", ipcRet); + return ipcRet; + } + return funcResult; } -ErrCode ExtendResourceManagerProxy::GetDynamicIconInfo(const std::string &bundleName, - std::vector &dynamicInfos) +ErrCode ExtendResourceManagerClient::GetDynamicIconInfo( + const std::string &bundleName, std::vector &dynamicInfos) { APP_LOGD("begin to GetDynamicIconInfo"); - HITRACE_METER_NAME_EX(HITRACE_LEVEL_INFO, HITRACE_TAG_APP, __PRETTY_FUNCTION__, nullptr); if (bundleName.empty()) { APP_LOGE("bundleName empty"); return ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; } - MessageParcel data; - if (!data.WriteInterfaceToken(GetDescriptor())) { - APP_LOGE("fail to GetDynamicIconInfo due to WriteInterfaceToken failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; + auto proxy = GetExtendResourceManagerProxy(); + if (proxy == nullptr) { + APP_LOGE("failed to get extend resource manager proxy"); + return ERR_APPEXECFWK_NULL_PTR; } - if (!data.WriteString(bundleName)) { - APP_LOGE("fail to GetDynamicIconInfo due to write bundleName fail"); - return ERR_APPEXECFWK_PARCEL_ERROR; + ErrCode funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + ErrCode ipcRet = proxy->GetDynamicIconInfo(bundleName, dynamicInfos, funcResult); + if (ipcRet != ERR_OK) { + APP_LOGE("failed to GetDynamicIconInfo due to proxy error, err: %{public}d", ipcRet); + return ipcRet; } - return GetParcelableInfosWithErrCode( - ExtendResourceManagerInterfaceCode::GET_DYNAMIC_ICON_INFO, data, dynamicInfos); + return funcResult; } -bool ExtendResourceManagerProxy::SendRequest( - ExtendResourceManagerInterfaceCode code, MessageParcel &data, MessageParcel &reply) +void ExtendResourceManagerClient::ResetExtendResourceManagerProxy(const wptr& remote) { - MessageOption option(MessageOption::TF_SYNC); - sptr remote = Remote(); - if (remote == nullptr) { - APP_LOGE("failed to send request %{public}hhd due to remote object null", code); - return false; + std::lock_guard lock(mutex_); + if (extendResourceManager_ == nullptr) { + APP_LOGE("Proxy is nullptr"); + return; } - int32_t result = remote->SendRequest(static_cast(code), data, reply, option); - if (result != NO_ERROR) { - APP_LOGE("receive error %{public}d in transact %{public}hhd", result, code); - return false; + auto serviceRemote = extendResourceManager_->AsObject(); + if ((serviceRemote != nullptr) && (serviceRemote == remote.promote())) { + serviceRemote->RemoveDeathRecipient(deathRecipient_); } - return true; + extendResourceManager_ = nullptr; + deathRecipient_ = nullptr; } -template -ErrCode ExtendResourceManagerProxy::GetParcelableInfosWithErrCode( - ExtendResourceManagerInterfaceCode code, MessageParcel &data, - std::vector &parcelableInfos) +void ExtendResourceManagerClient::ExtendResourceManagerDeathRecipient::OnRemoteDied(const wptr &remote) { - MessageParcel reply; - if (!SendRequest(code, data, reply)) { - APP_LOGE("SendRequest failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; + if (remote == nullptr) { + APP_LOGE("remote is nullptr"); + return; } + ExtendResourceManagerClient::GetInstance().ResetExtendResourceManagerProxy(remote); +} - ErrCode res = reply.ReadInt32(); - if (res == ERR_OK) { - int32_t infoSize = reply.ReadInt32(); - CONTAINER_SECURITY_VERIFY(reply, infoSize, &parcelableInfos); - for (int32_t i = 0; i < infoSize; i++) { - std::unique_ptr info(reply.ReadParcelable()); - if (info == nullptr) { - APP_LOGE("Read Parcelable infos failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - parcelableInfos.emplace_back(*info); - } - APP_LOGD("get parcelable infos success"); - } - APP_LOGD("GetParcelableInfosWithErrCode ErrCode : %{public}d", res); - return res; +sptr ExtendResourceManagerClient::GetExtendResourceManagerProxy() +{ + std::lock_guard lock(mutex_); + if (extendResourceManager_ != nullptr) { + return extendResourceManager_; + } + sptr systemAbilityManager = + SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); + if (systemAbilityManager == nullptr) { + APP_LOGE("failed to get system ability manager"); + return nullptr; + } + sptr remoteObject = systemAbilityManager->GetSystemAbility(BUNDLE_MGR_SERVICE_SYS_ABILITY_ID); + if (remoteObject == nullptr) { + APP_LOGE("get bms sa failed"); + return nullptr; + } + auto bundleMgr = iface_cast(remoteObject); + if (bundleMgr == nullptr) { + APP_LOGE("get bundle mgr failed"); + return nullptr; + } + extendResourceManager_ = bundleMgr->GetExtendResourceManager(); + if ((extendResourceManager_ == nullptr) || (extendResourceManager_->AsObject() == nullptr)) { + APP_LOGE("failed to get extend resource manager proxy"); + return nullptr; + } + deathRecipient_ = new (std::nothrow) ExtendResourceManagerDeathRecipient(); + if (deathRecipient_ == nullptr) { + APP_LOGE("failed to create extend resource manager death recipient"); + return nullptr; + } + + if ((extendResourceManager_->AsObject()->IsProxyObject()) && + (!extendResourceManager_->AsObject()->AddDeathRecipient(deathRecipient_))) { + APP_LOGE("Failed to add death recipient"); + deathRecipient_ = nullptr; + extendResourceManager_ = nullptr; + return nullptr; + } + return extendResourceManager_; +} } -} // AppExecFwk -} // OHOS \ No newline at end of file +} \ No newline at end of file diff --git a/interfaces/inner_api/appexecfwk_core/src/extend_resource/extend_resource_manager_host.cpp b/interfaces/inner_api/appexecfwk_core/src/extend_resource/extend_resource_manager_host.cpp deleted file mode 100644 index 4ab9dc4b8634369e350f4405f34d6e38849cdb1c..0000000000000000000000000000000000000000 --- a/interfaces/inner_api/appexecfwk_core/src/extend_resource/extend_resource_manager_host.cpp +++ /dev/null @@ -1,257 +0,0 @@ -/* - * Copyright (c) 2024-2025 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 "extend_resource_manager_host.h" - -#include -#include - -#include "app_log_wrapper.h" -#include "appexecfwk_errors.h" -#include "bundle_framework_core_ipc_interface_code.h" -#include "bundle_memory_guard.h" -#include "hitrace_meter.h" -#include "ipc_types.h" - -namespace OHOS { -namespace AppExecFwk { -ExtendResourceManagerHost::ExtendResourceManagerHost() -{ - APP_LOGI("create ExtendResourceManagerHost"); -} - -ExtendResourceManagerHost::~ExtendResourceManagerHost() -{ - APP_LOGI("destroy ExtendResourceManagerHost"); -} - -int ExtendResourceManagerHost::OnRemoteRequest(uint32_t code, MessageParcel& data, - MessageParcel& reply, MessageOption& option) -{ - BundleMemoryGuard memoryGuard; - APP_LOGI_NOFUNC("ExtendResourceManagerHost OnRemoteRequest, message code : %{public}u", code); - std::u16string descriptor = ExtendResourceManagerHost::GetDescriptor(); - std::u16string remoteDescriptor = data.ReadInterfaceToken(); - if (descriptor != remoteDescriptor) { - APP_LOGE("descriptor invalid"); - return OBJECT_NULL; - } - - switch (code) { - case static_cast(ExtendResourceManagerInterfaceCode::ADD_EXT_RESOURCE): - return HandleAddExtResource(data, reply); - case static_cast(ExtendResourceManagerInterfaceCode::REMOVE_EXT_RESOURCE): - return HandleRemoveExtResource(data, reply); - case static_cast(ExtendResourceManagerInterfaceCode::GET_EXT_RESOURCE): - return HandleGetExtResource(data, reply); - case static_cast(ExtendResourceManagerInterfaceCode::ENABLE_DYNAMIC_ICON): - return HandleEnableDynamicIcon(data, reply); - case static_cast(ExtendResourceManagerInterfaceCode::DISABLE_DYNAMIC_ICON): - return HandleDisableDynamicIcon(data, reply); - case static_cast(ExtendResourceManagerInterfaceCode::GET_DYNAMIC_ICON): - return HandleGetDynamicIcon(data, reply); - case static_cast(ExtendResourceManagerInterfaceCode::CREATE_FD): - return HandleCreateFd(data, reply); - case static_cast(ExtendResourceManagerInterfaceCode::GET_ALL_DYNAMIC_ICON_INFO): - return HandleGetAllDynamicIconInfo(data, reply); - case static_cast(ExtendResourceManagerInterfaceCode::GET_DYNAMIC_ICON_INFO): - return HandleGetDynamicIconInfo(data, reply); - default: - APP_LOGW("ExtendResourceManagerHost receive unknown code %{public}d", code); - return IPCObjectStub::OnRemoteRequest(code, data, reply, option); - } -} - -ErrCode ExtendResourceManagerHost::HandleAddExtResource(MessageParcel &data, MessageParcel &reply) -{ - HITRACE_METER_NAME_EX(HITRACE_LEVEL_INFO, HITRACE_TAG_APP, __PRETTY_FUNCTION__, nullptr); - std::string bundleName = data.ReadString(); - std::vector filePaths; - if (!data.ReadStringVector(&filePaths)) { - APP_LOGE("read filePaths failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - ErrCode ret = AddExtResource(bundleName, filePaths); - if (!reply.WriteInt32(ret)) { - APP_LOGE("write result failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - return ERR_OK; -} - -ErrCode ExtendResourceManagerHost::HandleRemoveExtResource(MessageParcel &data, MessageParcel &reply) -{ - HITRACE_METER_NAME_EX(HITRACE_LEVEL_INFO, HITRACE_TAG_APP, __PRETTY_FUNCTION__, nullptr); - std::string bundleName = data.ReadString(); - std::vector moduleNames; - if (!data.ReadStringVector(&moduleNames)) { - APP_LOGE("read moduleNames failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - ErrCode ret = RemoveExtResource(bundleName, moduleNames); - if (!reply.WriteInt32(ret)) { - APP_LOGE("write result failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - return ERR_OK; -} - -ErrCode ExtendResourceManagerHost::HandleGetExtResource(MessageParcel &data, MessageParcel &reply) -{ - HITRACE_METER_NAME_EX(HITRACE_LEVEL_INFO, HITRACE_TAG_APP, __PRETTY_FUNCTION__, nullptr); - std::string bundleName = data.ReadString(); - std::vector moduleNames; - ErrCode ret = GetExtResource(bundleName, moduleNames); - if (!reply.WriteInt32(ret)) { - APP_LOGE("write result failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - if (!reply.WriteStringVector(moduleNames)) { - APP_LOGE("write moduleNames failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - return ERR_OK; -} - -ErrCode ExtendResourceManagerHost::HandleEnableDynamicIcon(MessageParcel& data, MessageParcel& reply) -{ - HITRACE_METER_NAME_EX(HITRACE_LEVEL_INFO, HITRACE_TAG_APP, __PRETTY_FUNCTION__, nullptr); - std::string bundleName = data.ReadString(); - std::string moduleName = data.ReadString(); - int32_t userId = data.ReadInt32(); - int32_t appIndex = data.ReadInt32(); - ErrCode ret = EnableDynamicIcon(bundleName, moduleName, userId, appIndex); - if (!reply.WriteInt32(ret)) { - APP_LOGE("write result failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - return ERR_OK; -} - -ErrCode ExtendResourceManagerHost::HandleDisableDynamicIcon(MessageParcel& data, MessageParcel& reply) -{ - HITRACE_METER_NAME_EX(HITRACE_LEVEL_INFO, HITRACE_TAG_APP, __PRETTY_FUNCTION__, nullptr); - std::string bundleName = data.ReadString(); - int32_t userId = data.ReadInt32(); - int32_t appIndex = data.ReadInt32(); - ErrCode ret = DisableDynamicIcon(bundleName, userId, appIndex); - if (!reply.WriteInt32(ret)) { - APP_LOGE("write result failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - return ERR_OK; -} - -ErrCode ExtendResourceManagerHost::HandleGetDynamicIcon(MessageParcel& data, MessageParcel& reply) -{ - HITRACE_METER_NAME_EX(HITRACE_LEVEL_INFO, HITRACE_TAG_APP, __PRETTY_FUNCTION__, nullptr); - std::string bundleName = data.ReadString(); - int32_t userId = data.ReadInt32(); - int32_t appIndex = data.ReadInt32(); - std::string moduleName; - ErrCode ret = GetDynamicIcon(bundleName, userId, appIndex, moduleName); - if (!reply.WriteInt32(ret)) { - APP_LOGE("write result failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - if (ret != ERR_OK) { - return ERR_OK; - } - if (!reply.WriteString(moduleName)) { - APP_LOGE("write moduleName failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - return ERR_OK; -} - -ErrCode ExtendResourceManagerHost::HandleCreateFd(MessageParcel& data, MessageParcel& reply) -{ - APP_LOGD("begin to HandleCreateFd"); - HITRACE_METER_NAME_EX(HITRACE_LEVEL_INFO, HITRACE_TAG_APP, __PRETTY_FUNCTION__, nullptr); - std::string fileName = data.ReadString(); - int32_t fd = -1; - std::string path; - auto ret = CreateFd(fileName, fd, path); - if (!reply.WriteInt32(ret)) { - APP_LOGE("write ret failed"); - close(fd); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - if (ret == ERR_OK) { - if (!reply.WriteFileDescriptor(fd)) { - APP_LOGE("write fd failed"); - close(fd); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - if (!reply.WriteString(path)) { - APP_LOGE("write path failed"); - close(fd); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - } - close(fd); - return ERR_OK; -} - -ErrCode ExtendResourceManagerHost::HandleGetAllDynamicIconInfo(MessageParcel& data, MessageParcel& reply) -{ - HITRACE_METER_NAME_EX(HITRACE_LEVEL_INFO, HITRACE_TAG_APP, __PRETTY_FUNCTION__, nullptr); - int32_t userId = data.ReadInt32(); - std::vector dynamicIconInfos; - ErrCode ret = GetAllDynamicIconInfo(userId, dynamicIconInfos); - if (!reply.WriteInt32(ret)) { - APP_LOGE("write result failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - if (ret == ERR_OK) { - return WriteParcelableVector(dynamicIconInfos, reply); - } - return ERR_OK; -} - -ErrCode ExtendResourceManagerHost::HandleGetDynamicIconInfo(MessageParcel& data, MessageParcel& reply) -{ - HITRACE_METER_NAME_EX(HITRACE_LEVEL_INFO, HITRACE_TAG_APP, __PRETTY_FUNCTION__, nullptr); - std::string bundleName = data.ReadString(); - std::vector dynamicIconInfos; - ErrCode ret = GetDynamicIconInfo(bundleName, dynamicIconInfos); - if (!reply.WriteInt32(ret)) { - APP_LOGE("write result failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - if (ret == ERR_OK) { - return WriteParcelableVector(dynamicIconInfos, reply); - } - return ERR_OK; -} - -template -ErrCode ExtendResourceManagerHost::WriteParcelableVector(std::vector &parcelableVector, MessageParcel &reply) -{ - if (!reply.WriteInt32(parcelableVector.size())) { - APP_LOGE("write ParcelableVector failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - - for (auto &parcelable : parcelableVector) { - if (!reply.WriteParcelable(&parcelable)) { - APP_LOGE("write ParcelableVector failed"); - return ERR_APPEXECFWK_PARCEL_ERROR; - } - } - return ERR_OK; -} -} // AppExecFwk -} // namespace OHOS diff --git a/interfaces/kits/js/bundle_manager/bundle_manager.cpp b/interfaces/kits/js/bundle_manager/bundle_manager.cpp index c027554463bea0452bcbdc5c06ec750431091378..82d8e33fd8e3d8b0ce5d252630e7f42c90aae65c 100644 --- a/interfaces/kits/js/bundle_manager/bundle_manager.cpp +++ b/interfaces/kits/js/bundle_manager/bundle_manager.cpp @@ -27,6 +27,7 @@ #include "business_error.h" #include "bundle_constants.h" #include "common_func.h" +#include "extend_resource_manager_client.h" #include "hap_module_info.h" #include "plugin/plugin_bundle_info.h" #include "verify_manager_client.h" @@ -2569,13 +2570,7 @@ napi_value VerifyAbc(napi_env env, napi_callback_info info) ErrCode InnerGetExtResource( const std::string &bundleName, std::vector &moduleNames) { - auto extResourceManager = CommonFunc::GetExtendResourceManager(); - if (extResourceManager == nullptr) { - APP_LOGE("extResourceManager is null"); - return ERROR_BUNDLE_SERVICE_EXCEPTION; - } - - ErrCode ret = extResourceManager->GetExtResource(bundleName, moduleNames); + ErrCode ret = ExtendResourceManagerClient::GetInstance().GetExtResource(bundleName, moduleNames); if (ret != ERR_OK) { APP_LOGE("GetExtResource failed"); } @@ -2667,16 +2662,12 @@ napi_value GetExtResource(napi_env env, napi_callback_info info) ErrCode InnerEnableDynamicIcon( const std::string &bundleName, const std::string &moduleName, const BundleOption &option) { - auto extResourceManager = CommonFunc::GetExtendResourceManager(); - if (extResourceManager == nullptr) { - APP_LOGE("extResourceManager is null"); - return ERROR_BUNDLE_SERVICE_EXCEPTION; - } ErrCode ret = ERR_OK; if (option.isDefault) { - ret = extResourceManager->EnableDynamicIcon(bundleName, moduleName); + ret = ExtendResourceManagerClient::GetInstance().EnableDynamicIcon(bundleName, moduleName); } else { - ret = extResourceManager->EnableDynamicIcon(bundleName, moduleName, option.userId, option.appIndex); + ret = ExtendResourceManagerClient::GetInstance().EnableDynamicIcon( + bundleName, moduleName, option.userId, option.appIndex); } if (ret != ERR_OK) { APP_LOGE("EnableDynamicIcon failed"); @@ -2765,17 +2756,11 @@ napi_value EnableDynamicIcon(napi_env env, napi_callback_info info) ErrCode InnerDisableDynamicIcon(const std::string &bundleName, const BundleOption &option) { - auto extResourceManager = CommonFunc::GetExtendResourceManager(); - if (extResourceManager == nullptr) { - APP_LOGE("extResourceManager is null"); - return ERROR_BUNDLE_SERVICE_EXCEPTION; - } - ErrCode ret = ERR_OK; if (option.isDefault) { - ret = extResourceManager->DisableDynamicIcon(bundleName); + ret = ExtendResourceManagerClient::GetInstance().DisableDynamicIcon(bundleName); } else { - ret = extResourceManager->DisableDynamicIcon(bundleName, option.userId, option.appIndex); + ret = ExtendResourceManagerClient::GetInstance().DisableDynamicIcon(bundleName, option.userId, option.appIndex); } if (ret != ERR_OK) { APP_LOGE("DisableDynamicIcon failed"); @@ -2852,12 +2837,7 @@ napi_value DisableDynamicIcon(napi_env env, napi_callback_info info) ErrCode InnerGetDynamicIcon(const std::string &bundleName, std::string &moduleName) { - auto extResourceManager = CommonFunc::GetExtendResourceManager(); - if (extResourceManager == nullptr) { - APP_LOGE("extResourceManager is null"); - return ERROR_BUNDLE_SERVICE_EXCEPTION; - } - ErrCode ret = extResourceManager->GetDynamicIcon(bundleName, moduleName); + ErrCode ret = ExtendResourceManagerClient::GetInstance().GetDynamicIcon(bundleName, moduleName); if (ret != ERR_OK) { APP_LOGE_NOFUNC("GetDynamicIcon failed"); } @@ -5866,12 +5846,7 @@ napi_value MigrateData(napi_env env, napi_callback_info info) ErrCode InnerGetAllDynamicIconInfo(const int32_t userId, std::vector &dynamicIconInfos) { - auto extResourceManager = CommonFunc::GetExtendResourceManager(); - if (extResourceManager == nullptr) { - APP_LOGE("extResourceManager is null"); - return ERROR_BUNDLE_SERVICE_EXCEPTION; - } - ErrCode ret = extResourceManager->GetAllDynamicIconInfo(userId, dynamicIconInfos); + ErrCode ret = ExtendResourceManagerClient::GetInstance().GetAllDynamicIconInfo(userId, dynamicIconInfos); if (ret != ERR_OK) { APP_LOGE_NOFUNC("GetDynamicIcon failed %{public}d", ret); } @@ -5948,12 +5923,7 @@ napi_value GetAllDynamicIconInfo(napi_env env, napi_callback_info info) ErrCode InnerGetDynamicIconInfo(const std::string &bundleName, std::vector &dynamicIconInfos) { - auto extResourceManager = CommonFunc::GetExtendResourceManager(); - if (extResourceManager == nullptr) { - APP_LOGE("extResourceManager is null"); - return ERROR_BUNDLE_SERVICE_EXCEPTION; - } - ErrCode ret = extResourceManager->GetDynamicIconInfo(bundleName, dynamicIconInfos); + ErrCode ret = ExtendResourceManagerClient::GetInstance().GetDynamicIconInfo(bundleName, dynamicIconInfos); if (ret != ERR_OK) { APP_LOGE_NOFUNC("-n %{public}s GetDynamicIcon failed %{public}d", bundleName.c_str(), ret); } diff --git a/interfaces/kits/js/common/common_func.cpp b/interfaces/kits/js/common/common_func.cpp index 0bf36fce63ae643d15c4028ba1d602fa33dc4f64..afd532e90dd2cc39dda07a91eba3d324f91cf3ad 100644 --- a/interfaces/kits/js/common/common_func.cpp +++ b/interfaces/kits/js/common/common_func.cpp @@ -491,16 +491,6 @@ sptr CommonFunc::GetBundleInstaller() return iBundleMgr->GetBundleInstaller(); } -sptr CommonFunc::GetExtendResourceManager() -{ - auto iBundleMgr = GetBundleMgr(); - if (iBundleMgr == nullptr) { - APP_LOGE("can not get iBundleMgr"); - return nullptr; - } - return iBundleMgr->GetExtendResourceManager(); -} - std::string CommonFunc::GetStringFromNAPI(napi_env env, napi_value value) { napi_valuetype valueType = napi_undefined; diff --git a/interfaces/kits/js/common/common_func.h b/interfaces/kits/js/common/common_func.h index bcd702c4b9848ee021a4faf5e730ad8972578d2d..b24ed51c7fdf31f17e8c7853b757a8bb45702169 100644 --- a/interfaces/kits/js/common/common_func.h +++ b/interfaces/kits/js/common/common_func.h @@ -55,8 +55,6 @@ static sptr GetBundleMgr(); static sptr GetBundleInstaller(); -static sptr GetExtendResourceManager(); - static bool CheckBundleFlagWithPermission(int32_t flag); static bool ParsePropertyArray(napi_env env, napi_value args, const std::string &propertyName, diff --git a/interfaces/kits/js/installer/installer.cpp b/interfaces/kits/js/installer/installer.cpp index 4e27886d7ffc6f704bcc0dac19b5a0828c71586e..28f457bd8748087e5297bda57e8c86d750953d4c 100644 --- a/interfaces/kits/js/installer/installer.cpp +++ b/interfaces/kits/js/installer/installer.cpp @@ -25,6 +25,7 @@ #include "bundle_mgr_proxy.h" #include "business_error.h" #include "common_func.h" +#include "extend_resource_manager_client.h" #include "if_system_ability_manager.h" #include "installer_callback.h" #include "napi_arg.h" @@ -1479,20 +1480,14 @@ napi_value UninstallAndRecover(napi_env env, napi_callback_info info) ErrCode InnerAddExtResource( const std::string &bundleName, const std::vector &filePaths) { - auto extResourceManager = CommonFunc::GetExtendResourceManager(); - if (extResourceManager == nullptr) { - APP_LOGE("extResourceManager is null"); - return ERROR_BUNDLE_SERVICE_EXCEPTION; - } - std::vector destFiles; - ErrCode ret = extResourceManager->CopyFiles(filePaths, destFiles); + ErrCode ret = ExtendResourceManagerClient::GetInstance().CopyFiles(filePaths, destFiles); if (ret != ERR_OK) { APP_LOGE("CopyFiles failed"); return CommonFunc::ConvertErrCode(ret); } - ret = extResourceManager->AddExtResource(bundleName, destFiles); + ret = ExtendResourceManagerClient::GetInstance().AddExtResource(bundleName, destFiles); if (ret != ERR_OK) { APP_LOGE("AddExtResource failed"); } @@ -1576,13 +1571,7 @@ napi_value AddExtResource(napi_env env, napi_callback_info info) ErrCode InnerRemoveExtResource( const std::string &bundleName, const std::vector &moduleNames) { - auto extResourceManager = CommonFunc::GetExtendResourceManager(); - if (extResourceManager == nullptr) { - APP_LOGE("extResourceManager is null"); - return ERROR_BUNDLE_SERVICE_EXCEPTION; - } - - ErrCode ret = extResourceManager->RemoveExtResource(bundleName, moduleNames); + ErrCode ret = ExtendResourceManagerClient::GetInstance().RemoveExtResource(bundleName, moduleNames); if (ret != ERR_OK) { APP_LOGE("RemoveExtResource failed"); } diff --git a/services/bundlemgr/include/extend_resource/extend_resource_manager_host_impl.h b/services/bundlemgr/include/extend_resource/extend_resource_manager_host_impl.h index ca5748b6f5521bbf53866c052f77782c30c5dba8..8b0ae97d8056e4d14d9877638aaa0759702d82f6 100644 --- a/services/bundlemgr/include/extend_resource/extend_resource_manager_host_impl.h +++ b/services/bundlemgr/include/extend_resource/extend_resource_manager_host_impl.h @@ -16,41 +16,40 @@ #ifndef FOUNDATION_BUNDLEMANAGER_BUNDLE_FRAMEWORK_SERVICE_BUNDLEMGR_INCLUDE_EXTEND_RESOURCE_MANAGER_HOST_IMPL_H #define FOUNDATION_BUNDLEMANAGER_BUNDLE_FRAMEWORK_SERVICE_BUNDLEMGR_INCLUDE_EXTEND_RESOURCE_MANAGER_HOST_IMPL_H -#include "extend_resource_manager_host.h" +#include "extend_resource_manager_stub.h" #include "inner_bundle_info.h" namespace OHOS { namespace AppExecFwk { -class ExtendResourceManagerHostImpl : public ExtendResourceManagerHost { +class ExtendResourceManagerHostImpl : public ExtendResourceManagerStub { public: ExtendResourceManagerHostImpl(); virtual ~ExtendResourceManagerHostImpl(); + virtual int32_t CallbackEnter([[maybe_unused]] uint32_t code) override; + virtual int32_t CallbackExit([[maybe_unused]] uint32_t code, [[maybe_unused]] int32_t result) override; + ErrCode AddExtResource( - const std::string &bundleName, const std::vector &filePaths) override; + const std::string &bundleName, const std::vector &filePaths, int32_t &funcResult) override; ErrCode RemoveExtResource( - const std::string &bundleName, const std::vector &moduleNames) override; + const std::string &bundleName, const std::vector &moduleNames, int32_t &funcResult) override; ErrCode GetExtResource( - const std::string &bundleName, std::vector &moduleNames) override; - ErrCode EnableDynamicIcon( - const std::string &bundleName, const std::string &moduleName) override; + const std::string &bundleName, std::vector &moduleNames, int32_t &funcResult) override; ErrCode EnableDynamicIcon( const std::string &bundleName, const std::string &moduleName, - const int32_t userId, const int32_t appIndex) override; - ErrCode DisableDynamicIcon(const std::string &bundleName) override; + const int32_t userId, const int32_t appIndex, int32_t &funcResult) override; ErrCode DisableDynamicIcon(const std::string &bundleName, - const int32_t userId, const int32_t appIndex) override; - ErrCode GetDynamicIcon(const std::string &bundleName, std::string &moduleName) override; - ErrCode GetDynamicIcon( - const std::string &bundleName, const int32_t userId, const int32_t appIndex, std::string &moduleName) override; - - ErrCode CreateFd(const std::string &fileName, int32_t &fd, std::string &path) override; + const int32_t userId, const int32_t appIndex, int32_t &funcResult) override; + ErrCode GetDynamicIcon(const std::string &bundleName, const int32_t userId, + const int32_t appIndex, std::string &moduleName, int32_t &funcResult) override; - ErrCode GetAllDynamicIconInfo(std::vector &dynamicInfos) override; + ErrCode CreateFd(const std::string &fileName, int32_t &fd, std::string &path, int32_t &funcResult) override; - ErrCode GetAllDynamicIconInfo(const int32_t userId, std::vector &dynamicInfos) override; + ErrCode GetAllDynamicIconInfo( + const int32_t userId, std::vector &dynamicInfos, int32_t &funcResult) override; - ErrCode GetDynamicIconInfo(const std::string &bundleName, std::vector &dynamicInfos) override; + ErrCode GetDynamicIconInfo( + const std::string &bundleName, std::vector &dynamicInfos, int32_t &funcResult) override; private: ErrCode BeforeAddExtResource( @@ -97,6 +96,8 @@ private: bool IsNeedUpdateBundleResourceInfo(const std::string &bundleName, const int32_t userId); bool CheckAcrossUserPermission(const int32_t userId); bool CheckWhetherDynamicIconNeedProcess(const std::string &bundleName, const int32_t userId); + void ProcessDisableDynamicIcon(const std::string &bundleName, const InnerBundleInfo &info, + const int32_t userId, const int32_t appIndex, int32_t &funcResult); std::atomic id_ = 0; }; diff --git a/services/bundlemgr/src/extend_resource/extend_resource_manager_host_impl.cpp b/services/bundlemgr/src/extend_resource/extend_resource_manager_host_impl.cpp index b642c0714c33fc20579421751142cc50da417470..8acf544c5633c02c86dd20cba1399e99d6847034 100644 --- a/services/bundlemgr/src/extend_resource/extend_resource_manager_host_impl.cpp +++ b/services/bundlemgr/src/extend_resource/extend_resource_manager_host_impl.cpp @@ -17,6 +17,7 @@ #include "account_helper.h" #include "bundle_constants.h" +#include "bundle_memory_guard.h" #include "bundle_mgr_service.h" #include "bundle_parser.h" #include "bundle_permission_mgr.h" @@ -94,13 +95,31 @@ ExtendResourceManagerHostImpl::~ExtendResourceManagerHostImpl() APP_LOGI("destroy ExtendResourceManagerHostImpl"); } +int32_t ExtendResourceManagerHostImpl::CallbackEnter([[maybe_unused]] uint32_t code) +{ + BundleMemoryGuard::SetBundleMemoryGuard(); + return ERR_OK; +} +int32_t ExtendResourceManagerHostImpl::CallbackExit([[maybe_unused]] uint32_t code, [[maybe_unused]] int32_t result) +{ + BundleMemoryGuard::ClearBundleMemoryGuard(); + return ERR_OK; +} + ErrCode ExtendResourceManagerHostImpl::AddExtResource( - const std::string &bundleName, const std::vector &filePaths) + const std::string &bundleName, const std::vector &filePaths, int32_t &funcResult) { - ErrCode ret = BeforeAddExtResource(bundleName, filePaths); - CHECK_RESULT(ret, "BeforeAddExtResource failed %{public}d"); - ret = ProcessAddExtResource(bundleName, filePaths); - CHECK_RESULT(ret, "InnerEnableDynamicIcon failed %{public}d"); + funcResult = BeforeAddExtResource(bundleName, filePaths); + if (funcResult != ERR_OK) { + APP_LOGE("BeforeAddExtResource failed %{public}d", funcResult); + return ERR_OK; + } + funcResult = ProcessAddExtResource(bundleName, filePaths); + if (funcResult != ERR_OK) { + APP_LOGE("InnerEnableDynamicIcon failed %{public}d", funcResult); + return ERR_OK; + } + funcResult = ERR_OK; return ERR_OK; } @@ -313,33 +332,41 @@ void ExtendResourceManagerHostImpl::RollBack(const std::vector &fil } ErrCode ExtendResourceManagerHostImpl::RemoveExtResource( - const std::string &bundleName, const std::vector &moduleNames) + const std::string &bundleName, const std::vector &moduleNames, int32_t &funcResult) { if (bundleName.empty()) { APP_LOGE("fail to RemoveExtResource due to bundleName is empty"); - return ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; + funcResult = ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; + return ERR_OK; } if (moduleNames.empty()) { APP_LOGE("fail to RemoveExtResource due to moduleName is empty"); - return ERR_EXT_RESOURCE_MANAGER_REMOVE_EXT_RESOURCE_FAILED; + funcResult = ERR_EXT_RESOURCE_MANAGER_REMOVE_EXT_RESOURCE_FAILED; + return ERR_OK; } if (!BundlePermissionMgr::IsSystemApp()) { APP_LOGE("Non-system app calling system api"); - return ERR_BUNDLE_MANAGER_SYSTEM_API_DENIED; + funcResult = ERR_BUNDLE_MANAGER_SYSTEM_API_DENIED; + return ERR_OK; } if (!BundlePermissionMgr::VerifyCallingPermissionsForAll({ Constants::PERMISSION_INSTALL_BUNDLE, ServiceConstants::PERMISSION_UNINSTALL_BUNDLE})) { APP_LOGE("verify permission failed"); - return ERR_APPEXECFWK_PERMISSION_DENIED; + funcResult = ERR_APPEXECFWK_PERMISSION_DENIED; + return ERR_OK; } std::vector extendResourceInfos; - ErrCode ret = CheckModuleExist(bundleName, moduleNames, extendResourceInfos); - CHECK_RESULT(ret, "Check mpdule exist failed %{public}d"); + funcResult = CheckModuleExist(bundleName, moduleNames, extendResourceInfos); + if (funcResult != ERR_OK) { + APP_LOGE("Check module exist failed %{public}d", funcResult); + return ERR_OK; + } InnerRemoveExtendResources(bundleName, moduleNames, extendResourceInfos); + funcResult = ERR_OK; return ERR_OK; } @@ -380,94 +407,104 @@ ErrCode ExtendResourceManagerHostImpl::CheckModuleExist( } ErrCode ExtendResourceManagerHostImpl::GetExtResource( - const std::string &bundleName, std::vector &moduleNames) + const std::string &bundleName, std::vector &moduleNames, int32_t &funcResult) { if (bundleName.empty()) { APP_LOGE("fail to GetExtResource due to param is empty"); - return ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; + funcResult = ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; + return ERR_OK; } if (!BundlePermissionMgr::IsSystemApp()) { APP_LOGE("Non-system app calling system api"); - return ERR_BUNDLE_MANAGER_SYSTEM_API_DENIED; + funcResult = ERR_BUNDLE_MANAGER_SYSTEM_API_DENIED; + return ERR_OK; } if (!BundlePermissionMgr::VerifyCallingPermissionsForAll({ Constants::PERMISSION_GET_BUNDLE_INFO_PRIVILEGED, Constants::PERMISSION_GET_BUNDLE_INFO})) { APP_LOGE("verify permission failed"); - return ERR_APPEXECFWK_PERMISSION_DENIED; + funcResult = ERR_APPEXECFWK_PERMISSION_DENIED; + return ERR_OK; } InnerBundleInfo info; if (!GetInnerBundleInfo(bundleName, info)) { APP_LOGE("GetInnerBundleInfo failed %{public}s", bundleName.c_str()); - return ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; + funcResult = ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; + return ERR_OK; } std::map extendResourceInfos = info.GetExtendResourceInfos(); if (extendResourceInfos.empty()) { APP_LOGE("%{public}s no extend Resources", bundleName.c_str()); - return ERR_EXT_RESOURCE_MANAGER_GET_EXT_RESOURCE_FAILED; + funcResult = ERR_EXT_RESOURCE_MANAGER_GET_EXT_RESOURCE_FAILED; + return ERR_OK; } for (const auto &extendResourceInfo : extendResourceInfos) { moduleNames.emplace_back(extendResourceInfo.first); } - + funcResult = ERR_OK; return ERR_OK; } -ErrCode ExtendResourceManagerHostImpl::EnableDynamicIcon( - const std::string &bundleName, const std::string &moduleName) -{ - return EnableDynamicIcon(bundleName, moduleName, Constants::UNSPECIFIED_USERID, Constants::DEFAULT_APP_INDEX); -} - -ErrCode ExtendResourceManagerHostImpl::EnableDynamicIcon( - const std::string &bundleName, const std::string &moduleName, const int32_t userId, const int32_t appIndex) +ErrCode ExtendResourceManagerHostImpl::EnableDynamicIcon(const std::string &bundleName, + const std::string &moduleName, const int32_t userId, const int32_t appIndex, int32_t &funcResult) { APP_LOGI("EnableDynamicIcon %{public}s, %{public}s, %{public}d, %{public}d", bundleName.c_str(), moduleName.c_str(), userId, appIndex); if (bundleName.empty()) { APP_LOGE("fail to EnableDynamicIcon due to bundleName is empty"); - return ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; + funcResult = ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; + return ERR_OK; } if (moduleName.empty()) { APP_LOGE("fail to EnableDynamicIcon due to moduleName is empty"); - return ERR_BUNDLE_MANAGER_MODULE_NOT_EXIST; + funcResult = ERR_BUNDLE_MANAGER_MODULE_NOT_EXIST; + return ERR_OK; } if (!BundlePermissionMgr::IsSystemApp()) { APP_LOGE("Non-system app calling system api"); - return ERR_BUNDLE_MANAGER_SYSTEM_API_DENIED; + funcResult = ERR_BUNDLE_MANAGER_SYSTEM_API_DENIED; + return ERR_OK; } if (!BundlePermissionMgr::VerifyCallingPermissionForAll(Constants::PERMISSION_ACCESS_DYNAMIC_ICON)) { APP_LOGE("verify permission failed"); - return ERR_APPEXECFWK_PERMISSION_DENIED; + funcResult = ERR_APPEXECFWK_PERMISSION_DENIED; + return ERR_OK; } if ((userId != Constants::UNSPECIFIED_USERID)) { if (!CheckAcrossUserPermission(userId)) { APP_LOGE("verify permission across local account failed"); - return ERR_APPEXECFWK_PERMISSION_DENIED; + funcResult = ERR_APPEXECFWK_PERMISSION_DENIED; + return ERR_OK; } } ExtendResourceInfo extendResourceInfo; - ErrCode ret = GetExtendResourceInfo(bundleName, moduleName, extendResourceInfo, userId, appIndex); - CHECK_RESULT(ret, "GetExtendResourceInfo failed %{public}d"); + funcResult = GetExtendResourceInfo(bundleName, moduleName, extendResourceInfo, userId, appIndex); + if (funcResult != ERR_OK) { + APP_LOGE("GetExtendResourceInfo failed %{public}d", funcResult); + return ERR_OK; + } if (!CheckWhetherDynamicIconNeedProcess(bundleName, userId)) { APP_LOGE("%{public}s enable failed due to existing custom themes", bundleName.c_str()); - return ERR_EXT_RESOURCE_MANAGER_ENABLE_DYNAMIC_ICON_FAILED_DUE_TO_EXISTING_CUSTOM_THEMES; + funcResult = ERR_EXT_RESOURCE_MANAGER_ENABLE_DYNAMIC_ICON_FAILED_DUE_TO_EXISTING_CUSTOM_THEMES; + return ERR_OK; } if (!ParseBundleResource(bundleName, extendResourceInfo, userId, appIndex)) { APP_LOGE("%{public}s no extend Resources", bundleName.c_str()); - return ERR_EXT_RESOURCE_MANAGER_ENABLE_DYNAMIC_ICON_FAILED; + funcResult = ERR_EXT_RESOURCE_MANAGER_ENABLE_DYNAMIC_ICON_FAILED; + return ERR_OK; } SaveCurDynamicIcon(bundleName, moduleName, userId, appIndex); SendBroadcast(bundleName, true, userId, appIndex); + funcResult = ERR_OK; return ERR_OK; } @@ -563,47 +600,58 @@ ErrCode ExtendResourceManagerHostImpl::GetExtendResourceInfo(const std::string & return ERR_OK; } -ErrCode ExtendResourceManagerHostImpl::DisableDynamicIcon(const std::string &bundleName) -{ - return DisableDynamicIcon(bundleName, Constants::UNSPECIFIED_USERID, Constants::DEFAULT_APP_INDEX); -} - ErrCode ExtendResourceManagerHostImpl::DisableDynamicIcon(const std::string &bundleName, - const int32_t userId, const int32_t appIndex) + const int32_t userId, const int32_t appIndex, int32_t &funcResult) { APP_LOGI("DisableDynamicIcon %{public}s userId %{public}d appIndex %{public}d", bundleName.c_str(), userId, appIndex); if (bundleName.empty()) { APP_LOGE("fail to DisableDynamicIcon due to param is empty"); - return ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; + funcResult = ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; + return ERR_OK; } if (!BundlePermissionMgr::IsSystemApp()) { APP_LOGE("Non-system app calling system api"); - return ERR_BUNDLE_MANAGER_SYSTEM_API_DENIED; + funcResult = ERR_BUNDLE_MANAGER_SYSTEM_API_DENIED; + return ERR_OK; } if (!BundlePermissionMgr::VerifyCallingPermissionForAll( Constants::PERMISSION_ACCESS_DYNAMIC_ICON)) { APP_LOGE("verify permission failed"); - return ERR_APPEXECFWK_PERMISSION_DENIED; + funcResult = ERR_APPEXECFWK_PERMISSION_DENIED; + return ERR_OK; } if ((userId != Constants::UNSPECIFIED_USERID)) { if (!CheckAcrossUserPermission(userId)) { APP_LOGE("verify permission across local account failed"); - return ERR_APPEXECFWK_PERMISSION_DENIED; + funcResult = ERR_APPEXECFWK_PERMISSION_DENIED; + return ERR_OK; } } InnerBundleInfo info; if (!GetInnerBundleInfo(bundleName, info)) { APP_LOGE("GetInnerBundleInfo failed %{public}s", bundleName.c_str()); - return ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; + funcResult = ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; + return ERR_OK; } - ErrCode ret = CheckParamInvalid(info, userId, appIndex); - CHECK_RESULT(ret, "check user or appIndex failed %{public}d"); + funcResult = CheckParamInvalid(info, userId, appIndex); + if (funcResult != ERR_OK) { + APP_LOGE("check user or appIndex failed %{public}d", funcResult); + return ERR_OK; + } + + ProcessDisableDynamicIcon(bundleName, info, userId, appIndex, funcResult); + return ERR_OK; +} +void ExtendResourceManagerHostImpl::ProcessDisableDynamicIcon( + const std::string &bundleName, const InnerBundleInfo &info, + const int32_t userId, const int32_t appIndex, int32_t &funcResult) +{ std::string curDynamicModule = info.GetCurDynamicIconModule(userId, appIndex); std::vector dynamicIconInfos; if (curDynamicModule.empty() && (userId == Constants::UNSPECIFIED_USERID)) { @@ -611,7 +659,8 @@ ErrCode ExtendResourceManagerHostImpl::DisableDynamicIcon(const std::string &bun } if (curDynamicModule.empty() && dynamicIconInfos.empty()) { APP_LOGE("%{public}s -u %{public}d no enabled dynamic icon", bundleName.c_str(), userId); - return ERR_EXT_RESOURCE_MANAGER_DISABLE_DYNAMIC_ICON_FAILED; + funcResult = ERR_EXT_RESOURCE_MANAGER_DISABLE_DYNAMIC_ICON_FAILED; + return; } SaveCurDynamicIcon(bundleName, "", userId, appIndex); @@ -619,7 +668,7 @@ ErrCode ExtendResourceManagerHostImpl::DisableDynamicIcon(const std::string &bun (void)ResetBundleResourceIcon(bundleName, userId, appIndex); } SendBroadcast(bundleName, false, userId, appIndex); - return ERR_OK; + funcResult = ERR_OK; } bool ExtendResourceManagerHostImpl::ResetBundleResourceIcon(const std::string &bundleName, @@ -662,38 +711,39 @@ bool ExtendResourceManagerHostImpl::ResetBundleResourceIcon(const std::string &b #endif } -ErrCode ExtendResourceManagerHostImpl::GetDynamicIcon( - const std::string &bundleName, std::string &moduleName) -{ - return GetDynamicIcon(bundleName, Constants::UNSPECIFIED_USERID, Constants::DEFAULT_APP_INDEX, moduleName); -} - -ErrCode ExtendResourceManagerHostImpl::GetDynamicIcon( - const std::string &bundleName, const int32_t userId, const int32_t appIndex, std::string &moudleName) +ErrCode ExtendResourceManagerHostImpl::GetDynamicIcon(const std::string &bundleName, + const int32_t userId, const int32_t appIndex, std::string &moudleName, int32_t &funcResult) { if (bundleName.empty()) { APP_LOGE("fail to GetDynamicIcon due to param is empty"); - return ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; + funcResult = ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; + return ERR_OK; } if (!BundlePermissionMgr::IsSystemApp()) { APP_LOGE("Non-system app calling system api"); - return ERR_BUNDLE_MANAGER_SYSTEM_API_DENIED; + funcResult = ERR_BUNDLE_MANAGER_SYSTEM_API_DENIED; + return ERR_OK; } if (!BundlePermissionMgr::VerifyCallingPermissionsForAll({ Constants::PERMISSION_GET_BUNDLE_INFO_PRIVILEGED, Constants::PERMISSION_GET_BUNDLE_INFO})) { APP_LOGE("verify permission failed"); - return ERR_APPEXECFWK_PERMISSION_DENIED; + funcResult = ERR_APPEXECFWK_PERMISSION_DENIED; + return ERR_OK; } InnerBundleInfo info; if (!GetInnerBundleInfo(bundleName, info)) { APP_LOGE("GetInnerBundleInfo failed %{public}s", bundleName.c_str()); - return ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; + funcResult = ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST; + return ERR_OK; + } + funcResult = CheckParamInvalid(info, userId, appIndex); + if (funcResult != ERR_OK) { + APP_LOGE("check user or appIndex failed %{public}d", funcResult); + return ERR_OK; } - ErrCode ret = CheckParamInvalid(info, userId, appIndex); - CHECK_RESULT(ret, "check user or appIndex failed %{public}d"); std::string curDynamicModule = info.GetCurDynamicIconModule(userId, appIndex); if (curDynamicModule.empty() && (userId == Constants::UNSPECIFIED_USERID)) { @@ -703,49 +753,59 @@ ErrCode ExtendResourceManagerHostImpl::GetDynamicIcon( } if (curDynamicModule.empty()) { APP_LOGE("%{public}s no enabled dynamic icon", bundleName.c_str()); - return ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED; + funcResult = ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED; + return ERR_OK; } moudleName = curDynamicModule; + funcResult = ERR_OK; return ERR_OK; } ErrCode ExtendResourceManagerHostImpl::CreateFd( - const std::string &fileName, int32_t &fd, std::string &path) + const std::string &fileName, int32_t &fd, std::string &path, int32_t &funcResult) { if (fileName.empty()) { APP_LOGE("fail to CreateFd due to param is empty"); - return ERR_EXT_RESOURCE_MANAGER_CREATE_FD_FAILED; + funcResult = ERR_EXT_RESOURCE_MANAGER_CREATE_FD_FAILED; + return ERR_OK; } if (!BundlePermissionMgr::IsSystemApp()) { APP_LOGE("Non-system app calling system api"); - return ERR_BUNDLE_MANAGER_SYSTEM_API_DENIED; + funcResult = ERR_BUNDLE_MANAGER_SYSTEM_API_DENIED; + return ERR_OK; } if (!BundlePermissionMgr::VerifyCallingPermissionForAll( Constants::PERMISSION_INSTALL_BUNDLE)) { APP_LOGE("verify permission failed"); - return ERR_APPEXECFWK_PERMISSION_DENIED; + funcResult = ERR_APPEXECFWK_PERMISSION_DENIED; + return ERR_OK; } if (!BundleUtil::CheckFileType(fileName, EXT_RESOURCE_FILE_SUFFIX)) { APP_LOGE("not hsp file"); - return ERR_EXT_RESOURCE_MANAGER_CREATE_FD_FAILED; + funcResult = ERR_EXT_RESOURCE_MANAGER_CREATE_FD_FAILED; + return ERR_OK; } if (!IsFileNameValid(fileName)) { APP_LOGE("invalid fileName"); - return ERR_EXT_RESOURCE_MANAGER_CREATE_FD_FAILED; + funcResult = ERR_EXT_RESOURCE_MANAGER_CREATE_FD_FAILED; + return ERR_OK; } std::string tmpDir = BundleUtil::CreateInstallTempDir( ++id_, DirType::EXT_RESOURCE_FILE_DIR); if (tmpDir.empty()) { APP_LOGE("create tmp dir failed"); - return ERR_EXT_RESOURCE_MANAGER_CREATE_FD_FAILED; + funcResult = ERR_EXT_RESOURCE_MANAGER_CREATE_FD_FAILED; + return ERR_OK; } path = tmpDir + fileName; if ((fd = BundleUtil::CreateFileDescriptor(path, 0)) < 0) { APP_LOGE("create file descriptor failed"); BundleUtil::DeleteDir(tmpDir); - return ERR_EXT_RESOURCE_MANAGER_CREATE_FD_FAILED; + funcResult = ERR_EXT_RESOURCE_MANAGER_CREATE_FD_FAILED; + return ERR_OK; } + funcResult = ERR_OK; return ERR_OK; } @@ -781,68 +841,70 @@ ErrCode ExtendResourceManagerHostImpl::CheckParamInvalid(const InnerBundleInfo & return ERR_OK; } -ErrCode ExtendResourceManagerHostImpl::GetAllDynamicIconInfo(std::vector &dynamicInfos) -{ - return GetAllDynamicIconInfo(Constants::UNSPECIFIED_USERID, dynamicInfos); -} - ErrCode ExtendResourceManagerHostImpl::GetAllDynamicIconInfo( - const int32_t userId, std::vector &dynamicInfos) + const int32_t userId, std::vector &dynamicInfos, int32_t &funcResult) { APP_LOGI("get all dynamic info userId %{public}d", userId); if (!BundlePermissionMgr::IsSystemApp()) { APP_LOGE("Non-system app calling system api"); - return ERR_BUNDLE_MANAGER_SYSTEM_API_DENIED; + funcResult = ERR_BUNDLE_MANAGER_SYSTEM_API_DENIED; + return ERR_OK; } if (!BundlePermissionMgr::VerifyCallingPermissionForAll(Constants::PERMISSION_GET_BUNDLE_INFO_PRIVILEGED)) { APP_LOGE("verify permission failed"); - return ERR_APPEXECFWK_PERMISSION_DENIED; + funcResult = ERR_APPEXECFWK_PERMISSION_DENIED; + return ERR_OK; } if (!CheckAcrossUserPermission(userId)) { APP_LOGE("verify permission across local account failed"); - return ERR_APPEXECFWK_PERMISSION_DENIED; + funcResult = ERR_APPEXECFWK_PERMISSION_DENIED; + return ERR_OK; } auto dataMgr = DelayedSingleton::GetInstance()->GetDataMgr(); if (dataMgr == nullptr) { APP_LOGE("Get dataMgr shared_ptr nullptr"); - return ERR_APPEXECFWK_NULL_PTR; + funcResult = ERR_APPEXECFWK_NULL_PTR; + return ERR_OK; } - auto ret = dataMgr->GetAllDynamicIconInfo(userId, dynamicInfos); - if ((ret == ERR_OK) && dynamicInfos.empty()) { - ret = ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED; + funcResult = dataMgr->GetAllDynamicIconInfo(userId, dynamicInfos); + if ((funcResult == ERR_OK) && dynamicInfos.empty()) { + funcResult = ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED; } - if (ret != ERR_OK) { - APP_LOGE("-u %{public}d get all dynamic info failed ret %{public}d", userId, ret); + if (funcResult != ERR_OK) { + APP_LOGE("-u %{public}d get all dynamic info failed ret %{public}d", userId, funcResult); } - return ret; + return ERR_OK; } ErrCode ExtendResourceManagerHostImpl::GetDynamicIconInfo(const std::string &bundleName, - std::vector &dynamicInfos) + std::vector &dynamicInfos, int32_t &funcResult) { APP_LOGI("get dynamic info -n %{public}s", bundleName.c_str()); if (!BundlePermissionMgr::IsSystemApp()) { APP_LOGE("Non-system app calling system api"); - return ERR_BUNDLE_MANAGER_SYSTEM_API_DENIED; + funcResult = ERR_BUNDLE_MANAGER_SYSTEM_API_DENIED; + return ERR_OK; } if (!BundlePermissionMgr::VerifyCallingPermissionForAll(Constants::PERMISSION_GET_BUNDLE_INFO_PRIVILEGED) || !BundlePermissionMgr::VerifyCallingPermissionForAll(Constants::PERMISSION_BMS_INTERACT_ACROSS_LOCAL_ACCOUNTS)) { APP_LOGE("verify permission failed"); - return ERR_APPEXECFWK_PERMISSION_DENIED; + funcResult = ERR_APPEXECFWK_PERMISSION_DENIED; + return ERR_OK; } auto dataMgr = DelayedSingleton::GetInstance()->GetDataMgr(); if (dataMgr == nullptr) { APP_LOGE("Get dataMgr shared_ptr nullptr"); - return ERR_APPEXECFWK_NULL_PTR; + funcResult = ERR_APPEXECFWK_NULL_PTR; + return ERR_OK; } - auto ret = dataMgr->GetDynamicIconInfo(bundleName, dynamicInfos); - if ((ret == ERR_OK) && dynamicInfos.empty()) { - ret = ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED; + funcResult = dataMgr->GetDynamicIconInfo(bundleName, dynamicInfos); + if ((funcResult == ERR_OK) && dynamicInfos.empty()) { + funcResult = ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED; } - if (ret != ERR_OK) { - APP_LOGE("-n %{public}s get dynamic info failed ret %{public}d", bundleName.c_str(), ret); + if (funcResult != ERR_OK) { + APP_LOGE("-n %{public}s get dynamic info failed ret %{public}d", bundleName.c_str(), funcResult); } - return ret; + return ERR_OK; } bool ExtendResourceManagerHostImpl::IsNeedUpdateBundleResourceInfo( diff --git a/services/bundlemgr/test/unittest/bms_bundle_kit_service_test/bms_bundle_data_mgr_test_three.cpp b/services/bundlemgr/test/unittest/bms_bundle_kit_service_test/bms_bundle_data_mgr_test_three.cpp index ee5a9f16ae07e295ee673df4f063435b4a7099c2..0a33443c860efd37d9859cef008ec80d3f70ef23 100644 --- a/services/bundlemgr/test/unittest/bms_bundle_kit_service_test/bms_bundle_data_mgr_test_three.cpp +++ b/services/bundlemgr/test/unittest/bms_bundle_kit_service_test/bms_bundle_data_mgr_test_three.cpp @@ -325,6 +325,8 @@ const std::string ENTRY = "entry"; const std::string FEATURE = "feature"; constexpr const char* OVERLAY_STATE = "overlayState"; const std::string CALLER_NAME_UT = "ut"; +constexpr int8_t UNSPECIFIED_USERID = -2; +constexpr int8_t DEFAULT_APP_INDEX = 0; } // namespace struct Param { @@ -2559,7 +2561,7 @@ HWTEST_F(BmsBundleDataMgrTest3, GetCommonEventData_0100, Function | MediumTest | std::string bundleName; bool isEnableDynamicIcon = false; ASSERT_NE(commonEventMgr_, nullptr); - commonEventMgr_->NotifyDynamicIconEvent(bundleName, isEnableDynamicIcon, -2, 0); + commonEventMgr_->NotifyDynamicIconEvent(bundleName, isEnableDynamicIcon, UNSPECIFIED_USERID, DEFAULT_APP_INDEX); commonEventMgr_->commonEventMap_.clear(); NotifyType type = (NotifyType)14; diff --git a/services/bundlemgr/test/unittest/bms_bundle_permission_grant_test/bms_bundle_permission_false_test.cpp b/services/bundlemgr/test/unittest/bms_bundle_permission_grant_test/bms_bundle_permission_false_test.cpp index 5a4b2eeeb15f9e2237d77de6600b0c417359aaa6..f5ac3516e30eab4c5950a95109e21d5dd3776518 100644 --- a/services/bundlemgr/test/unittest/bms_bundle_permission_grant_test/bms_bundle_permission_false_test.cpp +++ b/services/bundlemgr/test/unittest/bms_bundle_permission_grant_test/bms_bundle_permission_false_test.cpp @@ -56,6 +56,8 @@ const int32_t WAIT_TIME = 5; // init mocked bms constexpr int PERMISSION_NOT_GRANTED = -1; const int32_t APP_INDEX = 0; const uint32_t ACCESS_TOKEN_ID = 1765341; +constexpr int8_t UNSPECIFIED_USERID = -2; +constexpr int8_t DEFAULT_APP_INDEX = 0; } // namespace class BmsBundlePermissionFalseTest : public testing::Test { @@ -1837,8 +1839,9 @@ HWTEST_F(BmsBundlePermissionFalseTest, ExtendResourceTest_0001, Function | Small EXPECT_NE(proxy, nullptr); if (proxy != nullptr) { std::string moduleName; - auto ret = proxy->GetDynamicIcon(BUNDLE_NAME, moduleName); - EXPECT_EQ(ret, ERR_APPEXECFWK_PERMISSION_DENIED); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + proxy->GetDynamicIcon(BUNDLE_NAME, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, moduleName, funcResult); + EXPECT_EQ(funcResult, ERR_APPEXECFWK_PERMISSION_DENIED); } } @@ -1852,8 +1855,9 @@ HWTEST_F(BmsBundlePermissionFalseTest, ExtendResourceTest_0002, Function | Small auto proxy = bundleMgrHostImpl_->GetExtendResourceManager(); EXPECT_NE(proxy, nullptr); if (proxy != nullptr) { - auto ret = proxy->EnableDynamicIcon(BUNDLE_NAME, MOUDLE_NAME); - EXPECT_EQ(ret, ERR_APPEXECFWK_PERMISSION_DENIED); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + proxy->EnableDynamicIcon(BUNDLE_NAME, MOUDLE_NAME, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_APPEXECFWK_PERMISSION_DENIED); } } @@ -1867,8 +1871,9 @@ HWTEST_F(BmsBundlePermissionFalseTest, ExtendResourceTest_0003, Function | Small auto proxy = bundleMgrHostImpl_->GetExtendResourceManager(); EXPECT_NE(proxy, nullptr); if (proxy != nullptr) { - auto ret = proxy->DisableDynamicIcon(BUNDLE_NAME); - EXPECT_EQ(ret, ERR_APPEXECFWK_PERMISSION_DENIED); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + proxy->DisableDynamicIcon(BUNDLE_NAME, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_APPEXECFWK_PERMISSION_DENIED); } } @@ -1883,8 +1888,9 @@ HWTEST_F(BmsBundlePermissionFalseTest, ExtendResourceTest_0004, Function | Small EXPECT_NE(proxy, nullptr); if (proxy != nullptr) { std::vector iconInfos; - auto ret = proxy->GetAllDynamicIconInfo(iconInfos); - EXPECT_EQ(ret, ERR_APPEXECFWK_PERMISSION_DENIED); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + proxy->GetAllDynamicIconInfo(UNSPECIFIED_USERID, iconInfos, funcResult); + EXPECT_EQ(funcResult, ERR_APPEXECFWK_PERMISSION_DENIED); EXPECT_TRUE(iconInfos.empty()); } } @@ -1900,8 +1906,9 @@ HWTEST_F(BmsBundlePermissionFalseTest, ExtendResourceTest_0005, Function | Small EXPECT_NE(proxy, nullptr); if (proxy != nullptr) { std::vector iconInfos; - auto ret = proxy->GetDynamicIconInfo(BUNDLE_NAME, iconInfos); - EXPECT_EQ(ret, ERR_APPEXECFWK_PERMISSION_DENIED); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + proxy->GetDynamicIconInfo(BUNDLE_NAME, iconInfos, funcResult); + EXPECT_EQ(funcResult, ERR_APPEXECFWK_PERMISSION_DENIED); EXPECT_TRUE(iconInfos.empty()); } } diff --git a/services/bundlemgr/test/unittest/bms_extend_resource_manager_test/BUILD.gn b/services/bundlemgr/test/unittest/bms_extend_resource_manager_test/BUILD.gn index 28a3990aeacfe05f9016d8785c7ec1e20747035d..e8504cb9b32aa8f6bb14c84c8f7a5fd8757448fa 100644 --- a/services/bundlemgr/test/unittest/bms_extend_resource_manager_test/BUILD.gn +++ b/services/bundlemgr/test/unittest/bms_extend_resource_manager_test/BUILD.gn @@ -208,6 +208,6 @@ ohos_unittest("BmsExtendResourceManagerTest") { group("unittest") { testonly = true if (ability_runtime_enable) { - deps = [ ":BmsExtendResourceManagerTest" ] + deps = [ ":BmsExtendResourceManagerTest", ] } } diff --git a/services/bundlemgr/test/unittest/bms_extend_resource_manager_test/bms_extend_resource_manager_test.cpp b/services/bundlemgr/test/unittest/bms_extend_resource_manager_test/bms_extend_resource_manager_test.cpp index 178eb6b5e3c1da316097eaa70324a6b72483dbe1..2bc0becc249eff9cb5889b42bbf5f1524aa7ab63 100644 --- a/services/bundlemgr/test/unittest/bms_extend_resource_manager_test/bms_extend_resource_manager_test.cpp +++ b/services/bundlemgr/test/unittest/bms_extend_resource_manager_test/bms_extend_resource_manager_test.cpp @@ -25,6 +25,7 @@ #include "bundle_resource_process.h" #include "directory_ex.h" #include "dynamic_icon_info.h" +#include "extend_resource_manager_client.h" #include "extend_resource_manager_host_impl.h" #include "installd/installd_service.h" #include "installd_client.h" @@ -65,6 +66,8 @@ const std::string THEME_BUNDLE_NAME_PATH = const std::string THEME_A_ICON_JSON_BUNDLE_NAME = "/data/service/el1/public/themes/20000/a/app/icons/description.json"; const int32_t THEME_TEST_USERID = 20000; +constexpr int8_t UNSPECIFIED_USERID = -2; +constexpr int8_t DEFAULT_APP_INDEX = 0; } // namespace class BmsExtendResourceManagerTest : public testing::Test { @@ -189,25 +192,31 @@ HWTEST_F(BmsExtendResourceManagerTest, ExtResourceTest_0100, Function | SmallTes ExtendResourceManagerHostImpl impl; std::vector filePaths; std::string emptyBundleName; - auto ret = impl.AddExtResource(emptyBundleName, filePaths); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + auto ret = impl.AddExtResource(emptyBundleName, filePaths, funcResult); + EXPECT_EQ(ret, ERR_OK); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); - ret = impl.AddExtResource(BUNDLE_NAME, filePaths); - EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_INVALID_PATH_FAILED); + ret = impl.AddExtResource(BUNDLE_NAME, filePaths, funcResult); + EXPECT_EQ(ret, ERR_OK); + EXPECT_EQ(funcResult, ERR_EXT_RESOURCE_MANAGER_INVALID_PATH_FAILED); filePaths.emplace_back(INVALID_PATH); - ret = impl.AddExtResource(BUNDLE_NAME, filePaths); - EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_INVALID_PATH_FAILED); + ret = impl.AddExtResource(BUNDLE_NAME, filePaths, funcResult); + EXPECT_EQ(ret, ERR_OK); + EXPECT_EQ(funcResult, ERR_EXT_RESOURCE_MANAGER_INVALID_PATH_FAILED); std::vector filePaths2; filePaths.emplace_back(INVALID_SUFFIX); - ret = impl.AddExtResource(BUNDLE_NAME, filePaths2); - EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_INVALID_PATH_FAILED); + ret = impl.AddExtResource(BUNDLE_NAME, filePaths2, funcResult); + EXPECT_EQ(ret, ERR_OK); + EXPECT_EQ(funcResult, ERR_EXT_RESOURCE_MANAGER_INVALID_PATH_FAILED); std::vector filePaths3; filePaths3.emplace_back(INVALID_PREFIX); - ret = impl.AddExtResource(BUNDLE_NAME, filePaths3); - EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_INVALID_PATH_FAILED); + ret = impl.AddExtResource(BUNDLE_NAME, filePaths3, funcResult); + EXPECT_EQ(ret, ERR_OK); + EXPECT_EQ(funcResult, ERR_EXT_RESOURCE_MANAGER_INVALID_PATH_FAILED); } /** @@ -251,15 +260,19 @@ HWTEST_F(BmsExtendResourceManagerTest, ExtResourceTest_0400, Function | SmallTes ExtendResourceManagerHostImpl impl; std::string emptyBundleName; std::vector moduleNames; - auto ret = impl.RemoveExtResource(emptyBundleName, moduleNames); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + auto ret = impl.RemoveExtResource(emptyBundleName, moduleNames, funcResult); + EXPECT_EQ(ret, ERR_OK); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); - ret = impl.RemoveExtResource(TEST_BUNDLE, moduleNames); - EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_REMOVE_EXT_RESOURCE_FAILED); + ret = impl.RemoveExtResource(TEST_BUNDLE, moduleNames, funcResult); + EXPECT_EQ(ret, ERR_OK); + EXPECT_EQ(funcResult, ERR_EXT_RESOURCE_MANAGER_REMOVE_EXT_RESOURCE_FAILED); moduleNames.push_back(TEST_MODULE); - ret = impl.RemoveExtResource(TEST_BUNDLE, moduleNames); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + ret = impl.RemoveExtResource(TEST_BUNDLE, moduleNames, funcResult); + EXPECT_EQ(ret, ERR_OK); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); std::vector extResourceInfos; impl.InnerRemoveExtendResources(TEST_BUNDLE, moduleNames, extResourceInfos); @@ -290,11 +303,14 @@ HWTEST_F(BmsExtendResourceManagerTest, ExtResourceTest_0600, Function | SmallTes ExtendResourceManagerHostImpl impl; std::string emptyBundleName; std::vector moduleNames; - auto ret = impl.GetExtResource(emptyBundleName, moduleNames); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + auto ret = impl.GetExtResource(emptyBundleName, moduleNames, funcResult); + EXPECT_EQ(ret, ERR_OK); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); - ret = impl.GetExtResource(TEST_BUNDLE, moduleNames); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + ret = impl.GetExtResource(TEST_BUNDLE, moduleNames, funcResult); + EXPECT_EQ(ret, ERR_OK); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); } /** @@ -386,14 +402,18 @@ HWTEST_F(BmsExtendResourceManagerTest, DynamicIconTest_0100, Function | SmallTes { ExtendResourceManagerHostImpl impl; std::string emptyStr; - auto ret = impl.EnableDynamicIcon(emptyStr, emptyStr); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + auto ret = impl.EnableDynamicIcon(emptyStr, emptyStr, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + EXPECT_EQ(ret, ERR_OK); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); - ret = impl.EnableDynamicIcon(TEST_BUNDLE, emptyStr); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_MODULE_NOT_EXIST); + ret = impl.EnableDynamicIcon(TEST_BUNDLE, emptyStr, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + EXPECT_EQ(ret, ERR_OK); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_MODULE_NOT_EXIST); - ret = impl.EnableDynamicIcon(TEST_BUNDLE, TEST_MODULE); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + ret = impl.EnableDynamicIcon(TEST_BUNDLE, TEST_MODULE, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + EXPECT_EQ(ret, ERR_OK); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); } /** @@ -405,11 +425,12 @@ HWTEST_F(BmsExtendResourceManagerTest, DynamicIconTest_0200, Function | SmallTes { ExtendResourceManagerHostImpl impl; std::string emptyStr; - auto ret = impl.DisableDynamicIcon(emptyStr); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.DisableDynamicIcon(emptyStr, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); - ret = impl.DisableDynamicIcon(TEST_BUNDLE); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + impl.DisableDynamicIcon(TEST_BUNDLE, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); } /** @@ -422,11 +443,12 @@ HWTEST_F(BmsExtendResourceManagerTest, DynamicIconTest_0300, Function | SmallTes ExtendResourceManagerHostImpl impl; std::string emptyStr; std::string moudleName; - auto ret = impl.GetDynamicIcon(emptyStr, moudleName); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.GetDynamicIcon(emptyStr, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, moudleName, funcResult); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); - ret = impl.GetDynamicIcon(TEST_BUNDLE, moudleName); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + impl.GetDynamicIcon(TEST_BUNDLE, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, moudleName, funcResult); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); } /** @@ -443,12 +465,13 @@ HWTEST_F(BmsExtendResourceManagerTest, DynamicIconTest_0400, Function | SmallTes return; } - auto ret = impl.DisableDynamicIcon(BUNDLE_NAME2); - EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_DISABLE_DYNAMIC_ICON_FAILED); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.DisableDynamicIcon(BUNDLE_NAME2, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_EXT_RESOURCE_MANAGER_DISABLE_DYNAMIC_ICON_FAILED); impl.SaveCurDynamicIcon(BUNDLE_NAME2, TEST_MODULE); - ret = impl.DisableDynamicIcon(BUNDLE_NAME2); - EXPECT_EQ(ret, ERR_OK); + impl.DisableDynamicIcon(BUNDLE_NAME2, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_OK); impl.SaveCurDynamicIcon(BUNDLE_NAME2, ""); } @@ -467,11 +490,12 @@ HWTEST_F(BmsExtendResourceManagerTest, DynamicIconTest_0500, Function | SmallTes } std::string moudleName; - auto ret = impl.GetDynamicIcon(BUNDLE_NAME2, moudleName); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.GetDynamicIcon(BUNDLE_NAME2, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, moudleName, funcResult); EXPECT_TRUE(moudleName.empty()); impl.SaveCurDynamicIcon(BUNDLE_NAME2, TEST_MODULE); - ret = impl.GetDynamicIcon(BUNDLE_NAME2, moudleName); + impl.GetDynamicIcon(BUNDLE_NAME2, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, moudleName, funcResult); EXPECT_FALSE(moudleName.empty()); } @@ -486,10 +510,11 @@ HWTEST_F(BmsExtendResourceManagerTest, CreateFd_0100, Function | SmallTest | Lev std::string fileName; int32_t fd = 0; std::string path = FILE_PATH; - ErrCode code = impl.CreateFd(fileName, fd, path); - EXPECT_EQ(code, ERR_EXT_RESOURCE_MANAGER_CREATE_FD_FAILED); - code = impl.CreateFd(BUNDLE_NAME, fd, path); - EXPECT_NE(code, ERR_OK); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.CreateFd(fileName, fd, path, funcResult); + EXPECT_EQ(funcResult, ERR_EXT_RESOURCE_MANAGER_CREATE_FD_FAILED); + impl.CreateFd(BUNDLE_NAME, fd, path, funcResult); + EXPECT_NE(funcResult, ERR_OK); } /** @@ -590,8 +615,9 @@ HWTEST_F(BmsExtendResourceManagerTest, GetExtResource_0100, Function | SmallTest ASSERT_NE(dataMgr, nullptr); dataMgr->bundleInfos_.clear(); std::vector moduleNames; - auto ret = impl.GetExtResource(BUNDLE_NAME, moduleNames); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.GetExtResource(BUNDLE_NAME, moduleNames, funcResult); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); } /** @@ -608,8 +634,9 @@ HWTEST_F(BmsExtendResourceManagerTest, GetExtResource_0200, Function | SmallTest dataMgr->bundleInfos_.emplace(BUNDLE_NAME, info); std::vector moduleNames; moduleNames.push_back(BUNDLE_NAME); - auto ret = impl.GetExtResource(BUNDLE_NAME, moduleNames); - EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_GET_EXT_RESOURCE_FAILED); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.GetExtResource(BUNDLE_NAME, moduleNames, funcResult); + EXPECT_EQ(funcResult, ERR_EXT_RESOURCE_MANAGER_GET_EXT_RESOURCE_FAILED); } /** @@ -629,8 +656,9 @@ HWTEST_F(BmsExtendResourceManagerTest, GetExtResource_0300, Function | SmallTest dataMgr->bundleInfos_.emplace(BUNDLE_NAME, info); std::vector moduleNames; moduleNames.push_back(BUNDLE_NAME); - auto ret = impl.GetExtResource(BUNDLE_NAME, moduleNames); - EXPECT_EQ(ret, ERR_OK); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.GetExtResource(BUNDLE_NAME, moduleNames, funcResult); + EXPECT_EQ(funcResult, ERR_OK); } /** @@ -796,7 +824,7 @@ HWTEST_F(BmsExtendResourceManagerTest, CheckParamInvalid_0100, Function | SmallT dataMgr->bundleInfos_.emplace(BUNDLE_NAME, info); dataMgr->AddUserId(USER_ID); - auto res = impl.CheckParamInvalid(info, -2, 0); + auto res = impl.CheckParamInvalid(info, UNSPECIFIED_USERID, DEFAULT_APP_INDEX); EXPECT_EQ(res, ERR_OK); res = impl.CheckParamInvalid(info, -100, 0); @@ -957,8 +985,9 @@ HWTEST_F(BmsExtendResourceManagerTest, DisableDynamicIcon_0100, Function | Small InnerBundleInfo info; info.curDynamicIconModule_ = TEST_BUNDLE; dataMgr->bundleInfos_[BUNDLE_NAME] = info; - auto res = impl.DisableDynamicIcon(BUNDLE_NAME); - EXPECT_EQ(res, ERR_OK); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.DisableDynamicIcon(BUNDLE_NAME, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_OK); } /** @@ -975,8 +1004,9 @@ HWTEST_F(BmsExtendResourceManagerTest, GetDynamicIcon_0100, Function | SmallTest info.curDynamicIconModule_ = TEST_BUNDLE; dataMgr->bundleInfos_[BUNDLE_NAME] = info; std::string moudleName; - auto res = impl.GetDynamicIcon(BUNDLE_NAME, moudleName); - EXPECT_EQ(res, ERR_OK); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.GetDynamicIcon(BUNDLE_NAME, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, moudleName, funcResult); + EXPECT_EQ(funcResult, ERR_OK); } /** @@ -1090,18 +1120,19 @@ HWTEST_F(BmsExtendResourceManagerTest, GetAllDynamicIconInfo_0001, Function | Sm dataMgr->bundleInfos_[BUNDLE_NAME] = info; std::vector dynamicInfos; - ErrCode ret = impl.GetAllDynamicIconInfo(-2, dynamicInfos); - EXPECT_EQ(ret, ERR_OK); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.GetAllDynamicIconInfo(UNSPECIFIED_USERID, dynamicInfos, funcResult); + EXPECT_EQ(funcResult, ERR_OK); EXPECT_FALSE(dynamicInfos.empty()); std::vector dynamicInfos2; - ret = impl.GetAllDynamicIconInfo(-100, dynamicInfos2); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_INVALID_USER_ID); + impl.GetAllDynamicIconInfo(-100, dynamicInfos2, funcResult); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_INVALID_USER_ID); EXPECT_TRUE(dynamicInfos2.empty()); std::vector dynamicInfos3; - ret = impl.GetAllDynamicIconInfo(USER_ID, dynamicInfos3); - EXPECT_EQ(ret, ERR_OK); + impl.GetAllDynamicIconInfo(USER_ID, dynamicInfos3, funcResult); + EXPECT_EQ(funcResult, ERR_OK); EXPECT_FALSE(dynamicInfos3.empty()); } @@ -1141,7 +1172,7 @@ HWTEST_F(BmsExtendResourceManagerTest, GetAllDynamicIconInfo_0002, Function | Sm EXPECT_EQ(dynamicInfos.size(), 2); std::vector dynamicInfos2; - info.GetAllDynamicIconInfo(-2, dynamicInfos2); + info.GetAllDynamicIconInfo(UNSPECIFIED_USERID, dynamicInfos2); EXPECT_FALSE(dynamicInfos2.empty()); EXPECT_EQ(dynamicInfos2.size(), 3); @@ -1170,8 +1201,9 @@ HWTEST_F(BmsExtendResourceManagerTest, GCreateFd_0100, Function | SmallTest | Le std::string fileName = "%.hsp"; int32_t fd = 1; std::string path; - auto res = impl.CreateFd(fileName, fd, path); - EXPECT_EQ(res, ERR_EXT_RESOURCE_MANAGER_CREATE_FD_FAILED); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.CreateFd(fileName, fd, path, funcResult); + EXPECT_EQ(funcResult, ERR_EXT_RESOURCE_MANAGER_CREATE_FD_FAILED); } /** @@ -1185,8 +1217,9 @@ HWTEST_F(BmsExtendResourceManagerTest, GCreateFd_0200, Function | SmallTest | Le std::string fileName = ".hsp"; int32_t fd = 1; std::string path; - auto res = impl.CreateFd(fileName, fd, path); - EXPECT_EQ(res, ERR_OK); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.CreateFd(fileName, fd, path, funcResult); + EXPECT_EQ(funcResult, ERR_OK); } /** @@ -1216,10 +1249,11 @@ HWTEST_F(BmsExtendResourceManagerTest, InnerSaveExtendResourceInfoTest_0100, Fun std::vector extendResourceInfos; std::vector moduleNames; moduleNames.push_back(TEST_MODULE); - auto ret = impl.RemoveExtResource(TEST_BUNDLE, moduleNames); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.RemoveExtResource(TEST_BUNDLE, moduleNames, funcResult); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); impl.InnerSaveExtendResourceInfo(BUNDLE_NAME, filePaths, extendResourceInfos); - EXPECT_TRUE(ret); + EXPECT_TRUE(funcResult); } /** @@ -1260,8 +1294,9 @@ HWTEST_F(BmsExtendResourceManagerTest, DisableDynamicIcon_0200, Function | Small { ExtendResourceManagerHostImpl impl; const std::string bundleName = BUNDLE_NAME; - ErrCode ret = impl.DisableDynamicIcon(bundleName); - EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_DISABLE_DYNAMIC_ICON_FAILED); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.DisableDynamicIcon(bundleName, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_EXT_RESOURCE_MANAGER_DISABLE_DYNAMIC_ICON_FAILED); } /** @@ -1560,8 +1595,9 @@ HWTEST_F(BmsExtendResourceManagerTest, GetDynamicIconInfo_0001, Function | Small auto dataMgr = DelayedSingleton::GetInstance()->GetDataMgr(); ASSERT_NE(dataMgr, nullptr); std::vector dynamicInfos; - auto ret = impl.GetDynamicIconInfo(EMPTY_STRING, dynamicInfos); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.GetDynamicIconInfo(EMPTY_STRING, dynamicInfos, funcResult); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); EXPECT_TRUE(dynamicInfos.empty()); } @@ -1582,8 +1618,9 @@ HWTEST_F(BmsExtendResourceManagerTest, GetDynamicIconInfo_0002, Function | Small dataMgr->bundleInfos_[BUNDLE_NAME] = info; std::vector dynamicInfos; - ErrCode ret = impl.GetDynamicIconInfo(BUNDLE_NAME, dynamicInfos); - EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.GetDynamicIconInfo(BUNDLE_NAME, dynamicInfos, funcResult); + EXPECT_EQ(funcResult, ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED); EXPECT_TRUE(dynamicInfos.empty()); } @@ -1609,8 +1646,9 @@ HWTEST_F(BmsExtendResourceManagerTest, GetDynamicIconInfo_0003, Function | Small dataMgr->bundleInfos_[BUNDLE_NAME] = info; std::vector dynamicInfos; - ErrCode ret = impl.GetDynamicIconInfo(BUNDLE_NAME, dynamicInfos); - EXPECT_EQ(ret, ERR_OK); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.GetDynamicIconInfo(BUNDLE_NAME, dynamicInfos, funcResult); + EXPECT_EQ(funcResult, ERR_OK); EXPECT_FALSE(dynamicInfos.empty()); } @@ -1665,8 +1703,9 @@ HWTEST_F(BmsExtendResourceManagerTest, EnableDynamicIcon_0010, Function | SmallT dataMgr->bundleInfos_[BUNDLE_NAME] = info; ExtendResourceManagerHostImpl impl; - auto ret = impl.EnableDynamicIcon(BUNDLE_NAME, BUNDLE_NAME); - EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_ENABLE_DYNAMIC_ICON_FAILED); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.EnableDynamicIcon(BUNDLE_NAME, BUNDLE_NAME, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_EXT_RESOURCE_MANAGER_ENABLE_DYNAMIC_ICON_FAILED); auto item = dataMgr->bundleInfos_.find(BUNDLE_NAME); if (item != dataMgr->bundleInfos_.end()) { @@ -1710,11 +1749,12 @@ HWTEST_F(BmsExtendResourceManagerTest, EnableDynamicIcon_0020, Function | SmallT file2.close(); ExtendResourceManagerHostImpl impl; - auto errCode = impl.EnableDynamicIcon(THEME_BUNDLE_NAME, THEME_BUNDLE_NAME, THEME_TEST_USERID, 0); - EXPECT_EQ(errCode, ERR_EXT_RESOURCE_MANAGER_ENABLE_DYNAMIC_ICON_FAILED_DUE_TO_EXISTING_CUSTOM_THEMES); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.EnableDynamicIcon(THEME_BUNDLE_NAME, THEME_BUNDLE_NAME, THEME_TEST_USERID, 0, funcResult); + EXPECT_EQ(funcResult, ERR_OK); - errCode = impl.DisableDynamicIcon(THEME_BUNDLE_NAME, THEME_TEST_USERID, 0); - EXPECT_EQ(errCode, ERR_OK); + impl.DisableDynamicIcon(THEME_BUNDLE_NAME, THEME_TEST_USERID, 0, funcResult); + EXPECT_EQ(funcResult, ERR_OK); auto item = dataMgr->bundleInfos_.find(THEME_BUNDLE_NAME); if (item != dataMgr->bundleInfos_.end()) { @@ -1746,8 +1786,9 @@ HWTEST_F(BmsExtendResourceManagerTest, EnableDynamicIcon_0030, Function | SmallT dataMgr->bundleInfos_[BUNDLE_NAME] = info; ExtendResourceManagerHostImpl impl; - auto ret = impl.EnableDynamicIcon(BUNDLE_NAME, BUNDLE_NAME); - EXPECT_EQ(ret, ERR_OK); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.EnableDynamicIcon(BUNDLE_NAME, BUNDLE_NAME, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_OK); auto item = dataMgr->bundleInfos_.find(BUNDLE_NAME); if (item != dataMgr->bundleInfos_.end()) { @@ -1820,4 +1861,254 @@ HWTEST_F(BmsExtendResourceManagerTest, CheckWhetherDynamicIconNeedProcess_0003, ret = OHOS::ForceRemoveDirectory(THEME_BUNDLE_NAME_PATH); EXPECT_TRUE(ret); } + +/** + * @tc.number: ExtResourceClientTest_0100 + * @tc.name: test ExtResourceClientTest_0100 + * @tc.desc: 1.AddExtResource test + */ +HWTEST_F(BmsExtendResourceManagerTest, ExtResourceClientTest_0100, Function | SmallTest | Level1) +{ + std::vector filePaths; + std::string emptyBundleName; + auto ret = ExtendResourceManagerClient::GetInstance().AddExtResource(emptyBundleName, filePaths); + EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + + ret = ExtendResourceManagerClient::GetInstance().AddExtResource(BUNDLE_NAME, filePaths); + EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_COPY_FILE_FAILED); + + filePaths.emplace_back(INVALID_PATH); + ret = ExtendResourceManagerClient::GetInstance().AddExtResource(BUNDLE_NAME, filePaths); + EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_INVALID_PATH_FAILED); +} + +/** + * @tc.number: ExtResourceClientTest_0200 + * @tc.name: test ExtResourceClientTest_0200 + * @tc.desc: 1.RemoveExtResource test + */ +HWTEST_F(BmsExtendResourceManagerTest, ExtResourceClientTest_0200, Function | SmallTest | Level1) +{ + std::string emptyBundleName; + std::vector moduleNames; + auto ret = ExtendResourceManagerClient::GetInstance().RemoveExtResource(emptyBundleName, moduleNames); + EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + + ret = ExtendResourceManagerClient::GetInstance().RemoveExtResource(TEST_BUNDLE, moduleNames); + EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_REMOVE_EXT_RESOURCE_FAILED); + + moduleNames.push_back(TEST_MODULE); + ret = ExtendResourceManagerClient::GetInstance().RemoveExtResource(TEST_BUNDLE, moduleNames); + EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); +} + +/** + * @tc.number: ExtResourceClientTest_0300 + * @tc.name: test ExtResourceClientTest_0300 + * @tc.desc: 1.GetExtResource test + */ +HWTEST_F(BmsExtendResourceManagerTest, ExtResourceClientTest_0300, Function | SmallTest | Level1) +{ + std::string emptyBundleName; + std::vector moduleNames; + auto ret = ExtendResourceManagerClient::GetInstance().GetExtResource(emptyBundleName, moduleNames); + EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + + ret = ExtendResourceManagerClient::GetInstance().GetExtResource(TEST_BUNDLE, moduleNames); + EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); +} + +/** + * @tc.number: ExtResourceClientTest_0400 + * @tc.name: test ExtResourceClientTest_0400 + * @tc.desc: 1. EnableDynamicIcon test + */ +HWTEST_F(BmsExtendResourceManagerTest, ExtResourceClientTest_0400, Function | MediumTest | Level1) +{ + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + auto ret = ExtendResourceManagerClient::GetInstance().EnableDynamicIcon(EMPTY_STRING, EMPTY_STRING); + EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + + ret = ExtendResourceManagerClient::GetInstance().EnableDynamicIcon(BUNDLE_NAME, EMPTY_STRING); + EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_MODULE_NOT_EXIST); + + ret = ExtendResourceManagerClient::GetInstance().EnableDynamicIcon(BUNDLE_NAME, TEST_MODULE); + EXPECT_EQ(ret, ERR_APPEXECFWK_PERMISSION_DENIED); +} + +/** + * @tc.number: ExtResourceClientTest_0500 + * @tc.name: test ExtResourceClientTest_0500 + * @tc.desc: 1.DisableDynamicIcon test + */ +HWTEST_F(BmsExtendResourceManagerTest, ExtResourceClientTest_0500, Function | SmallTest | Level1) +{ + std::string emptyStr; + auto ret = ExtendResourceManagerClient::GetInstance().DisableDynamicIcon( + emptyStr, UNSPECIFIED_USERID, DEFAULT_APP_INDEX); + EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + + ret = ExtendResourceManagerClient::GetInstance().DisableDynamicIcon( + TEST_BUNDLE, UNSPECIFIED_USERID, DEFAULT_APP_INDEX); + EXPECT_EQ(ret, ERR_APPEXECFWK_PERMISSION_DENIED); +} + +/** + * @tc.number: ExtResourceClientTest_0600 + * @tc.name: test ExtResourceClientTest_0600 + * @tc.desc: 1.GetDynamicIcon test + */ +HWTEST_F(BmsExtendResourceManagerTest, ExtResourceClientTest_0600, Function | SmallTest | Level1) +{ + std::string emptyStr; + std::string moduleName; + auto ret = ExtendResourceManagerClient::GetInstance().GetDynamicIcon(emptyStr, moduleName); + EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + + ret = ExtendResourceManagerClient::GetInstance().GetDynamicIcon(TEST_BUNDLE, moduleName); + EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); +} + +/** + * @tc.number: ExtResourceClientTest_0700 + * @tc.name: test ExtResourceClientTest_0700 + * @tc.desc: 1.test create fd by bundle name and path + */ +HWTEST_F(BmsExtendResourceManagerTest, ExtResourceClientTest_0700, Function | SmallTest | Level1) +{ + std::string fileName; + int32_t fd = 0; + std::string path; + auto ret = ExtendResourceManagerClient::GetInstance().CreateFd(fileName, fd, path); + EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_CREATE_FD_FAILED); + + fileName = "invalid_file"; + ret = ExtendResourceManagerClient::GetInstance().CreateFd(fileName, fd, path); + EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_INVALID_TARGET_DIR); + + fd = -1; + ret = ExtendResourceManagerClient::GetInstance().CreateFd(fileName, fd, path); + EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_CREATE_FD_FAILED); + + path = FILE_PATH; + ret = ExtendResourceManagerClient::GetInstance().CreateFd(fileName, fd, path); + EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_CREATE_FD_FAILED); +} + +/** + * @tc.number: ExtResourceClientTest_0800 + * @tc.name: test ExtResourceClientTest_0800 + * @tc.desc: 1.GetAllDynamicIconInfo test + */ +HWTEST_F(BmsExtendResourceManagerTest, ExtResourceClientTest_0800, Function | SmallTest | Level1) +{ + std::vector dynamicInfos; + auto ret = ExtendResourceManagerClient::GetInstance().GetAllDynamicIconInfo(dynamicInfos); + EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED); + EXPECT_TRUE(dynamicInfos.empty()); + + ret = ExtendResourceManagerClient::GetInstance().GetAllDynamicIconInfo(UNSPECIFIED_USERID, dynamicInfos); + EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED); + EXPECT_TRUE(dynamicInfos.empty()); +} + +/** + * @tc.number: ExtResourceClientTest_0900 + * @tc.name: Test ExtResourceClientTest_0900 + * @tc.desc: 1.GetDynamicIconInfo + */ +HWTEST_F(BmsExtendResourceManagerTest, ExtResourceClientTest_0900, Function | SmallTest | Level1) +{ + std::vector dynamicInfos; + auto ret = ExtendResourceManagerClient::GetInstance().GetDynamicIconInfo(EMPTY_STRING, dynamicInfos); + EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + EXPECT_TRUE(dynamicInfos.empty()); + + ret = ExtendResourceManagerClient::GetInstance().GetDynamicIconInfo(TEST_BUNDLE, dynamicInfos); + EXPECT_EQ(ret, ERR_APPEXECFWK_PERMISSION_DENIED); + EXPECT_TRUE(dynamicInfos.empty()); +} + +/** + * @tc.number: ExtResourceClientTest_1000 + * @tc.name: Test ExtResourceClientTest_1000 + * @tc.desc: 1.ResetExtendResourceManagerProxy + */ +HWTEST_F(BmsExtendResourceManagerTest, ExtResourceClientTest_1000, Function | SmallTest | Level1) +{ + sptr systemAbilityManager = + SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); + ASSERT_NE(systemAbilityManager, nullptr); + wptr remote = systemAbilityManager->GetSystemAbility(BUNDLE_MGR_SERVICE_SYS_ABILITY_ID); + ASSERT_NE(remote, nullptr); + ExtendResourceManagerClient::GetInstance().extendResourceManager_ = nullptr; + ExtendResourceManagerClient::GetInstance().ResetExtendResourceManagerProxy(remote); + auto extResourceManager = ExtendResourceManagerClient::GetInstance().GetExtendResourceManagerProxy(); + EXPECT_NE(extResourceManager, nullptr); + ExtendResourceManagerClient::GetInstance().ResetExtendResourceManagerProxy(remote); + EXPECT_EQ(ExtendResourceManagerClient::GetInstance().extendResourceManager_, nullptr); + EXPECT_EQ(ExtendResourceManagerClient::GetInstance().deathRecipient_, nullptr); +} + +/** + * @tc.number: ExtResourceClientTest_1100 + * @tc.name: Test ExtResourceClientTest_1100 + * @tc.desc: 1.OnRemoteDied + */ +HWTEST_F(BmsExtendResourceManagerTest, ExtResourceClientTest_1100, Function | SmallTest | Level1) +{ + wptr remote = nullptr; + auto extResourceManager = ExtendResourceManagerClient::GetInstance().GetExtendResourceManagerProxy(); + EXPECT_NE(extResourceManager, nullptr); + ExtendResourceManagerClient::ExtendResourceManagerDeathRecipient deathRecipient; + deathRecipient.OnRemoteDied(remote); + EXPECT_NE(ExtendResourceManagerClient::GetInstance().extendResourceManager_, nullptr); + EXPECT_NE(ExtendResourceManagerClient::GetInstance().deathRecipient_, nullptr); + + sptr systemAbilityManager = + SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); + remote = systemAbilityManager->GetSystemAbility(BUNDLE_MGR_SERVICE_SYS_ABILITY_ID); + deathRecipient.OnRemoteDied(remote); + EXPECT_EQ(ExtendResourceManagerClient::GetInstance().extendResourceManager_, nullptr); + EXPECT_EQ(ExtendResourceManagerClient::GetInstance().deathRecipient_, nullptr); +} + +/** + * @tc.number: ExtResourceClientTest_1200 + * @tc.name: Test ExtResourceClientTest_1200 + * @tc.desc: 1.GetExtendResourceManagerProxy + */ +HWTEST_F(BmsExtendResourceManagerTest, ExtResourceClientTest_1200, Function | SmallTest | Level1) +{ + ExtendResourceManagerClient::GetInstance().extendResourceManager_ = + new (std::nothrow) ExtendResourceManagerHostImpl(); + auto extResourceManager = ExtendResourceManagerClient::GetInstance().GetExtendResourceManagerProxy(); + EXPECT_EQ(extResourceManager, ExtendResourceManagerClient::GetInstance().extendResourceManager_); + + ExtendResourceManagerClient::GetInstance().extendResourceManager_ = nullptr; + extResourceManager = ExtendResourceManagerClient::GetInstance().GetExtendResourceManagerProxy(); + EXPECT_NE(extResourceManager, nullptr); +} + +/** + * @tc.number: ExtResourceClientTest_1300 + * @tc.name: Test ExtResourceClientTest_1300 + * @tc.desc: 1.CopyFiles + */ +HWTEST_F(BmsExtendResourceManagerTest, ExtResourceClientTest_1300, Function | SmallTest | Level1) +{ + std::vector sourceFiles; + std::vector destFiles; + auto ret = ExtendResourceManagerClient::GetInstance().CopyFiles(sourceFiles, destFiles); + EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_COPY_FILE_FAILED); + + sourceFiles.emplace_back(INVALID_PATH); + ret = ExtendResourceManagerClient::GetInstance().CopyFiles(sourceFiles, destFiles); + EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_COPY_FILE_FAILED); + + sourceFiles.clear(); + sourceFiles.emplace_back(BUNDLE_PATH); + ret = ExtendResourceManagerClient::GetInstance().CopyFiles(sourceFiles, destFiles); + EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_CREATE_FD_FAILED); +} } // OHOS \ No newline at end of file diff --git a/services/bundlemgr/test/unittest/bms_extend_resource_manager_test/bms_extend_resource_manager_unblocked_test.cpp b/services/bundlemgr/test/unittest/bms_extend_resource_manager_test/bms_extend_resource_manager_unblocked_test.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ab3c0962ac38d924fad7263c18e11da1b03f0f38 --- /dev/null +++ b/services/bundlemgr/test/unittest/bms_extend_resource_manager_test/bms_extend_resource_manager_unblocked_test.cpp @@ -0,0 +1,196 @@ +/* + * Copyright (c) 2025 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 +#include +#include +#include +#include +#define private public +#include "extend_resource_manager_client.h" +#undef private + +using namespace testing::ext; +using namespace OHOS; +using namespace OHOS::AppExecFwk; + +namespace OHOS { +class BmsExtResourceManagerUnblockedTest : public testing::Test { +public: + BmsExtResourceManagerUnblockedTest(); + ~BmsExtResourceManagerUnblockedTest(); + static void SetUpTestCase(); + static void TearDownTestCase(); + void SetUp(); + void TearDown(); +}; + +BmsExtResourceManagerUnblockedTest::BmsExtResourceManagerUnblockedTest() +{} + +BmsExtResourceManagerUnblockedTest::~BmsExtResourceManagerUnblockedTest() +{} + +void BmsExtResourceManagerUnblockedTest::SetUpTestCase() +{} + +void BmsExtResourceManagerUnblockedTest::TearDownTestCase() +{} + +void BmsExtResourceManagerUnblockedTest::SetUp() +{} + +void BmsExtResourceManagerUnblockedTest::TearDown() +{} + +/** + * @tc.number: BmsExtendResourceManagerUnblockedTest_0100 + * @tc.name: test BmsExtendResourceManagerUnblockedTest_0100 + * @tc.desc: 1.AddExtResource test + */ +HWTEST_F(BmsExtResourceManagerUnblockedTest, BmsExtendResourceManagerUnblockedTest_0100, Function | SmallTest | Level1) +{ + std::vector filePaths; + std::string emptyBundleName; + ExtendResourceManagerClient::GetInstance().extendResourceManager_ = nullptr; + auto ret = ExtendResourceManagerClient::GetInstance().AddExtResource(emptyBundleName, filePaths); + EXPECT_EQ(ret, ERR_APPEXECFWK_NULL_PTR); +} + +/** + * @tc.number: BmsExtendResourceManagerUnblockedTest_0200 + * @tc.name: test BmsExtendResourceManagerUnblockedTest_0200 + * @tc.desc: 1.RemoveExtResource test + */ +HWTEST_F(BmsExtResourceManagerUnblockedTest, BmsExtendResourceManagerUnblockedTest_0200, Function | SmallTest | Level1) +{ + std::vector moduleNames; + std::string emptyBundleName; + ExtendResourceManagerClient::GetInstance().extendResourceManager_ = nullptr; + auto ret = ExtendResourceManagerClient::GetInstance().RemoveExtResource(emptyBundleName, moduleNames); + EXPECT_EQ(ret, ERR_APPEXECFWK_NULL_PTR); +} + +/** + * @tc.number: BmsExtendResourceManagerUnblockedTest_0300 + * @tc.name: test BmsExtendResourceManagerUnblockedTest_0300 + * @tc.desc: 1.GetExtResource test + */ +HWTEST_F(BmsExtResourceManagerUnblockedTest, BmsExtendResourceManagerUnblockedTest_0300, Function | SmallTest | Level1) +{ + std::vector moduleNames; + std::string emptyBundleName; + ExtendResourceManagerClient::GetInstance().extendResourceManager_ = nullptr; + auto ret = ExtendResourceManagerClient::GetInstance().GetExtResource(emptyBundleName, moduleNames); + EXPECT_EQ(ret, ERR_APPEXECFWK_NULL_PTR); +} + +/** + * @tc.number: BmsExtendResourceManagerUnblockedTest_0400 + * @tc.name: test BmsExtendResourceManagerUnblockedTest_0400 + * @tc.desc: 1.EnableDynamicIcon test + */ +HWTEST_F(BmsExtResourceManagerUnblockedTest, BmsExtendResourceManagerUnblockedTest_0400, Function | SmallTest | Level1) +{ + std::string emptyBundleName; + std::string emptyModuleName; + ExtendResourceManagerClient::GetInstance().extendResourceManager_ = nullptr; + auto ret = ExtendResourceManagerClient::GetInstance().EnableDynamicIcon(emptyBundleName, emptyModuleName); + EXPECT_EQ(ret, ERR_APPEXECFWK_NULL_PTR); +} + +/** + * @tc.number: BmsExtendResourceManagerUnblockedTest_0500 + * @tc.name: test BmsExtendResourceManagerUnblockedTest_0500 + * @tc.desc: 1.DisableDynamicIcon test + */ +HWTEST_F(BmsExtResourceManagerUnblockedTest, BmsExtendResourceManagerUnblockedTest_0500, Function | SmallTest | Level1) +{ + std::string emptyBundleName; + ExtendResourceManagerClient::GetInstance().extendResourceManager_ = nullptr; + auto ret = ExtendResourceManagerClient::GetInstance().DisableDynamicIcon(emptyBundleName); + EXPECT_EQ(ret, ERR_APPEXECFWK_NULL_PTR); +} + +/** + * @tc.number: BmsExtendResourceManagerUnblockedTest_0600 + * @tc.name: test BmsExtendResourceManagerUnblockedTest_0600 + * @tc.desc: 1.GetDynamicIcon test + */ +HWTEST_F(BmsExtResourceManagerUnblockedTest, BmsExtendResourceManagerUnblockedTest_0600, Function | SmallTest | Level1) +{ + std::string emptyBundleName; + std::string moduleName; + ExtendResourceManagerClient::GetInstance().extendResourceManager_ = nullptr; + auto ret = ExtendResourceManagerClient::GetInstance().GetDynamicIcon(emptyBundleName, moduleName); + EXPECT_EQ(ret, ERR_APPEXECFWK_NULL_PTR); +} + +/** + * @tc.number: BmsExtendResourceManagerUnblockedTest_0700 + * @tc.name: test BmsExtendResourceManagerUnblockedTest_0700 + * @tc.desc: 1.GetDynamicIcon test + */ +HWTEST_F(BmsExtResourceManagerUnblockedTest, BmsExtendResourceManagerUnblockedTest_0700, Function | SmallTest | Level1) +{ + std::string emptyBundleName; + std::string moduleName; + ExtendResourceManagerClient::GetInstance().extendResourceManager_ = nullptr; + auto ret = ExtendResourceManagerClient::GetInstance().GetDynamicIcon(emptyBundleName, moduleName); + EXPECT_EQ(ret, ERR_APPEXECFWK_NULL_PTR); +} + +/** + * @tc.number: BmsExtendResourceManagerUnblockedTest_0800 + * @tc.name: test BmsExtendResourceManagerUnblockedTest_0800 + * @tc.desc: 1.CreateFd test + */ +HWTEST_F(BmsExtResourceManagerUnblockedTest, BmsExtendResourceManagerUnblockedTest_0800, Function | SmallTest | Level1) +{ + std::string fileName; + int32_t fd = 0; + std::string path; + ExtendResourceManagerClient::GetInstance().extendResourceManager_ = nullptr; + auto ret = ExtendResourceManagerClient::GetInstance().CreateFd(fileName, fd, path); + EXPECT_EQ(ret, ERR_APPEXECFWK_NULL_PTR); +} + +/** + * @tc.number: BmsExtendResourceManagerUnblockedTest_0900 + * @tc.name: test BmsExtendResourceManagerUnblockedTest_0900 + * @tc.desc: 1.GetAllDynamicIconInfo test + */ +HWTEST_F(BmsExtResourceManagerUnblockedTest, BmsExtendResourceManagerUnblockedTest_0900, Function | SmallTest | Level1) +{ + std::vector dynamicInfos; + ExtendResourceManagerClient::GetInstance().extendResourceManager_ = nullptr; + auto ret = ExtendResourceManagerClient::GetInstance().GetAllDynamicIconInfo(dynamicInfos); + EXPECT_EQ(ret, ERR_APPEXECFWK_NULL_PTR); +} + +/** + * @tc.number: BmsExtendResourceManagerUnblockedTest_1000 + * @tc.name: test BmsExtendResourceManagerUnblockedTest_1000 + * @tc.desc: 1.GetDynamicIconInfo test + */ +HWTEST_F(BmsExtResourceManagerUnblockedTest, BmsExtendResourceManagerUnblockedTest_1000, Function | SmallTest | Level1) +{ + const std::string bundleName; + std::vector dynamicInfos; + ExtendResourceManagerClient::GetInstance().extendResourceManager_ = nullptr; + auto ret = ExtendResourceManagerClient::GetInstance().GetDynamicIconInfo(bundleName, dynamicInfos); + EXPECT_EQ(ret, ERR_APPEXECFWK_NULL_PTR); +} +} // OHOS diff --git a/test/fuzztest/fuzztest_bundlemanager/bmsextendresourcemanager_fuzzer/bmsextendresourcemanager_fuzzer.cpp b/test/fuzztest/fuzztest_bundlemanager/bmsextendresourcemanager_fuzzer/bmsextendresourcemanager_fuzzer.cpp index 9de29d0fc63e5931e58b7ec6417f1bbaaad8e640..1fcad45493d066d10c2106f0bd4f89896a43a792 100644 --- a/test/fuzztest/fuzztest_bundlemanager/bmsextendresourcemanager_fuzzer/bmsextendresourcemanager_fuzzer.cpp +++ b/test/fuzztest/fuzztest_bundlemanager/bmsextendresourcemanager_fuzzer/bmsextendresourcemanager_fuzzer.cpp @@ -38,7 +38,8 @@ bool DoSomethingInterestingWithMyAPI(const uint8_t* data, size_t size) FuzzedDataProvider fdp(data, size); std::vector filePaths = GenerateStringArray(fdp); std::string bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH); - impl.AddExtResource(bundleName, filePaths); + int32_t funcResult = 0; + impl.AddExtResource(bundleName, filePaths, funcResult); std::vector infos; for (size_t i = 0; i < filePaths.size(); ++i) { @@ -54,22 +55,22 @@ bool DoSomethingInterestingWithMyAPI(const uint8_t* data, size_t size) impl.CheckAcrossUserPermission(userId); impl.IsNeedUpdateBundleResourceInfo(bundleName, userId); std::vector dynamicInfos; - impl.GetDynamicIconInfo(bundleName, dynamicInfos); + impl.GetDynamicIconInfo(bundleName, dynamicInfos, funcResult); dynamicInfos.clear(); - impl.GetAllDynamicIconInfo(userId, dynamicInfos); - impl.GetAllDynamicIconInfo(dynamicInfos); + impl.GetAllDynamicIconInfo(userId, dynamicInfos, funcResult); + impl.GetAllDynamicIconInfo(dynamicInfos, funcResult); InnerBundleInfo innerBundleInfo; int32_t appIndex = fdp.ConsumeIntegral(); impl.CheckParamInvalid(innerBundleInfo, userId, appIndex); std::string moduleName; - impl.GetDynamicIcon(bundleName, userId, appIndex, moduleName); + impl.GetDynamicIcon(bundleName, userId, appIndex, moduleName, funcResult); impl.ResetBundleResourceIcon(bundleName, userId, appIndex); - impl.DisableDynamicIcon(bundleName, userId, appIndex); + impl.DisableDynamicIcon(bundleName, userId, appIndex, funcResult); ExtendResourceInfo extendResourceInfo; GenerateExtendResourceInfo(fdp, extendResourceInfo); impl.ParseBundleResource(bundleName, extendResourceInfo, userId, appIndex); moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH); - impl.EnableDynamicIcon(bundleName, moduleName, userId, appIndex); + impl.EnableDynamicIcon(bundleName, moduleName, userId, appIndex, funcResult); infos.emplace_back(extendResourceInfo); std::vector moduleNames = GenerateStringArray(fdp); diff --git a/test/fuzztest/fuzztest_others/GetExtResource_fuzzer/GetExtResource_fuzzer.cpp b/test/fuzztest/fuzztest_others/GetExtResource_fuzzer/GetExtResource_fuzzer.cpp index 92479d8dbf60a4780196ebace0714f4d4b7d42db..16138c0fa95af11a6cbb08c1f8ada7dda42ff7fa 100644 --- a/test/fuzztest/fuzztest_others/GetExtResource_fuzzer/GetExtResource_fuzzer.cpp +++ b/test/fuzztest/fuzztest_others/GetExtResource_fuzzer/GetExtResource_fuzzer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Huawei Device Co., Ltd. + * Copyright (c) 2024-2025 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 @@ -27,13 +27,14 @@ namespace OHOS { ExtendResourceManagerHostImpl impl; std::string emptyBundleName; std::vector moduleNames; - auto ret = impl.GetExtResource(emptyBundleName, moduleNames); - if (ret == ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST) { + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.GetExtResource(emptyBundleName, moduleNames, funcResult); + if (funcResult == ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST) { return true; } std::string anyBundleName = std::string(reinterpret_cast(data), size); moduleNames.clear(); - impl.GetExtResource(anyBundleName, moduleNames); + impl.GetExtResource(anyBundleName, moduleNames, funcResult); return false; } @@ -41,8 +42,9 @@ namespace OHOS { { ExtendResourceManagerHostImpl impl; std::vector moduleNames; - auto ret = impl.GetExtResource(FUZZTEST_BUNDLE, moduleNames); - if (ret == ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST) { + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.GetExtResource(FUZZTEST_BUNDLE, moduleNames, funcResult); + if (funcResult == ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST) { return true; } return false; diff --git a/test/fuzztest/fuzztest_others/RemoveExtResource_fuzzer/RemoveExtResource_fuzzer.cpp b/test/fuzztest/fuzztest_others/RemoveExtResource_fuzzer/RemoveExtResource_fuzzer.cpp index ec8418a6eb56ceb7b414e4fa5acc460e3086f17f..e5c4d0e3d48960580f825d1af94b9721e97f28d0 100644 --- a/test/fuzztest/fuzztest_others/RemoveExtResource_fuzzer/RemoveExtResource_fuzzer.cpp +++ b/test/fuzztest/fuzztest_others/RemoveExtResource_fuzzer/RemoveExtResource_fuzzer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Huawei Device Co., Ltd. + * Copyright (c) 2024-2025 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 @@ -27,13 +27,14 @@ namespace OHOS { ExtendResourceManagerHostImpl impl; std::string emptyBundleName; std::vector moduleNames; - auto ret = impl.RemoveExtResource(emptyBundleName, moduleNames); - if (ret == ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST) { + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.RemoveExtResource(emptyBundleName, moduleNames, funcResult); + if (funcResult == ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST) { return true; } std::string anyBundleName = std::string(reinterpret_cast(data), size); moduleNames.clear(); - impl.RemoveExtResource(anyBundleName, moduleNames); + impl.RemoveExtResource(anyBundleName, moduleNames, funcResult); return false; } @@ -41,8 +42,9 @@ namespace OHOS { { ExtendResourceManagerHostImpl impl; std::vector moduleNames; - auto ret = impl.RemoveExtResource(FUZZTEST_BUNDLE, moduleNames); - if (ret == ERR_EXT_RESOURCE_MANAGER_REMOVE_EXT_RESOURCE_FAILED) { + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.RemoveExtResource(FUZZTEST_BUNDLE, moduleNames, funcResult); + if (funcResult == ERR_EXT_RESOURCE_MANAGER_REMOVE_EXT_RESOURCE_FAILED) { return true; } return false; @@ -53,8 +55,9 @@ namespace OHOS { ExtendResourceManagerHostImpl impl; std::vector moduleNames; moduleNames.push_back(FUZZTEST_MODULE); - auto ret = impl.RemoveExtResource(FUZZTEST_BUNDLE, moduleNames); - if (ret == ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST) { + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.RemoveExtResource(FUZZTEST_BUNDLE, moduleNames, funcResult); + if (funcResult == ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST) { return true; } return false; diff --git a/test/fuzztest/fuzztest_others/createfd_fuzzer/createfd_fuzzer.cpp b/test/fuzztest/fuzztest_others/createfd_fuzzer/createfd_fuzzer.cpp index 36b39d45b93cce13d490ff50dce1be2cf6a05ebb..e07d6728aad878e26835266afc9183ac398bee96 100644 --- a/test/fuzztest/fuzztest_others/createfd_fuzzer/createfd_fuzzer.cpp +++ b/test/fuzztest/fuzztest_others/createfd_fuzzer/createfd_fuzzer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Huawei Device Co., Ltd. + * Copyright (c) 2024-2025 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 @@ -28,8 +28,9 @@ namespace OHOS { ExtendResourceManagerHostImpl impl; int32_t fd = FD; std::string path = FILE_PATH; - auto ret = impl.CreateFd(std::string(reinterpret_cast(data), size), fd, path); - if (ret == ERR_OK) { + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.CreateFd(std::string(reinterpret_cast(data), size), fd, path, funcResult); + if (funcResult == ERR_OK) { return true; } return false; @@ -40,8 +41,9 @@ namespace OHOS { ExtendResourceManagerHostImpl impl; int32_t fd = FD; std::string path = FILE_PATH; - auto ret = impl.CreateFd(std::string(reinterpret_cast(data), size), fd, path); - if (ret == ERR_OK) { + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.CreateFd(std::string(reinterpret_cast(data), size), fd, path, funcResult); + if (funcResult == ERR_OK) { return true; } return false; diff --git a/test/fuzztest/fuzztest_others/disabledynamicicon_fuzzer/disabledynamicicon_fuzzer.cpp b/test/fuzztest/fuzztest_others/disabledynamicicon_fuzzer/disabledynamicicon_fuzzer.cpp index 2017192c92e71205dadb4b12d7e9b8e95bee9da3..1577c9bfaf303cfa34a5f1a8f10e65d17d766ad0 100644 --- a/test/fuzztest/fuzztest_others/disabledynamicicon_fuzzer/disabledynamicicon_fuzzer.cpp +++ b/test/fuzztest/fuzztest_others/disabledynamicicon_fuzzer/disabledynamicicon_fuzzer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Huawei Device Co., Ltd. + * Copyright (c) 2024-2025 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 @@ -21,13 +21,16 @@ using namespace OHOS::AppExecFwk; namespace OHOS { namespace { const std::string TEST_BUNDLE = "com.test.ext.resource"; + constexpr int8_t UNSPECIFIED_USERID = -2; + constexpr int8_t DEFAULT_APP_INDEX = 0; } bool FuzzelDisableDynamicIconCaseOne(const uint8_t* data, size_t size) { ExtendResourceManagerHostImpl impl; std::string bundleName (reinterpret_cast(data), size); - auto ret = impl.DisableDynamicIcon(bundleName); - if (ret == ERR_OK) { + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.DisableDynamicIcon(bundleName, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + if (funcResult == ERR_OK) { return true; } return false; @@ -36,8 +39,9 @@ namespace { bool FuzzelDisableDynamicIconCaseTwo() { ExtendResourceManagerHostImpl impl; - auto ret = impl.DisableDynamicIcon(TEST_BUNDLE); - if (ret == ERR_OK) { + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.DisableDynamicIcon(TEST_BUNDLE, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + if (funcResult == ERR_OK) { return true; } return false; diff --git a/test/fuzztest/fuzztest_others/filenamevalid_fuzzer/filenamevalid_fuzzer.cpp b/test/fuzztest/fuzztest_others/filenamevalid_fuzzer/filenamevalid_fuzzer.cpp index 748dd31cf8e7edb6a6a7b68582c93ad3a7d91532..6bde046ad7939dd74aff5ccf226cc8d62b1562f9 100644 --- a/test/fuzztest/fuzztest_others/filenamevalid_fuzzer/filenamevalid_fuzzer.cpp +++ b/test/fuzztest/fuzztest_others/filenamevalid_fuzzer/filenamevalid_fuzzer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2025 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 @@ -22,8 +22,9 @@ bool DoSomethingInterestingWithMyAPI(const uint8_t* data, size_t size) ExtendResourceManagerHostImpl impl; std::vector filePaths = {std::string(reinterpret_cast(data), size)}; std::string emptyBundleName; - auto ret = impl.AddExtResource(emptyBundleName, filePaths); - if (ret == ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST) { + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.AddExtResource(emptyBundleName, filePaths, funcResult); + if (funcResult == ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST) { return false; } return true; diff --git a/test/fuzztest/fuzztest_others/getdynamicicon_fuzzer/getdynamicicon_fuzzer.cpp b/test/fuzztest/fuzztest_others/getdynamicicon_fuzzer/getdynamicicon_fuzzer.cpp index a323d4b559ddc93262f0e26503130fabc5d18a8c..cb440e5867853dcf6735e3991ae0b31b0088b463 100644 --- a/test/fuzztest/fuzztest_others/getdynamicicon_fuzzer/getdynamicicon_fuzzer.cpp +++ b/test/fuzztest/fuzztest_others/getdynamicicon_fuzzer/getdynamicicon_fuzzer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Huawei Device Co., Ltd. + * Copyright (c) 2024-2025 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 @@ -21,14 +21,17 @@ using namespace OHOS::AppExecFwk; namespace OHOS { namespace { const std::string TEST_BUNDLE = "com.test.ext.resource"; + constexpr int8_t UNSPECIFIED_USERID = -2; + constexpr int8_t DEFAULT_APP_INDEX = 0; } bool fuzzelGetDynamicIconCaseOne(const uint8_t* data, size_t size) { ExtendResourceManagerHostImpl impl; std::string emptyStr; std::string moudleName = std::string(reinterpret_cast(data), size); - auto ret = impl.GetDynamicIcon(emptyStr, moudleName); - if (ret == ERR_OK) { + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.GetDynamicIcon(emptyStr, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, moudleName, funcResult); + if (funcResult == ERR_OK) { return true; } return false; @@ -38,8 +41,9 @@ namespace { { ExtendResourceManagerHostImpl impl; std::string moudleName = std::string(reinterpret_cast(data), size); - auto ret = impl.GetDynamicIcon(TEST_BUNDLE, moudleName); - if (ret == ERR_OK) { + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.GetDynamicIcon(TEST_BUNDLE, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, moudleName, funcResult); + if (funcResult == ERR_OK) { return true; } return false; diff --git a/test/fuzztest/fuzztest_others/innersaveextendresourceinfo_fuzzer/innersaveextendresourceinfo_fuzzer.cpp b/test/fuzztest/fuzztest_others/innersaveextendresourceinfo_fuzzer/innersaveextendresourceinfo_fuzzer.cpp index 4721bdbdb3e54738f3bee1097b256631c4222243..2500d66d78900453c213b44ade1940169ba86418 100644 --- a/test/fuzztest/fuzztest_others/innersaveextendresourceinfo_fuzzer/innersaveextendresourceinfo_fuzzer.cpp +++ b/test/fuzztest/fuzztest_others/innersaveextendresourceinfo_fuzzer/innersaveextendresourceinfo_fuzzer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Huawei Device Co., Ltd. + * Copyright (c) 2024-2025 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 @@ -24,8 +24,9 @@ namespace OHOS { ExtendResourceManagerHostImpl impl; std::vector filePaths = {std::string(reinterpret_cast(data), size)}; std::string emptyBundleName; - auto ret = impl.AddExtResource(emptyBundleName, filePaths); - if (ret != ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST) { + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.AddExtResource(emptyBundleName, filePaths, funcResult); + if (funcResult != ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST) { return false; } return true; diff --git a/test/fuzztest/fuzztest_others/processaddextresource_fuzzer/processaddextresource_fuzzer.cpp b/test/fuzztest/fuzztest_others/processaddextresource_fuzzer/processaddextresource_fuzzer.cpp index aad3a39ce6e937f7a7bb698a94e5d9c1ed692eab..20a1e319ccdaa981899650227d8e0fe3a88acdc6 100644 --- a/test/fuzztest/fuzztest_others/processaddextresource_fuzzer/processaddextresource_fuzzer.cpp +++ b/test/fuzztest/fuzztest_others/processaddextresource_fuzzer/processaddextresource_fuzzer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Huawei Device Co., Ltd. + * Copyright (c) 2024-2025 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 @@ -21,6 +21,8 @@ using namespace OHOS::AppExecFwk; namespace OHOS { namespace { const std::string TEST_BUNDLE = "com.test.ext.resource"; + constexpr int8_t UNSPECIFIED_USERID = -2; + constexpr int8_t DEFAULT_APP_INDEX = 0; } bool fuzzelProcessAddExtResourceCaseOne(const uint8_t* data, size_t size) { @@ -34,7 +36,8 @@ namespace { impl.RemoveExtResourcesDb(TEST_BUNDLE, moduleNames); impl.InnerRemoveExtendResources(TEST_BUNDLE, moduleNames, extendResourceInfos); std::string moduleName(reinterpret_cast(data), size); - impl.EnableDynamicIcon(TEST_BUNDLE, moduleName); + int32_t funcResult = ERR_APPEXECFWK_IDL_GET_RESULT_ERROR; + impl.EnableDynamicIcon(TEST_BUNDLE, moduleName, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); ExtendResourceInfo extendResourceInfo; impl.GetExtendResourceInfo(TEST_BUNDLE, moduleName, extendResourceInfo); return false; diff --git a/test/systemtest/common/bms/extend_resource_manager_host_test/BUILD.gn b/test/systemtest/common/bms/extend_resource_manager_host_test/BUILD.gn index fb45ec396b464fb40f9eb0dc7859022f38e77968..f4505b9602384a44101f6d141fa0e4b62c0dca0a 100644 --- a/test/systemtest/common/bms/extend_resource_manager_host_test/BUILD.gn +++ b/test/systemtest/common/bms/extend_resource_manager_host_test/BUILD.gn @@ -31,6 +31,7 @@ ohos_systemtest("ExtendResourceManagerHostTest") { deps = [ "${common_path}:libappexecfwk_common", "${core_path}:appexecfwk_core", + "${core_path}:extend_resource_manager_stub", ] defines = [ "APP_LOG_TAG = \"BundleMgrTool\"" ] diff --git a/test/systemtest/common/bms/extend_resource_manager_host_test/extend_resource_manager_host_test.cpp b/test/systemtest/common/bms/extend_resource_manager_host_test/extend_resource_manager_host_test.cpp index 6a3c840babf52a910778e24d780ab43656bbc9d4..d42ef47d529123f342263348e17e4390f5a04f8a 100644 --- a/test/systemtest/common/bms/extend_resource_manager_host_test/extend_resource_manager_host_test.cpp +++ b/test/systemtest/common/bms/extend_resource_manager_host_test/extend_resource_manager_host_test.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Huawei Device Co., Ltd. + * Copyright (c) 2024-2025 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 @@ -17,7 +17,7 @@ #include #include #include -#include "extend_resource_manager_host.h" +#include "extend_resource_manager_stub.h" #include "bundle_framework_core_ipc_interface_code.h" using namespace testing::ext; @@ -57,6 +57,62 @@ void ExtendResourceManagerHostTest::SetUp() void ExtendResourceManagerHostTest::TearDown() {} +class TestExtendResourceManagerStub : public ExtendResourceManagerStub { +public: + int32_t CallbackEnter([[maybe_unused]] uint32_t code) + { + return 0; + } + int32_t CallbackExit([[maybe_unused]] uint32_t code, [[maybe_unused]] int32_t result) + { + return 0; + } + + ErrCode AddExtResource( + const std::string &bundleName, const std::vector &filePaths, int32_t &funcResult) + { + return ERR_OK; + } + ErrCode RemoveExtResource( + const std::string &bundleName, const std::vector &moduleNames, int32_t &funcResult) + { + return ERR_OK; + } + ErrCode GetExtResource(const std::string &bundleName, std::vector &moduleNames, int32_t &funcResult) + { + return ERR_OK; + } + ErrCode EnableDynamicIcon(const std::string &bundleName, const std::string &moduleName, + const int32_t userId, const int32_t appIndex, int32_t &funcResult) + { + return ERR_OK; + } + ErrCode DisableDynamicIcon( + const std::string &bundleName, const int32_t userId, const int32_t appIndex, int32_t &funcResult) + { + return ERR_OK; + } + ErrCode GetDynamicIcon(const std::string &bundleName, const int32_t userId, + const int32_t appIndex, std::string &moduleName, int32_t &funcResult) + { + return ERR_OK; + } + ErrCode GetAllDynamicIconInfo( + const int32_t userId, std::vector &dynamicInfos, int32_t &funcResult) + { + return ERR_OK; + } + ErrCode CreateFd(const std::string &fileName, int32_t &fd, std::string &path, int32_t &funcResult) + { + return ERR_OK; + } + ErrCode GetDynamicIconInfo( + const std::string &bundleName, std::vector &dynamicInfos, int32_t &funcResult) + { + return ERR_OK; + } +}; + /** * @tc.number: HandleAddAppInstallControlRule_0100 * @tc.name: test the HandleAddAppInstallControlRule @@ -65,10 +121,10 @@ void ExtendResourceManagerHostTest::TearDown() */ HWTEST_F(ExtendResourceManagerHostTest, OnRemoteRequest_0100, Function | MediumTest | Level1) { - ExtendResourceManagerHost extendResource; + TestExtendResourceManagerStub extendResource; uint32_t code = ADD_EXT_RESOURCE; MessageParcel data; - std::u16string descriptor = ExtendResourceManagerHost::GetDescriptor(); + std::u16string descriptor = ExtendResourceManagerStub::GetDescriptor(); data.WriteInterfaceToken(descriptor); MessageParcel reply; MessageOption option; @@ -120,140 +176,5 @@ HWTEST_F(ExtendResourceManagerHostTest, OnRemoteRequest_0100, Function | MediumT res = extendResource.OnRemoteRequest(code, data, reply, option); EXPECT_EQ(res, ERROR_CODE); } - -/** - * @tc.number: HandleAddExtResource_0100 - * @tc.name: test the HandleAddExtResource - * @tc.desc: 1. system running normally - * 2. test HandleAddExtResource - */ -HWTEST_F(ExtendResourceManagerHostTest, HandleAddExtResource_0100, Function | MediumTest | Level1) -{ - ExtendResourceManagerHost extendResource; - MessageParcel data; - MessageParcel reply; - ErrCode res = extendResource.HandleAddExtResource(data, reply); - EXPECT_EQ(res, ERR_OK); -} - -/** - * @tc.number: HandleRemoveExtResource_0100 - * @tc.name: test the HandleRemoveExtResource - * @tc.desc: 1. system running normally - * 2. test HandleRemoveExtResource - */ -HWTEST_F(ExtendResourceManagerHostTest, HandleRemoveExtResource_0100, Function | MediumTest | Level1) -{ - ExtendResourceManagerHost extendResource; - MessageParcel data; - MessageParcel reply; - ErrCode res = extendResource.HandleRemoveExtResource(data, reply); - EXPECT_EQ(res, ERR_OK); -} - -/** - * @tc.number: HandleGetExtResource_0100 - * @tc.name: test the HandleGetExtResource - * @tc.desc: 1. system running normally - * 2. test HandleGetExtResource - */ -HWTEST_F(ExtendResourceManagerHostTest, HandleGetExtResource_0100, Function | MediumTest | Level1) -{ - ExtendResourceManagerHost extendResource; - MessageParcel data; - MessageParcel reply; - ErrCode res = extendResource.HandleGetExtResource(data, reply); - EXPECT_EQ(res, ERR_OK); -} - -/** - * @tc.number: HandleEnableDynamicIcon_0100 - * @tc.name: test the HandleEnableDynamicIcon - * @tc.desc: 1. system running normally - * 2. test HandleEnableDynamicIcon - */ -HWTEST_F(ExtendResourceManagerHostTest, HandleEnableDynamicIcon_0100, Function | MediumTest | Level1) -{ - ExtendResourceManagerHost extendResource; - MessageParcel data; - MessageParcel reply; - ErrCode res = extendResource.HandleEnableDynamicIcon(data, reply); - EXPECT_EQ(res, ERR_OK); -} - -/** - * @tc.number: HandleDisableDynamicIcon_0100 - * @tc.name: test the HandleDisableDynamicIcon - * @tc.desc: 1. system running normally - * 2. test HandleDisableDynamicIcon - */ -HWTEST_F(ExtendResourceManagerHostTest, HandleDisableDynamicIcon_0100, Function | MediumTest | Level1) -{ - ExtendResourceManagerHost extendResource; - MessageParcel data; - MessageParcel reply; - ErrCode res = extendResource.HandleDisableDynamicIcon(data, reply); - EXPECT_EQ(res, ERR_OK); -} - -/** - * @tc.number: HandleGetDynamicIcon_0100 - * @tc.name: test the HandleGetDynamicIcon - * @tc.desc: 1. system running normally - * 2. test HandleGetDynamicIcon - */ -HWTEST_F(ExtendResourceManagerHostTest, HandleGetDynamicIcon_0100, Function | MediumTest | Level1) -{ - ExtendResourceManagerHost extendResource; - MessageParcel data; - MessageParcel reply; - ErrCode res = extendResource.HandleGetDynamicIcon(data, reply); - EXPECT_EQ(res, ERR_OK); -} - -/** - * @tc.number: HandleCreateFd_0100 - * @tc.name: test the HandleCreateFd - * @tc.desc: 1. system running normally - * 2. test HandleCreateFd - */ -HWTEST_F(ExtendResourceManagerHostTest, HandleCreateFd_0100, Function | MediumTest | Level1) -{ - ExtendResourceManagerHost extendResource; - MessageParcel data; - MessageParcel reply; - ErrCode res = extendResource.HandleCreateFd(data, reply); - EXPECT_EQ(res, ERR_OK); -} - -/** - * @tc.number: HandleGetDynamicIconInfo_0100 - * @tc.name: test the HandleGetDynamicIcon - * @tc.desc: 1. system running normally - * 2. test HandleGetDynamicIcon - */ -HWTEST_F(ExtendResourceManagerHostTest, HandleGetDynamicIconInfo_0100, Function | MediumTest | Level1) -{ - ExtendResourceManagerHost extendResource; - MessageParcel data; - MessageParcel reply; - ErrCode res = extendResource.HandleGetDynamicIconInfo(data, reply); - EXPECT_EQ(res, ERR_OK); -} - -/** - * @tc.number: HandleGetAllDynamicIconInfo_0100 - * @tc.name: test the HandleGetDynamicIcon - * @tc.desc: 1. system running normally - * 2. test HandleGetDynamicIcon - */ -HWTEST_F(ExtendResourceManagerHostTest, HandleGetAllDynamicIconInfo_0100, Function | MediumTest | Level1) -{ - ExtendResourceManagerHost extendResource; - MessageParcel data; - MessageParcel reply; - ErrCode res = extendResource.HandleGetAllDynamicIconInfo(data, reply); - EXPECT_EQ(res, ERR_OK); -} } // AppExecFwk } // OHOS \ No newline at end of file diff --git a/test/systemtest/common/bms/extend_resource_manager_proxy_test/extend_resource_manager_proxy_test.cpp b/test/systemtest/common/bms/extend_resource_manager_proxy_test/extend_resource_manager_proxy_test.cpp index 065d0e564f9a5f337092dfaea75ca06f227bc76a..d40ec966dfbbd3bb436aa9f9d5346e40245bc696 100644 --- a/test/systemtest/common/bms/extend_resource_manager_proxy_test/extend_resource_manager_proxy_test.cpp +++ b/test/systemtest/common/bms/extend_resource_manager_proxy_test/extend_resource_manager_proxy_test.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Huawei Device Co., Ltd. + * Copyright (c) 2024-2025 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 @@ -23,6 +23,7 @@ #include "bundle_installer_proxy.h" #include "bundle_mgr_proxy.h" #include "common_tool.h" +#include "extend_resource_manager_client.h" #include "extend_resource_manager_proxy.h" #include "iservice_registry.h" #include "nativetoken_kit.h" @@ -55,6 +56,8 @@ const std::string OPERATION_FAILED = "Failure"; const std::string OPERATION_SUCCESS = "Success"; const int32_t USERID = 100; const int32_t APP_INDEX = 1; +constexpr int8_t UNSPECIFIED_USERID = -2; +constexpr int8_t DEFAULT_APP_INDEX = 0; } namespace OHOS { @@ -261,15 +264,16 @@ HWTEST_F(ExtendResourceManagerProxyTest, AddExtResource_0100, Function | MediumT sptr object; ExtendResourceManagerProxy extendResource(object); std::vector filePaths; - ErrCode res = extendResource.AddExtResource(EMPTY_STRING, filePaths); - EXPECT_EQ(res, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + ErrCode ret = ExtendResourceManagerClient::GetInstance().AddExtResource(EMPTY_STRING, filePaths); + EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); - res = extendResource.AddExtResource(BUNDLE_NAME, filePaths); - EXPECT_EQ(res, ERR_EXT_RESOURCE_MANAGER_COPY_FILE_FAILED); + ret = ExtendResourceManagerClient::GetInstance().AddExtResource(BUNDLE_NAME, filePaths); + EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_COPY_FILE_FAILED); filePaths.push_back(BUNDLE_NAME); - res = extendResource.AddExtResource(BUNDLE_NAME, filePaths); - EXPECT_EQ(res, ERR_APPEXECFWK_PARCEL_ERROR); + extendResource.AddExtResource(BUNDLE_NAME, filePaths, funcResult); + EXPECT_EQ(funcResult, ERR_APPEXECFWK_PARCEL_ERROR); } /** @@ -283,15 +287,16 @@ HWTEST_F(ExtendResourceManagerProxyTest, RemoveExtResource_0100, Function | Medi sptr object; ExtendResourceManagerProxy extendResource(object); std::vector moduleNames; - ErrCode res = extendResource.RemoveExtResource(EMPTY_STRING, moduleNames); - EXPECT_EQ(res, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + ErrCode ret = ExtendResourceManagerClient::GetInstance().RemoveExtResource(EMPTY_STRING, moduleNames); + EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); - res = extendResource.RemoveExtResource(BUNDLE_NAME, moduleNames); - EXPECT_EQ(res, ERR_EXT_RESOURCE_MANAGER_REMOVE_EXT_RESOURCE_FAILED); + ret = ExtendResourceManagerClient::GetInstance().RemoveExtResource(BUNDLE_NAME, moduleNames); + EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_REMOVE_EXT_RESOURCE_FAILED); moduleNames.push_back(BUNDLE_NAME); - res = extendResource.RemoveExtResource(BUNDLE_NAME, moduleNames); - EXPECT_EQ(res, ERR_APPEXECFWK_PARCEL_ERROR); + extendResource.RemoveExtResource(BUNDLE_NAME, moduleNames, funcResult); + EXPECT_EQ(funcResult, ERR_APPEXECFWK_PARCEL_ERROR); } /** @@ -305,11 +310,12 @@ HWTEST_F(ExtendResourceManagerProxyTest, GetExtResource_0100, Function | MediumT sptr object; ExtendResourceManagerProxy extendResource(object); std::vector moduleNames; - ErrCode res = extendResource.GetExtResource(EMPTY_STRING, moduleNames); - EXPECT_EQ(res, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + ErrCode ret = ExtendResourceManagerClient::GetInstance().GetExtResource(EMPTY_STRING, moduleNames); + EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); - res = extendResource.GetExtResource(BUNDLE_NAME, moduleNames); - EXPECT_EQ(res, ERR_APPEXECFWK_PARCEL_ERROR); + extendResource.GetExtResource(BUNDLE_NAME, moduleNames, funcResult); + EXPECT_EQ(funcResult, ERR_APPEXECFWK_PARCEL_ERROR); } /** @@ -323,15 +329,18 @@ HWTEST_F(ExtendResourceManagerProxyTest, EnableDynamicIcon_0100, Function | Medi sptr object; ExtendResourceManagerProxy extendResource(object); std::vector moduleNames; - ErrCode res = extendResource.EnableDynamicIcon(EMPTY_STRING, EMPTY_STRING); - EXPECT_EQ(res, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + ErrCode ret = ExtendResourceManagerClient::GetInstance().EnableDynamicIcon( + EMPTY_STRING, EMPTY_STRING, UNSPECIFIED_USERID, DEFAULT_APP_INDEX); + EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); - res = extendResource.EnableDynamicIcon(BUNDLE_NAME, EMPTY_STRING); - EXPECT_EQ(res, ERR_BUNDLE_MANAGER_MODULE_NOT_EXIST); + ret = ExtendResourceManagerClient::GetInstance().EnableDynamicIcon( + BUNDLE_NAME, EMPTY_STRING, UNSPECIFIED_USERID, DEFAULT_APP_INDEX); + EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_MODULE_NOT_EXIST); moduleNames.push_back(BUNDLE_NAME); - res = extendResource.EnableDynamicIcon(BUNDLE_NAME, MODULE_NAME); - EXPECT_EQ(res, ERR_APPEXECFWK_PARCEL_ERROR); + extendResource.EnableDynamicIcon(BUNDLE_NAME, MODULE_NAME, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_APPEXECFWK_PARCEL_ERROR); } /** @@ -344,11 +353,13 @@ HWTEST_F(ExtendResourceManagerProxyTest, DisableDynamicIcon_0100, Function | Med { sptr object; ExtendResourceManagerProxy extendResource(object); - ErrCode res = extendResource.DisableDynamicIcon(EMPTY_STRING); - EXPECT_EQ(res, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + ErrCode ret = ExtendResourceManagerClient::GetInstance().DisableDynamicIcon( + EMPTY_STRING, UNSPECIFIED_USERID, DEFAULT_APP_INDEX); + EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); - res = extendResource.DisableDynamicIcon(BUNDLE_NAME); - EXPECT_EQ(res, ERR_APPEXECFWK_PARCEL_ERROR); + extendResource.DisableDynamicIcon(BUNDLE_NAME, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_APPEXECFWK_PARCEL_ERROR); } /** @@ -362,11 +373,13 @@ HWTEST_F(ExtendResourceManagerProxyTest, GetDynamicIcon_0100, Function | MediumT sptr object; ExtendResourceManagerProxy extendResource(object); std::string moduleName = FILE_PATH; - ErrCode res = extendResource.GetDynamicIcon(EMPTY_STRING, moduleName); - EXPECT_EQ(res, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + ErrCode ret = ExtendResourceManagerClient::GetInstance().GetDynamicIcon( + EMPTY_STRING, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, moduleName); + EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); - res = extendResource.GetDynamicIcon(BUNDLE_NAME, moduleName); - EXPECT_EQ(res, ERR_APPEXECFWK_PARCEL_ERROR); + extendResource.GetDynamicIcon(BUNDLE_NAME, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, moduleName, funcResult); + EXPECT_EQ(funcResult, ERR_APPEXECFWK_PARCEL_ERROR); } /** @@ -381,11 +394,12 @@ HWTEST_F(ExtendResourceManagerProxyTest, CreateFd_0100, Function | MediumTest | ExtendResourceManagerProxy extendResource(object); int32_t fd = FD; std::string path = FILE_PATH; - ErrCode res = extendResource.CreateFd(EMPTY_STRING, fd, path); - EXPECT_EQ(res, ERR_EXT_RESOURCE_MANAGER_CREATE_FD_FAILED); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + extendResource.CreateFd(EMPTY_STRING, fd, path, funcResult); + EXPECT_EQ(funcResult, ERR_APPEXECFWK_PARCEL_ERROR); - res = extendResource.CreateFd(BUNDLE_NAME, fd, path); - EXPECT_EQ(res, ERR_APPEXECFWK_PARCEL_ERROR); + extendResource.CreateFd(BUNDLE_NAME, fd, path, funcResult); + EXPECT_EQ(funcResult, ERR_APPEXECFWK_PARCEL_ERROR); } /** @@ -400,11 +414,11 @@ HWTEST_F(ExtendResourceManagerProxyTest, CopyFiles_0100, Function | MediumTest | ExtendResourceManagerProxy extendResource(object); std::vector sourceFiles; std::vector destFiles; - ErrCode res = extendResource.CopyFiles(sourceFiles, destFiles); + ErrCode res = ExtendResourceManagerClient::GetInstance().CopyFiles(sourceFiles, destFiles); EXPECT_EQ(res, ERR_EXT_RESOURCE_MANAGER_COPY_FILE_FAILED); sourceFiles.push_back(BUNDLE_NAME); - res = extendResource.CopyFiles(sourceFiles, destFiles); + res = ExtendResourceManagerClient::GetInstance().CopyFiles(sourceFiles, destFiles); EXPECT_EQ(res, ERR_EXT_RESOURCE_MANAGER_COPY_FILE_FAILED); } @@ -424,11 +438,12 @@ HWTEST_F(ExtendResourceManagerProxyTest, AddExtResource_0001, Function | SmallTe std::vector filePath; filePath.push_back(BUNDLE_PATH_2); std::vector destFiles; - ErrCode ret = proxy->CopyFiles(filePath, destFiles); + ErrCode ret = ExtendResourceManagerClient::GetInstance().CopyFiles(filePath, destFiles); EXPECT_EQ(ret, ERR_OK); - ret = proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles, funcResult); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); } } } @@ -446,10 +461,11 @@ HWTEST_F(ExtendResourceManagerProxyTest, AddExtResource_0002, Function | SmallTe auto proxy = bundleMgrProxy->GetExtendResourceManager(); EXPECT_NE(proxy, nullptr); if (proxy != nullptr) { + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; std::vector filePath; filePath.push_back(BUNDLE_PATH_1); - ErrCode ret = proxy->AddExtResource(BUNDLE_NAME_DEMO, filePath); - EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_INVALID_PATH_FAILED); + proxy->AddExtResource(BUNDLE_NAME_DEMO, filePath, funcResult); + EXPECT_EQ(funcResult, ERR_EXT_RESOURCE_MANAGER_INVALID_PATH_FAILED); } } } @@ -474,11 +490,12 @@ HWTEST_F(ExtendResourceManagerProxyTest, AddExtResource_0003, Function | SmallTe std::vector filePath; filePath.push_back(BUNDLE_PATH_2); std::vector destFiles; - ErrCode ret = proxy->CopyFiles(filePath, destFiles); + ErrCode ret = ExtendResourceManagerClient::GetInstance().CopyFiles(filePath, destFiles); EXPECT_EQ(ret, ERR_OK); - ret = proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles); - EXPECT_EQ(ret, ERR_OK); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles, funcResult); + EXPECT_EQ(funcResult, ERR_OK); } } @@ -500,10 +517,11 @@ HWTEST_F(ExtendResourceManagerProxyTest, RemoveExtResource_0001, Function | Smal auto proxy = bundleMgrProxy->GetExtendResourceManager(); EXPECT_NE(proxy, nullptr); if (proxy != nullptr) { + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; std::vector moduleNames; moduleNames.push_back(DYNAMIC_NAME); - ErrCode ret = proxy->RemoveExtResource(BUNDLE_NAME_DEMO, moduleNames); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + proxy->RemoveExtResource(BUNDLE_NAME_DEMO, moduleNames, funcResult); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); } } } @@ -527,8 +545,9 @@ HWTEST_F(ExtendResourceManagerProxyTest, RemoveExtResource_0002, Function | Smal if (proxy != nullptr) { std::vector moduleNames; moduleNames.push_back(DYNAMIC_NAME); - ErrCode ret = proxy->RemoveExtResource(BUNDLE_NAME_DEMO, moduleNames); - EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_REMOVE_EXT_RESOURCE_FAILED); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + proxy->RemoveExtResource(BUNDLE_NAME_DEMO, moduleNames, funcResult); + EXPECT_EQ(funcResult, ERR_EXT_RESOURCE_MANAGER_REMOVE_EXT_RESOURCE_FAILED); } } @@ -557,16 +576,17 @@ HWTEST_F(ExtendResourceManagerProxyTest, RemoveExtResource_0003, Function | Smal std::vector filePath; filePath.push_back(BUNDLE_PATH_2); std::vector destFiles; - ErrCode ret = proxy->CopyFiles(filePath, destFiles); + ErrCode ret = ExtendResourceManagerClient::GetInstance().CopyFiles(filePath, destFiles); EXPECT_EQ(ret, ERR_OK); - ret = proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles); - EXPECT_EQ(ret, ERR_OK); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles, funcResult); + EXPECT_EQ(funcResult, ERR_OK); std::vector moduleNames; moduleNames.push_back(DYNAMIC_NAME); - ret = proxy->RemoveExtResource(BUNDLE_NAME_DEMO, moduleNames); - EXPECT_EQ(ret, ERR_OK); + proxy->RemoveExtResource(BUNDLE_NAME_DEMO, moduleNames, funcResult); + EXPECT_EQ(funcResult, ERR_OK); } } @@ -588,9 +608,10 @@ HWTEST_F(ExtendResourceManagerProxyTest, GetExtResource_0001, Function | SmallTe auto proxy = bundleMgrProxy->GetExtendResourceManager(); EXPECT_NE(proxy, nullptr); if (proxy != nullptr) { + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; std::vector moduleNames; - ErrCode ret = proxy->GetExtResource(BUNDLE_NAME_DEMO, moduleNames); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + proxy->GetExtResource(BUNDLE_NAME_DEMO, moduleNames, funcResult); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); } } } @@ -612,9 +633,10 @@ HWTEST_F(ExtendResourceManagerProxyTest, GetExtResource_0002, Function | SmallTe auto proxy = bundleMgrProxy->GetExtendResourceManager(); EXPECT_NE(proxy, nullptr); if (proxy != nullptr) { + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; std::vector moduleNames; - ErrCode ret = proxy->GetExtResource(BUNDLE_NAME_DEMO, moduleNames); - EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_GET_EXT_RESOURCE_FAILED); + proxy->GetExtResource(BUNDLE_NAME_DEMO, moduleNames, funcResult); + EXPECT_EQ(funcResult, ERR_EXT_RESOURCE_MANAGER_GET_EXT_RESOURCE_FAILED); EXPECT_TRUE(moduleNames.empty()); } } @@ -644,15 +666,16 @@ HWTEST_F(ExtendResourceManagerProxyTest, GetExtResource_0003, Function | SmallTe std::vector filePath; filePath.push_back(BUNDLE_PATH_2); std::vector destFiles; - ErrCode ret = proxy->CopyFiles(filePath, destFiles); + ErrCode ret = ExtendResourceManagerClient::GetInstance().CopyFiles(filePath, destFiles); EXPECT_EQ(ret, ERR_OK); - ret = proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles); - EXPECT_EQ(ret, ERR_OK); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles, funcResult); + EXPECT_EQ(funcResult, ERR_OK); std::vector moduleNames; - ret = proxy->GetExtResource(BUNDLE_NAME_DEMO, moduleNames); - EXPECT_EQ(ret, ERR_OK); + proxy->GetExtResource(BUNDLE_NAME_DEMO, moduleNames, funcResult); + EXPECT_EQ(funcResult, ERR_OK); EXPECT_FALSE(moduleNames.empty()); if (!moduleNames.empty()) { EXPECT_EQ(moduleNames[0], DYNAMIC_NAME); @@ -686,17 +709,20 @@ HWTEST_F(ExtendResourceManagerProxyTest, EnableDynamicIcon_0001, Function | Smal std::vector filePath; filePath.push_back(BUNDLE_PATH_2); std::vector destFiles; - ErrCode ret = proxy->CopyFiles(filePath, destFiles); + ErrCode ret = ExtendResourceManagerClient::GetInstance().CopyFiles(filePath, destFiles); EXPECT_EQ(ret, ERR_OK); - ret = proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles); - EXPECT_EQ(ret, ERR_OK); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles, funcResult); + EXPECT_EQ(funcResult, ERR_OK); - ret = proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, BUNDLE_NAME); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_MODULE_NOT_EXIST); + proxy->EnableDynamicIcon( + BUNDLE_NAME_DEMO, BUNDLE_NAME, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_MODULE_NOT_EXIST); - ret = proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME); - EXPECT_EQ(ret, ERR_OK); + proxy->EnableDynamicIcon( + BUNDLE_NAME_DEMO, DYNAMIC_NAME, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_OK); } } @@ -726,20 +752,21 @@ HWTEST_F(ExtendResourceManagerProxyTest, EnableDynamicIcon_0002, Function | Smal std::vector filePath; filePath.push_back(BUNDLE_PATH_2); std::vector destFiles; - ErrCode ret = proxy->CopyFiles(filePath, destFiles); + ErrCode ret = ExtendResourceManagerClient::GetInstance().CopyFiles(filePath, destFiles); EXPECT_EQ(ret, ERR_OK); - ret = proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles); - EXPECT_EQ(ret, ERR_OK); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles, funcResult); + EXPECT_EQ(funcResult, ERR_OK); - ret = proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, -1, 0); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_INVALID_USER_ID); + proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, -1, 0, funcResult); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_INVALID_USER_ID); - ret = proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, USERID); - EXPECT_EQ(ret, ERR_APPEXECFWK_APP_INDEX_OUT_OF_RANGE); + proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, USERID, funcResult); + EXPECT_EQ(funcResult, ERR_APPEXECFWK_APP_INDEX_OUT_OF_RANGE); - ret = proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, 0); - EXPECT_EQ(ret, ERR_OK); + proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, 0, funcResult); + EXPECT_EQ(funcResult, ERR_OK); } } @@ -769,23 +796,24 @@ HWTEST_F(ExtendResourceManagerProxyTest, EnableDynamicIcon_0003, Function | Smal std::vector filePath; filePath.push_back(BUNDLE_PATH_2); std::vector destFiles; - ErrCode ret = proxy->CopyFiles(filePath, destFiles); + ErrCode ret = ExtendResourceManagerClient::GetInstance().CopyFiles(filePath, destFiles); EXPECT_EQ(ret, ERR_OK); - ret = proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles); - EXPECT_EQ(ret, ERR_OK); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles, funcResult); + EXPECT_EQ(funcResult, ERR_OK); InstallCloneApp(BUNDLE_NAME_DEMO, USERID, APP_INDEX); - ret = proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, APP_INDEX); - EXPECT_EQ(ret, ERR_OK); + proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_OK); std::string key; - ret = proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, key); - EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED); + proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, key, funcResult); + EXPECT_EQ(funcResult, ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED); EXPECT_TRUE(key.empty()); - ret = proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, USERID, APP_INDEX, key); - EXPECT_EQ(ret, ERR_OK); + proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, USERID, APP_INDEX, key, funcResult); + EXPECT_EQ(funcResult, ERR_OK); EXPECT_EQ(key, DYNAMIC_NAME); } } @@ -813,11 +841,12 @@ HWTEST_F(ExtendResourceManagerProxyTest, DisableDynamicIcon_0001, Function | Sma auto proxy = bundleMgrProxy->GetExtendResourceManager(); EXPECT_NE(proxy, nullptr); if (proxy != nullptr) { - ErrCode ret = proxy->DisableDynamicIcon(DYNAMIC_NAME); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + proxy->DisableDynamicIcon(DYNAMIC_NAME, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); - ret = proxy->DisableDynamicIcon(BUNDLE_NAME_DEMO); - EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_DISABLE_DYNAMIC_ICON_FAILED); + proxy->DisableDynamicIcon(BUNDLE_NAME_DEMO, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_EXT_RESOURCE_MANAGER_DISABLE_DYNAMIC_ICON_FAILED); } } @@ -844,14 +873,15 @@ HWTEST_F(ExtendResourceManagerProxyTest, DisableDynamicIcon_0002, Function | Sma auto proxy = bundleMgrProxy->GetExtendResourceManager(); EXPECT_NE(proxy, nullptr); if (proxy != nullptr) { - ErrCode ret = proxy->DisableDynamicIcon(BUNDLE_NAME_DEMO); - EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_DISABLE_DYNAMIC_ICON_FAILED); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + proxy->DisableDynamicIcon(BUNDLE_NAME_DEMO, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_EXT_RESOURCE_MANAGER_DISABLE_DYNAMIC_ICON_FAILED); - ret = proxy->DisableDynamicIcon(BUNDLE_NAME_DEMO, -100, 0); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_INVALID_USER_ID); + proxy->DisableDynamicIcon(BUNDLE_NAME_DEMO, -100, 0, funcResult); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_INVALID_USER_ID); - ret = proxy->DisableDynamicIcon(BUNDLE_NAME_DEMO, USERID, USERID); - EXPECT_EQ(ret, ERR_APPEXECFWK_APP_INDEX_OUT_OF_RANGE); + proxy->DisableDynamicIcon(BUNDLE_NAME_DEMO, USERID, USERID, funcResult); + EXPECT_EQ(funcResult, ERR_APPEXECFWK_APP_INDEX_OUT_OF_RANGE); } } @@ -881,31 +911,28 @@ HWTEST_F(ExtendResourceManagerProxyTest, DisableDynamicIcon_0003, Function | Sma std::vector filePath; filePath.push_back(BUNDLE_PATH_2); std::vector destFiles; - ErrCode ret = proxy->CopyFiles(filePath, destFiles); + ErrCode ret = ExtendResourceManagerClient::GetInstance().CopyFiles(filePath, destFiles); EXPECT_EQ(ret, ERR_OK); - ret = proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles); - EXPECT_EQ(ret, ERR_OK); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles, funcResult); + EXPECT_EQ(funcResult, ERR_OK); - ret = proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, 0); - EXPECT_EQ(ret, ERR_OK); - ret = proxy->DisableDynamicIcon(BUNDLE_NAME_DEMO, USERID, 0); - EXPECT_EQ(ret, ERR_OK); + proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, 0, funcResult); + EXPECT_EQ(funcResult, ERR_OK); + proxy->DisableDynamicIcon(BUNDLE_NAME_DEMO, USERID, 0, funcResult); + EXPECT_EQ(funcResult, ERR_OK); InstallCloneApp(BUNDLE_NAME_DEMO, USERID, APP_INDEX); - ret = proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, APP_INDEX); - EXPECT_EQ(ret, ERR_OK); + proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_OK); - ret = proxy->DisableDynamicIcon(BUNDLE_NAME_DEMO, USERID, APP_INDEX); - EXPECT_EQ(ret, ERR_OK); + proxy->DisableDynamicIcon(BUNDLE_NAME_DEMO, USERID, APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_OK); std::string key; - ret = proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, key); - EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED); - EXPECT_TRUE(key.empty()); - - ret = proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, USERID, APP_INDEX, key); - EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED); + proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, key, funcResult); + EXPECT_EQ(funcResult, ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED); EXPECT_TRUE(key.empty()); } } @@ -936,25 +963,25 @@ HWTEST_F(ExtendResourceManagerProxyTest, DisableDynamicIcon_0004, Function | Sma std::vector filePath; filePath.push_back(BUNDLE_PATH_2); std::vector destFiles; - ErrCode ret = proxy->CopyFiles(filePath, destFiles); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + ErrCode ret = ExtendResourceManagerClient::GetInstance().CopyFiles(filePath, destFiles); EXPECT_EQ(ret, ERR_OK); - ret = proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles); - EXPECT_EQ(ret, ERR_OK); + proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles, funcResult); + EXPECT_EQ(funcResult, ERR_OK); - ret = proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, 0); - EXPECT_EQ(ret, ERR_OK); + proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, 0, funcResult); + EXPECT_EQ(funcResult, ERR_OK); std::string key; - ret = proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, key); - EXPECT_EQ(ret, ERR_OK); + proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, key, funcResult); + EXPECT_EQ(funcResult, ERR_OK); EXPECT_EQ(key, DYNAMIC_NAME); - ret = proxy->DisableDynamicIcon(BUNDLE_NAME_DEMO); - EXPECT_EQ(ret, ERR_OK); + proxy->DisableDynamicIcon(BUNDLE_NAME_DEMO, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_OK); - key = ""; - ret = proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, key); - EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED); + proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, key, funcResult); + EXPECT_EQ(funcResult, ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED); EXPECT_TRUE(key.empty()); } } @@ -985,18 +1012,20 @@ HWTEST_F(ExtendResourceManagerProxyTest, GetDynamicIcon_0001, Function | SmallTe std::vector filePath; filePath.push_back(BUNDLE_PATH_2); std::vector destFiles; - ErrCode ret = proxy->CopyFiles(filePath, destFiles); + ErrCode ret = ExtendResourceManagerClient::GetInstance().CopyFiles(filePath, destFiles); EXPECT_EQ(ret, ERR_OK); - ret = proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles); - EXPECT_EQ(ret, ERR_OK); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles, funcResult); + EXPECT_EQ(funcResult, ERR_OK); - ret = proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME); - EXPECT_EQ(ret, ERR_OK); + proxy->EnableDynamicIcon( + BUNDLE_NAME_DEMO, DYNAMIC_NAME, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_OK); std::string key; - ret = proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, key); - EXPECT_EQ(ret, ERR_OK); + proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, UNSPECIFIED_USERID, DEFAULT_APP_INDEX, key, funcResult); + EXPECT_EQ(funcResult, ERR_OK); EXPECT_EQ(key, DYNAMIC_NAME); } } @@ -1025,40 +1054,41 @@ HWTEST_F(ExtendResourceManagerProxyTest, GetDynamicIcon_0002, Function | SmallTe EXPECT_NE(proxy, nullptr); if (proxy != nullptr) { std::string key; - ErrCode ret = proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, -100, 0, key); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_INVALID_USER_ID); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, -100, 0, key, funcResult); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_INVALID_USER_ID); EXPECT_TRUE(key.empty()); - ret = proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, USERID, APP_INDEX, key); - EXPECT_EQ(ret, ERR_APPEXECFWK_APP_INDEX_OUT_OF_RANGE); + proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, USERID, APP_INDEX, key, funcResult); + EXPECT_EQ(funcResult, ERR_APPEXECFWK_APP_INDEX_OUT_OF_RANGE); EXPECT_TRUE(key.empty()); std::vector filePath; filePath.push_back(BUNDLE_PATH_2); std::vector destFiles; - ret = proxy->CopyFiles(filePath, destFiles); - EXPECT_EQ(ret, ERR_OK); - ret = proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles); + ErrCode ret = ExtendResourceManagerClient::GetInstance().CopyFiles(filePath, destFiles); EXPECT_EQ(ret, ERR_OK); + proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles, funcResult); + EXPECT_EQ(funcResult, ERR_OK); - ret = proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, 0); - EXPECT_EQ(ret, ERR_OK); + proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, 0, funcResult); + EXPECT_EQ(funcResult, ERR_OK); key = ""; - ret = proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, USERID, 0, key); - EXPECT_EQ(ret, ERR_OK); + proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, USERID, 0, key, funcResult); + EXPECT_EQ(funcResult, ERR_OK); EXPECT_EQ(key, DYNAMIC_NAME); InstallCloneApp(BUNDLE_NAME_DEMO, USERID, APP_INDEX); key = ""; - ret = proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, USERID, APP_INDEX, key); - EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED); + proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, USERID, APP_INDEX, key, funcResult); + EXPECT_EQ(funcResult, ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED); EXPECT_TRUE(key.empty()); - ret = proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, APP_INDEX); + ret = proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, APP_INDEX, funcResult); EXPECT_EQ(ret, ERR_OK); key = ""; - ret = proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, USERID, APP_INDEX, key); - EXPECT_EQ(ret, ERR_OK); + proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, USERID, APP_INDEX, key, funcResult); + EXPECT_EQ(funcResult, ERR_OK); EXPECT_EQ(key, DYNAMIC_NAME); } } @@ -1089,25 +1119,26 @@ HWTEST_F(ExtendResourceManagerProxyTest, GetDynamicIcon_0003, Function | SmallTe std::vector filePath; filePath.push_back(BUNDLE_PATH_2); std::vector destFiles; - ErrCode ret = proxy->CopyFiles(filePath, destFiles); + ErrCode ret = ExtendResourceManagerClient::GetInstance().CopyFiles(filePath, destFiles); EXPECT_EQ(ret, ERR_OK); - ret = proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles); - EXPECT_EQ(ret, ERR_OK); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles, funcResult); + EXPECT_EQ(funcResult, ERR_OK); - ret = proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, 0); - EXPECT_EQ(ret, ERR_OK); + proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, 0, funcResult); + EXPECT_EQ(funcResult, ERR_OK); std::string key; - ret = proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, USERID, 0, key); - EXPECT_EQ(ret, ERR_OK); + proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, USERID, 0, key, funcResult); + EXPECT_EQ(funcResult, ERR_OK); EXPECT_EQ(key, DYNAMIC_NAME); InstallCloneApp(BUNDLE_NAME_DEMO, USERID, APP_INDEX); - ret = proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, APP_INDEX); - EXPECT_EQ(ret, ERR_OK); - ret = proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, USERID, APP_INDEX, key); - EXPECT_EQ(ret, ERR_OK); + proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_OK); + proxy->GetDynamicIcon(BUNDLE_NAME_DEMO, USERID, APP_INDEX, key, funcResult); + EXPECT_EQ(funcResult, ERR_OK); EXPECT_EQ(key, DYNAMIC_NAME); } } @@ -1132,21 +1163,22 @@ HWTEST_F(ExtendResourceManagerProxyTest, GetAllDynamicIconInfo_0001, Function | EXPECT_NE(proxy, nullptr); if (proxy != nullptr) { std::vector infos; - ErrCode ret = proxy->GetAllDynamicIconInfo(infos); - if (ret == ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED) { + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + proxy->GetAllDynamicIconInfo(UNSPECIFIED_USERID, infos, funcResult); + if (funcResult == ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED) { EXPECT_TRUE(infos.empty()); } else { EXPECT_FALSE(infos.empty()); } std::vector infos2; - ret = proxy->GetAllDynamicIconInfo(-100, infos2); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_INVALID_USER_ID); + proxy->GetAllDynamicIconInfo(-100, infos2, funcResult); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_INVALID_USER_ID); EXPECT_TRUE(infos2.empty()); std::vector infos3; - ret = proxy->GetAllDynamicIconInfo(USERID, infos3); - if (ret == ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED) { + proxy->GetAllDynamicIconInfo(USERID, infos3, funcResult); + if (funcResult == ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED) { EXPECT_TRUE(infos3.empty()); } else { EXPECT_FALSE(infos3.empty()); @@ -1176,18 +1208,19 @@ HWTEST_F(ExtendResourceManagerProxyTest, GetAllDynamicIconInfo_0002, Function | std::vector filePath; filePath.push_back(BUNDLE_PATH_2); std::vector destFiles; - ErrCode ret = proxy->CopyFiles(filePath, destFiles); + ErrCode ret = ExtendResourceManagerClient::GetInstance().CopyFiles(filePath, destFiles); EXPECT_EQ(ret, ERR_OK); - ret = proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles); - EXPECT_EQ(ret, ERR_OK); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles, funcResult); + EXPECT_EQ(funcResult, ERR_OK); - ret = proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, 0); - EXPECT_EQ(ret, ERR_OK); + proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, 0, funcResult); + EXPECT_EQ(funcResult, ERR_OK); std::vector infos; - ret = proxy->GetAllDynamicIconInfo(USERID, infos); - EXPECT_EQ(ret, ERR_OK); + proxy->GetAllDynamicIconInfo(USERID, infos, funcResult); + EXPECT_EQ(funcResult, ERR_OK); EXPECT_TRUE(infos.size() > 0); for (const auto &info : infos) { if (info.bundleName == BUNDLE_NAME_DEMO) { @@ -1198,12 +1231,12 @@ HWTEST_F(ExtendResourceManagerProxyTest, GetAllDynamicIconInfo_0002, Function | } InstallCloneApp(BUNDLE_NAME_DEMO, USERID, APP_INDEX); - ret = proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, APP_INDEX); - EXPECT_EQ(ret, ERR_OK); + proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_OK); std::vector infos2; - ret = proxy->GetAllDynamicIconInfo(USERID, infos2); - EXPECT_EQ(ret, ERR_OK); + proxy->GetAllDynamicIconInfo(USERID, infos2, funcResult); + EXPECT_EQ(funcResult, ERR_OK); EXPECT_TRUE(infos2.size() > 1); } } @@ -1228,12 +1261,13 @@ HWTEST_F(ExtendResourceManagerProxyTest, GetDynamicIconInfo_0001, Function | Sma EXPECT_NE(proxy, nullptr); if (proxy != nullptr) { std::vector infos; - ErrCode ret = proxy->GetDynamicIconInfo(BUNDLE_NAME_DEMO, infos); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + proxy->GetDynamicIconInfo(BUNDLE_NAME_DEMO, infos, funcResult); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); EXPECT_TRUE(infos.empty()); - ret = proxy->GetDynamicIconInfo("", infos); - EXPECT_EQ(ret, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); + proxy->GetDynamicIconInfo("", infos, funcResult); + EXPECT_EQ(funcResult, ERR_BUNDLE_MANAGER_BUNDLE_NOT_EXIST); EXPECT_TRUE(infos.empty()); } } @@ -1258,8 +1292,9 @@ HWTEST_F(ExtendResourceManagerProxyTest, GetDynamicIconInfo_0002, Function | Sma EXPECT_NE(proxy, nullptr); if (proxy != nullptr) { std::vector infos; - ErrCode ret = proxy->GetDynamicIconInfo(BUNDLE_NAME_DEMO, infos); - EXPECT_EQ(ret, ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + proxy->GetDynamicIconInfo(BUNDLE_NAME_DEMO, infos, funcResult); + EXPECT_EQ(funcResult, ERR_EXT_RESOURCE_MANAGER_GET_DYNAMIC_ICON_FAILED); EXPECT_TRUE(infos.empty()); } } @@ -1290,18 +1325,19 @@ HWTEST_F(ExtendResourceManagerProxyTest, GetDynamicIconInfo_0003, Function | Sma std::vector filePath; filePath.push_back(BUNDLE_PATH_2); std::vector destFiles; - ErrCode ret = proxy->CopyFiles(filePath, destFiles); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + ErrCode ret = ExtendResourceManagerClient::GetInstance().CopyFiles(filePath, destFiles); EXPECT_EQ(ret, ERR_OK); - ret = proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles); - EXPECT_EQ(ret, ERR_OK); + proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles, funcResult); + EXPECT_EQ(funcResult, ERR_OK); - ret = proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, 0); - EXPECT_EQ(ret, ERR_OK); + proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, 0, funcResult); + EXPECT_EQ(funcResult, ERR_OK); std::vector infos; - ret = proxy->GetDynamicIconInfo(BUNDLE_NAME_DEMO, infos); - EXPECT_EQ(ret, ERR_OK); + proxy->GetDynamicIconInfo(BUNDLE_NAME_DEMO, infos, funcResult); + EXPECT_EQ(funcResult, ERR_OK); EXPECT_EQ(infos.size(), 1); for (const auto &info : infos) { EXPECT_EQ(info.bundleName, BUNDLE_NAME_DEMO); @@ -1338,22 +1374,23 @@ HWTEST_F(ExtendResourceManagerProxyTest, GetDynamicIconInfo_0004, Function | Sma std::vector filePath; filePath.push_back(BUNDLE_PATH_2); std::vector destFiles; - ErrCode ret = proxy->CopyFiles(filePath, destFiles); + int32_t funcResult = ERR_APPEXECFWK_PARCEL_ERROR; + ErrCode ret = ExtendResourceManagerClient::GetInstance().CopyFiles(filePath, destFiles); EXPECT_EQ(ret, ERR_OK); - ret = proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles); - EXPECT_EQ(ret, ERR_OK); + proxy->AddExtResource(BUNDLE_NAME_DEMO, destFiles, funcResult); + EXPECT_EQ(funcResult, ERR_OK); - ret = proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, 0); - EXPECT_EQ(ret, ERR_OK); + proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, 0, funcResult); + EXPECT_EQ(funcResult, ERR_OK); InstallCloneApp(BUNDLE_NAME_DEMO, USERID, APP_INDEX); - ret = proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, APP_INDEX); - EXPECT_EQ(ret, ERR_OK); + proxy->EnableDynamicIcon(BUNDLE_NAME_DEMO, DYNAMIC_NAME, USERID, APP_INDEX, funcResult); + EXPECT_EQ(funcResult, ERR_OK); std::vector infos; - ret = proxy->GetDynamicIconInfo(BUNDLE_NAME_DEMO, infos); - EXPECT_EQ(ret, ERR_OK); + proxy->GetDynamicIconInfo(BUNDLE_NAME_DEMO, infos, funcResult); + EXPECT_EQ(funcResult, ERR_OK); EXPECT_EQ(infos.size(), 2); for (const auto &info : infos) { EXPECT_EQ(info.bundleName, BUNDLE_NAME_DEMO);