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 #define LOG_TAG "SystemDefinedAppItemNapi"
16 #include "system_defined_appitem_napi.h"
17
18 #include "system_defined_appitem.h"
19 #include "system_defined_record_napi.h"
20 #include "unified_record_napi.h"
21
22 namespace OHOS {
23 namespace UDMF {
Constructor(napi_env env)24 napi_value SystemDefinedAppItemNapi::Constructor(napi_env env)
25 {
26 LOG_DEBUG(UDMF_KITS_NAPI, "SystemDefinedAppItemNapi");
27 napi_property_descriptor properties[] = {
28 /* SystemDefinedAppItem extends UnifiedRecord */
29 DECLARE_NAPI_FUNCTION("getType", UnifiedRecordNapi::GetType),
30 DECLARE_NAPI_FUNCTION("getValue", UnifiedRecordNapi::GetValue),
31 /* SystemDefinedAppItem extends SystemDefinedRecord */
32 DECLARE_NAPI_GETTER_SETTER("details", SystemDefinedRecordNapi::GetDetails, SystemDefinedRecordNapi::SetDetails),
33 /* SystemDefinedAppItem properties */
34 DECLARE_NAPI_GETTER_SETTER("appId", GetAppId, SetAppId),
35 DECLARE_NAPI_GETTER_SETTER("appName", GetAppName, SetAppName),
36 DECLARE_NAPI_GETTER_SETTER("appIconId", GetAppIconId, SetAppIconId),
37 DECLARE_NAPI_GETTER_SETTER("appLabelId", GetAppLabelId, SetAppLabelId),
38 DECLARE_NAPI_GETTER_SETTER("bundleName", GetBundleName, SetBundleName),
39 DECLARE_NAPI_GETTER_SETTER("abilityName", GetAbilityName, SetAbilityName),
40 };
41 size_t count = sizeof(properties) / sizeof(properties[0]);
42 return NapiDataUtils::DefineClass(env, "SDAppItem", properties, count, SystemDefinedAppItemNapi::New);
43 }
44
New(napi_env env,napi_callback_info info)45 napi_value SystemDefinedAppItemNapi::New(napi_env env, napi_callback_info info)
46 {
47 LOG_DEBUG(UDMF_KITS_NAPI, "SystemDefinedAppItemNapi");
48 auto ctxt = std::make_shared<ContextBase>();
49 ctxt->GetCbInfoSync(env, info);
50 ASSERT_ERR(ctxt->env, ctxt->status == napi_ok, Status::E_ERROR, ctxt->error);
51
52 auto *sdAppItem = new (std::nothrow) SystemDefinedAppItemNapi();
53 ASSERT_ERR(ctxt->env, sdAppItem != nullptr, Status::E_ERROR, "no memory for system defined appitem!");
54 sdAppItem->value_ = std::make_shared<SystemDefinedAppItem>();
55 ASSERT_CALL(env, napi_wrap(env, ctxt->self, sdAppItem, Destructor, nullptr, nullptr), sdAppItem);
56 return ctxt->self;
57 }
58
NewInstance(napi_env env,std::shared_ptr<UnifiedRecord> in,napi_value & out)59 void SystemDefinedAppItemNapi::NewInstance(napi_env env, std::shared_ptr<UnifiedRecord> in, napi_value &out)
60 {
61 LOG_DEBUG(UDMF_KITS_NAPI, "SystemDefinedAppItemNapi");
62 ASSERT_CALL_VOID(env, napi_new_instance(env, Constructor(env), 0, nullptr, &out));
63 auto *sdAppItem = new (std::nothrow) SystemDefinedAppItemNapi();
64 ASSERT_ERR_VOID(env, sdAppItem != nullptr, Status::E_ERROR, "no memory for system defined appitem!");
65 sdAppItem->value_ = std::static_pointer_cast<SystemDefinedAppItem>(in);
66 ASSERT_CALL_DELETE(env, napi_wrap(env, out, sdAppItem, Destructor, nullptr, nullptr), sdAppItem);
67 }
68
Destructor(napi_env env,void * data,void * hint)69 void SystemDefinedAppItemNapi::Destructor(napi_env env, void *data, void *hint)
70 {
71 LOG_DEBUG(UDMF_KITS_NAPI, "SystemDefinedAppItemNapi finalize.");
72 auto *sdAppItem = static_cast<SystemDefinedAppItemNapi *>(data);
73 ASSERT_VOID(sdAppItem != nullptr, "finalize null!");
74 delete sdAppItem;
75 }
76
GetSystemDefinedAppItem(napi_env env,napi_callback_info info,std::shared_ptr<ContextBase> ctxt)77 SystemDefinedAppItemNapi *SystemDefinedAppItemNapi::GetSystemDefinedAppItem(
78 napi_env env, napi_callback_info info, std::shared_ptr<ContextBase> ctxt)
79 {
80 LOG_DEBUG(UDMF_KITS_NAPI, "SystemDefinedAppItemNapi");
81 ctxt->GetCbInfoSync(env, info);
82 ASSERT_ERR(ctxt->env, ctxt->status == napi_ok, Status::E_ERROR, ctxt->error);
83 return static_cast<SystemDefinedAppItemNapi *>(ctxt->native);
84 }
85
GetAppId(napi_env env,napi_callback_info info)86 napi_value SystemDefinedAppItemNapi::GetAppId(napi_env env, napi_callback_info info)
87 {
88 LOG_DEBUG(UDMF_KITS_NAPI, "SystemDefinedAppItemNapi");
89 auto ctxt = std::make_shared<ContextBase>();
90 auto sdAppItem = GetSystemDefinedAppItem(env, info, ctxt);
91 ASSERT_ERR(ctxt->env, (sdAppItem != nullptr && sdAppItem->value_ != nullptr), Status::E_ERROR,
92 "invalid object!");
93 ctxt->status = NapiDataUtils::SetValue(env, sdAppItem->value_->GetAppId(), ctxt->output);
94 ASSERT_ERR(ctxt->env, ctxt->status == napi_ok, Status::E_ERROR, "set app id failed!");
95 return ctxt->output;
96 }
97
SetAppId(napi_env env,napi_callback_info info)98 napi_value SystemDefinedAppItemNapi::SetAppId(napi_env env, napi_callback_info info)
99 {
100 LOG_DEBUG(UDMF_KITS_NAPI, "SystemDefinedAppItemNapi");
101 auto ctxt = std::make_shared<ContextBase>();
102 std::string appId;
103 auto input = [env, ctxt, &appId](size_t argc, napi_value *argv) {
104 ASSERT_BUSINESS_ERR(ctxt, argc >= 1,
105 Status::E_INVALID_PARAMETERS, "Parameter error: Mandatory parameters are left unspecified");
106 ctxt->status = NapiDataUtils::GetValue(env, argv[0], appId);
107 ASSERT_BUSINESS_ERR(ctxt, ctxt->status == napi_ok,
108 Status::E_INVALID_PARAMETERS, "Parameter error: parameter appId type must be string");
109 };
110 ctxt->GetCbInfoSync(env, info, input);
111 ASSERT_ERR(ctxt->env, ctxt->status == napi_ok, Status::E_ERROR, ctxt->error);
112 auto sdAppItem = static_cast<SystemDefinedAppItemNapi *>(ctxt->native);
113 ASSERT_ERR(ctxt->env, (sdAppItem != nullptr && sdAppItem->value_ != nullptr), Status::E_ERROR,
114 "invalid object!");
115 sdAppItem->value_->SetAppId(appId);
116 return nullptr;
117 }
118
GetAppName(napi_env env,napi_callback_info info)119 napi_value SystemDefinedAppItemNapi::GetAppName(napi_env env, napi_callback_info info)
120 {
121 LOG_DEBUG(UDMF_KITS_NAPI, "SystemDefinedAppItemNapi");
122 auto ctxt = std::make_shared<ContextBase>();
123 auto sdAppItem = GetSystemDefinedAppItem(env, info, ctxt);
124 ASSERT_ERR(ctxt->env, (sdAppItem != nullptr && sdAppItem->value_ != nullptr), Status::E_ERROR,
125 "invalid object!");
126 ctxt->status = NapiDataUtils::SetValue(env, sdAppItem->value_->GetAppName(), ctxt->output);
127 ASSERT_ERR(ctxt->env, ctxt->status == napi_ok, Status::E_ERROR, "set app name failed!");
128 return ctxt->output;
129 }
130
SetAppName(napi_env env,napi_callback_info info)131 napi_value SystemDefinedAppItemNapi::SetAppName(napi_env env, napi_callback_info info)
132 {
133 LOG_DEBUG(UDMF_KITS_NAPI, "SystemDefinedAppItemNapi");
134 auto ctxt = std::make_shared<ContextBase>();
135 std::string appName;
136 auto input = [env, ctxt, &appName](size_t argc, napi_value *argv) {
137 ASSERT_BUSINESS_ERR(ctxt, argc >= 1,
138 Status::E_INVALID_PARAMETERS, "Parameter error: Mandatory parameters are left unspecified");
139 ctxt->status = NapiDataUtils::GetValue(env, argv[0], appName);
140 ASSERT_BUSINESS_ERR(ctxt, ctxt->status == napi_ok,
141 Status::E_INVALID_PARAMETERS, "Parameter error: parameter appName type must be string");
142 };
143 ctxt->GetCbInfoSync(env, info, input);
144 ASSERT_ERR(ctxt->env, ctxt->status == napi_ok, Status::E_ERROR, ctxt->error);
145 auto sdAppItem = static_cast<SystemDefinedAppItemNapi *>(ctxt->native);
146 ASSERT_ERR(ctxt->env, (sdAppItem != nullptr && sdAppItem->value_ != nullptr), Status::E_ERROR,
147 "invalid object!");
148 sdAppItem->value_->SetAppName(appName);
149 return nullptr;
150 }
151
GetAppIconId(napi_env env,napi_callback_info info)152 napi_value SystemDefinedAppItemNapi::GetAppIconId(napi_env env, napi_callback_info info)
153 {
154 LOG_DEBUG(UDMF_KITS_NAPI, "SystemDefinedAppItemNapi");
155 auto ctxt = std::make_shared<ContextBase>();
156 auto sdAppItem = GetSystemDefinedAppItem(env, info, ctxt);
157 ASSERT_ERR(ctxt->env, (sdAppItem != nullptr && sdAppItem->value_ != nullptr), Status::E_ERROR,
158 "invalid object!");
159 ctxt->status = NapiDataUtils::SetValue(env, sdAppItem->value_->GetAppIconId(), ctxt->output);
160 ASSERT_ERR(ctxt->env, ctxt->status == napi_ok, Status::E_ERROR, "set app icon id failed!");
161 return ctxt->output;
162 }
163
SetAppIconId(napi_env env,napi_callback_info info)164 napi_value SystemDefinedAppItemNapi::SetAppIconId(napi_env env, napi_callback_info info)
165 {
166 LOG_DEBUG(UDMF_KITS_NAPI, "SystemDefinedAppItemNapi");
167 auto ctxt = std::make_shared<ContextBase>();
168 std::string appIconId;
169 auto input = [env, ctxt, &appIconId](size_t argc, napi_value *argv) {
170 ASSERT_BUSINESS_ERR(ctxt, argc >= 1,
171 Status::E_INVALID_PARAMETERS, "Parameter error: Mandatory parameters are left unspecified");
172 ctxt->status = NapiDataUtils::GetValue(env, argv[0], appIconId);
173 ASSERT_BUSINESS_ERR(ctxt, ctxt->status == napi_ok,
174 Status::E_INVALID_PARAMETERS, "Parameter error: parameter appIconId type must be string");
175 };
176 ctxt->GetCbInfoSync(env, info, input);
177 ASSERT_ERR(ctxt->env, ctxt->status == napi_ok, Status::E_ERROR, ctxt->error);
178 auto sdAppItem = static_cast<SystemDefinedAppItemNapi *>(ctxt->native);
179 ASSERT_ERR(ctxt->env, (sdAppItem != nullptr && sdAppItem->value_ != nullptr), Status::E_ERROR,
180 "invalid object!");
181 sdAppItem->value_->SetAppIconId(appIconId);
182 return nullptr;
183 }
184
GetAppLabelId(napi_env env,napi_callback_info info)185 napi_value SystemDefinedAppItemNapi::GetAppLabelId(napi_env env, napi_callback_info info)
186 {
187 LOG_DEBUG(UDMF_KITS_NAPI, "SystemDefinedAppItemNapi");
188 auto ctxt = std::make_shared<ContextBase>();
189 auto sdAppItem = GetSystemDefinedAppItem(env, info, ctxt);
190 ASSERT_ERR(ctxt->env, (sdAppItem != nullptr && sdAppItem->value_ != nullptr), Status::E_ERROR,
191 "invalid object!");
192 ctxt->status = NapiDataUtils::SetValue(env, sdAppItem->value_->GetAppLabelId(), ctxt->output);
193 ASSERT_ERR(ctxt->env, ctxt->status == napi_ok, Status::E_ERROR, "set app label id failed!");
194 return ctxt->output;
195 }
196
SetAppLabelId(napi_env env,napi_callback_info info)197 napi_value SystemDefinedAppItemNapi::SetAppLabelId(napi_env env, napi_callback_info info)
198 {
199 LOG_DEBUG(UDMF_KITS_NAPI, "SystemDefinedAppItemNapi");
200 auto ctxt = std::make_shared<ContextBase>();
201 std::string appLabelId;
202 auto input = [env, ctxt, &appLabelId](size_t argc, napi_value *argv) {
203 ASSERT_BUSINESS_ERR(ctxt, argc >= 1,
204 Status::E_INVALID_PARAMETERS, "Parameter error: Mandatory parameters are left unspecified");
205 ctxt->status = NapiDataUtils::GetValue(env, argv[0], appLabelId);
206 ASSERT_BUSINESS_ERR(ctxt, ctxt->status == napi_ok,
207 Status::E_INVALID_PARAMETERS, "Parameter error: parameter appLabelId type must be string");
208 };
209 ctxt->GetCbInfoSync(env, info, input);
210 ASSERT_ERR(ctxt->env, ctxt->status == napi_ok, Status::E_ERROR, ctxt->error);
211 auto sdAppItem = static_cast<SystemDefinedAppItemNapi *>(ctxt->native);
212 ASSERT_ERR(ctxt->env, (sdAppItem != nullptr && sdAppItem->value_ != nullptr), Status::E_ERROR,
213 "invalid object!");
214 sdAppItem->value_->SetAppLabelId(appLabelId);
215 return nullptr;
216 }
217
GetBundleName(napi_env env,napi_callback_info info)218 napi_value SystemDefinedAppItemNapi::GetBundleName(napi_env env, napi_callback_info info)
219 {
220 LOG_DEBUG(UDMF_KITS_NAPI, "SystemDefinedAppItemNapi");
221 auto ctxt = std::make_shared<ContextBase>();
222 auto sdAppItem = GetSystemDefinedAppItem(env, info, ctxt);
223 ASSERT_ERR(ctxt->env, (sdAppItem != nullptr && sdAppItem->value_ != nullptr), Status::E_ERROR,
224 "invalid object!");
225 ctxt->status = NapiDataUtils::SetValue(env, sdAppItem->value_->GetBundleName(), ctxt->output);
226 ASSERT_ERR(ctxt->env, ctxt->status == napi_ok, Status::E_ERROR, "set bundle name failed!");
227 return ctxt->output;
228 }
229
SetBundleName(napi_env env,napi_callback_info info)230 napi_value SystemDefinedAppItemNapi::SetBundleName(napi_env env, napi_callback_info info)
231 {
232 LOG_DEBUG(UDMF_KITS_NAPI, "SystemDefinedAppItemNapi");
233 auto ctxt = std::make_shared<ContextBase>();
234 std::string bundleName;
235 auto input = [env, ctxt, &bundleName](size_t argc, napi_value *argv) {
236 ASSERT_BUSINESS_ERR(ctxt, argc >= 1,
237 Status::E_INVALID_PARAMETERS, "Parameter error: Mandatory parameters are left unspecified");
238 ctxt->status = NapiDataUtils::GetValue(env, argv[0], bundleName);
239 ASSERT_BUSINESS_ERR(ctxt, ctxt->status == napi_ok,
240 Status::E_INVALID_PARAMETERS, "Parameter error: parameter bundleName type must be string");
241 };
242 ctxt->GetCbInfoSync(env, info, input);
243 ASSERT_ERR(ctxt->env, ctxt->status == napi_ok, Status::E_ERROR, ctxt->error);
244 auto sdAppItem = static_cast<SystemDefinedAppItemNapi *>(ctxt->native);
245 ASSERT_ERR(ctxt->env, (sdAppItem != nullptr && sdAppItem->value_ != nullptr), Status::E_ERROR,
246 "invalid object!");
247 sdAppItem->value_->SetBundleName(bundleName);
248 return nullptr;
249 }
250
GetAbilityName(napi_env env,napi_callback_info info)251 napi_value SystemDefinedAppItemNapi::GetAbilityName(napi_env env, napi_callback_info info)
252 {
253 LOG_DEBUG(UDMF_KITS_NAPI, "SystemDefinedAppItemNapi");
254 auto ctxt = std::make_shared<ContextBase>();
255 auto sdAppItem = GetSystemDefinedAppItem(env, info, ctxt);
256 ASSERT_ERR(ctxt->env, (sdAppItem != nullptr && sdAppItem->value_ != nullptr), Status::E_ERROR,
257 "invalid object!");
258 ctxt->status = NapiDataUtils::SetValue(env, sdAppItem->value_->GetAbilityName(), ctxt->output);
259 ASSERT_ERR(ctxt->env, ctxt->status == napi_ok, Status::E_ERROR, "set ability name failed!");
260 return ctxt->output;
261 }
262
SetAbilityName(napi_env env,napi_callback_info info)263 napi_value SystemDefinedAppItemNapi::SetAbilityName(napi_env env, napi_callback_info info)
264 {
265 LOG_DEBUG(UDMF_KITS_NAPI, "SystemDefinedAppItemNapi");
266 auto ctxt = std::make_shared<ContextBase>();
267 std::string abilityName;
268 auto input = [env, ctxt, &abilityName](size_t argc, napi_value *argv) {
269 ASSERT_BUSINESS_ERR(ctxt, argc >= 1,
270 Status::E_INVALID_PARAMETERS, "Parameter error: Mandatory parameters are left unspecified");
271 ctxt->status = NapiDataUtils::GetValue(env, argv[0], abilityName);
272 ASSERT_BUSINESS_ERR(ctxt, ctxt->status == napi_ok,
273 Status::E_INVALID_PARAMETERS, "Parameter error: parameter abilityName type must be string");
274 };
275 ctxt->GetCbInfoSync(env, info, input);
276 ASSERT_ERR(ctxt->env, ctxt->status == napi_ok, Status::E_ERROR, ctxt->error);
277 auto sdAppItem = static_cast<SystemDefinedAppItemNapi *>(ctxt->native);
278 ASSERT_ERR(ctxt->env, (sdAppItem != nullptr && sdAppItem->value_ != nullptr), Status::E_ERROR,
279 "invalid object!");
280 sdAppItem->value_->SetAbilityName(abilityName);
281 return nullptr;
282 }
283 } // namespace UDMF
284 } // namespace OHOS