1 /*
2  * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "bundle_status_callback_proxy.h"
17 
18 #include "app_log_wrapper.h"
19 #include "appexecfwk_errors.h"
20 #include "bundle_framework_core_ipc_interface_code.h"
21 #include "ipc_types.h"
22 #include "parcel.h"
23 #include "string_ex.h"
24 
25 namespace OHOS {
26 namespace AppExecFwk {
InitResultMap()27 void BundleStatusCallbackProxy::InitResultMap()
28 {
29     resultMap_ = {
30         {ERR_OK, "SUCCESS"},
31         {ERR_APPEXECFWK_INSTALL_INTERNAL_ERROR, "ERR_APPEXECFWK_INSTALL_INTERNAL_ERROR"},
32         {ERR_APPEXECFWK_INSTALL_HOST_INSTALLER_FAILED, "ERR_APPEXECFWK_INSTALL_HOST_INSTALLER_FAILED"},
33         {ERR_APPEXECFWK_INSTALL_PARSE_FAILED, "ERR_APPEXECFWK_INSTALL_PARSE_FAILED"},
34         {ERR_APPEXECFWK_INSTALL_VERSION_DOWNGRADE, "ERR_APPEXECFWK_INSTALL_VERSION_DOWNGRADE"},
35         {ERR_APPEXECFWK_INSTALL_VERIFICATION_FAILED, "ERR_APPEXECFWK_INSTALL_VERIFICATION_FAILED"},
36         {ERR_APPEXECFWK_INSTALL_FAILED_INVALID_SIGNATURE_FILE_PATH,
37             "ERR_APPEXECFWK_INSTALL_FAILED_INVALID_SIGNATURE_FILE_PATH"},
38         {ERR_APPEXECFWK_INSTALL_FAILED_BAD_BUNDLE_SIGNATURE_FILE,
39             "ERR_APPEXECFWK_INSTALL_FAILED_BAD_BUNDLE_SIGNATURE_FILE"},
40         {ERR_APPEXECFWK_INSTALL_FAILED_NO_BUNDLE_SIGNATURE, "ERR_APPEXECFWK_INSTALL_FAILED_NO_BUNDLE_SIGNATURE"},
41         {ERR_APPEXECFWK_INSTALL_FAILED_VERIFY_APP_PKCS7_FAIL, "ERR_APPEXECFWK_INSTALL_FAILED_VERIFY_APP_PKCS7_FAIL"},
42         {ERR_APPEXECFWK_INSTALL_FAILED_PROFILE_PARSE_FAIL, "ERR_APPEXECFWK_INSTALL_FAILED_PROFILE_PARSE_FAIL"},
43         {ERR_APPEXECFWK_INSTALL_FAILED_APP_SOURCE_NOT_TRUESTED,
44             "ERR_APPEXECFWK_INSTALL_FAILED_APP_SOURCE_NOT_TRUESTED"},
45         {ERR_APPEXECFWK_INSTALL_FAILED_BAD_DIGEST, "ERR_APPEXECFWK_INSTALL_FAILED_BAD_DIGEST"},
46         {ERR_APPEXECFWK_INSTALL_FAILED_BUNDLE_INTEGRITY_VERIFICATION_FAILURE,
47             "ERR_APPEXECFWK_INSTALL_FAILED_BUNDLE_INTEGRITY_VERIFICATION_FAILURE"},
48         {ERR_APPEXECFWK_INSTALL_FAILED_FILE_SIZE_TOO_LARGE, "ERR_APPEXECFWK_INSTALL_FAILED_FILE_SIZE_TOO_LARGE"},
49         {ERR_APPEXECFWK_INSTALL_FAILED_BAD_PUBLICKEY, "ERR_APPEXECFWK_INSTALL_FAILED_BAD_PUBLICKEY"},
50         {ERR_APPEXECFWK_INSTALL_FAILED_BAD_BUNDLE_SIGNATURE, "ERR_APPEXECFWK_INSTALL_FAILED_BAD_BUNDLE_SIGNATURE"},
51         {ERR_APPEXECFWK_INSTALL_FAILED_NO_PROFILE_BLOCK_FAIL, "ERR_APPEXECFWK_INSTALL_FAILED_NO_PROFILE_BLOCK_FAIL"},
52         {ERR_APPEXECFWK_INSTALL_FAILED_BUNDLE_SIGNATURE_VERIFICATION_FAILURE,
53             "ERR_APPEXECFWK_INSTALL_FAILED_BUNDLE_SIGNATURE_VERIFICATION_FAILURE"},
54         {ERR_APPEXECFWK_INSTALL_FAILED_VERIFY_SOURCE_INIT_FAIL,
55             "ERR_APPEXECFWK_INSTALL_FAILED_VERIFY_SOURCE_INIT_FAIL"},
56         {ERR_APPEXECFWK_INSTALL_FAILED_INCOMPATIBLE_SIGNATURE, "ERR_APPEXECFWK_INSTALL_FAILED_INCOMPATIBLE_SIGNATURE"},
57         {ERR_APPEXECFWK_INSTALL_FAILED_INCONSISTENT_SIGNATURE, "ERR_APPEXECFWK_INSTALL_FAILED_INCONSISTENT_SIGNATURE"},
58         {ERR_APPEXECFWK_INSTALL_FAILED_MODULE_NAME_EMPTY, "ERR_APPEXECFWK_INSTALL_FAILED_MODULE_NAME_EMPTY"},
59         {ERR_APPEXECFWK_INSTALL_FAILED_MODULE_NAME_DUPLICATE, "ERR_APPEXECFWK_INSTALL_FAILED_MODULE_NAME_DUPLICATE"},
60         {ERR_APPEXECFWK_INSTALL_FAILED_CHECK_HAP_HASH_PARAM, "ERR_APPEXECFWK_INSTALL_FAILED_CHECK_HAP_HASH_PARAM"},
61         {ERR_APPEXECFWK_INSTALL_PARAM_ERROR, "ERR_APPEXECFWK_INSTALL_PARAM_ERROR"},
62         {ERR_APPEXECFWK_INSTALL_PERMISSION_DENIED, "ERR_APPEXECFWK_INSTALL_PERMISSION_DENIED"},
63         {ERR_APPEXECFWK_INSTALL_ENTRY_ALREADY_EXIST, "ERR_APPEXECFWK_INSTALL_ENTRY_ALREADY_EXIST"},
64         {ERR_APPEXECFWK_INSTALL_STATE_ERROR, "ERR_APPEXECFWK_INSTALL_STATE_ERROR"},
65         {ERR_APPEXECFWK_INSTALL_FILE_PATH_INVALID, "ERR_APPEXECFWK_INSTALL_FILE_PATH_INVALID"},
66         {ERR_APPEXECFWK_INSTALL_INVALID_HAP_NAME, "ERR_APPEXECFWK_INSTALL_INVALID_HAP_NAME"},
67         {ERR_APPEXECFWK_INSTALL_INVALID_BUNDLE_FILE, "ERR_APPEXECFWK_INSTALL_INVALID_BUNDLE_FILE"},
68         {ERR_APPEXECFWK_INSTALL_INVALID_HAP_SIZE, "ERR_APPEXECFWK_INSTALL_INVALID_HAP_SIZE"},
69         {ERR_APPEXECFWK_INSTALL_GENERATE_UID_ERROR, "ERR_APPEXECFWK_INSTALL_GENERATE_UID_ERROR"},
70         {ERR_APPEXECFWK_INSTALL_INSTALLD_SERVICE_ERROR, "ERR_APPEXECFWK_INSTALL_INSTALLD_SERVICE_ERROR"},
71         {ERR_APPEXECFWK_INSTALL_BUNDLE_MGR_SERVICE_ERROR, "ERR_APPEXECFWK_INSTALL_BUNDLE_MGR_SERVICE_ERROR"},
72         {ERR_APPEXECFWK_INSTALL_ALREADY_EXIST, "ERR_APPEXECFWK_INSTALL_ALREADY_EXIST"},
73         {ERR_APPEXECFWK_INSTALL_BUNDLENAME_NOT_SAME, "ERR_APPEXECFWK_INSTALL_BUNDLENAME_NOT_SAME"},
74         {ERR_APPEXECFWK_INSTALL_VERSIONCODE_NOT_SAME, "ERR_APPEXECFWK_INSTALL_VERSIONCODE_NOT_SAME"},
75         {ERR_APPEXECFWK_INSTALL_VERSIONNAME_NOT_SAME, "ERR_APPEXECFWK_INSTALL_VERSIONNAME_NOT_SAME"},
76         {ERR_APPEXECFWK_INSTALL_MINCOMPATIBLE_VERSIONCODE_NOT_SAME,
77             "ERR_APPEXECFWK_INSTALL_MINCOMPATIBLE_VERSIONCODE_NOT_SAME"},
78         {ERR_APPEXECFWK_INSTALL_VENDOR_NOT_SAME, "ERR_APPEXECFWK_INSTALL_VENDOR_NOT_SAME"},
79         {ERR_APPEXECFWK_INSTALL_RELEASETYPE_TARGET_NOT_SAME, "ERR_APPEXECFWK_INSTALL_RELEASETYPE_TARGET_NOT_SAME"},
80         {ERR_APPEXECFWK_INSTALL_RELEASETYPE_NOT_SAME, "ERR_APPEXECFWK_INSTALL_RELEASETYPE_NOT_SAME"},
81         {ERR_APPEXECFWK_INSTALL_RELEASETYPE_COMPATIBLE_NOT_SAME,
82             "ERR_APPEXECFWK_INSTALL_RELEASETYPE_COMPATIBLE_NOT_SAME"},
83         {ERR_APPEXECFWK_INSTALL_VERSION_NOT_COMPATIBLE, "ERR_APPEXECFWK_INSTALL_VERSION_NOT_COMPATIBLE"},
84         {ERR_APPEXECFWK_INSTALL_INVALID_NUMBER_OF_ENTRY_HAP, "ERR_APPEXECFWK_INSTALL_INVALID_NUMBER_OF_ENTRY_HAP"},
85         {ERR_APPEXECFWK_INSTALL_DISK_MEM_INSUFFICIENT, "ERR_APPEXECFWK_INSTALL_DISK_MEM_INSUFFICIENT"},
86         {ERR_APPEXECFWK_NATIVE_HNP_EXTRACT_FAILED, "ERR_APPEXECFWK_NATIVE_HNP_EXTRACT_FAILED"},
87         {ERR_APPEXECFWK_INSTALL_GRANT_REQUEST_PERMISSIONS_FAILED,
88             "ERR_APPEXECFWK_INSTALL_GRANT_REQUEST_PERMISSIONS_FAILED"},
89         {ERR_APPEXECFWK_INSTALL_UPDATE_HAP_TOKEN_FAILED, "ERR_APPEXECFWK_INSTALL_UPDATE_HAP_TOKEN_FAILED"},
90         {ERR_APPEXECFWK_INSTALL_CHECK_SYSCAP_FAILED, "ERR_APPEXECFWK_INSTALL_CHECK_SYSCAP_FAILED"},
91         {ERR_APPEXECFWK_INSTALL_APPTYPE_NOT_SAME, "ERR_APPEXECFWK_INSTALL_APPTYPE_NOT_SAME"},
92         {ERR_APPEXECFWK_INSTALL_URI_DUPLICATE, "ERR_APPEXECFWK_INSTALL_URI_DUPLICATE"},
93         {ERR_APPEXECFWK_INSTALL_TYPE_ERROR, "ERR_APPEXECFWK_INSTALL_TYPE_ERROR"},
94         {ERR_APPEXECFWK_INSTALL_SDK_INCOMPATIBLE, "ERR_APPEXECFWK_INSTALL_SDK_INCOMPATIBLE"},
95         {ERR_APPEXECFWK_INSTALL_SO_INCOMPATIBLE, "ERR_APPEXECFWK_INSTALL_SO_INCOMPATIBLE"},
96         {ERR_APPEXECFWK_INSTALL_AN_INCOMPATIBLE, "ERR_APPEXECFWK_INSTALL_AN_INCOMPATIBLE"},
97         {ERR_APPEXECFWK_FAILED_SERVICE_DIED, "ERR_APPEXECFWK_FAILED_SERVICE_DIED"},
98         {ERR_APPEXECFWK_PARSE_UNEXPECTED, "ERR_APPEXECFWK_PARSE_UNEXPECTED"},
99         {ERR_APPEXECFWK_PARSE_MISSING_BUNDLE, "ERR_APPEXECFWK_PARSE_MISSING_BUNDLE"},
100         {ERR_APPEXECFWK_PARSE_MISSING_ABILITY, "ERR_APPEXECFWK_PARSE_MISSING_ABILITY"},
101         {ERR_APPEXECFWK_PARSE_NO_PROFILE, "ERR_APPEXECFWK_PARSE_NO_PROFILE"},
102         {ERR_APPEXECFWK_PARSE_BAD_PROFILE, "ERR_APPEXECFWK_PARSE_BAD_PROFILE"},
103         {ERR_APPEXECFWK_PARSE_PROFILE_PROP_TYPE_ERROR, "ERR_APPEXECFWK_PARSE_PROFILE_PROP_TYPE_ERROR"},
104         {ERR_APPEXECFWK_PARSE_PROFILE_MISSING_PROP, "ERR_APPEXECFWK_PARSE_PROFILE_MISSING_PROP"},
105         {ERR_APPEXECFWK_PARSE_PERMISSION_ERROR, "ERR_APPEXECFWK_PARSE_PERMISSION_ERROR"},
106         {ERR_APPEXECFWK_PARSE_PROFILE_PROP_CHECK_ERROR, "ERR_APPEXECFWK_PARSE_PROFILE_PROP_CHECK_ERROR"},
107         {ERR_APPEXECFWK_PARSE_RPCID_FAILED, "ERR_APPEXECFWK_PARSE_RPCID_FAILED"},
108         {ERR_APPEXECFWK_PARSE_NATIVE_SO_FAILED, "ERR_APPEXECFWK_PARSE_NATIVE_SO_FAILED"},
109         {ERR_APPEXECFWK_PARSE_AN_FAILED, "ERR_APPEXECFWK_PARSE_AN_FAILED"},
110         {ERR_APPEXECFWK_INSTALLD_PARAM_ERROR, "ERR_APPEXECFWK_INSTALLD_PARAM_ERROR"},
111         {ERR_APPEXECFWK_INSTALLD_GET_PROXY_ERROR, "ERR_APPEXECFWK_INSTALLD_GET_PROXY_ERROR"},
112         {ERR_APPEXECFWK_INSTALLD_CREATE_DIR_FAILED, "ERR_APPEXECFWK_INSTALLD_CREATE_DIR_FAILED"},
113         {ERR_APPEXECFWK_INSTALLD_CREATE_DIR_EXIST, "ERR_APPEXECFWK_INSTALLD_CREATE_DIR_EXIST"},
114         {ERR_APPEXECFWK_INSTALLD_CHOWN_FAILED, "ERR_APPEXECFWK_INSTALLD_CHOWN_FAILED"},
115         {ERR_APPEXECFWK_INSTALLD_REMOVE_DIR_FAILED, "ERR_APPEXECFWK_INSTALLD_REMOVE_DIR_FAILED"},
116         {ERR_APPEXECFWK_INSTALLD_EXTRACT_FILES_FAILED, "ERR_APPEXECFWK_INSTALLD_EXTRACT_FILES_FAILED"},
117         {ERR_APPEXECFWK_INSTALLD_RNAME_DIR_FAILED, "ERR_APPEXECFWK_INSTALLD_RNAME_DIR_FAILED"},
118         {ERR_APPEXECFWK_INSTALLD_CLEAN_DIR_FAILED, "ERR_APPEXECFWK_INSTALLD_CLEAN_DIR_FAILED"},
119         {ERR_APPEXECFWK_INSTALLD_PERMISSION_DENIED, "ERR_APPEXECFWK_INSTALLD_PERMISSION_DENIED"},
120         {ERR_APPEXECFWK_INSTALLD_SET_SELINUX_LABEL_FAILED, "ERR_APPEXECFWK_INSTALLD_SET_SELINUX_LABEL_FAILED"},
121         {ERR_APPEXECFWK_UNINSTALL_SYSTEM_APP_ERROR, "ERR_APPEXECFWK_UNINSTALL_SYSTEM_APP_ERROR"},
122         {ERR_APPEXECFWK_UNINSTALL_KILLING_APP_ERROR, "ERR_APPEXECFWK_UNINSTALL_KILLING_APP_ERROR"},
123         {ERR_APPEXECFWK_UNINSTALL_INVALID_NAME, "ERR_APPEXECFWK_UNINSTALL_INVALID_NAME"},
124         {ERR_APPEXECFWK_UNINSTALL_PARAM_ERROR, "ERR_APPEXECFWK_UNINSTALL_PARAM_ERROR"},
125         {ERR_APPEXECFWK_UNINSTALL_PERMISSION_DENIED, "ERR_APPEXECFWK_UNINSTALL_PERMISSION_DENIED"},
126         {ERR_APPEXECFWK_UNINSTALL_BUNDLE_MGR_SERVICE_ERROR, "ERR_APPEXECFWK_UNINSTALL_BUNDLE_MGR_SERVICE_ERROR"},
127         {ERR_APPEXECFWK_UNINSTALL_MISSING_INSTALLED_BUNDLE, "ERR_APPEXECFWK_UNINSTALL_MISSING_INSTALLED_BUNDLE"},
128         {ERR_APPEXECFWK_UNINSTALL_MISSING_INSTALLED_MODULE, "ERR_APPEXECFWK_UNINSTALL_MISSING_INSTALLED_MODULE"},
129         {ERR_APPEXECFWK_RECOVER_GET_BUNDLEPATH_ERROR, "ERR_APPEXECFWK_RECOVER_GET_BUNDLEPATH_ERROR"},
130         {ERR_APPEXECFWK_RECOVER_INVALID_BUNDLE_NAME, "ERR_APPEXECFWK_RECOVER_INVALID_BUNDLE_NAME"},
131         {ERR_APPEXECFWK_RECOVER_NOT_ALLOWED, "ERR_APPEXECFWK_RECOVER_NOT_ALLOWED"},
132         {ERR_APPEXECFWK_UNINSTALL_AND_RECOVER_NOT_PREINSTALLED_BUNDLE,
133             "ERR_APPEXECFWK_UNINSTALL_AND_RECOVER_NOT_PREINSTALLED_BUNDLE"},
134         {ERR_APPEXECFWK_UNINSTALL_CONTROLLED, "ERR_APPEXECFWK_UNINSTALL_CONTROLLED"},
135         {ERR_APPEXECFWK_USER_NOT_EXIST, "ERR_APPEXECFWK_USER_NOT_EXIST"},
136         {ERR_APPEXECFWK_USER_CREATE_FAILED, "ERR_APPEXECFWK_USER_CREATE_FAILED"},
137         {ERR_APPEXECFWK_USER_REMOVE_FAILED, "ERR_APPEXECFWK_USER_REMOVE_FAILED"},
138         {ERR_APPEXECFWK_USER_NOT_INSTALL_HAP, "ERR_APPEXECFWK_USER_NOT_INSTALL_HAP"},
139         {ERR_APPEXECFWK_INSTALL_APP_DISTRIBUTION_TYPE_NOT_SAME,
140             "ERR_APPEXECFWK_INSTALL_APP_DISTRIBUTION_TYPE_NOT_SAME"},
141         {ERR_APPEXECFWK_INSTALL_APP_PROVISION_TYPE_NOT_SAME, "ERR_APPEXECFWK_INSTALL_APP_PROVISION_TYPE_NOT_SAME"},
142         {ERR_APPEXECFWK_INSTALL_NOT_UNIQUE_DISTRO_MODULE_NAME, "ERR_APPEXECFWK_INSTALL_NOT_UNIQUE_DISTRO_MODULE_NAME"},
143         {ERR_APPEXECFWK_INSTALL_INCONSISTENT_MODULE_NAME, "ERR_APPEXECFWK_INSTALL_INCONSISTENT_MODULE_NAME"},
144         {ERR_APPEXECFWK_INSTALL_SINGLETON_INCOMPATIBLE, "ERR_APPEXECFWK_INSTALL_SINGLETON_INCOMPATIBLE"},
145         {ERR_BUNDLE_MANAGER_APP_CONTROL_DISALLOWED_INSTALL, "ERR_BUNDLE_MANAGER_APP_CONTROL_DISALLOWED_INSTALL"},
146         {ERR_BUNDLE_MANAGER_APP_CONTROL_DISALLOWED_UNINSTALL, "ERR_BUNDLE_MANAGER_APP_CONTROL_DISALLOWED_UNINSTALL"},
147         {ERR_APPEXECFWK_INSTALL_DEVICE_TYPE_NOT_SUPPORTED, "ERR_APPEXECFWK_INSTALL_DEVICE_TYPE_NOT_SUPPORTED"},
148         {ERR_APPEXECFWK_INSTALL_DEPENDENT_MODULE_NOT_EXIST, "ERR_APPEXECFWK_INSTALL_DEPENDENT_MODULE_NOT_EXIST"},
149         {ERR_APPEXECFWK_PARSE_PROFILE_PROP_SIZE_CHECK_ERROR, "ERR_APPEXECFWK_PARSE_PROFILE_PROP_SIZE_CHECK_ERROR"},
150         {ERR_APPEXECFWK_INSTALL_ASAN_ENABLED_NOT_SAME, "ERR_APPEXECFWK_INSTALL_ASAN_ENABLED_NOT_SAME"},
151         {ERR_APPEXECFWK_INSTALL_ASAN_NOT_SUPPORT, "ERR_APPEXECFWK_INSTALL_ASAN_NOT_SUPPORT"},
152         {ERR_APPEXECFWK_BUNDLE_TYPE_NOT_SAME, "ERR_APPEXECFWK_BUNDLE_TYPE_NOT_SAME"},
153         {ERR_APPEXECFWK_INSTALL_SHARE_APP_LIBRARY_NOT_ALLOWED, "ERR_APPEXECFWK_INSTALL_SHARE_APP_LIBRARY_NOT_ALLOWED"},
154         {ERR_APPEXECFWK_INSTALL_COMPATIBLE_POLICY_NOT_SAME, "ERR_APPEXECFWK_INSTALL_COMPATIBLE_POLICY_NOT_SAME"},
155         {ERR_APPEXECFWK_INSTALL_FILE_IS_SHARED_LIBRARY, "ERR_APPEXECFWK_INSTALL_FILE_IS_SHARED_LIBRARY"},
156         {ERR_APPEXECFWK_INSTALL_CHECK_PROXY_DATA_URI_FAILED, "ERR_APPEXECFWK_INSTALL_CHECK_PROXY_DATA_URI_FAILED"},
157         {ERR_APPEXECFWK_INSTALL_SELF_UPDATE_NOT_MDM, "ERR_APPEXECFWK_INSTALL_SELF_UPDATE_NOT_MDM"},
158         {ERR_APPEXECFWK_INSTALL_CHECK_PROXY_DATA_PERMISSION_FAILED,
159             "ERR_APPEXECFWK_INSTALL_CHECK_PROXY_DATA_PERMISSION_FAILED"},
160         {ERR_APPEXECFWK_INSTALL_DEBUG_NOT_SAME,
161             "ERR_APPEXECFWK_INSTALL_DEBUG_NOT_SAME"},
162         {ERR_APPEXECFWK_INSTALL_ISOLATION_MODE_FAILED, "ERR_APPEXECFWK_INSTALL_ISOLATION_MODE_FAILED"},
163         {ERR_BUNDLEMANAGER_INSTALL_CODE_SIGNATURE_FAILED, "ERR_BUNDLEMANAGER_INSTALL_CODE_SIGNATURE_FAILED"},
164         {ERR_BUNDLEMANAGER_INSTALL_CODE_SIGNATURE_FILE_IS_INVALID,
165             "ERR_BUNDLEMANAGER_INSTALL_CODE_SIGNATURE_FILE_IS_INVALID"},
166         {ERR_APPEXECFWK_INSTALL_ENTERPRISE_BUNDLE_NOT_ALLOWED, "ERR_APPEXECFWK_INSTALL_ENTERPRISE_BUNDLE_NOT_ALLOWED"},
167         {ERR_APPEXECFWK_INSTALL_INTERNALTESTING_BUNDLE_NOT_ALLOWED,
168             "ERR_APPEXECFWK_INSTALL_INTERNALTESTING_BUNDLE_NOT_ALLOWED"},
169         {ERR_APPEXECFWK_INSTALL_SELF_UPDATE_BUNDLENAME_NOT_SAME,
170         "ERR_APPEXECFWK_INSTALL_SELF_UPDATE_BUNDLENAME_NOT_SAME"},
171         {ERR_APPEXECFWK_INSTALL_GWP_ASAN_ENABLED_NOT_SAME, "ERR_APPEXECFWK_INSTALL_GWP_ASAN_ENABLED_NOT_SAME"},
172         {ERR_APPEXECFWK_INSTALL_DEBUG_BUNDLE_NOT_ALLOWED, "ERR_APPEXECFWK_INSTALL_DEBUG_BUNDLE_NOT_ALLOWED"},
173         {ERR_APPEXECFWK_INSTALL_CHECK_ENCRYPTION_FAILED, "ERR_APPEXECFWK_INSTALL_CHECK_ENCRYPTION_FAILED"},
174         {ERR_BUNDLE_MANAGER_CODE_SIGNATURE_DELIVERY_FILE_FAILED,
175             "ERR_BUNDLE_MANAGER_CODE_SIGNATURE_DELIVERY_FILE_FAILED"},
176         {ERR_BUNDLE_MANAGER_CODE_SIGNATURE_REMOVE_FILE_FAILED, "ERR_BUNDLE_MANAGER_CODE_SIGNATURE_REMOVE_FILE_FAILED"},
177         {ERR_APPEXECFWK_INSTALL_APPID_NOT_SAME_WITH_PREINSTALLED,
178             "ERR_APPEXECFWK_INSTALL_APPID_NOT_SAME_WITH_PREINSTALLED"},
179     };
180 }
181 
BundleStatusCallbackProxy(const sptr<IRemoteObject> & object)182 BundleStatusCallbackProxy::BundleStatusCallbackProxy(const sptr<IRemoteObject> &object)
183     : IRemoteProxy<IBundleStatusCallback>(object)
184 {
185     InitResultMap();
186     APP_LOGI("create bundle status callback proxy instance");
187 }
188 
~BundleStatusCallbackProxy()189 BundleStatusCallbackProxy::~BundleStatusCallbackProxy()
190 {
191     APP_LOGI("destroy bundle status callback proxy instance");
192 }
193 
OnBundleStateChanged(const uint8_t installType,const int32_t resultCode,const std::string & resultMsg,const std::string & bundleName)194 void BundleStatusCallbackProxy::OnBundleStateChanged(
195     const uint8_t installType, const int32_t resultCode, const std::string &resultMsg, const std::string &bundleName)
196 {
197     APP_LOGI("bundle state changed %{public}s", bundleName.c_str());
198     MessageParcel data;
199     MessageParcel reply;
200     MessageOption option(MessageOption::TF_SYNC);
201     if (!data.WriteInterfaceToken(BundleStatusCallbackProxy::GetDescriptor())) {
202         APP_LOGE("fail to OnBundleStateChanged due to write MessageParcel fail");
203         return;
204     }
205     if (!data.WriteUint8(installType)) {
206         APP_LOGE("fail to call OnBundleStateChanged, for write installType failed");
207         return;
208     }
209     if (!data.WriteInt32(resultCode)) {
210         APP_LOGE("fail to call OnBundleStateChanged, for write resultCode failed");
211         return;
212     }
213     std::string msg = "";
214     if (resultMap_.find(resultCode) != resultMap_.end()) {
215         msg = resultMap_.at(resultCode);
216     }
217     if (!data.WriteString16(Str8ToStr16(msg))) {
218         APP_LOGE("fail to call OnBundleStateChanged, for write resultMsg failed");
219         return;
220     }
221     if (!data.WriteString16(Str8ToStr16(bundleName))) {
222         APP_LOGE("fail to call OnBundleStateChanged, for write bundleName failed");
223         return;
224     }
225 
226     sptr<IRemoteObject> remote = Remote();
227     if (remote == nullptr) {
228         APP_LOGE("fail to call OnBundleStateChanged, for Remote() is nullptr");
229         return;
230     }
231 
232     int32_t ret = remote->SendRequest(
233         static_cast<int32_t>(BundleStatusCallbackInterfaceCode::ON_BUNDLE_STATE_CHANGED), data, reply, option);
234     if (ret != NO_ERROR) {
235         APP_LOGW("call OnBundleStateChanged fail for transact failed, error code: %{public}d", ret);
236     }
237 }
238 }  // namespace AppExecFwk
239 }  // namespace OHOS
240