• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "status_receiver_proxy.h"
17 
18 #include <map>
19 
20 #include "ipc_types.h"
21 #include "parcel.h"
22 #include "string_ex.h"
23 
24 #include "app_log_wrapper.h"
25 #include "appexecfwk_errors.h"
26 #include "bundle_mgr_service.h"
27 
28 namespace OHOS {
29 namespace AppExecFwk {
30 namespace {
31 // struct for transform internal error code/message to result which open to developer
32 struct ReceivedResult {
33     int32_t clientCode = -1;
34     std::string clientMessage;
35 };
36 
37 const char* MSG_SUCCESS = "[SUCCESS]";
38 const char* MSG_ERR_INSTALL_INTERNAL_ERROR = "[ERR_INSTALL_INTERNAL_ERROR]";
39 const char* MSG_ERR_INSTALL_HOST_INSTALLER_FAILED = "[ERR_INSTALL_HOST_INSTALLER_FAILED]";
40 const char* MSG_ERR_INSTALL_PARSE_FAILED = "[ERR_INSTALL_PARSE_FAILED]";
41 const char* MSG_ERR_INSTALL_VERSION_DOWNGRADE = "[ERR_INSTALL_VERSION_DOWNGRADE]";
42 const char* MSG_ERR_INSTALL_VERIFICATION_FAILED = "[ERR_INSTALL_VERIFICATION_FAILED]";
43 const char* MSG_ERR_INSTALL_FAILED_INVALID_SIGNATURE_FILE_PATH =
44     "[MSG_ERR_INSTALL_FAILED_INVALID_SIGNATURE_FILE_PATH]";
45 const char* MSG_ERR_INSTALL_FAILED_BAD_BUNDLE_SIGNATURE_FILE =
46     "[MSG_ERR_INSTALL_FAILED_BAD_BUNDLE_SIGNATURE_FILE]";
47 const char* MSG_ERR_INSTALL_FAILED_NO_BUNDLE_SIGNATURE = "[MSG_ERR_INSTALL_FAILED_NO_BUNDLE_SIGNATURE]";
48 const char* MSG_ERR_INSTALL_FAILED_VERIFY_APP_PKCS7_FAIL = "[MSG_ERR_INSTALL_FAILED_VERIFY_APP_PKCS7_FAIL]";
49 const char* MSG_ERR_INSTALL_FAILED_PROFILE_PARSE_FAIL = "[MSG_ERR_INSTALL_FAILED_PROFILE_PARSE_FAIL]";
50 const char* MSG_ERR_INSTALL_FAILED_APP_SOURCE_NOT_TRUESTED = "[MSG_ERR_INSTALL_FAILED_APP_SOURCE_NOT_TRUESTED]";
51 const char* MSG_ERR_INSTALL_FAILED_BAD_DIGEST = "[MSG_ERR_INSTALL_FAILED_BAD_DIGEST]";
52 const char* MSG_ERR_INSTALL_FAILED_BUNDLE_INTEGRITY_VERIFICATION_FAILURE =
53     "[MSG_ERR_INSTALL_FAILED_BUNDLE_INTEGRITY_VERIFICATION_FAILURE]";
54 const char* MSG_ERR_INSTALL_FAILED_FILE_SIZE_TOO_LARGE = "[MSG_ERR_INSTALL_FAILED_FILE_SIZE_TOO_LARGE]";
55 const char* MSG_ERR_INSTALL_FAILED_BAD_PUBLICKEY = "[MSG_ERR_INSTALL_FAILED_BAD_PUBLICKEY]";
56 const char* MSG_ERR_INSTALL_FAILED_BAD_BUNDLE_SIGNATURE = "[MSG_ERR_INSTALL_FAILED_BAD_BUNDLE_SIGNATURE]";
57 const char* MSG_ERR_INSTALL_FAILED_NO_PROFILE_BLOCK_FAIL = "[MSG_ERR_INSTALL_FAILED_NO_PROFILE_BLOCK_FAIL]";
58 const char* MSG_ERR_INSTALL_FAILED_BUNDLE_SIGNATURE_VERIFICATION_FAILURE =
59     "[MSG_ERR_INSTALL_FAILED_BUNDLE_SIGNATURE_VERIFICATION_FAILURE]";
60 const char* MSG_ERR_INSTALL_FAILED_VERIFY_SOURCE_INIT_FAIL = "[MSG_ERR_INSTALL_FAILED_VERIFY_SOURCE_INIT_FAIL]";
61 const char* MSG_ERR_INSTALL_FAILED_INCOMPATIBLE_SIGNATURE = "[ERR_INSTALL_FAILED_INCOMPATIBLE_SIGNATURE]";
62 const char* MSG_ERR_INSTALL_FAILED_INCONSISTENT_SIGNATURE = "[MSG_ERR_INSTALL_FAILED_INCONSISTENT_SIGNATURE]";
63 const char* MSG_ERR_INSTALL_FAILED_MODULE_NAME_EMPTY = "[MSG_ERR_INSTALL_FAILED_MODULE_NAME_EMPTY]";
64 const char* MSG_ERR_INSTALL_FAILED_MODULE_NAME_DUPLICATE = "[MSG_ERR_INSTALL_FAILED_MODULE_NAME_DUPLICATE]";
65 const char* MSG_ERR_INSTALL_FAILED_CHECK_HAP_HASH_PARAM = "[MSG_ERR_INSTALL_FAILED_CHECK_HAP_HASH_PARAM]";
66 const char* MSG_ERR_INSTALL_PARAM_ERROR = "[MSG_ERR_INSTALL_PARAM_ERROR]";
67 const char* MSG_ERR_INSTALL_PERMISSION_DENIED = "[MSG_ERR_INSTALL_PERMISSION_DENIED]";
68 const char* MSG_ERR_INSTALL_ENTRY_ALREADY_EXIST = "[MSG_ERR_INSTALL_ENTRY_ALREADY_EXIST]";
69 const char* MSG_ERR_INSTALL_STATE_ERROR = "[MSG_ERR_INSTALL_STATE_ERROR]";
70 const char* MSG_ERR_INSTALL_FILE_PATH_INVALID = "[MSG_ERR_INSTALL_FILE_PATH_INVALID]";
71 const char* MSG_ERR_INSTALL_INVALID_BUNDLE_FILE = "[ERR_INSTALL_INVALID_BUNDLE_FILE]";
72 const char* MSG_ERR_INSTALL_INVALID_HAP_SIZE = "[ERR_INSTALL_INVALID_HAP_SIZE]";
73 const char* MSG_ERR_INSTALL_GENERATE_UID_ERROR = "[ERR_INSTALL_GENERATE_UID_ERROR]";
74 const char* MSG_ERR_INSTALL_INSTALLD_SERVICE_ERROR = "[ERR_INSTALL_INSTALLD_SERVICE_ERROR]";
75 const char* MSG_ERR_INSTALL_BUNDLE_MGR_SERVICE_ERROR = "[ERR_INSTALL_BUNDLE_MGR_SERVICE_ERROR]";
76 const char* MSG_ERR_INSTALL_ALREADY_EXIST = "[ERR_INSTALL_ALREADY_EXIST]";
77 const char* MSG_ERR_INSTALL_BUNDLENAME_NOT_SAME = "[ERR_INSTALL_BUNDLENAME_NOT_SAME]";
78 const char* MSG_ERR_INSTALL_VERSIONCODE_NOT_SAME = "[ERR_INSTALL_VERSIONCODE_NOT_SAME]";
79 const char* MSG_ERR_INSTALL_VERSIONNAME_NOT_SAME = "[ERR_INSTALL_VERSIONNAME_NOT_SAME]";
80 const char* MSG_ERR_INSTALL_MINCOMPATIBLE_VERSIONCODE_NOT_SAME =
81     "[ERR_INSTALL_MINCOMPATIBLE_VERSIONCODE_NOT_SAME]";
82 const char* MSG_ERR_INSTALL_VENDOR_NOT_SAME = "[ERR_INSTALL_VENDOR_NOT_SAME]";
83 const char* MSG_ERR_INSTALL_RELEASETYPE_TARGET_NOT_SAME = "[ERR_INSTALL_RELEASETYPE_TARGET_NOT_SAME]";
84 const char* MSG_ERR_INSTALL_RELEASETYPE_NOT_SAME = "[ERR_INSTALL_RELEASETYPE_NOT_SAME]";
85 const char* MSG_ERR_INSTALL_RELEASETYPE_COMPATIBLE_NOT_SAME = "[ERR_INSTALL_RELEASETYPE_COMPATIBLE_NOT_SAME]";
86 const char* MSG_ERR_INSTALL_VERSION_NOT_COMPATIBLE = "[ERR_INSTALL_VERSION_NOT_COMPATIBLE]";
87 const char* MSG_ERR_INSTALL_APP_DISTRIBUTION_TYPE_NOT_SAME = "[ERR_INSTALL_APP_DISTRIBUTION_TYPE_NOT_SAME]";
88 const char* MSG_ERR_INSTALL_APP_PROVISION_TYPE_NOT_SAME = "[ERR_INSTALL_APP_PROVISION_TYPE_NOT_SAME]";
89 const char* MSG_ERR_INSTALL_INVALID_NUMBER_OF_ENTRY_HAP = "[ERR_INSTALL_INVALID_NUMBER_OF_ENTRY_HAP]";
90 const char* MSG_ERR_INSTALL_DISK_MEM_INSUFFICIENT = "[MSG_ERR_INSTALL_DISK_MEM_INSUFFICIENT]";
91 const char* MSG_ERR_INSTALL_GRANT_REQUEST_PERMISSIONS_FAILED =
92     "[MSG_ERR_INSTALL_GRANT_REQUEST_PERMISSIONS_FAILED]";
93 const char* MSG_ERR_INSTALL_UPDATE_HAP_TOKEN_FAILED = "[MSG_ERR_INSTALL_UPDATE_HAP_TOKEN_FAILED]";
94 const char* MSG_ERR_INSTALL_SINGLETON_NOT_SAME = "[MSG_ERR_INSTALL_SINGLETON_NOT_SAME]";
95 const char* MSG_ERR_INSTALL_ZERO_USER_WITH_NO_SINGLETON = "[MSG_ERR_INSTALL_ZERO_USER_WITH_NO_SINGLETON]";
96 const char* MSG_ERR_INSTALL_CHECK_SYSCAP_FAILED = "[MSG_ERR_INSTALL_CHECK_SYSCAP_FAILED]";
97 const char* MSG_ERR_INSTALL_APPTYPE_NOT_SAME = "[MSG_ERR_INSTALL_APPTYPE_NOT_SAME]";
98 const char* MSG_ERR_INSTALL_URI_DUPLICATE = "[MSG_ERR_INSTALL_URI_DUPLICATE]";
99 const char* MSG_ERR_INSTALL_TYPE_ERROR = "[ERR_INSTALL_TYPE_ERROR]";
100 const char* MSG_ERR_INSTALL_SDK_INCOMPATIBLE = "[ERR_INSTALL_SDK_INCOMPATIBLE]";
101 const char* MSG_ERR_INSTALL_SO_INCOMPATIBLE = "[ERR_INSTALL_SO_INCOMPATIBLE]";
102 const char* MSG_ERR_INSTALL_AN_INCOMPATIBLE = "[ERR_INSTALL_AN_INCOMPATIBLE]";
103 const char* MSG_ERR_INSTALL_PARSE_UNEXPECTED = "[ERR_INSTALL_PARSE_UNEXPECTED]";
104 const char* MSG_ERR_INSTALL_PARSE_MISSING_BUNDLE = "[ERR_INSTALL_PARSE_MISSING_BUNDLE]";
105 const char* MSG_ERR_INSTALL_PARSE_MISSING_ABILITY = "[ERR_INSTALL_PARSE_MISSING_ABILITY]";
106 const char* MSG_ERR_INSTALL_PARSE_NO_PROFILE = "[ERR_INSTALL_PARSE_NO_PROFILE]";
107 const char* MSG_ERR_INSTALL_PARSE_BAD_PROFILE = "[ERR_INSTALL_PARSE_BAD_PROFILE]";
108 const char* MSG_ERR_INSTALL_PARSE_PROFILE_PROP_TYPE_ERROR = "[ERR_INSTALL_PARSE_PROFILE_PROP_TYPE_ERROR]";
109 const char* MSG_ERR_INSTALL_PARSE_PROFILE_MISSING_PROP = "[ERR_INSTALL_PARSE_PROFILE_MISSING_PROP]";
110 const char* MSG_ERR_INSTALL_PARSE_PERMISSION_ERROR = "[ERR_INSTALL_PARSE_PERMISSION_ERROR]";
111 const char* MSG_ERR_INSTALL_PARSE_PROFILE_PROP_CHECK_ERROR = "[ERR_INSTALL_PARSE_PROFILE_PROP_CHECK_ERROR]";
112 const char* MSG_ERR_INSTALL_PARSE_PROFILE_PROP_SIZE_CHECK_ERROR = "[ERR_INSTALL_PARSE_PROFILE_PROP_SIZE_CHECK_ERROR]";
113 const char* MSG_ERR_INSTALL_PARSE_RPCID_FAILED = "[ERR_INSTALL_PARSE_RPCID_FAILED]";
114 const char* MSG_ERR_INSTALL_PARSE_NATIVE_SO_FAILED = "[ERR_INSTALL_PARSE_NATIVE_SO_FAILED]";
115 const char* MSG_ERR_INSTALL_PARSE_AN_FAILED = "[ERR_INSTALL_PARSE_AN_FAILED]";
116 
117 const char* MSG_ERR_INSTALLD_CLEAN_DIR_FAILED = "[MSG_ERR_INSTALLD_CLEAN_DIR_FAILED]";
118 const char* MSG_ERR_INSTALLD_RNAME_DIR_FAILED = "[MSG_ERR_INSTALLD_RNAME_DIR_FAILED]";
119 const char* MSG_ERR_INSTALLD_EXTRACT_FILES_FAILED = "[MSG_ERR_INSTALLD_EXTRACT_FILES_FAILED]";
120 const char* MSG_ERR_INSTALLD_REMOVE_DIR_FAILED = "[ERR_INSTALLD_REMOVE_DIR_FAILED]";
121 const char* MSG_ERR_INSTALLD_CHOWN_FAILED = "[ERR_INSTALLD_CHOWN_FAILED,]";
122 const char* MSG_ERR_INSTALLD_CREATE_DIR_EXIST = "[ERR_INSTALLD_CREATE_DIR_EXIST]";
123 const char* MSG_ERR_INSTALLD_CREATE_DIR_FAILED = "[ERR_INSTALLD_CREATE_DIR_FAILED]";
124 const char* MSG_ERR_INSTALLD_GET_PROXY_ERROR = "[ERR_INSTALLD_GET_PROXY_ERROR]";
125 const char* MSG_ERR_INSTALLD_PARAM_ERROR = "[ERR_INSTALLD_PARAM_ERROR]";
126 const char* MSG_ERR_INSTALLD_PERMISSION_DENIED = "[ERR_INSTALLD_PERMISSION_DENIED]";
127 const char* MSG_ERR_INSTALL_NOT_UNIQUE_DISTRO_MODULE_NAME = "[ERR_INSTALL_NOT_UNIQUE_DISTRO_MODULE_NAME]";
128 const char* MSG_ERR_INSTALL_INCONSISTENT_MODULE_NAME = "[MSG_ERR_INSTALL_INCONSISTENT_MODULE_NAME]";
129 const char* MSG_ERR_INSTALL_SINGLETON_INCOMPATIBLE = "[MSG_ERR_INSTALL_SINGLETON_INCOMPATIBLE]";
130 const char* MSG_ERR_INSTALL_DISALLOWED = "[MSG_ERR_INSTALL_DISALLOWED]";
131 const char* MSG_ERR_INSTALL_DEVICE_TYPE_NOT_SUPPORTED = "[MSG_ERR_INSTALL_DEVICE_TYPE_NOT_SUPPORTED]";
132 const char* MSG_ERR_INSTALL_DEPENDENT_MODULE_NOT_EXIST = "[MSG_ERR_INSTALL_DEPENDENT_MODULE_NOT_EXIST]";
133 const char* MSG_ERR_INSTALL_INVALID_HAP_NAME = "[ERR_INSTALL_INVALID_HAP_NAME]";
134 const char* MSG_ERR_UNINSTALL_PARAM_ERROR = "[ERR_UNINSTALL_PARAM_ERROR]";
135 const char* MSG_ERR_UNINSTALL_PERMISSION_DENIED = "[MSG_ERR_UNINSTALL_PERMISSION_DENIED]";
136 const char* MSG_ERR_UNINSTALL_INVALID_NAME = "[ERR_UNINSTALL_INVALID_NAME]";
137 const char* MSG_ERR_UNINSTALL_BUNDLE_MGR_SERVICE_ERROR = "[ERR_UNINSTALL_BUNDLE_MGR_SERVICE_ERROR,]";
138 const char* MSG_ERR_UNINSTALL_MISSING_INSTALLED_BUNDLE = "[ERR_UNINSTALL_MISSING_INSTALLED_BUNDLE]";
139 const char* MSG_ERR_UNINSTALL_MISSING_INSTALLED_MODULE = "[ERR_UNINSTALL_MISSING_INSTALLED_MODULE]";
140 const char* MSG_ERR_UNINSTALL_KILLING_APP_ERROR = "[ERR_UNINSTALL_KILLING_APP_ERROR]";
141 const char* MSG_ERR_UNINSTALL_SYSTEM_APP_ERROR = "[MSG_ERR_UNINSTALL_SYSTEM_APP_ERROR]";
142 const char* MSG_ERR_UNINSTALL_DISALLOWED = "[MSG_ERR_UNINSTALL_DISALLOWED]";
143 const char* MSG_ERR_UNKNOWN = "[ERR_UNKNOWN]";
144 
145 const char* MSG_ERR_RECOVER_GET_BUNDLEPATH_ERROR = "[ERR_RECOVER_GET_BUNDLEPATH_ERROR]";
146 const char* MSG_ERR_RECOVER_INVALID_BUNDLE_NAME = "[ERR_RECOVER_INVALID_BUNDLE_NAME]";
147 const char* MSG_ERR_RECOVER_NOT_ALLOWED = "[ERR_RECOVER_NOT_ALLOWED]";
148 const char* MSG_ERR_FAILED_SERVICE_DIED = "[ERR_FAILED_SERVICE_DIED]";
149 const char* MSG_ERR_FAILED_GET_INSTALLER_PROXY = "[MSG_ERR_FAILED_GET_INSTALLER_PROXY]";
150 const char* MSG_ERR_OPERATION_TIME_OUT = "[MSG_ERR_OPERATION_TIME_OUT]";
151 const char* MSG_ERR_USER_NOT_EXIST = "[ERR_USER_NOT_EXIST]";
152 const char* MSG_ERR_USER_CREATE_FAILED = "[ERR_USER_CREATE_FAILED]";
153 const char* MSG_ERR_USER_REMOVE_FAILED = "[ERR_USER_REMOVE_FAILED]";
154 const char* MSG_ERR_USER_NOT_INSTALL_HAP = "[ERR_USER_NOT_INSTALL_HAP]";
155 const char* MSG_ERR_ASAN_ENABLED_NOT_SAME = "[ERR_INSTALL_ASAN_ENABLED_NOT_SAME]";
156 const char* MSG_ERR_ASAN_ENABLED_NOT_SUPPORT = "[ERR_ASAN_ENABLED_NOT_SUPPORT]";
157 const char* MSG_ERR_INSTALL_BUNDLE_TYPE_NOT_SAME = "[ERR_INSTALL_BUNDLE_TYPE_NOT_SAME]";
158 
159 const std::map<int32_t, struct ReceivedResult> MAP_RECEIVED_RESULTS {
160     {ERR_OK, {IStatusReceiver::SUCCESS, MSG_SUCCESS}},
161     {ERR_APPEXECFWK_INSTALL_INTERNAL_ERROR,
162         {IStatusReceiver::ERR_INSTALL_INTERNAL_ERROR, MSG_ERR_INSTALL_INTERNAL_ERROR}},
163     {ERR_APPEXECFWK_INSTALL_HOST_INSTALLER_FAILED,
164         {IStatusReceiver::ERR_INSTALL_HOST_INSTALLER_FAILED, MSG_ERR_INSTALL_HOST_INSTALLER_FAILED}},
165     {ERR_APPEXECFWK_INSTALL_PARSE_FAILED, {IStatusReceiver::ERR_INSTALL_PARSE_FAILED, MSG_ERR_INSTALL_PARSE_FAILED}},
166     {ERR_APPEXECFWK_INSTALL_VERSION_DOWNGRADE,
167         {IStatusReceiver::ERR_INSTALL_VERSION_DOWNGRADE, MSG_ERR_INSTALL_VERSION_DOWNGRADE}},
168     {ERR_APPEXECFWK_INSTALL_VERIFICATION_FAILED,
169         {IStatusReceiver::ERR_INSTALL_VERIFICATION_FAILED, MSG_ERR_INSTALL_VERIFICATION_FAILED}},
170     {ERR_APPEXECFWK_INSTALL_FAILED_INVALID_SIGNATURE_FILE_PATH,
171         {IStatusReceiver::ERR_INSTALL_FAILED_INVALID_SIGNATURE_FILE_PATH,
172         MSG_ERR_INSTALL_FAILED_INVALID_SIGNATURE_FILE_PATH}},
173     {ERR_APPEXECFWK_INSTALL_FAILED_BAD_BUNDLE_SIGNATURE_FILE,
174         {IStatusReceiver::ERR_INSTALL_FAILED_BAD_BUNDLE_SIGNATURE_FILE,
175             MSG_ERR_INSTALL_FAILED_BAD_BUNDLE_SIGNATURE_FILE}},
176     {ERR_APPEXECFWK_INSTALL_FAILED_NO_BUNDLE_SIGNATURE,
177         {IStatusReceiver::ERR_INSTALL_FAILED_NO_BUNDLE_SIGNATURE, MSG_ERR_INSTALL_FAILED_NO_BUNDLE_SIGNATURE}},
178     {ERR_APPEXECFWK_INSTALL_FAILED_VERIFY_APP_PKCS7_FAIL,
179         {IStatusReceiver::ERR_INSTALL_FAILED_VERIFY_APP_PKCS7_FAIL, MSG_ERR_INSTALL_FAILED_VERIFY_APP_PKCS7_FAIL}},
180     {ERR_APPEXECFWK_INSTALL_FAILED_PROFILE_PARSE_FAIL,
181         {IStatusReceiver::ERR_INSTALL_FAILED_PROFILE_PARSE_FAIL, MSG_ERR_INSTALL_FAILED_PROFILE_PARSE_FAIL}},
182     {ERR_APPEXECFWK_INSTALL_FAILED_APP_SOURCE_NOT_TRUESTED,
183         {IStatusReceiver::ERR_INSTALL_FAILED_APP_SOURCE_NOT_TRUESTED, MSG_ERR_INSTALL_FAILED_APP_SOURCE_NOT_TRUESTED}},
184     {ERR_APPEXECFWK_INSTALL_FAILED_BAD_DIGEST,
185         {IStatusReceiver::ERR_INSTALL_FAILED_BAD_DIGEST, MSG_ERR_INSTALL_FAILED_BAD_DIGEST}},
186     {ERR_APPEXECFWK_INSTALL_FAILED_BUNDLE_INTEGRITY_VERIFICATION_FAILURE,
187         {IStatusReceiver::ERR_INSTALL_FAILED_BUNDLE_INTEGRITY_VERIFICATION_FAILURE,
188             MSG_ERR_INSTALL_FAILED_BUNDLE_INTEGRITY_VERIFICATION_FAILURE}},
189     {ERR_APPEXECFWK_INSTALL_FAILED_FILE_SIZE_TOO_LARGE,
190         {IStatusReceiver::ERR_INSTALL_FAILED_FILE_SIZE_TOO_LARGE, MSG_ERR_INSTALL_FAILED_FILE_SIZE_TOO_LARGE}},
191     {ERR_APPEXECFWK_INSTALL_FAILED_BAD_PUBLICKEY,
192         {IStatusReceiver::ERR_INSTALL_FAILED_BAD_PUBLICKEY, MSG_ERR_INSTALL_FAILED_BAD_PUBLICKEY}},
193     {ERR_APPEXECFWK_INSTALL_FAILED_BAD_BUNDLE_SIGNATURE,
194         {IStatusReceiver::ERR_INSTALL_FAILED_BAD_BUNDLE_SIGNATURE, MSG_ERR_INSTALL_FAILED_BAD_BUNDLE_SIGNATURE}},
195     {ERR_APPEXECFWK_INSTALL_FAILED_NO_PROFILE_BLOCK_FAIL,
196         {IStatusReceiver::ERR_INSTALL_FAILED_NO_PROFILE_BLOCK_FAIL, MSG_ERR_INSTALL_FAILED_NO_PROFILE_BLOCK_FAIL}},
197     {ERR_APPEXECFWK_INSTALL_FAILED_BUNDLE_SIGNATURE_VERIFICATION_FAILURE,
198         {IStatusReceiver::ERR_INSTALL_FAILED_BUNDLE_SIGNATURE_VERIFICATION_FAILURE,
199             MSG_ERR_INSTALL_FAILED_BUNDLE_SIGNATURE_VERIFICATION_FAILURE}},
200     {ERR_APPEXECFWK_INSTALL_FAILED_VERIFY_SOURCE_INIT_FAIL,
201         {IStatusReceiver::ERR_INSTALL_FAILED_VERIFY_SOURCE_INIT_FAIL, MSG_ERR_INSTALL_FAILED_VERIFY_SOURCE_INIT_FAIL}},
202     {ERR_APPEXECFWK_INSTALL_FAILED_INCOMPATIBLE_SIGNATURE,
203         {IStatusReceiver::ERR_INSTALL_FAILED_INCOMPATIBLE_SIGNATURE, MSG_ERR_INSTALL_FAILED_INCOMPATIBLE_SIGNATURE}},
204     {ERR_APPEXECFWK_INSTALL_FAILED_INCONSISTENT_SIGNATURE,
205         {IStatusReceiver::ERR_INSTALL_FAILED_INCONSISTENT_SIGNATURE, MSG_ERR_INSTALL_FAILED_INCONSISTENT_SIGNATURE}},
206     {ERR_APPEXECFWK_INSTALL_FAILED_MODULE_NAME_EMPTY,
207         {IStatusReceiver::ERR_INSTALL_FAILED_MODULE_NAME_EMPTY, MSG_ERR_INSTALL_FAILED_MODULE_NAME_EMPTY}},
208     {ERR_APPEXECFWK_INSTALL_FAILED_MODULE_NAME_DUPLICATE,
209         {IStatusReceiver::ERR_INSTALL_FAILED_MODULE_NAME_DUPLICATE, MSG_ERR_INSTALL_FAILED_MODULE_NAME_DUPLICATE}},
210     {ERR_APPEXECFWK_INSTALL_FAILED_CHECK_HAP_HASH_PARAM,
211         {IStatusReceiver::ERR_INSTALL_FAILED_CHECK_HAP_HASH_PARAM, MSG_ERR_INSTALL_FAILED_CHECK_HAP_HASH_PARAM}},
212     {ERR_APPEXECFWK_INSTALL_PARAM_ERROR,
213         {IStatusReceiver::ERR_INSTALL_PARAM_ERROR, MSG_ERR_INSTALL_PARAM_ERROR}},
214     {ERR_APPEXECFWK_INSTALL_PERMISSION_DENIED,
215         {IStatusReceiver::ERR_INSTALL_PERMISSION_DENIED, MSG_ERR_INSTALL_PERMISSION_DENIED}},
216     {ERR_APPEXECFWK_INSTALL_ENTRY_ALREADY_EXIST,
217         {IStatusReceiver::ERR_INSTALL_ENTRY_ALREADY_EXIST, MSG_ERR_INSTALL_ENTRY_ALREADY_EXIST}},
218     {ERR_APPEXECFWK_INSTALL_STATE_ERROR,
219         {IStatusReceiver::ERR_INSTALL_STATE_ERROR, MSG_ERR_INSTALL_STATE_ERROR}},
220     {ERR_APPEXECFWK_INSTALL_FILE_PATH_INVALID,
221         {IStatusReceiver::ERR_INSTALL_FILE_PATH_INVALID, MSG_ERR_INSTALL_FILE_PATH_INVALID}},
222     {ERR_APPEXECFWK_INSTALL_INVALID_HAP_NAME,
223         {IStatusReceiver::ERR_INSTALL_INVALID_HAP_NAME, MSG_ERR_INSTALL_INVALID_HAP_NAME}},
224     {ERR_APPEXECFWK_INSTALL_INVALID_BUNDLE_FILE,
225         {IStatusReceiver::ERR_INSTALL_INVALID_BUNDLE_FILE, MSG_ERR_INSTALL_INVALID_BUNDLE_FILE}},
226     {ERR_APPEXECFWK_INSTALL_INVALID_HAP_SIZE,
227         {IStatusReceiver::ERR_INSTALL_INVALID_HAP_SIZE, MSG_ERR_INSTALL_INVALID_HAP_SIZE}},
228     {ERR_APPEXECFWK_INSTALL_GENERATE_UID_ERROR,
229         {IStatusReceiver::ERR_INSTALL_GENERATE_UID_ERROR, MSG_ERR_INSTALL_GENERATE_UID_ERROR}},
230     {ERR_APPEXECFWK_INSTALL_INSTALLD_SERVICE_ERROR,
231         {IStatusReceiver::ERR_INSTALL_INSTALLD_SERVICE_ERROR, MSG_ERR_INSTALL_INSTALLD_SERVICE_ERROR}},
232     {ERR_APPEXECFWK_INSTALL_BUNDLE_MGR_SERVICE_ERROR,
233         {IStatusReceiver::ERR_INSTALL_BUNDLE_MGR_SERVICE_ERROR, MSG_ERR_INSTALL_BUNDLE_MGR_SERVICE_ERROR}},
234     {ERR_APPEXECFWK_INSTALL_ALREADY_EXIST,
235         {IStatusReceiver::ERR_INSTALL_ALREADY_EXIST, MSG_ERR_INSTALL_ALREADY_EXIST}},
236     {ERR_APPEXECFWK_INSTALL_BUNDLENAME_NOT_SAME,
237         {IStatusReceiver::ERR_INSTALL_BUNDLENAME_NOT_SAME, MSG_ERR_INSTALL_BUNDLENAME_NOT_SAME}},
238     {ERR_APPEXECFWK_INSTALL_VERSIONCODE_NOT_SAME,
239         {IStatusReceiver::ERR_INSTALL_VERSIONCODE_NOT_SAME, MSG_ERR_INSTALL_VERSIONCODE_NOT_SAME}},
240     {ERR_APPEXECFWK_INSTALL_VERSIONNAME_NOT_SAME,
241         {IStatusReceiver::ERR_INSTALL_VERSIONNAME_NOT_SAME, MSG_ERR_INSTALL_VERSIONNAME_NOT_SAME}},
242     {ERR_APPEXECFWK_INSTALL_MINCOMPATIBLE_VERSIONCODE_NOT_SAME,
243         {IStatusReceiver::ERR_INSTALL_MINCOMPATIBLE_VERSIONCODE_NOT_SAME,
244             MSG_ERR_INSTALL_MINCOMPATIBLE_VERSIONCODE_NOT_SAME}},
245     {ERR_APPEXECFWK_INSTALL_VENDOR_NOT_SAME,
246         {IStatusReceiver::ERR_INSTALL_VENDOR_NOT_SAME, MSG_ERR_INSTALL_VENDOR_NOT_SAME}},
247     {ERR_APPEXECFWK_INSTALL_RELEASETYPE_TARGET_NOT_SAME,
248         {IStatusReceiver::ERR_INSTALL_RELEASETYPE_TARGET_NOT_SAME, MSG_ERR_INSTALL_RELEASETYPE_TARGET_NOT_SAME}},
249     {ERR_APPEXECFWK_INSTALL_RELEASETYPE_NOT_SAME,
250         {IStatusReceiver::ERR_INSTALL_RELEASETYPE_NOT_SAME, MSG_ERR_INSTALL_RELEASETYPE_NOT_SAME}},
251     {ERR_APPEXECFWK_INSTALL_RELEASETYPE_COMPATIBLE_NOT_SAME,
252         {IStatusReceiver::ERR_INSTALL_RELEASETYPE_COMPATIBLE_NOT_SAME,
253             MSG_ERR_INSTALL_RELEASETYPE_COMPATIBLE_NOT_SAME}},
254     {ERR_APPEXECFWK_INSTALL_APP_DISTRIBUTION_TYPE_NOT_SAME,
255         {IStatusReceiver::ERR_INSTALL_APP_DISTRIBUTION_TYPE_NOT_SAME,
256             MSG_ERR_INSTALL_APP_DISTRIBUTION_TYPE_NOT_SAME}},
257     {ERR_APPEXECFWK_INSTALL_APP_PROVISION_TYPE_NOT_SAME,
258         {IStatusReceiver::ERR_INSTALL_APP_PROVISION_TYPE_NOT_SAME,
259             MSG_ERR_INSTALL_APP_PROVISION_TYPE_NOT_SAME}},
260     {ERR_APPEXECFWK_INSTALL_VERSION_NOT_COMPATIBLE,
261         {IStatusReceiver::ERR_INSTALL_VERSION_NOT_COMPATIBLE, MSG_ERR_INSTALL_VERSION_NOT_COMPATIBLE}},
262     {ERR_APPEXECFWK_INSTALL_INVALID_NUMBER_OF_ENTRY_HAP,
263         {IStatusReceiver::ERR_INSTALL_INVALID_NUMBER_OF_ENTRY_HAP, MSG_ERR_INSTALL_INVALID_NUMBER_OF_ENTRY_HAP}},
264     {ERR_APPEXECFWK_INSTALL_GRANT_REQUEST_PERMISSIONS_FAILED,
265         {IStatusReceiver::ERR_INSTALL_GRANT_REQUEST_PERMISSIONS_FAILED,
266             MSG_ERR_INSTALL_GRANT_REQUEST_PERMISSIONS_FAILED}},
267     {ERR_APPEXECFWK_INSTALL_UPDATE_HAP_TOKEN_FAILED,
268         {IStatusReceiver::ERR_INSTALL_UPDATE_HAP_TOKEN_FAILED, MSG_ERR_INSTALL_UPDATE_HAP_TOKEN_FAILED}},
269     {ERR_APPEXECFWK_INSTALL_SINGLETON_NOT_SAME,
270         {IStatusReceiver::ERR_INSTALL_SINGLETON_NOT_SAME, MSG_ERR_INSTALL_SINGLETON_NOT_SAME}},
271     {ERR_APPEXECFWK_INSTALL_ZERO_USER_WITH_NO_SINGLETON,
272         {IStatusReceiver::ERR_INSTALL_ZERO_USER_WITH_NO_SINGLETON, MSG_ERR_INSTALL_ZERO_USER_WITH_NO_SINGLETON}},
273     {ERR_APPEXECFWK_INSTALL_CHECK_SYSCAP_FAILED,
274         {IStatusReceiver::ERR_INSTALL_CHECK_SYSCAP_FAILED, MSG_ERR_INSTALL_CHECK_SYSCAP_FAILED}},
275     {ERR_APPEXECFWK_INSTALL_APPTYPE_NOT_SAME,
276         {IStatusReceiver::ERR_INSTALL_APPTYPE_NOT_SAME, MSG_ERR_INSTALL_APPTYPE_NOT_SAME}},
277     {ERR_APPEXECFWK_INSTALL_URI_DUPLICATE,
278         {IStatusReceiver::ERR_INSTALL_URI_DUPLICATE, MSG_ERR_INSTALL_URI_DUPLICATE}},
279     {ERR_APPEXECFWK_INSTALL_TYPE_ERROR, {IStatusReceiver::ERR_INSTALL_TYPE_ERROR, MSG_ERR_INSTALL_TYPE_ERROR}},
280     {ERR_APPEXECFWK_INSTALL_SDK_INCOMPATIBLE,
281         {IStatusReceiver::ERR_INSTALL_SDK_INCOMPATIBLE, MSG_ERR_INSTALL_SDK_INCOMPATIBLE}},
282     {ERR_APPEXECFWK_INSTALL_SO_INCOMPATIBLE,
283         {IStatusReceiver::ERR_INSTALL_SO_INCOMPATIBLE, MSG_ERR_INSTALL_SO_INCOMPATIBLE}},
284     {ERR_APPEXECFWK_INSTALL_AN_INCOMPATIBLE,
285         {IStatusReceiver::ERR_INSTALL_AN_INCOMPATIBLE, MSG_ERR_INSTALL_AN_INCOMPATIBLE}},
286     {ERR_APPEXECFWK_INSTALL_DISK_MEM_INSUFFICIENT,
287         {IStatusReceiver::ERR_INSTALL_DISK_MEM_INSUFFICIENT, MSG_ERR_INSTALL_DISK_MEM_INSUFFICIENT}},
288     {ERR_APPEXECFWK_PARSE_UNEXPECTED,
289         {IStatusReceiver::ERR_INSTALL_PARSE_UNEXPECTED, MSG_ERR_INSTALL_PARSE_UNEXPECTED}},
290     {ERR_APPEXECFWK_PARSE_MISSING_BUNDLE,
291         {IStatusReceiver::ERR_INSTALL_PARSE_MISSING_BUNDLE, MSG_ERR_INSTALL_PARSE_MISSING_BUNDLE}},
292     {ERR_APPEXECFWK_PARSE_MISSING_ABILITY,
293         {IStatusReceiver::ERR_INSTALL_PARSE_MISSING_ABILITY, MSG_ERR_INSTALL_PARSE_MISSING_ABILITY}},
294     {ERR_APPEXECFWK_PARSE_NO_PROFILE,
295         {IStatusReceiver::ERR_INSTALL_PARSE_NO_PROFILE, MSG_ERR_INSTALL_PARSE_NO_PROFILE}},
296     {ERR_APPEXECFWK_PARSE_BAD_PROFILE,
297         {IStatusReceiver::ERR_INSTALL_PARSE_BAD_PROFILE, MSG_ERR_INSTALL_PARSE_BAD_PROFILE}},
298     {ERR_APPEXECFWK_PARSE_PROFILE_PROP_TYPE_ERROR,
299         {IStatusReceiver::ERR_INSTALL_PARSE_PROFILE_PROP_TYPE_ERROR, MSG_ERR_INSTALL_PARSE_PROFILE_PROP_TYPE_ERROR}},
300     {ERR_APPEXECFWK_PARSE_PROFILE_MISSING_PROP,
301         {IStatusReceiver::ERR_INSTALL_PARSE_PROFILE_MISSING_PROP, MSG_ERR_INSTALL_PARSE_PROFILE_MISSING_PROP}},
302     {ERR_APPEXECFWK_PARSE_PERMISSION_ERROR,
303         {IStatusReceiver::ERR_INSTALL_PARSE_PERMISSION_ERROR, MSG_ERR_INSTALL_PARSE_PERMISSION_ERROR}},
304     {ERR_APPEXECFWK_PARSE_PROFILE_PROP_CHECK_ERROR,
305         {IStatusReceiver::ERR_INSTALL_PARSE_PROFILE_PROP_CHECK_ERROR, MSG_ERR_INSTALL_PARSE_PROFILE_PROP_CHECK_ERROR}},
306     {ERR_APPEXECFWK_PARSE_PROFILE_PROP_SIZE_CHECK_ERROR,
307         {IStatusReceiver::ERR_INSTALL_PARSE_PROFILE_PROP_SIZE_CHECK_ERROR,
308             MSG_ERR_INSTALL_PARSE_PROFILE_PROP_SIZE_CHECK_ERROR}},
309     {ERR_APPEXECFWK_PARSE_RPCID_FAILED,
310         {IStatusReceiver::ERR_INSTALL_PARSE_RPCID_FAILED, MSG_ERR_INSTALL_PARSE_RPCID_FAILED}},
311     {ERR_APPEXECFWK_PARSE_NATIVE_SO_FAILED,
312         {IStatusReceiver::ERR_INSTALL_PARSE_NATIVE_SO_FAILED, MSG_ERR_INSTALL_PARSE_NATIVE_SO_FAILED}},
313     {ERR_APPEXECFWK_PARSE_AN_FAILED,
314         {IStatusReceiver::ERR_INSTALL_PARSE_AN_FAILED, MSG_ERR_INSTALL_PARSE_AN_FAILED}},
315     {ERR_APPEXECFWK_INSTALL_ASAN_ENABLED_NOT_SAME,
316         {IStatusReceiver::ERR_INSTALL_ASAN_ENABLED_NOT_SAME, MSG_ERR_ASAN_ENABLED_NOT_SAME}},
317     {ERR_APPEXECFWK_INSTALL_ASAN_NOT_SUPPORT,
318         {IStatusReceiver::ERR_INSTALL_ASAN_ENABLED_NOT_SUPPORT, MSG_ERR_ASAN_ENABLED_NOT_SUPPORT}},
319     {ERR_APPEXECFWK_BUNDLE_TYPE_NOT_SAME,
320         {IStatusReceiver::ERR_INSTALL_BUNDLE_TYPE_NOT_SAME, MSG_ERR_INSTALL_BUNDLE_TYPE_NOT_SAME}},
321 
322     {ERR_APPEXECFWK_INSTALLD_CLEAN_DIR_FAILED,
323         {IStatusReceiver::ERR_INSTALLD_CLEAN_DIR_FAILED, MSG_ERR_INSTALLD_CLEAN_DIR_FAILED}},
324     {ERR_APPEXECFWK_INSTALLD_RNAME_DIR_FAILED,
325         {IStatusReceiver::ERR_INSTALLD_RNAME_DIR_FAILED, MSG_ERR_INSTALLD_RNAME_DIR_FAILED}},
326     {ERR_APPEXECFWK_INSTALLD_EXTRACT_FILES_FAILED,
327         {IStatusReceiver::ERR_INSTALLD_EXTRACT_FILES_FAILED, MSG_ERR_INSTALLD_EXTRACT_FILES_FAILED}},
328     {ERR_APPEXECFWK_INSTALLD_REMOVE_DIR_FAILED,
329         {IStatusReceiver::ERR_INSTALLD_REMOVE_DIR_FAILED, MSG_ERR_INSTALLD_REMOVE_DIR_FAILED}},
330     {ERR_APPEXECFWK_INSTALLD_CHOWN_FAILED, {IStatusReceiver::ERR_INSTALLD_CHOWN_FAILED, MSG_ERR_INSTALLD_CHOWN_FAILED}},
331     {ERR_APPEXECFWK_INSTALLD_CREATE_DIR_EXIST,
332         {IStatusReceiver::ERR_INSTALLD_CREATE_DIR_EXIST, MSG_ERR_INSTALLD_CREATE_DIR_EXIST}},
333     {ERR_APPEXECFWK_INSTALLD_CREATE_DIR_FAILED,
334         {IStatusReceiver::ERR_INSTALLD_CREATE_DIR_FAILED, MSG_ERR_INSTALLD_CREATE_DIR_FAILED}},
335     {ERR_APPEXECFWK_INSTALLD_GET_PROXY_ERROR,
336         {IStatusReceiver::ERR_INSTALLD_GET_PROXY_ERROR, MSG_ERR_INSTALLD_GET_PROXY_ERROR}},
337     {ERR_APPEXECFWK_INSTALLD_PARAM_ERROR, {IStatusReceiver::ERR_INSTALLD_PARAM_ERROR, MSG_ERR_INSTALLD_PARAM_ERROR}},
338     {ERR_APPEXECFWK_INSTALLD_PERMISSION_DENIED, {IStatusReceiver::ERR_INSTALLD_PERMISSION_DENIED,
339         MSG_ERR_INSTALLD_PERMISSION_DENIED}},
340 
341     {ERR_APPEXECFWK_UNINSTALL_MISSING_INSTALLED_MODULE,
342         {IStatusReceiver::ERR_UNINSTALL_MISSING_INSTALLED_MODULE, MSG_ERR_UNINSTALL_MISSING_INSTALLED_MODULE}},
343     {ERR_APPEXECFWK_UNINSTALL_PARAM_ERROR, {IStatusReceiver::ERR_UNINSTALL_PARAM_ERROR, MSG_ERR_UNINSTALL_PARAM_ERROR}},
344     {ERR_APPEXECFWK_UNINSTALL_PERMISSION_DENIED,
345         {IStatusReceiver::ERR_UNINSTALL_PERMISSION_DENIED, MSG_ERR_UNINSTALL_PERMISSION_DENIED}},
346     {ERR_APPEXECFWK_UNINSTALL_BUNDLE_MGR_SERVICE_ERROR,
347         {IStatusReceiver::ERR_UNINSTALL_BUNDLE_MGR_SERVICE_ERROR, MSG_ERR_UNINSTALL_BUNDLE_MGR_SERVICE_ERROR}},
348     {ERR_APPEXECFWK_UNINSTALL_MISSING_INSTALLED_BUNDLE,
349         {IStatusReceiver::ERR_UNINSTALL_MISSING_INSTALLED_BUNDLE, MSG_ERR_UNINSTALL_MISSING_INSTALLED_BUNDLE}},
350     {ERR_APPEXECFWK_UNINSTALL_KILLING_APP_ERROR,
351         {IStatusReceiver::ERR_UNINSTALL_KILLING_APP_ERROR, MSG_ERR_UNINSTALL_KILLING_APP_ERROR}},
352     {ERR_APPEXECFWK_UNINSTALL_SYSTEM_APP_ERROR,
353         {IStatusReceiver::ERR_UNINSTALL_SYSTEM_APP_ERROR, MSG_ERR_UNINSTALL_SYSTEM_APP_ERROR}},
354     {ERR_APPEXECFWK_UNINSTALL_INVALID_NAME,
355         {IStatusReceiver::ERR_UNINSTALL_INVALID_NAME, MSG_ERR_UNINSTALL_INVALID_NAME}},
356     {ERR_APPEXECFWK_RECOVER_GET_BUNDLEPATH_ERROR,
357         {IStatusReceiver::ERR_RECOVER_GET_BUNDLEPATH_ERROR, MSG_ERR_RECOVER_GET_BUNDLEPATH_ERROR}},
358     {ERR_APPEXECFWK_RECOVER_INVALID_BUNDLE_NAME,
359         {IStatusReceiver::ERR_RECOVER_INVALID_BUNDLE_NAME, MSG_ERR_RECOVER_INVALID_BUNDLE_NAME}},
360     {ERR_APPEXECFWK_RECOVER_NOT_ALLOWED,
361         {IStatusReceiver::ERR_RECOVER_NOT_ALLOWED, MSG_ERR_RECOVER_NOT_ALLOWED}},
362     {ERR_APPEXECFWK_FAILED_SERVICE_DIED,
363         {IStatusReceiver::ERR_FAILED_SERVICE_DIED, MSG_ERR_FAILED_SERVICE_DIED}},
364     {ERR_APPEXECFWK_FAILED_GET_INSTALLER_PROXY,
365         {IStatusReceiver::ERR_FAILED_GET_INSTALLER_PROXY, MSG_ERR_FAILED_GET_INSTALLER_PROXY}},
366     {ERR_APPEXECFWK_OPERATION_TIME_OUT,
367         {IStatusReceiver::ERR_OPERATION_TIME_OUT, MSG_ERR_OPERATION_TIME_OUT}},
368     {ERR_APPEXECFWK_USER_NOT_EXIST,
369         {IStatusReceiver::ERR_USER_NOT_EXIST, MSG_ERR_USER_NOT_EXIST}},
370     {ERR_APPEXECFWK_USER_CREATE_FAILED,
371         {IStatusReceiver::ERR_USER_CREATE_FAILED, MSG_ERR_USER_CREATE_FAILED}},
372     {ERR_APPEXECFWK_USER_REMOVE_FAILED,
373         {IStatusReceiver::ERR_USER_REMOVE_FAILED, MSG_ERR_USER_REMOVE_FAILED}},
374     {ERR_APPEXECFWK_USER_NOT_INSTALL_HAP,
375         {IStatusReceiver::ERR_USER_NOT_INSTALL_HAP, MSG_ERR_USER_NOT_INSTALL_HAP}},
376     {ERR_APPEXECFWK_INSTALL_NOT_UNIQUE_DISTRO_MODULE_NAME,
377         {IStatusReceiver::ERR_INSTALL_NOT_UNIQUE_DISTRO_MODULE_NAME, MSG_ERR_INSTALL_NOT_UNIQUE_DISTRO_MODULE_NAME}},
378     {ERR_APPEXECFWK_INSTALL_INCONSISTENT_MODULE_NAME,
379         {IStatusReceiver::ERR_INSTALL_INCONSISTENT_MODULE_NAME, MSG_ERR_INSTALL_INCONSISTENT_MODULE_NAME}},
380     {ERR_APPEXECFWK_INSTALL_SINGLETON_INCOMPATIBLE,
381         {IStatusReceiver::ERR_INSTALL_SINGLETON_INCOMPATIBLE, MSG_ERR_INSTALL_SINGLETON_INCOMPATIBLE}},
382     {ERR_BUNDLE_MANAGER_APP_CONTROL_DISALLOWED_INSTALL,
383         {IStatusReceiver::ERR_INSTALL_DISALLOWED, MSG_ERR_INSTALL_DISALLOWED}},
384     {ERR_BUNDLE_MANAGER_APP_CONTROL_DISALLOWED_UNINSTALL,
385         {IStatusReceiver::ERR_UNINSTALL_DISALLOWED, MSG_ERR_UNINSTALL_DISALLOWED}},
386     {ERR_APPEXECFWK_INSTALL_DEVICE_TYPE_NOT_SUPPORTED,
387         {IStatusReceiver::ERR_INSTALL_DEVICE_TYPE_NOT_SUPPORTED, MSG_ERR_INSTALL_DEVICE_TYPE_NOT_SUPPORTED}},
388     {ERR_APPEXECFWK_INSTALL_DEPENDENT_MODULE_NOT_EXIST,
389         {IStatusReceiver::ERR_INSTALL_DEPENDENT_MODULE_NOT_EXIST, MSG_ERR_INSTALL_DEPENDENT_MODULE_NOT_EXIST}}
390 };
391 }  // namespace
392 
StatusReceiverProxy(const sptr<IRemoteObject> & object)393 StatusReceiverProxy::StatusReceiverProxy(const sptr<IRemoteObject> &object) : IRemoteProxy<IStatusReceiver>(object)
394 {
395     APP_LOGI("create status receiver proxy instance");
396 }
397 
~StatusReceiverProxy()398 StatusReceiverProxy::~StatusReceiverProxy()
399 {
400     APP_LOGI("destroy status receiver proxy instance");
401 }
402 
OnStatusNotify(const int32_t progress)403 void StatusReceiverProxy::OnStatusNotify(const int32_t progress)
404 {
405     APP_LOGI("status from service is %{public}d", progress);
406 
407     MessageParcel data;
408     MessageParcel reply;
409     MessageOption option(MessageOption::TF_SYNC);
410     if (!data.WriteInterfaceToken(StatusReceiverProxy::GetDescriptor())) {
411         APP_LOGE("fail to OnStatusNotify due to write MessageParcel fail");
412         return;
413     }
414 
415     if (!data.WriteInt32(progress)) {
416         APP_LOGE("fail to call OnStatusNotify, for write progress failed");
417         return;
418     }
419 
420     sptr<IRemoteObject> remote = Remote();
421     if (remote == nullptr) {
422         APP_LOGE("fail to call OnStatusNotify, for Remote() is nullptr");
423         return;
424     }
425 
426     int32_t ret =
427         remote->SendRequest(static_cast<int32_t>(IStatusReceiver::Message::ON_STATUS_NOTIFY), data, reply, option);
428     if (ret != NO_ERROR) {
429         APP_LOGE("fail to call OnStatusNotify, for transact is failed, error code is: %{public}d", ret);
430     }
431 }
432 
OnFinished(const int32_t resultCode,const std::string & resultMsg)433 void StatusReceiverProxy::OnFinished(const int32_t resultCode, const std::string &resultMsg)
434 {
435     APP_LOGI("result from service is %{public}d, %{public}s", resultCode, resultMsg.c_str());
436     // transform service error code to client error code.
437     TransformResult(resultCode);
438     CloseStreamInstaller(streamInstallerId_);
439     MessageParcel data;
440     MessageParcel reply;
441     MessageOption option(MessageOption::TF_SYNC);
442     if (!data.WriteInterfaceToken(StatusReceiverProxy::GetDescriptor())) {
443         APP_LOGE("fail to OnFinished due to write MessageParcel fail");
444         return;
445     }
446 
447     if (!data.WriteInt32(resultCode_)) {
448         APP_LOGE("fail to call OnFinished, for write resultCode_ failed");
449         return;
450     }
451     if (!data.WriteString16(Str8ToStr16(resultMsg_))) {
452         APP_LOGE("fail to call OnFinished, for write resultMsg_ failed");
453         return;
454     }
455 
456     sptr<IRemoteObject> remote = Remote();
457     if (remote == nullptr) {
458         APP_LOGE("fail to call OnFinished, for Remote() is nullptr");
459         return;
460     }
461 
462     int32_t ret = remote->SendRequest(static_cast<int32_t>(IStatusReceiver::Message::ON_FINISHED), data, reply, option);
463     if (ret != NO_ERROR) {
464         APP_LOGE("fail to call OnFinished, for transact is failed, error code is: %{public}d", ret);
465     }
466 }
467 
TransformResult(const int32_t resultCode)468 void StatusReceiverProxy::TransformResult(const int32_t resultCode)
469 {
470     auto result = MAP_RECEIVED_RESULTS.find(resultCode);
471     if (result != MAP_RECEIVED_RESULTS.end()) {
472         resultCode_ = result->second.clientCode;
473         resultMsg_ = result->second.clientMessage;
474     } else {
475         resultCode_ = ERR_UNKNOWN;
476         resultMsg_ = MSG_ERR_UNKNOWN;
477     }
478     APP_LOGD("result transformed is %{public}d, %{public}s", resultCode_, resultMsg_.c_str());
479 }
480 
CloseStreamInstaller(uint32_t installerId)481 void StatusReceiverProxy::CloseStreamInstaller(uint32_t installerId)
482 {
483     if (installerId <= 0) {
484         APP_LOGE("invalid installer id: %{public}u", installerId);
485         return;
486     }
487     sptr<IBundleInstaller> bundleInstaller = DelayedSingleton<BundleMgrService>::GetInstance()->GetBundleInstaller();
488     if (bundleInstaller == nullptr) {
489         APP_LOGE("bundle install is nullptr");
490         return;
491     }
492     bundleInstaller->DestoryBundleStreamInstaller(installerId);
493     streamInstallerId_ = 0;
494 }
495 
SetStreamInstallId(uint32_t installerId)496 void StatusReceiverProxy::SetStreamInstallId(uint32_t installerId)
497 {
498     streamInstallerId_ = installerId;
499 }
500 }  // namespace AppExecFwk
501 }  // namespace OHOS