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