• 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 
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