• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 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 "napi/native_api.h"
17 #include "raw_file_manager.h"
18 #include "raw_file.h"
19 #include "raw_dir.h"
20 #include "hilog/log.h"
21 #include <js_native_api.h>
22 #include <js_native_api_types.h>
23 #include <vector>
24 #include "ohresmgr.h"
25 #include <string>
26 #include <sstream>
27 
28 int GLOBAL_RESMGR = 0xDDD;
29 const int SUBLEN = 100;
GetFileList(napi_env env,napi_callback_info info)30 static napi_value GetFileList(napi_env env, napi_callback_info info)
31 {
32     size_t argc = 2;
33     napi_value argv[2] = { nullptr };
34 
35     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
36 
37     napi_valuetype valueType;
38     napi_typeof(env, argv[0], &valueType);
39     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
40     size_t strSize;
41     char strBuf[256];
42     napi_get_value_string_utf8(env, argv[1], strBuf, sizeof(strBuf), &strSize);
43     std::string filename(strBuf, strSize);
44     RawDir* rawDir = OH_ResourceManager_OpenRawDir(mNativeResMgr, filename.c_str());
45     int count = OH_ResourceManager_GetRawFileCount(rawDir);
46     std::vector<std::string> tempArray;
47     for(int i = 0; i < count; i++) {
48         std::string rawfilename = OH_ResourceManager_GetRawFileName(rawDir, i);
49         tempArray.emplace_back(rawfilename);
50     }
51 
52     napi_value fileList;
53     napi_create_array(env, &fileList);
54     for (size_t i = 0; i < tempArray.size(); i++) {
55         napi_value jsString;
56         napi_create_string_utf8(env, tempArray[i].c_str(), NAPI_AUTO_LENGTH, &jsString);
57         napi_set_element(env, fileList, i, jsString);
58     }
59     OH_ResourceManager_CloseRawDir(rawDir);
60     OH_ResourceManager_ReleaseNativeResourceManager(mNativeResMgr);
61     return fileList;
62 }
63 
CreateJsString(napi_env env,char * str)64 napi_value CreateJsString(napi_env env, char *str)
65 {
66     napi_value result;
67     if (napi_create_string_utf8(env, str, NAPI_AUTO_LENGTH, &result) != napi_ok) {
68         return result;
69     }
70     return result;
71 }
72 
createJsFileDescriptor(napi_env env,RawFileDescriptor * descriptor)73 napi_value createJsFileDescriptor(napi_env env, RawFileDescriptor *descriptor)
74 {
75     napi_value result;
76     napi_status status = napi_create_object(env, &result);
77     if (status != napi_ok) {
78         return result;
79     }
80 
81     napi_value fd;
82     status = napi_create_int32(env, descriptor->fd, &fd);
83     if (status != napi_ok) {
84         return result;
85     }
86     status = napi_set_named_property(env, result, "fd", fd);
87     if (status != napi_ok) {
88         return result;
89     }
90 
91     napi_value offset;
92     status = napi_create_int32(env, descriptor->start, &offset);
93     if (status != napi_ok) {
94         return result;
95     }
96     status = napi_set_named_property(env, result, "offset", offset);
97     if (status != napi_ok) {
98         return result;
99     }
100 
101     napi_value length;
102     status = napi_create_int32(env, descriptor->length, &length);
103     if (status != napi_ok) {
104         return result;
105     }
106     status = napi_set_named_property(env, result, "length", length);
107     if (status != napi_ok) {
108         return result;
109     }
110     return result;
111 }
112 
CreateJsArrayValue(napi_env env,std::unique_ptr<uint8_t[]> & data,long length)113 napi_value CreateJsArrayValue(napi_env env, std::unique_ptr<uint8_t[]> &data, long length)
114 {
115     napi_value buffer;
116     napi_status status = napi_create_external_arraybuffer(env, data.get(), length,
117             [](napi_env env, void *data, void *hint) {
118                 delete[] static_cast<char*>(data);
119             }, nullptr, &buffer);
120     if (status != napi_ok) {
121         return nullptr;
122     }
123     napi_value result = nullptr;
124     status = napi_create_typedarray(env, napi_uint8_array, length, buffer, 0, &result);
125     if (status != napi_ok) {
126         return nullptr;
127     }
128     data.release();
129     return result;
130 }
131 
GetRawFileContent(napi_env env,napi_callback_info info)132 static napi_value GetRawFileContent(napi_env env, napi_callback_info info)
133 {
134     size_t argc = 2;
135     napi_value argv[2] = { nullptr };
136 
137     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
138 
139     napi_valuetype valueType;
140     napi_typeof(env, argv[0], &valueType);
141     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
142     size_t strSize;
143     char strBuf[256];
144     napi_get_value_string_utf8(env, argv[1], strBuf, sizeof(strBuf), &strSize);
145     std::string filename(strBuf, strSize);
146     RawFile *rawFile = OH_ResourceManager_OpenRawFile(mNativeResMgr, filename.c_str());
147     if (rawFile != nullptr) {
148         return nullptr;
149     }
150     long len = OH_ResourceManager_GetRawFileSize(rawFile);
151     std::unique_ptr<uint8_t[]> data = std::make_unique<uint8_t[]>(len);
152 
153     long offset = OH_ResourceManager_GetRawFileOffset(rawFile);
154     if(offset == 0){
155         return nullptr;
156     }
157 
158     long size = OH_ResourceManager_SeekRawFile(rawFile, 1, 0);
159     if(size == -1){
160         return nullptr;
161     }
162 
163     long offset1 = 0;
164     while (OH_ResourceManager_GetRawFileRemainingLength(rawFile) > 0) {
165         OH_ResourceManager_ReadRawFile(rawFile, data.get() + offset1, SUBLEN);
166         offset1 += SUBLEN;
167     }
168 
169     OH_ResourceManager_CloseRawFile(rawFile);
170     OH_ResourceManager_ReleaseNativeResourceManager(mNativeResMgr);
171     return CreateJsArrayValue(env, data, len);
172 }
173 
GetRawFileContent64(napi_env env,napi_callback_info info)174 static napi_value GetRawFileContent64(napi_env env, napi_callback_info info)
175 {
176     size_t argc = 2;
177     napi_value argv[2] = {nullptr};
178     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
179     napi_valuetype valueType;
180     napi_typeof(env, argv[0], &valueType);
181     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
182     size_t strSize;
183     char strBuf[256];
184     napi_get_value_string_utf8(env, argv[1], strBuf, sizeof(strBuf), &strSize);
185     std::string filename(strBuf, strSize);
186     RawFile64 *rawFile = OH_ResourceManager_OpenRawFile64(mNativeResMgr, filename.c_str());
187     if (rawFile != nullptr) {
188         return nullptr;
189     }
190     long len = OH_ResourceManager_GetRawFileSize64(rawFile);
191     std::unique_ptr<uint8_t[]> data = std::make_unique<uint8_t[]>(len);
192 
193     int64_t offset = OH_ResourceManager_GetRawFileOffset64(rawFile);
194     if (offset == 0) {
195         return nullptr;
196     }
197 
198     int size = OH_ResourceManager_SeekRawFile64(rawFile, 1, 0);
199     if (size == -1) {
200         return nullptr;
201     }
202 
203     int64_t offset1 = 0;
204     while (OH_ResourceManager_GetRawFileRemainingLength64(rawFile) > 0) {
205         OH_ResourceManager_ReadRawFile64(rawFile, data.get() + offset1, SUBLEN);
206         offset1 += SUBLEN;
207     }
208 
209     OH_ResourceManager_CloseRawFile64(rawFile);
210     OH_ResourceManager_ReleaseNativeResourceManager(mNativeResMgr);
211     return CreateJsArrayValue(env, data, len);
212 }
213 
createJsFileDescriptor(napi_env env,RawFileDescriptor & descriptor)214 napi_value createJsFileDescriptor(napi_env env, RawFileDescriptor &descriptor)
215 {
216     napi_value result;
217     napi_status status = napi_create_object(env, &result);
218     if (status != napi_ok) {
219         return result;
220     }
221 
222     napi_value fd;
223     status = napi_create_int32(env, descriptor.fd, &fd);
224     if (status != napi_ok) {
225         return result;
226     }
227     status = napi_set_named_property(env, result, "fd", fd);
228     if (status != napi_ok) {
229         return result;
230     }
231 
232     napi_value offset;
233     status = napi_create_int64(env, descriptor.start, &offset);
234     if (status != napi_ok) {
235         return result;
236     }
237     status = napi_set_named_property(env, result, "offset", offset);
238     if (status != napi_ok) {
239         return result;
240     }
241 
242     napi_value length;
243     status = napi_create_int64(env, descriptor.length, &length);
244     if (status != napi_ok) {
245         return result;
246     }
247     status = napi_set_named_property(env, result, "length", length);
248     if (status != napi_ok) {
249         return result;
250     }
251     return result;
252 }
253 
createJsFileDescriptor64(napi_env env,RawFileDescriptor64 * descriptor)254 napi_value createJsFileDescriptor64(napi_env env, RawFileDescriptor64 *descriptor)
255 {
256     napi_value result;
257     napi_status status = napi_create_object(env, &result);
258     if (status != napi_ok) {
259         return result;
260     }
261 
262     napi_value fd;
263     status = napi_create_int32(env, descriptor->fd, &fd);
264     if (status != napi_ok) {
265         return result;
266     }
267     status = napi_set_named_property(env, result, "fd", fd);
268     if (status != napi_ok) {
269         return result;
270     }
271 
272     napi_value offset;
273     status = napi_create_int64(env, descriptor->start, &offset);
274     if (status != napi_ok) {
275         return result;
276     }
277     status = napi_set_named_property(env, result, "offset", offset);
278     if (status != napi_ok) {
279         return result;
280     }
281 
282     napi_value length;
283     status = napi_create_int64(env, descriptor->length, &length);
284     if (status != napi_ok) {
285         return result;
286     }
287     return result;
288 }
289 
GetRawFileDescriptor(napi_env env,napi_callback_info info)290 static napi_value GetRawFileDescriptor(napi_env env, napi_callback_info info)
291 {
292     size_t argc = 2;
293     napi_value argv[2] = { nullptr };
294 
295     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
296 
297     napi_valuetype valueType;
298     napi_typeof(env, argv[0], &valueType);
299     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
300     size_t strSize;
301     char strBuf[256];
302     napi_get_value_string_utf8(env, argv[1], strBuf, sizeof(strBuf), &strSize);
303     std::string filename(strBuf, strSize);
304     RawFile *rawFile = OH_ResourceManager_OpenRawFile(mNativeResMgr, filename.c_str());
305     if (rawFile != nullptr) {
306         return nullptr;
307     }
308     RawFileDescriptor descriptor;
309     OH_ResourceManager_GetRawFileDescriptor(rawFile, descriptor);
310     OH_ResourceManager_ReleaseRawFileDescriptor(descriptor);
311 
312     OH_ResourceManager_CloseRawFile(rawFile);
313     OH_ResourceManager_ReleaseNativeResourceManager(mNativeResMgr);
314     return createJsFileDescriptor(env, descriptor);
315 }
316 
GetRawFileDescriptor64(napi_env env,napi_callback_info info)317 static napi_value GetRawFileDescriptor64(napi_env env, napi_callback_info info)
318 {
319     size_t argc = 2;
320     napi_value argv[2] = {nullptr};
321 
322     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
323 
324     napi_valuetype valueType;
325     napi_typeof(env, argv[0], &valueType);
326     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
327     size_t strSize;
328     char strBuf[256];
329     napi_get_value_string_utf8(env, argv[1], strBuf, sizeof(strBuf), &strSize);
330     std::string filename(strBuf, strSize);
331     RawFile64 *rawFile = OH_ResourceManager_OpenRawFile64(mNativeResMgr, filename.c_str());
332     if (rawFile != nullptr) {
333         return nullptr;
334     }
335     RawFileDescriptor64 *descriptor = new RawFileDescriptor64();
336     OH_ResourceManager_GetRawFileDescriptor64(rawFile, descriptor);
337     OH_ResourceManager_ReleaseRawFileDescriptor64(descriptor);
338 
339     OH_ResourceManager_CloseRawFile64(rawFile);
340     OH_ResourceManager_ReleaseNativeResourceManager(mNativeResMgr);
341     return createJsFileDescriptor64(env, descriptor);
342 }
343 
IsRawDir(napi_env env,napi_callback_info info)344 static napi_value IsRawDir(napi_env env, napi_callback_info info)
345 {
346     size_t argc = 2;
347     napi_value argv[2] = {nullptr};
348     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
349     size_t strSize;
350     char strBuf[256];
351     napi_get_value_string_utf8(env, argv[1], strBuf, sizeof(strBuf), &strSize);
352     std::string filename(strBuf, strSize);
353     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
354     bool result = OH_ResourceManager_IsRawDir(mNativeResMgr, filename.c_str());
355     bool flag = (result == false);
356     napi_value value = nullptr;
357     napi_get_boolean(env, flag, &value);
358     return value;
359 }
360 
GetDrawableDescriptor(napi_env env,napi_callback_info info)361 static napi_value GetDrawableDescriptor(napi_env env, napi_callback_info info)
362 {
363     size_t argc = 2;
364     napi_value args[2] = {nullptr};
365     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
366     ArkUI_DrawableDescriptor *drawable = nullptr;
367     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, args[0]);
368     uint32_t id = 0;
369     napi_get_value_uint32(env, args[1], &id);
370     OH_ResourceManager_GetDrawableDescriptor(mNativeResMgr, id, &drawable);
371 
372     bool flag = (drawable == nullptr);
373     napi_value value = nullptr;
374     napi_get_boolean(env, flag, &value);
375     return value;
376 }
377 
GetDrawableDescriptorByName(napi_env env,napi_callback_info info)378 static napi_value GetDrawableDescriptorByName(napi_env env, napi_callback_info info)
379 {
380     size_t argc = 2;
381     napi_value args[2] = {nullptr};
382     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
383     ArkUI_DrawableDescriptor *drawable = nullptr;
384     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, args[0]);
385     OH_ResourceManager_GetDrawableDescriptorByName(mNativeResMgr, "icon", &drawable);
386 
387     bool flag = (drawable != nullptr);
388     napi_value value = nullptr;
389     napi_get_boolean(env, flag, &value);
390     return value;
391 }
392 
GetMediaBase64(napi_env env,napi_callback_info info)393 static napi_value GetMediaBase64(napi_env env, napi_callback_info info)
394 {
395     size_t argc = 2;
396     napi_value argv[2] = {nullptr};
397     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
398 
399     uint32_t id = 0;
400     napi_get_value_uint32(env, argv[1], &id);
401 
402     char *result = nullptr;
403     uint64_t len = 0;
404     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
405     OH_ResourceManager_GetMediaBase64(mNativeResMgr, id, &result, &len);
406 
407     bool flag = (result != nullptr && len != 0);
408     napi_value value = nullptr;
409     napi_get_boolean(env, flag, &value);
410     return value;
411 }
412 
GetMediaBase64ByName(napi_env env,napi_callback_info info)413 static napi_value GetMediaBase64ByName(napi_env env, napi_callback_info info)
414 {
415     size_t argc = 2;
416     napi_value argv[2] = {nullptr};
417     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
418 
419     char *result = nullptr;
420     uint64_t len = 0;
421     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
422     OH_ResourceManager_GetMediaBase64ByName(mNativeResMgr, "icon", &result, &len);
423 
424     bool flag = (result != nullptr && len != 0);
425     napi_value value = nullptr;
426     napi_get_boolean(env, flag, &value);
427     return value;
428 }
429 
GetMedia(napi_env env,napi_callback_info info)430 static napi_value GetMedia(napi_env env, napi_callback_info info)
431 {
432     size_t argc = 2;
433     napi_value argv[2] = {nullptr};
434     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
435 
436     uint32_t id = 0;
437     napi_get_value_uint32(env, argv[1], &id);
438 
439     uint8_t *result = nullptr;
440     uint64_t len = 0;
441     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
442     OH_ResourceManager_GetMedia(mNativeResMgr, id, &result, &len);
443 
444     bool flag = (result != nullptr && len != 0);
445     napi_value value = nullptr;
446     napi_get_boolean(env, flag, &value);
447     return value;
448 }
449 
GetMediaByName(napi_env env,napi_callback_info info)450 static napi_value GetMediaByName(napi_env env, napi_callback_info info)
451 {
452     size_t argc = 2;
453     napi_value argv[2] = {nullptr};
454     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
455 
456     uint8_t *result = nullptr;
457     uint64_t len = 0;
458     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
459     OH_ResourceManager_GetMediaByName(mNativeResMgr, "icon", &result, &len);
460 
461     bool flag = (result != nullptr && len != 0);
462     napi_value value = nullptr;
463     napi_get_boolean(env, flag, &value);
464     return value;
465 }
466 
GetSymbolByName(napi_env env,napi_callback_info info)467 static napi_value GetSymbolByName(napi_env env, napi_callback_info info)
468 {
469     size_t argc = 2;
470     napi_value argv[2] = {nullptr};
471     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
472     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
473     uint32_t result = 0;
474     const char *name = "symbol_test";
475     ResourceManager_ErrorCode code = OH_ResourceManager_GetSymbolByName(mNativeResMgr, name, &result);
476 
477     bool flag = (code == 0 && result == 983040);
478     napi_value value = nullptr;
479     napi_get_boolean(env, flag, &value);
480     return value;
481 }
482 
GetSymbol(napi_env env,napi_callback_info info)483 static napi_value GetSymbol(napi_env env, napi_callback_info info)
484 {
485     size_t argc = 2;
486     napi_value argv[2] = {nullptr};
487     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
488     uint32_t id = 0;
489     uint32_t result = 0;
490     napi_get_value_uint32(env, argv[1], &id);
491     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
492     ResourceManager_ErrorCode code = OH_ResourceManager_GetSymbol(mNativeResMgr, id, &result);
493 
494     bool flag = (code == 0 && result == 983040);
495     napi_value value = nullptr;
496     napi_get_boolean(env, flag, &value);
497     return value;
498 }
499 
GetBoolByName(napi_env env,napi_callback_info info)500 static napi_value GetBoolByName(napi_env env, napi_callback_info info)
501 {
502     size_t argc = 2;
503     napi_value argv[2] = {nullptr};
504     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
505     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
506     bool result = false;
507     uint32_t id = 0;
508     napi_get_value_uint32(env, argv[1], &id);
509     const char *name = "boolean_1";
510     ResourceManager_ErrorCode code = OH_ResourceManager_GetBoolByName(mNativeResMgr, name, &result);
511 
512     bool flag = (code == 0 && result == true);
513     napi_value value = nullptr;
514     napi_get_boolean(env, flag, &value);
515     return value;
516 }
517 
GetBool(napi_env env,napi_callback_info info)518 static napi_value GetBool(napi_env env, napi_callback_info info)
519 {
520     size_t argc = 2;
521     napi_value argv[2] = {nullptr};
522     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
523     uint32_t id = 0;
524     bool result = false;
525     napi_get_value_uint32(env, argv[1], &id);
526     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
527     ResourceManager_ErrorCode code = OH_ResourceManager_GetBool(mNativeResMgr, id, &result);
528 
529     bool flag = (code == 0 && result == true);
530     napi_value value = nullptr;
531     napi_get_boolean(env, flag, &value);
532     return value;
533 }
534 
GetPluralStringByName(napi_env env,napi_callback_info info)535 static napi_value GetPluralStringByName(napi_env env, napi_callback_info info)
536 {
537     size_t argc = 3;
538     napi_value argv[3] = {nullptr};
539     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
540     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
541     char *result;
542     uint32_t num = 1;
543     int second = 2;
544     napi_get_value_uint32(env, argv[second], &num);
545     const char *name = "eat_apple";
546     ResourceManager_ErrorCode code = OH_ResourceManager_GetPluralStringByName(mNativeResMgr, name, num, &result);
547 
548     bool flag = (code == 0 && strcmp(result, "1 apples") == 0);
549     napi_value value = nullptr;
550     napi_get_boolean(env, flag, &value);
551     return value;
552 }
553 
GetPluralString(napi_env env,napi_callback_info info)554 static napi_value GetPluralString(napi_env env, napi_callback_info info)
555 {
556     size_t argc = 3;
557     napi_value argv[3] = {nullptr};
558     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
559     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
560     char *result;
561     uint32_t resId = 0;
562     napi_get_value_uint32(env, argv[1], &resId);
563     uint32_t num = 0;
564     int second = 2;
565     napi_get_value_uint32(env, argv[second], &num);
566     ResourceManager_ErrorCode code = OH_ResourceManager_GetPluralString(mNativeResMgr, resId, num, &result);
567 
568     bool flag = (code == 0 && strcmp(result, "1 apples") == 0);
569     napi_value value = nullptr;
570     napi_get_boolean(env, flag, &value);
571     return value;
572 }
573 
GetColorByName(napi_env env,napi_callback_info info)574 static napi_value GetColorByName(napi_env env, napi_callback_info info)
575 {
576     size_t argc = 2;
577     napi_value argv[2] = {nullptr};
578     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
579     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
580     uint32_t result;
581     const char *name = "start_window_background_jjq";
582     OH_ResourceManager_GetColorByName(mNativeResMgr, name, &result);
583 
584     napi_value jsValue = nullptr;
585     napi_create_uint32(env, result, &jsValue);
586     return jsValue;
587 }
588 
GetColor(napi_env env,napi_callback_info info)589 static napi_value GetColor(napi_env env, napi_callback_info info)
590 {
591     size_t argc = 2;
592     napi_value argv[2] = {nullptr};
593     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
594     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
595     uint32_t result;
596     uint32_t resId = 0;
597     napi_get_value_uint32(env, argv[1], &resId);
598     OH_ResourceManager_GetColor(mNativeResMgr, resId, &result);
599 
600     napi_value jsValue = nullptr;
601     napi_create_uint32(env, result, &jsValue);
602     return jsValue;
603 }
604 
GetIntByName(napi_env env,napi_callback_info info)605 static napi_value GetIntByName(napi_env env, napi_callback_info info)
606 {
607     size_t argc = 2;
608     napi_value argv[2] = {nullptr};
609     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
610     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
611     int result;
612     const char *name = "integer_1";
613     ResourceManager_ErrorCode code = OH_ResourceManager_GetIntByName(mNativeResMgr, name, &result);
614 
615     bool flag = (code == 0 && result == 100);
616     napi_value value = nullptr;
617     napi_get_boolean(env, flag, &value);
618     return value;
619 }
620 
GetInt(napi_env env,napi_callback_info info)621 static napi_value GetInt(napi_env env, napi_callback_info info)
622 {
623     size_t argc = 2;
624     napi_value argv[2] = {nullptr};
625     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
626     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
627     int result;
628     uint32_t resId = 0;
629     napi_get_value_uint32(env, argv[1], &resId);
630     ResourceManager_ErrorCode code = OH_ResourceManager_GetInt(mNativeResMgr, resId, &result);
631 
632     bool flag = (code == 0 && result == 100);
633     napi_value value = nullptr;
634     napi_get_boolean(env, flag, &value);
635     return value;
636 }
637 
GetFloatByName(napi_env env,napi_callback_info info)638 static napi_value GetFloatByName(napi_env env, napi_callback_info info)
639 {
640     size_t argc = 2;
641     napi_value argv[2] = {nullptr};
642     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
643     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
644     float result;
645     const char *name = "float_1";
646     ResourceManager_ErrorCode code = OH_ResourceManager_GetFloatByName(mNativeResMgr, name, &result);
647 
648     bool flag = (code == 0 && (fabs(result - 30.6) >= 1e-9));
649     napi_value value = nullptr;
650     napi_get_boolean(env, flag, &value);
651     return value;
652 }
653 
GetFloat(napi_env env,napi_callback_info info)654 static napi_value GetFloat(napi_env env, napi_callback_info info)
655 {
656     size_t argc = 2;
657     napi_value argv[2] = {nullptr};
658     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
659     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
660     float result;
661     uint32_t resId = 0;
662     napi_get_value_uint32(env, argv[1], &resId);
663     ResourceManager_ErrorCode code = OH_ResourceManager_GetFloat(mNativeResMgr, resId, &result);
664 
665     bool flag = (code == 0 && (fabs(result - 30.6) >= 1e-9));
666     napi_value value = nullptr;
667     napi_get_boolean(env, flag, &value);
668     return value;
669 }
670 
GetLocales(napi_env env,napi_callback_info info)671 static napi_value GetLocales(napi_env env, napi_callback_info info)
672 {
673     size_t argc = 3;
674     napi_value argv[3] = {nullptr};
675     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
676     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
677 
678     char **resultValue;
679     uint32_t resultLen;
680     bool includeSystem = false;
681     OH_ResourceManager_GetLocales(mNativeResMgr, &resultValue, &resultLen, includeSystem);
682 
683     std::vector<std::string> tempArray;
684     for (uint32_t i = 0; i < resultLen; i++) {
685         tempArray.push_back(resultValue[i]);
686     }
687     napi_value jsStringArray;
688     napi_create_array(env, &jsStringArray);
689     for (size_t i = 0; i < tempArray.size(); i++) {
690         napi_value jsString;
691         napi_create_string_utf8(env, tempArray[i].c_str(), NAPI_AUTO_LENGTH, &jsString);
692         napi_set_element(env, jsStringArray, i, jsString);
693     }
694     return jsStringArray;
695 }
696 
GetConfiguration(napi_env env,napi_callback_info info)697 static napi_value GetConfiguration(napi_env env, napi_callback_info info)
698 {
699     size_t argc = 1;
700     napi_value argv[1] = {nullptr};
701     ResourceManager_Configuration config;
702     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
703     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
704     ResourceManager_ErrorCode code = OH_ResourceManager_GetConfiguration(mNativeResMgr, &config);
705 
706     bool flag = (code == 0 && config.direction == 0 && config.deviceType == 0 && config.screenDensity == 3 &&
707     config.colorMode == 1 && config.mcc == 0 && config.mnc == 0 && strcmp(config.locale, "zh_Hans_CN") == 0);
708     napi_value value = nullptr;
709     napi_get_boolean(env, flag, &value);
710     return value;
711 }
712 
GetStringArray(napi_env env,napi_callback_info info)713 static napi_value GetStringArray(napi_env env, napi_callback_info info)
714 {
715     size_t argc = 2;
716     napi_value argv[2] = {nullptr};
717     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
718     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
719     char **resultValue;
720     uint32_t resultLen;
721     uint32_t resId = 0;
722     napi_get_value_uint32(env, argv[1], &resId);
723     OH_ResourceManager_GetStringArray(mNativeResMgr, resId, &resultValue, &resultLen);
724 
725     std::vector<std::string> tempArray;
726     for (uint32_t i = 0; i < resultLen; i++) {
727         tempArray.push_back(resultValue[i]);
728     }
729     napi_value jsStringArray;
730     napi_create_array(env, &jsStringArray);
731     for (size_t i = 0; i < tempArray.size(); i++) {
732         napi_value jsString;
733         napi_create_string_utf8(env, tempArray[i].c_str(), NAPI_AUTO_LENGTH, &jsString);
734         napi_set_element(env, jsStringArray, i, jsString);
735     }
736     return jsStringArray;
737 }
738 
GetStringArrayByName(napi_env env,napi_callback_info info)739 static napi_value GetStringArrayByName(napi_env env, napi_callback_info info)
740 {
741     size_t argc = 2;
742     napi_value argv[2] = {nullptr};
743     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
744     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
745     char **resultValue;
746     uint32_t resultLen;
747     const char *name = "size";
748     OH_ResourceManager_GetStringArrayByName(mNativeResMgr, name, &resultValue, &resultLen);
749 
750     std::vector<std::string> tempArray;
751     for (uint32_t i = 0; i < resultLen; i++) {
752         tempArray.push_back(resultValue[i]);
753     }
754     napi_value jsStringArray;
755     napi_create_array(env, &jsStringArray);
756     for (size_t i = 0; i < tempArray.size(); i++) {
757         napi_value jsString;
758         napi_create_string_utf8(env, tempArray[i].c_str(), NAPI_AUTO_LENGTH, &jsString);
759         napi_set_element(env, jsStringArray, i, jsString);
760     }
761     return jsStringArray;
762 }
763 
ReleaseStringArray(napi_env env,napi_callback_info info)764 static napi_value ReleaseStringArray(napi_env env, napi_callback_info info)
765 {
766     size_t argc = 2;
767     napi_value argv[2] = {nullptr};
768     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
769     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
770     char **resultValue;
771     char **resultValueTemp = nullptr;
772     uint32_t resultLen;
773     const char *name = "size";
774     ResourceManager_ErrorCode code;
775     OH_ResourceManager_GetStringArrayByName(mNativeResMgr, name, &resultValue, &resultLen);
776     resultValueTemp = resultValue;
777     code = OH_ResourceManager_ReleaseStringArray(&resultValue, resultLen);
778 
779     bool flag = (code == 0 && resultValueTemp != nullptr && resultValue == nullptr);
780     napi_value value = nullptr;
781     napi_get_boolean(env, flag, &value);
782     return value;
783 }
784 
ReleaseConfiguration(napi_env env,napi_callback_info info)785 static napi_value ReleaseConfiguration(napi_env env, napi_callback_info info)
786 {
787     size_t argc = 1;
788     napi_value argv[1] = {nullptr};
789     ResourceManager_Configuration config;
790     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
791     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
792     ResourceManager_ErrorCode code;
793     char *temp = static_cast<char *>(malloc(10 * sizeof(char)));
794     OH_ResourceManager_GetConfiguration(mNativeResMgr, &config);
795     code = OH_ResourceManager_ReleaseConfiguration(&config);
796 
797     bool flag = (code == 0 && strcmp(temp, "zh_Hans_CN") == 0 && config.locale == nullptr);
798     napi_value value = nullptr;
799     napi_get_boolean(env, flag, &value);
800     return value;
801 }
802 
GetStringByName(napi_env env,napi_callback_info info)803 static napi_value GetStringByName(napi_env env, napi_callback_info info)
804 {
805     size_t argc = 2;
806     napi_value argv[2] = {nullptr};
807     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
808     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
809     char *result;
810     ResourceManager_ErrorCode code = OH_ResourceManager_GetStringByName(mNativeResMgr, "entry_MainAbility", &result);
811 
812     bool flag = (code == 0 && strcmp(result, "entry_MainAbility") == 0);
813     napi_value value = nullptr;
814     napi_get_boolean(env, flag, &value);
815     return value;
816 }
817 
GetString(napi_env env,napi_callback_info info)818 static napi_value GetString(napi_env env, napi_callback_info info)
819 {
820     size_t argc = 2;
821     napi_value argv[2] = {nullptr};
822     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
823     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
824     char *result;
825     uint32_t resId = 0;
826     napi_get_value_uint32(env, argv[1], &resId);
827     ResourceManager_ErrorCode code = OH_ResourceManager_GetString(mNativeResMgr, resId, &result);
828 
829     bool flag = (code == 0 && strcmp(result, "entry_MainAbility") == 0);
830     napi_value value = nullptr;
831     napi_get_boolean(env, flag, &value);
832     return value;
833 }
834 
GetRawFileDescriptorData(napi_env env,napi_callback_info info)835 static napi_value GetRawFileDescriptorData(napi_env env, napi_callback_info info)
836 {
837     size_t argc = 2;
838     napi_value argv[2] = {nullptr};
839     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
840     napi_valuetype valueType;
841     napi_typeof(env, argv[0], &valueType);
842     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
843     size_t strSize;
844     char strBuf[256];
845 
846     napi_get_value_string_utf8(env, argv[1], strBuf, sizeof(strBuf), &strSize);
847     std::string filename(strBuf, strSize);
848     RawFile *rawFile = OH_ResourceManager_OpenRawFile(mNativeResMgr, filename.c_str());
849     RawFileDescriptor *descriptor = new RawFileDescriptor();
850     OH_ResourceManager_GetRawFileDescriptorData(rawFile, descriptor);
851     OH_ResourceManager_ReleaseRawFileDescriptorData(descriptor);
852     OH_ResourceManager_GetRawFileDescriptorData(rawFile, descriptor);
853     OH_ResourceManager_CloseRawFile(rawFile);
854     OH_ResourceManager_ReleaseNativeResourceManager(mNativeResMgr);
855     return createJsFileDescriptor(env, descriptor);
856 }
857 
GetLocalesData(napi_env env,napi_callback_info info)858 static napi_value GetLocalesData(napi_env env, napi_callback_info info)
859 {
860     size_t argc = 1;
861     napi_value argv[1] = {nullptr};
862     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
863     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
864     char **resultValue;
865     uint32_t resultLen;
866     OH_ResourceManager_GetLocalesData(mNativeResMgr, &resultValue, &resultLen, false);
867     char **resultValue1;
868     uint32_t resultLen1;
869     OH_ResourceManager_GetLocalesData(mNativeResMgr, &resultValue1, &resultLen1, false);
870     std::vector<std::string> tempArray;
871     for (uint32_t i = 0; i < resultLen; i++) {
872         tempArray.push_back(resultValue[i]);
873     }
874     napi_value jsStringArray;
875     napi_create_array(env, &jsStringArray);
876     for (size_t i = 0; i < tempArray.size(); i++) {
877         napi_value jsString;
878         napi_create_string_utf8(env, tempArray[i].c_str(), NAPI_AUTO_LENGTH, &jsString);
879         napi_set_element(env, jsStringArray, i, jsString);
880     }
881     return jsStringArray;
882 }
883 
GetMediaBase64DataByName(napi_env env,napi_callback_info info)884 static napi_value GetMediaBase64DataByName(napi_env env, napi_callback_info info)
885 {
886     size_t argc = 2;
887     napi_value argv[2] = {nullptr};
888     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
889     size_t strSize;
890     char strBuf[256];
891     napi_get_value_string_utf8(env, argv[1], strBuf, sizeof(strBuf), &strSize);
892     char *result = nullptr;
893     uint64_t len = 0;
894     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
895     OH_ResourceManager_GetMediaBase64DataByName(mNativeResMgr, strBuf, &result, &len, 0);
896     return CreateJsString(env, result);
897 }
898 
GetMediaBase64Data(napi_env env,napi_callback_info info)899 static napi_value GetMediaBase64Data(napi_env env, napi_callback_info info)
900 {
901     size_t argc = 2;
902     napi_value argv[2] = {nullptr};
903     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
904     uint32_t id = 0x000000;
905     napi_get_value_uint32(env, argv[1], &id);
906 
907     std::stringstream ss;
908     ss << std::hex << id;
909     uint32_t hexValue;
910     ss >> hexValue;
911 
912     char *result = nullptr;
913     uint64_t len = 0;
914     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
915     OH_ResourceManager_GetMediaBase64Data(mNativeResMgr, hexValue, &result, &len, 0);
916     return CreateJsString(env, result);
917 }
918 
GetMediaData(napi_env env,napi_callback_info info)919 static napi_value GetMediaData(napi_env env, napi_callback_info info)
920 {
921     size_t argc = 2;
922     napi_value argv[2] = {nullptr};
923     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
924     uint32_t id = 0;
925     napi_get_value_uint32(env, argv[1], &id);
926 
927     uint8_t *result = nullptr;
928     uint64_t len = 0;
929     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
930     OH_ResourceManager_GetMediaData(mNativeResMgr, id, &result, &len, 0);
931 
932     bool flag = (result != nullptr && len != 0);
933     napi_value value = nullptr;
934     napi_get_boolean(env, flag, &value);
935     return value;
936 }
937 
GetMediaDataByName(napi_env env,napi_callback_info info)938 static napi_value GetMediaDataByName(napi_env env, napi_callback_info info)
939 {
940     size_t argc = 2;
941     napi_value argv[2] = {nullptr};
942     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
943     size_t strSize;
944     char strBuf[256];
945     napi_get_value_string_utf8(env, argv[1], strBuf, sizeof(strBuf), &strSize);
946 
947     uint8_t *result = nullptr;
948     uint64_t len = 0;
949     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
950     OH_ResourceManager_GetMediaDataByName(mNativeResMgr, strBuf, &result, &len, 0);
951 
952     bool flag = (result != nullptr && len != 0);
953     napi_value value = nullptr;
954     napi_get_boolean(env, flag, &value);
955     return value;
956 }
957 
GetDrawableDescriptorData(napi_env env,napi_callback_info info)958 static napi_value GetDrawableDescriptorData(napi_env env, napi_callback_info info)
959 {
960     size_t argc = 2;
961     napi_value argv[2] = {nullptr};
962     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
963     ArkUI_DrawableDescriptor *drawable = NULL;
964     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
965 
966     uint32_t id = 0x000000;
967     napi_get_value_uint32(env, argv[1], &id);
968 
969     std::stringstream ss;
970     ss << std::hex << id;
971     uint32_t hexValue;
972     ss >> hexValue;
973 
974     OH_ResourceManager_GetDrawableDescriptorData(mNativeResMgr, id, &drawable, 0, 0);
975     bool flag = (drawable != NULL);
976     napi_value value = nullptr;
977     napi_get_boolean(env, flag, &value);
978     return value;
979 }
980 
GetDrawableDescriptorDataByName(napi_env env,napi_callback_info info)981 static napi_value GetDrawableDescriptorDataByName(napi_env env, napi_callback_info info)
982 {
983     size_t argc = 2;
984     napi_value argv[2] = {nullptr};
985     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
986     size_t strSize;
987     char strBuf[256];
988     napi_get_value_string_utf8(env, argv[1], strBuf, sizeof(strBuf), &strSize);
989     ArkUI_DrawableDescriptor *drawable = NULL;
990     NativeResourceManager *mNativeResMgr = OH_ResourceManager_InitNativeResourceManager(env, argv[0]);
991 
992     OH_ResourceManager_GetDrawableDescriptorDataByName(mNativeResMgr, strBuf, &drawable, 0, 0);
993     bool flag = (drawable != NULL);
994     napi_value value = nullptr;
995     napi_get_boolean(env, flag, &value);
996     return value;
997 }
998 
AddResource(napi_env env,napi_callback_info info)999 static napi_value AddResource(napi_env env, napi_callback_info info)
1000 {
1001     size_t argc = 2;
1002     napi_value argv[2] = {nullptr};
1003     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
1004     ResourceManager_ErrorCode code = OH_ResourceManager_AddResource(nullptr, "");
1005     bool flag = (code == 401);
1006     napi_value value = nullptr;
1007     napi_get_boolean(env, flag, &value);
1008     return value;
1009 }
1010 
RemoveResource(napi_env env,napi_callback_info info)1011 static napi_value RemoveResource(napi_env env, napi_callback_info info)
1012 {
1013     size_t argc = 2;
1014     napi_value argv[2] = {nullptr};
1015     napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
1016     ResourceManager_ErrorCode code = OH_ResourceManager_RemoveResource(nullptr, "");
1017     bool flag = (code == 401);
1018     napi_value value = nullptr;
1019     napi_get_boolean(env, flag, &value);
1020     return value;
1021 }
1022 
1023 EXTERN_C_START
Init(napi_env env,napi_value exports)1024 static napi_value Init(napi_env env, napi_value exports)
1025 {
1026     napi_property_descriptor desc[] = {
1027         {"GetFileList", nullptr, GetFileList, nullptr, nullptr, nullptr, napi_default, nullptr},
1028         {"GetRawFileContent", nullptr, GetRawFileContent, nullptr, nullptr, nullptr, napi_default, nullptr},
1029         {"GetRawFileDescriptor", nullptr, GetRawFileDescriptor, nullptr, nullptr, nullptr, napi_default, nullptr},
1030         {"GetRawFileContent64", nullptr, GetRawFileContent64, nullptr, nullptr, nullptr, napi_default, nullptr},
1031         {"GetRawFileDescriptor64", nullptr, GetRawFileDescriptor64, nullptr, nullptr, nullptr, napi_default, nullptr},
1032         {"IsRawDir", nullptr, IsRawDir, nullptr, nullptr, nullptr, napi_default, nullptr},
1033         {"GetDrawableDescriptor", nullptr, GetDrawableDescriptor, nullptr, nullptr, nullptr, napi_default, nullptr},
1034         {"GetDrawableDescriptorByName", nullptr, GetDrawableDescriptorByName, nullptr,
1035             nullptr, nullptr, napi_default, nullptr},
1036         {"GetMediaBase64", nullptr, GetMediaBase64, nullptr, nullptr, nullptr, napi_default, nullptr},
1037         {"GetMediaBase64ByName", nullptr, GetMediaBase64ByName, nullptr, nullptr, nullptr, napi_default, nullptr},
1038         {"GetMedia", nullptr, GetMedia, nullptr, nullptr, nullptr, napi_default, nullptr},
1039         {"GetMediaByName", nullptr, GetMediaByName, nullptr, nullptr, nullptr, napi_default, nullptr},
1040         {"GetSymbolByName", nullptr, GetSymbolByName, nullptr, nullptr, nullptr, napi_default, nullptr},
1041         {"GetSymbol", nullptr, GetSymbol, nullptr, nullptr, nullptr, napi_default, nullptr},
1042         {"GetBoolByName", nullptr, GetBoolByName, nullptr, nullptr, nullptr, napi_default, nullptr},
1043         {"GetBool", nullptr, GetBool, nullptr, nullptr, nullptr, napi_default, nullptr},
1044         {"GetPluralStringByName", nullptr, GetPluralStringByName, nullptr, nullptr, nullptr, napi_default, nullptr},
1045         {"GetPluralString", nullptr, GetPluralString, nullptr, nullptr, nullptr, napi_default, nullptr},
1046         {"GetColorByName", nullptr, GetColorByName, nullptr, nullptr, nullptr, napi_default, nullptr},
1047         {"GetColor", nullptr, GetColor, nullptr, nullptr, nullptr, napi_default, nullptr},
1048         {"GetIntByName", nullptr, GetIntByName, nullptr, nullptr, nullptr, napi_default, nullptr},
1049         {"GetInt", nullptr, GetInt, nullptr, nullptr, nullptr, napi_default, nullptr},
1050         {"GetFloatByName", nullptr, GetFloatByName, nullptr, nullptr, nullptr, napi_default, nullptr},
1051         {"GetFloat", nullptr, GetFloat, nullptr, nullptr, nullptr, napi_default, nullptr},
1052         {"GetLocales", nullptr, GetLocales, nullptr, nullptr, nullptr, napi_default, nullptr},
1053         {"GetConfiguration", nullptr, GetConfiguration, nullptr, nullptr, nullptr, napi_default, nullptr},
1054         {"GetStringArray", nullptr, GetStringArray, nullptr, nullptr, nullptr, napi_default, nullptr},
1055         {"GetStringArrayByName", nullptr, GetStringArrayByName, nullptr, nullptr, nullptr, napi_default, nullptr},
1056         {"ReleaseStringArray", nullptr, ReleaseStringArray, nullptr, nullptr, nullptr, napi_default, nullptr},
1057         {"ReleaseConfiguration", nullptr, ReleaseConfiguration, nullptr, nullptr, nullptr, napi_default, nullptr},
1058         {"GetStringByName", nullptr, GetStringByName, nullptr, nullptr, nullptr, napi_default, nullptr},
1059         {"GetString", nullptr, GetString, nullptr, nullptr, nullptr, napi_default, nullptr},
1060         {"GetRawFileDescriptorData", nullptr, GetRawFileDescriptorData, nullptr, nullptr,
1061             nullptr, napi_default, nullptr},
1062         {"GetLocalesData", nullptr, GetLocalesData, nullptr, nullptr, nullptr, napi_default, nullptr},
1063         {"GetMediaBase64DataByName", nullptr, GetMediaBase64DataByName, nullptr, nullptr,
1064             nullptr, napi_default, nullptr},
1065         {"GetMediaBase64Data", nullptr, GetMediaBase64Data, nullptr, nullptr, nullptr, napi_default, nullptr},
1066         {"GetMediaData", nullptr, GetMediaData, nullptr, nullptr, nullptr, napi_default, nullptr},
1067         {"GetMediaDataByName", nullptr, GetMediaDataByName, nullptr, nullptr, nullptr, napi_default, nullptr},
1068         {"GetDrawableDescriptorData", nullptr, GetDrawableDescriptorData, nullptr,
1069             nullptr, nullptr, napi_default, nullptr},
1070         {"GetDrawableDescriptorDataByName", nullptr, GetDrawableDescriptorDataByName, nullptr,
1071             nullptr, nullptr, napi_default, nullptr},
1072         {"AddResource", nullptr, AddResource, nullptr, nullptr, nullptr, napi_default, nullptr},
1073         {"RemoveResource", nullptr, RemoveResource, nullptr, nullptr, nullptr, napi_default, nullptr},
1074     };
1075 
1076     napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
1077     return exports;
1078 }
1079 EXTERN_C_END
1080 
1081 static napi_module demoModule = {
1082     .nm_version = 1,
1083     .nm_flags = 0,
1084     .nm_filename = nullptr,
1085     .nm_register_func = Init,
1086     .nm_modname = "resmgrndk",
1087     .nm_priv = ((void*)0),
1088     .reserved = { 0 },
1089 };
1090 
RegisterEntryModule(void)1091 extern "C" __attribute__((constructor)) void RegisterEntryModule(void)
1092 {
1093     napi_module_register(&demoModule);
1094 }