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