1 /*
2 * Copyright (c) 2023 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 "define_property.h"
17
18 #include "business_sub_type.h"
19 #include "business_vendor.h"
20 #include "call_result.h"
21 #include "component_type.h"
22 #include "description_format.h"
23 #include "description_type.h"
24 #include "effective_mode.h"
25 #include "event_classify.h"
26 #include "event_id.h"
27 #include "napi_common_utils.h"
28 #include "network_type.h"
29 #include "order.h"
30 #include "string_utils.h"
31 #include "update_define.h"
32 #include "upgrade_action.h"
33 #include "upgrade_status.h"
34
35 #define DECLARE_ENUM_PROPERTY(item) \
36 {StringUtils::GetEnumValueString(#item), NapiCommonUtils::CreateUint32(env, CAST_UINT((item)))}
37
38 #define DECLARE_STRING_PROPERTY(item) \
39 {StringUtils::GetEnumValueString(#item), NapiCommonUtils::CreateStringUtf8(env, (item))}
40
41 #define DECLARE_CALL_RESULT_PROPERTY(item) \
42 {StringUtils::GetEnumValueString(#item), \
43 NapiCommonUtils::CreateUint32(env, CAST_UINT(NapiCommonUtils::ConvertToErrorCode(item)))}
44
45 namespace OHOS::UpdateEngine {
DefineProperties(napi_env env,napi_value exports)46 void DefineProperty::DefineProperties(napi_env env, napi_value exports)
47 {
48 DefineCallResult(env, exports);
49 DefineUpgradeStatus(env, exports);
50 DefineComponentType(env, exports);
51 DefineEffectiveMode(env, exports);
52 DefineNetType(env, exports);
53 DefineOrder(env, exports);
54 DefineEventClassify(env, exports);
55 DefineBusinessSubType(env, exports);
56 DefineDescriptionType(env, exports);
57 DefineDescriptionFormat(env, exports);
58 DefineEventId(env, exports);
59 DefineUpgradeAction(env, exports);
60 DefineBusinessVendor(env, exports);
61 }
62
DefineCallResult(napi_env env,napi_value exports)63 void DefineProperty::DefineCallResult(napi_env env, napi_value exports)
64 {
65 std::vector<std::pair<std::string, napi_value>> callResultList {
66 DECLARE_CALL_RESULT_PROPERTY(CallResult::APP_NOT_GRANTED),
67 DECLARE_CALL_RESULT_PROPERTY(CallResult::PARAM_ERR),
68 DECLARE_CALL_RESULT_PROPERTY(CallResult::UN_SUPPORT),
69 DECLARE_CALL_RESULT_PROPERTY(CallResult::SUCCESS),
70 DECLARE_CALL_RESULT_PROPERTY(CallResult::FAIL),
71 DECLARE_CALL_RESULT_PROPERTY(CallResult::DEV_UPG_INFO_ERR),
72 DECLARE_CALL_RESULT_PROPERTY(CallResult::FORBIDDEN),
73 DECLARE_CALL_RESULT_PROPERTY(CallResult::IPC_ERR),
74 DECLARE_CALL_RESULT_PROPERTY(CallResult::TIME_OUT),
75 DECLARE_CALL_RESULT_PROPERTY(CallResult::DB_ERROR),
76 DECLARE_CALL_RESULT_PROPERTY(CallResult::IO_ERROR),
77 DECLARE_CALL_RESULT_PROPERTY(CallResult::NET_ERROR)
78 };
79 NapiCommonUtils::CreateProperty(env, exports, "CallResult", callResultList);
80 }
81
DefineUpgradeStatus(napi_env env,napi_value exports)82 void DefineProperty::DefineUpgradeStatus(napi_env env, napi_value exports)
83 {
84 std::vector<std::pair<std::string, napi_value>> upgradeStatusList = {
85 DECLARE_ENUM_PROPERTY(UpgradeStatus::INIT),
86 DECLARE_ENUM_PROPERTY(UpgradeStatus::CHECKING_VERSION),
87 DECLARE_ENUM_PROPERTY(UpgradeStatus::CHECK_VERSION_FAIL),
88 DECLARE_ENUM_PROPERTY(UpgradeStatus::CHECK_VERSION_SUCCESS),
89 DECLARE_ENUM_PROPERTY(UpgradeStatus::DOWNLOADING),
90 DECLARE_ENUM_PROPERTY(UpgradeStatus::DOWNLOAD_PAUSE),
91 DECLARE_ENUM_PROPERTY(UpgradeStatus::DOWNLOAD_CANCEL),
92 DECLARE_ENUM_PROPERTY(UpgradeStatus::DOWNLOAD_FAIL),
93 DECLARE_ENUM_PROPERTY(UpgradeStatus::DOWNLOAD_SUCCESS),
94 DECLARE_ENUM_PROPERTY(UpgradeStatus::VERIFYING),
95 DECLARE_ENUM_PROPERTY(UpgradeStatus::VERIFY_FAIL),
96 DECLARE_ENUM_PROPERTY(UpgradeStatus::VERIFY_SUCCESS),
97 DECLARE_ENUM_PROPERTY(UpgradeStatus::PACKAGE_TRANSING),
98 DECLARE_ENUM_PROPERTY(UpgradeStatus::PACKAGE_TRANS_FAIL),
99 DECLARE_ENUM_PROPERTY(UpgradeStatus::PACKAGE_TRANS_SUCCESS),
100 DECLARE_ENUM_PROPERTY(UpgradeStatus::INSTALLING),
101 DECLARE_ENUM_PROPERTY(UpgradeStatus::INSTALL_FAIL),
102 DECLARE_ENUM_PROPERTY(UpgradeStatus::INSTALL_SUCCESS),
103 DECLARE_ENUM_PROPERTY(UpgradeStatus::UPDATING),
104 DECLARE_ENUM_PROPERTY(UpgradeStatus::UPDATE_FAIL),
105 DECLARE_ENUM_PROPERTY(UpgradeStatus::UPDATE_SUCCESS)
106 };
107 NapiCommonUtils::CreateProperty(env, exports, "UpgradeStatus", upgradeStatusList);
108 }
109
DefineComponentType(napi_env env,napi_value exports)110 void DefineProperty::DefineComponentType(napi_env env, napi_value exports)
111 {
112 std::vector<std::pair<std::string, napi_value>> componentTypeList = {
113 DECLARE_ENUM_PROPERTY(ComponentType::OTA),
114 DECLARE_ENUM_PROPERTY(ComponentType::PATCH),
115 DECLARE_ENUM_PROPERTY(ComponentType::COTA),
116 DECLARE_ENUM_PROPERTY(ComponentType::PARAM)
117 };
118 NapiCommonUtils::CreateProperty(env, exports, "ComponentType", componentTypeList);
119 }
120
DefineEffectiveMode(napi_env env,napi_value exports)121 void DefineProperty::DefineEffectiveMode(napi_env env, napi_value exports)
122 {
123 std::vector<std::pair<std::string, napi_value>> effectiveModeList = {
124 DECLARE_ENUM_PROPERTY(EffectiveMode::COLD),
125 DECLARE_ENUM_PROPERTY(EffectiveMode::LIVE),
126 DECLARE_ENUM_PROPERTY(EffectiveMode::LIVE_AND_COLD)
127 };
128 NapiCommonUtils::CreateProperty(env, exports, "EffectiveMode", effectiveModeList);
129 }
130
DefineNetType(napi_env env,napi_value exports)131 void DefineProperty::DefineNetType(napi_env env, napi_value exports)
132 {
133 std::vector<std::pair<std::string, napi_value>> netTypeList = {
134 DECLARE_ENUM_PROPERTY(NetType::CELLULAR),
135 DECLARE_ENUM_PROPERTY(NetType::METERED_WIFI),
136 DECLARE_ENUM_PROPERTY(NetType::NOT_METERED_WIFI),
137 DECLARE_ENUM_PROPERTY(NetType::WIFI),
138 DECLARE_ENUM_PROPERTY(NetType::CELLULAR_AND_WIFI)
139 };
140 NapiCommonUtils::CreateProperty(env, exports, "NetType", netTypeList);
141 }
142
DefineOrder(napi_env env,napi_value exports)143 void DefineProperty::DefineOrder(napi_env env, napi_value exports)
144 {
145 std::vector<std::pair<std::string, napi_value>> orderList = {
146 DECLARE_ENUM_PROPERTY(Order::DOWNLOAD),
147 DECLARE_ENUM_PROPERTY(Order::INSTALL),
148 DECLARE_ENUM_PROPERTY(Order::DOWNLOAD_AND_INSTALL),
149 DECLARE_ENUM_PROPERTY(Order::APPLY),
150 DECLARE_ENUM_PROPERTY(Order::INSTALL_AND_APPLY)
151 };
152 NapiCommonUtils::CreateProperty(env, exports, "Order", orderList);
153 }
154
DefineEventClassify(napi_env env,napi_value exports)155 void DefineProperty::DefineEventClassify(napi_env env, napi_value exports)
156 {
157 std::vector<std::pair<std::string, napi_value>> eventClassifyList = {
158 DECLARE_ENUM_PROPERTY(EventClassify::TASK),
159 DECLARE_ENUM_PROPERTY(EventClassify::SYSTEM)
160 };
161 NapiCommonUtils::CreateProperty(env, exports, "EventClassify", eventClassifyList);
162 }
163
DefineBusinessSubType(napi_env env,napi_value exports)164 void DefineProperty::DefineBusinessSubType(napi_env env, napi_value exports)
165 {
166 std::vector<std::pair<std::string, napi_value>> businessSubTypeList = {
167 DECLARE_ENUM_PROPERTY(BusinessSubType::FIRMWARE),
168 DECLARE_ENUM_PROPERTY(BusinessSubType::PARAM),
169 DECLARE_ENUM_PROPERTY(BusinessSubType::ROLLBACK)
170 };
171 NapiCommonUtils::CreateProperty(env, exports, "BusinessSubType", businessSubTypeList);
172 }
173
DefineDescriptionType(napi_env env,napi_value exports)174 void DefineProperty::DefineDescriptionType(napi_env env, napi_value exports)
175 {
176 std::vector<std::pair<std::string, napi_value>> descriptionTypeList = {
177 DECLARE_ENUM_PROPERTY(DescriptionType::CONTENT),
178 DECLARE_ENUM_PROPERTY(DescriptionType::URI),
179 DECLARE_ENUM_PROPERTY(DescriptionType::ID)
180 };
181 NapiCommonUtils::CreateProperty(env, exports, "DescriptionType", descriptionTypeList);
182 }
183
DefineDescriptionFormat(napi_env env,napi_value exports)184 void DefineProperty::DefineDescriptionFormat(napi_env env, napi_value exports)
185 {
186 std::vector<std::pair<std::string, napi_value>> descriptionFormatList = {
187 DECLARE_ENUM_PROPERTY(DescriptionFormat::STANDARD),
188 DECLARE_ENUM_PROPERTY(DescriptionFormat::SIMPLIFIED)
189 };
190 NapiCommonUtils::CreateProperty(env, exports, "DescriptionFormat", descriptionFormatList);
191 }
192
DefineEventId(napi_env env,napi_value exports)193 void DefineProperty::DefineEventId(napi_env env, napi_value exports)
194 {
195 std::vector<std::pair<std::string, napi_value>> eventIdList = {
196 DECLARE_ENUM_PROPERTY(EventId::EVENT_TASK_BASE),
197 DECLARE_ENUM_PROPERTY(EventId::EVENT_TASK_RECEIVE),
198 DECLARE_ENUM_PROPERTY(EventId::EVENT_TASK_CANCEL),
199 DECLARE_ENUM_PROPERTY(EventId::EVENT_DOWNLOAD_WAIT),
200 DECLARE_ENUM_PROPERTY(EventId::EVENT_DOWNLOAD_START),
201 DECLARE_ENUM_PROPERTY(EventId::EVENT_DOWNLOAD_UPDATE),
202 DECLARE_ENUM_PROPERTY(EventId::EVENT_DOWNLOAD_PAUSE),
203 DECLARE_ENUM_PROPERTY(EventId::EVENT_DOWNLOAD_RESUME),
204 DECLARE_ENUM_PROPERTY(EventId::EVENT_DOWNLOAD_SUCCESS),
205 DECLARE_ENUM_PROPERTY(EventId::EVENT_DOWNLOAD_FAIL),
206 DECLARE_ENUM_PROPERTY(EventId::EVENT_UPGRADE_WAIT),
207 DECLARE_ENUM_PROPERTY(EventId::EVENT_UPGRADE_START),
208 DECLARE_ENUM_PROPERTY(EventId::EVENT_UPGRADE_UPDATE),
209 DECLARE_ENUM_PROPERTY(EventId::EVENT_APPLY_WAIT),
210 DECLARE_ENUM_PROPERTY(EventId::EVENT_APPLY_START),
211 DECLARE_ENUM_PROPERTY(EventId::EVENT_UPGRADE_SUCCESS),
212 DECLARE_ENUM_PROPERTY(EventId::EVENT_UPGRADE_FAIL),
213 DECLARE_ENUM_PROPERTY(EventId::EVENT_AUTH_START),
214 DECLARE_ENUM_PROPERTY(EventId::EVENT_AUTH_SUCCESS),
215 DECLARE_ENUM_PROPERTY(EventId::EVENT_DOWNLOAD_CANCEL),
216 DECLARE_ENUM_PROPERTY(EventId::EVENT_INITIALIZE),
217 DECLARE_ENUM_PROPERTY(EventId::EVENT_TASK_CHANGE),
218 DECLARE_ENUM_PROPERTY(EventId::EVENT_VERSION_INFO_CHANGE),
219 DECLARE_ENUM_PROPERTY(EventId::SYSTEM_BASE),
220 DECLARE_ENUM_PROPERTY(EventId::SYSTEM_BOOT_COMPLETE)
221 };
222 NapiCommonUtils::CreateProperty(env, exports, "EventId", eventIdList);
223 }
224
DefineUpgradeAction(napi_env env,napi_value exports)225 void DefineProperty::DefineUpgradeAction(napi_env env, napi_value exports)
226 {
227 std::vector<std::pair<std::string, napi_value>> upgradeActionList = {
228 DECLARE_STRING_PROPERTY(UpgradeAction::UPGRADE),
229 DECLARE_STRING_PROPERTY(UpgradeAction::RECOVERY),
230 DECLARE_STRING_PROPERTY(UpgradeAction::ROLLBACK)
231 };
232 NapiCommonUtils::CreateProperty(env, exports, "UpgradeAction", upgradeActionList);
233 }
234
DefineBusinessVendor(napi_env env,napi_value exports)235 void DefineProperty::DefineBusinessVendor(napi_env env, napi_value exports)
236 {
237 std::vector<std::pair<std::string, napi_value>> businessVendorList = {
238 DECLARE_STRING_PROPERTY(BusinessVendor::PUBLIC)
239 };
240 NapiCommonUtils::CreateProperty(env, exports, "BusinessVendor", businessVendorList);
241 }
242 } // namespace OHOS::UpdateEngine