1 /*
2  * Copyright (c) 2021-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 "resource_manager_addon.h"
17 #include "resource_manager_napi_utils.h"
18 #include "hilog/log_cpp.h"
19 
20 namespace OHOS {
21 namespace Global {
22 namespace Resource {
23 static thread_local napi_ref g_constructor = nullptr;
24 static std::shared_ptr<ResourceManager> sysResMgr = nullptr;
25 static std::mutex sysMgrMutex;
26 
Create(napi_env env,const std::string & bundleName,const std::shared_ptr<ResourceManager> & resMgr,std::shared_ptr<AbilityRuntime::Context> context)27 napi_value ResourceManagerAddon::Create(
28     napi_env env, const std::string& bundleName, const std::shared_ptr<ResourceManager>& resMgr,
29     std::shared_ptr<AbilityRuntime::Context> context)
30 {
31     std::shared_ptr<ResourceManagerAddon> addon = std::make_shared<ResourceManagerAddon>(bundleName, resMgr, context);
32     return WrapResourceManager(env, addon);
33 }
34 
CreateOverrideAddon(napi_env env,const std::shared_ptr<ResourceManager> & resMgr)35 napi_value ResourceManagerAddon::CreateOverrideAddon(napi_env env, const std::shared_ptr<ResourceManager>& resMgr)
36 {
37     std::shared_ptr<ResourceManagerAddon> addon = std::make_shared<ResourceManagerAddon>(bundleName_, resMgr, context_);
38     addon->isOverrideAddon_ = true;
39     return WrapResourceManager(env, addon);
40 }
41 
WrapResourceManager(napi_env env,std::shared_ptr<ResourceManagerAddon> & addon)42 napi_value ResourceManagerAddon::WrapResourceManager(napi_env env, std::shared_ptr<ResourceManagerAddon> &addon)
43 {
44     if (!Init(env)) {
45         RESMGR_HILOGE(RESMGR_JS_TAG, "Failed to init resource manager addon");
46         return nullptr;
47     }
48 
49     napi_value constructor = nullptr;
50     if (g_constructor == nullptr) {
51         RESMGR_HILOGE(RESMGR_JS_TAG, "Failed to WrapResourceManager in Create, g_constructor is null");
52         return nullptr;
53     }
54     napi_status status = napi_get_reference_value(env, g_constructor, &constructor);
55     if (status != napi_ok || constructor == nullptr) {
56         RESMGR_HILOGE(RESMGR_JS_TAG, "Failed to get reference value in Create, status = %{public}d", status);
57         return nullptr;
58     }
59     napi_value result = nullptr;
60     status = napi_new_instance(env, constructor, 0, nullptr, &result);
61     if (status != napi_ok) {
62         RESMGR_HILOGE(RESMGR_JS_TAG, "Failed to new instance in Create, status = %{public}d", status);
63         return nullptr;
64     }
65 
66     auto addonPtr = std::make_unique<std::shared_ptr<ResourceManagerAddon>>(addon);
67     status = napi_wrap(env, result, reinterpret_cast<void *>(addonPtr.get()), ResourceManagerAddon::Destructor,
68         nullptr, nullptr);
69     if (status != napi_ok) {
70         RESMGR_HILOGE(RESMGR_JS_TAG, "Failed to wrape in Create");
71         return nullptr;
72     }
73     addonPtr.release();
74     return result;
75 }
76 
GetSystemResMgr(napi_env env)77 napi_value ResourceManagerAddon::GetSystemResMgr(napi_env env)
78 {
79     if (sysResMgr == nullptr) {
80         std::lock_guard<std::mutex> lock(sysMgrMutex);
81         if (sysResMgr == nullptr) {
82             std::shared_ptr<Global::Resource::ResourceManager>
83                 systemResManager(Global::Resource::GetSystemResourceManager());
84             if (systemResManager == nullptr) {
85                 ResourceManagerNapiUtils::NapiThrow(env, ERROR_CODE_SYSTEM_RES_MANAGER_GET_FAILED);
86                 return nullptr;
87             }
88             sysResMgr = systemResManager;
89         }
90     }
91     std::shared_ptr<ResourceManagerAddon> addon = std::make_shared<ResourceManagerAddon>(sysResMgr, true);
92     return WrapResourceManager(env, addon);
93 }
94 
ResourceManagerAddon(const std::string & bundleName,const std::shared_ptr<ResourceManager> & resMgr,const std::shared_ptr<AbilityRuntime::Context> & context,bool isSystem)95 ResourceManagerAddon::ResourceManagerAddon(
96     const std::string& bundleName, const std::shared_ptr<ResourceManager>& resMgr,
97     const std::shared_ptr<AbilityRuntime::Context>& context, bool isSystem)
98     : bundleName_(bundleName), resMgr_(resMgr), context_(context), isSystem_(isSystem)
99 {
100     RESMGR_HILOGD(RESMGR_JS_TAG, "create ResourceManagerAddon %{public}s", bundleName_.c_str());
101     napiContext_ = std::make_shared<ResourceManagerNapiContext>();
102 }
103 
ResourceManagerAddon(const std::shared_ptr<ResourceManager> & resMgr,bool isSystem)104 ResourceManagerAddon::ResourceManagerAddon(const std::shared_ptr<ResourceManager>& resMgr, bool isSystem)
105     : resMgr_(resMgr), isSystem_(isSystem)
106 {
107     RESMGR_HILOGD(RESMGR_JS_TAG, "create ResourceManagerAddon.");
108     napiContext_ = std::make_shared<ResourceManagerNapiContext>();
109 }
110 
~ResourceManagerAddon()111 ResourceManagerAddon::~ResourceManagerAddon()
112 {
113     RESMGR_HILOGD(RESMGR_JS_TAG, "~ResourceManagerAddon %{public}s", bundleName_.c_str());
114 }
115 
Destructor(napi_env env,void * nativeObject,void * hint)116 void ResourceManagerAddon::Destructor(napi_env env, void *nativeObject, void *hint)
117 {
118     std::unique_ptr<std::shared_ptr<ResourceManagerAddon>> addonPtr;
119     addonPtr.reset(static_cast<std::shared_ptr<ResourceManagerAddon>*>(nativeObject));
120 }
121 
122 napi_property_descriptor ResourceManagerAddon::properties[] = {
123     DECLARE_NAPI_FUNCTION("getString", GetString),
124     DECLARE_NAPI_FUNCTION("getStringByName", GetStringByName),
125     DECLARE_NAPI_FUNCTION("getStringArray", GetStringArray),
126     DECLARE_NAPI_FUNCTION("getStringArrayByName", GetStringArrayByName),
127     DECLARE_NAPI_FUNCTION("getMedia", GetMedia),
128     DECLARE_NAPI_FUNCTION("getMediaByName", GetMediaByName),
129     DECLARE_NAPI_FUNCTION("getMediaBase64", GetMediaBase64),
130     DECLARE_NAPI_FUNCTION("getMediaBase64ByName", GetMediaBase64ByName),
131     DECLARE_NAPI_FUNCTION("getConfiguration", GetConfiguration),
132     DECLARE_NAPI_FUNCTION("getDeviceCapability", GetDeviceCapability),
133     DECLARE_NAPI_FUNCTION("getPluralString", GetPluralString),
134     DECLARE_NAPI_FUNCTION("getPluralStringByName", GetPluralStringByName),
135     DECLARE_NAPI_FUNCTION("getRawFile", GetRawFile),
136     DECLARE_NAPI_FUNCTION("getRawFileDescriptor", GetRawFileDescriptor),
137     DECLARE_NAPI_FUNCTION("closeRawFileDescriptor", CloseRawFileDescriptor),
138     DECLARE_NAPI_FUNCTION("getStringSync", GetStringSync),
139     DECLARE_NAPI_FUNCTION("getStringByNameSync", GetStringByNameSync),
140     DECLARE_NAPI_FUNCTION("getBoolean", GetBoolean),
141     DECLARE_NAPI_FUNCTION("getNumber", GetNumber),
142     DECLARE_NAPI_FUNCTION("getBooleanByName", GetBooleanByName),
143     DECLARE_NAPI_FUNCTION("getNumberByName", GetNumberByName),
144     DECLARE_NAPI_FUNCTION("release", Release),
145     DECLARE_NAPI_FUNCTION("getStringValue", GetStringValue),
146     DECLARE_NAPI_FUNCTION("getStringArrayValue", GetStringArrayValue),
147     DECLARE_NAPI_FUNCTION("getPluralStringValue", GetPluralStringValue),
148     DECLARE_NAPI_FUNCTION("getMediaContent", GetMediaContent),
149     DECLARE_NAPI_FUNCTION("getMediaContentBase64", GetMediaContentBase64),
150     DECLARE_NAPI_FUNCTION("getRawFileContent", GetRawFileContent),
151     DECLARE_NAPI_FUNCTION("getRawFd", GetRawFd),
152     DECLARE_NAPI_FUNCTION("closeRawFd", CloseRawFd),
153     DECLARE_NAPI_FUNCTION("getDrawableDescriptor", GetDrawableDescriptor),
154     DECLARE_NAPI_FUNCTION("getDrawableDescriptorByName", GetDrawableDescriptorByName),
155     DECLARE_NAPI_FUNCTION("getRawFileList", GetRawFileList),
156     DECLARE_NAPI_FUNCTION("getColor", GetColor),
157     DECLARE_NAPI_FUNCTION("getColorByName", GetColorByName),
158     DECLARE_NAPI_FUNCTION("getColorSync", GetColorSync),
159     DECLARE_NAPI_FUNCTION("getColorByNameSync", GetColorByNameSync),
160     DECLARE_NAPI_FUNCTION("addResource", AddResource),
161     DECLARE_NAPI_FUNCTION("removeResource", RemoveResource),
162     DECLARE_NAPI_FUNCTION("getMediaContentBase64Sync", GetMediaContentBase64Sync),
163     DECLARE_NAPI_FUNCTION("getMediaContentSync", GetMediaContentSync),
164     DECLARE_NAPI_FUNCTION("getPluralStringValueSync", GetPluralStringValueSync),
165     DECLARE_NAPI_FUNCTION("getStringArrayValueSync", GetStringArrayValueSync),
166     DECLARE_NAPI_FUNCTION("getRawFileContentSync", GetRawFileContentSync),
167     DECLARE_NAPI_FUNCTION("getRawFdSync", GetRawFdSync),
168     DECLARE_NAPI_FUNCTION("closeRawFdSync", CloseRawFdSync),
169     DECLARE_NAPI_FUNCTION("getRawFileListSync", GetRawFileListSync),
170     DECLARE_NAPI_FUNCTION("getPluralStringByNameSync", GetPluralStringByNameSync),
171     DECLARE_NAPI_FUNCTION("getMediaBase64ByNameSync", GetMediaBase64ByNameSync),
172     DECLARE_NAPI_FUNCTION("getMediaByNameSync", GetMediaByNameSync),
173     DECLARE_NAPI_FUNCTION("getStringArrayByNameSync", GetStringArrayByNameSync),
174     DECLARE_NAPI_FUNCTION("getConfigurationSync", GetConfigurationSync),
175     DECLARE_NAPI_FUNCTION("getDeviceCapabilitySync", GetDeviceCapabilitySync),
176     DECLARE_NAPI_FUNCTION("getLocales", GetLocales),
177     DECLARE_NAPI_FUNCTION("getSymbol", GetSymbol),
178     DECLARE_NAPI_FUNCTION("getSymbolByName", GetSymbolByName),
179     DECLARE_NAPI_FUNCTION("isRawDir", IsRawDir),
180     DECLARE_NAPI_FUNCTION("getOverrideResourceManager", GetOverrideResourceManager),
181     DECLARE_NAPI_FUNCTION("getOverrideConfiguration", GetOverrideConfiguration),
182     DECLARE_NAPI_FUNCTION("updateOverrideConfiguration", UpdateOverrideConfiguration)
183 };
184 
Init(napi_env env)185 bool ResourceManagerAddon::Init(napi_env env)
186 {
187     if (g_constructor != nullptr) {
188         return true;
189     }
190 
191     napi_value constructor;
192     napi_status status = napi_define_class(env, "ResourceManager", NAPI_AUTO_LENGTH, New, nullptr,
193         sizeof(properties) / sizeof(napi_property_descriptor), properties, &constructor);
194     if (status != napi_ok) {
195         RESMGR_HILOGE(RESMGR_JS_TAG, "Failed to define class at Init");
196         return false;
197     }
198 
199     status = napi_create_reference(env, constructor, 1, &g_constructor);
200     if (status != napi_ok) {
201         RESMGR_HILOGE(RESMGR_JS_TAG, "Failed to create reference at init");
202         return false;
203     }
204     napi_add_env_cleanup_hook(env, [](void *data) { g_constructor = nullptr; }, nullptr);
205     return true;
206 }
207 
New(napi_env env,napi_callback_info info)208 napi_value ResourceManagerAddon::New(napi_env env, napi_callback_info info)
209 {
210     GET_PARAMS(env, info, 1);
211 
212     napi_value target = nullptr;
213     napi_get_new_target(env, info, &target);
214     if (target != nullptr) {
215         return thisVar;
216     }
217 
218     return nullptr;
219 }
220 
Release(napi_env env,napi_callback_info info)221 napi_value ResourceManagerAddon::Release(napi_env env, napi_callback_info info)
222 {
223     napi_value undefined;
224     if (napi_get_undefined(env, &undefined) != napi_ok) {
225         return nullptr;
226     }
227     return undefined;
228 }
229 
AddonGetResource(napi_env env,napi_callback_info info,const std::string & name,FunctionType type)230 napi_value ResourceManagerAddon::AddonGetResource(napi_env env, napi_callback_info info, const std::string& name,
231     FunctionType type)
232 {
233     auto addon = ResMgrDataContext::GetResourceManagerAddon(env, info);
234     if (addon == nullptr) {
235         return nullptr;
236     }
237     return addon->napiContext_->ContextGetResource(env, info, name, type);
238 }
239 
240 /*====================================Here is the asynchronization function==================================*/
GetString(napi_env env,napi_callback_info info)241 napi_value ResourceManagerAddon::GetString(napi_env env, napi_callback_info info)
242 {
243     return AddonGetResource(env, info, "GetString", FunctionType::ASYNC);
244 }
245 
GetStringArray(napi_env env,napi_callback_info info)246 napi_value ResourceManagerAddon::GetStringArray(napi_env env, napi_callback_info info)
247 {
248     return AddonGetResource(env, info, "GetStringArray", FunctionType::ASYNC);
249 }
250 
GetMedia(napi_env env,napi_callback_info info)251 napi_value ResourceManagerAddon::GetMedia(napi_env env, napi_callback_info info)
252 {
253     return AddonGetResource(env, info, "GetMedia", FunctionType::ASYNC);
254 }
255 
GetMediaBase64(napi_env env,napi_callback_info info)256 napi_value ResourceManagerAddon::GetMediaBase64(napi_env env, napi_callback_info info)
257 {
258     return AddonGetResource(env, info, "GetMediaBase64", FunctionType::ASYNC);
259 }
260 
GetConfiguration(napi_env env,napi_callback_info info)261 napi_value ResourceManagerAddon::GetConfiguration(napi_env env, napi_callback_info info)
262 {
263     return AddonGetResource(env, info, "GetConfiguration", FunctionType::ASYNC);
264 }
265 
GetDeviceCapability(napi_env env,napi_callback_info info)266 napi_value ResourceManagerAddon::GetDeviceCapability(napi_env env, napi_callback_info info)
267 {
268     return AddonGetResource(env, info, "GetDeviceCapability", FunctionType::ASYNC);
269 }
270 
GetPluralString(napi_env env,napi_callback_info info)271 napi_value ResourceManagerAddon::GetPluralString(napi_env env, napi_callback_info info)
272 {
273     return AddonGetResource(env, info, "GetPluralString", FunctionType::ASYNC);
274 }
275 
GetRawFile(napi_env env,napi_callback_info info)276 napi_value ResourceManagerAddon::GetRawFile(napi_env env, napi_callback_info info)
277 {
278     return AddonGetResource(env, info, "GetRawFile", FunctionType::ASYNC);
279 }
280 
GetRawFileDescriptor(napi_env env,napi_callback_info info)281 napi_value ResourceManagerAddon::GetRawFileDescriptor(napi_env env, napi_callback_info info)
282 {
283     return AddonGetResource(env, info, "GetRawFileDescriptor", FunctionType::ASYNC);
284 }
285 
CloseRawFileDescriptor(napi_env env,napi_callback_info info)286 napi_value ResourceManagerAddon::CloseRawFileDescriptor(napi_env env, napi_callback_info info)
287 {
288     return AddonGetResource(env, info, "CloseRawFileDescriptor", FunctionType::ASYNC);
289 }
290 
GetPluralStringByName(napi_env env,napi_callback_info info)291 napi_value ResourceManagerAddon::GetPluralStringByName(napi_env env, napi_callback_info info)
292 {
293     return AddonGetResource(env, info, "GetPluralStringByName", FunctionType::ASYNC);
294 }
295 
GetMediaBase64ByName(napi_env env,napi_callback_info info)296 napi_value ResourceManagerAddon::GetMediaBase64ByName(napi_env env, napi_callback_info info)
297 {
298     return AddonGetResource(env, info, "GetMediaBase64ByName", FunctionType::ASYNC);
299 }
300 
GetMediaByName(napi_env env,napi_callback_info info)301 napi_value ResourceManagerAddon::GetMediaByName(napi_env env, napi_callback_info info)
302 {
303     return AddonGetResource(env, info, "GetMediaByName", FunctionType::ASYNC);
304 }
305 
GetStringArrayByName(napi_env env,napi_callback_info info)306 napi_value ResourceManagerAddon::GetStringArrayByName(napi_env env, napi_callback_info info)
307 {
308     return AddonGetResource(env, info, "GetStringArrayByName", FunctionType::ASYNC);
309 }
310 
GetStringByName(napi_env env,napi_callback_info info)311 napi_value ResourceManagerAddon::GetStringByName(napi_env env, napi_callback_info info)
312 {
313     return AddonGetResource(env, info, "GetStringByName", FunctionType::ASYNC);
314 }
315 
GetStringValue(napi_env env,napi_callback_info info)316 napi_value ResourceManagerAddon::GetStringValue(napi_env env, napi_callback_info info)
317 {
318     return AddonGetResource(env, info, "GetStringValue", FunctionType::ASYNC);
319 }
320 
GetStringArrayValue(napi_env env,napi_callback_info info)321 napi_value ResourceManagerAddon::GetStringArrayValue(napi_env env, napi_callback_info info)
322 {
323     return AddonGetResource(env, info, "GetStringArrayValue", FunctionType::ASYNC);
324 }
325 
GetMediaContent(napi_env env,napi_callback_info info)326 napi_value ResourceManagerAddon::GetMediaContent(napi_env env, napi_callback_info info)
327 {
328     return AddonGetResource(env, info, "GetMediaContent", FunctionType::ASYNC);
329 }
330 
GetMediaContentBase64(napi_env env,napi_callback_info info)331 napi_value ResourceManagerAddon::GetMediaContentBase64(napi_env env, napi_callback_info info)
332 {
333     return AddonGetResource(env, info, "GetMediaContentBase64", FunctionType::ASYNC);
334 }
335 
GetPluralStringValue(napi_env env,napi_callback_info info)336 napi_value ResourceManagerAddon::GetPluralStringValue(napi_env env, napi_callback_info info)
337 {
338     return AddonGetResource(env, info, "GetPluralStringValue", FunctionType::ASYNC);
339 }
340 
GetRawFileContent(napi_env env,napi_callback_info info)341 napi_value ResourceManagerAddon::GetRawFileContent(napi_env env, napi_callback_info info)
342 {
343     return AddonGetResource(env, info, "GetRawFileContent", FunctionType::ASYNC);
344 }
345 
GetRawFd(napi_env env,napi_callback_info info)346 napi_value ResourceManagerAddon::GetRawFd(napi_env env, napi_callback_info info)
347 {
348     return AddonGetResource(env, info, "GetRawFd", FunctionType::ASYNC);
349 }
350 
CloseRawFd(napi_env env,napi_callback_info info)351 napi_value ResourceManagerAddon::CloseRawFd(napi_env env, napi_callback_info info)
352 {
353     return AddonGetResource(env, info, "CloseRawFd", FunctionType::ASYNC);
354 }
355 
GetRawFileList(napi_env env,napi_callback_info info)356 napi_value ResourceManagerAddon::GetRawFileList(napi_env env, napi_callback_info info)
357 {
358     return AddonGetResource(env, info, "GetRawFileList", FunctionType::ASYNC);
359 }
360 
GetColor(napi_env env,napi_callback_info info)361 napi_value ResourceManagerAddon::GetColor(napi_env env, napi_callback_info info)
362 {
363     return AddonGetResource(env, info, "GetColor", FunctionType::ASYNC);
364 }
365 
GetColorByName(napi_env env,napi_callback_info info)366 napi_value ResourceManagerAddon::GetColorByName(napi_env env, napi_callback_info info)
367 {
368     return AddonGetResource(env, info, "GetColorByName", FunctionType::ASYNC);
369 }
370 
371 /*====================================Here is the synchronization function===================================*/
GetStringSync(napi_env env,napi_callback_info info)372 napi_value ResourceManagerAddon::GetStringSync(napi_env env, napi_callback_info info)
373 {
374     return AddonGetResource(env, info, "GetStringSync", FunctionType::SYNC);
375 }
376 
GetStringByNameSync(napi_env env,napi_callback_info info)377 napi_value ResourceManagerAddon::GetStringByNameSync(napi_env env, napi_callback_info info)
378 {
379     return AddonGetResource(env, info, "GetStringByNameSync", FunctionType::SYNC);
380 }
381 
GetBoolean(napi_env env,napi_callback_info info)382 napi_value ResourceManagerAddon::GetBoolean(napi_env env, napi_callback_info info)
383 {
384     return AddonGetResource(env, info, "GetBoolean", FunctionType::SYNC);
385 }
386 
GetNumber(napi_env env,napi_callback_info info)387 napi_value ResourceManagerAddon::GetNumber(napi_env env, napi_callback_info info)
388 {
389     return AddonGetResource(env, info, "GetNumber", FunctionType::SYNC);
390 }
391 
GetNumberByName(napi_env env,napi_callback_info info)392 napi_value ResourceManagerAddon::GetNumberByName(napi_env env, napi_callback_info info)
393 {
394     return AddonGetResource(env, info, "GetNumberByName", FunctionType::SYNC);
395 }
396 
GetBooleanByName(napi_env env,napi_callback_info info)397 napi_value ResourceManagerAddon::GetBooleanByName(napi_env env, napi_callback_info info)
398 {
399     return AddonGetResource(env, info, "GetBooleanByName", FunctionType::SYNC);
400 }
401 
GetDrawableDescriptor(napi_env env,napi_callback_info info)402 napi_value ResourceManagerAddon::GetDrawableDescriptor(napi_env env, napi_callback_info info)
403 {
404     return AddonGetResource(env, info, "GetDrawableDescriptor", FunctionType::SYNC);
405 }
406 
GetDrawableDescriptorByName(napi_env env,napi_callback_info info)407 napi_value ResourceManagerAddon::GetDrawableDescriptorByName(napi_env env, napi_callback_info info)
408 {
409     return AddonGetResource(env, info, "GetDrawableDescriptorByName", FunctionType::SYNC);
410 }
411 
GetColorSync(napi_env env,napi_callback_info info)412 napi_value ResourceManagerAddon::GetColorSync(napi_env env, napi_callback_info info)
413 {
414     return AddonGetResource(env, info, "GetColorSync", FunctionType::SYNC);
415 }
416 
GetColorByNameSync(napi_env env,napi_callback_info info)417 napi_value ResourceManagerAddon::GetColorByNameSync(napi_env env, napi_callback_info info)
418 {
419     return AddonGetResource(env, info, "GetColorByNameSync", FunctionType::SYNC);
420 }
421 
AddResource(napi_env env,napi_callback_info info)422 napi_value ResourceManagerAddon::AddResource(napi_env env, napi_callback_info info)
423 {
424     return AddonGetResource(env, info, "AddResource", FunctionType::SYNC);
425 }
426 
RemoveResource(napi_env env,napi_callback_info info)427 napi_value ResourceManagerAddon::RemoveResource(napi_env env, napi_callback_info info)
428 {
429     return AddonGetResource(env, info, "RemoveResource", FunctionType::SYNC);
430 }
431 
GetMediaContentBase64Sync(napi_env env,napi_callback_info info)432 napi_value ResourceManagerAddon::GetMediaContentBase64Sync(napi_env env, napi_callback_info info)
433 {
434     return AddonGetResource(env, info, "GetMediaContentBase64Sync", FunctionType::SYNC);
435 }
436 
GetMediaContentSync(napi_env env,napi_callback_info info)437 napi_value ResourceManagerAddon::GetMediaContentSync(napi_env env, napi_callback_info info)
438 {
439     return AddonGetResource(env, info, "GetMediaContentSync", FunctionType::SYNC);
440 }
441 
GetPluralStringValueSync(napi_env env,napi_callback_info info)442 napi_value ResourceManagerAddon::GetPluralStringValueSync(napi_env env, napi_callback_info info)
443 {
444     return AddonGetResource(env, info, "GetPluralStringValueSync", FunctionType::SYNC);
445 }
446 
GetStringArrayValueSync(napi_env env,napi_callback_info info)447 napi_value ResourceManagerAddon::GetStringArrayValueSync(napi_env env, napi_callback_info info)
448 {
449     return AddonGetResource(env, info, "GetStringArrayValueSync", FunctionType::SYNC);
450 }
451 
GetRawFileContentSync(napi_env env,napi_callback_info info)452 napi_value ResourceManagerAddon::GetRawFileContentSync(napi_env env, napi_callback_info info)
453 {
454     return AddonGetResource(env, info, "GetRawFileContentSync", FunctionType::SYNC);
455 }
456 
GetRawFdSync(napi_env env,napi_callback_info info)457 napi_value ResourceManagerAddon::GetRawFdSync(napi_env env, napi_callback_info info)
458 {
459     return AddonGetResource(env, info, "GetRawFdSync", FunctionType::SYNC);
460 }
461 
CloseRawFdSync(napi_env env,napi_callback_info info)462 napi_value ResourceManagerAddon::CloseRawFdSync(napi_env env, napi_callback_info info)
463 {
464     return AddonGetResource(env, info, "CloseRawFdSync", FunctionType::SYNC);
465 }
466 
GetRawFileListSync(napi_env env,napi_callback_info info)467 napi_value ResourceManagerAddon::GetRawFileListSync(napi_env env, napi_callback_info info)
468 {
469     return AddonGetResource(env, info, "GetRawFileListSync", FunctionType::SYNC);
470 }
471 
GetPluralStringByNameSync(napi_env env,napi_callback_info info)472 napi_value ResourceManagerAddon::GetPluralStringByNameSync(napi_env env, napi_callback_info info)
473 {
474     return AddonGetResource(env, info, "GetPluralStringByNameSync", FunctionType::SYNC);
475 }
476 
GetMediaBase64ByNameSync(napi_env env,napi_callback_info info)477 napi_value ResourceManagerAddon::GetMediaBase64ByNameSync(napi_env env, napi_callback_info info)
478 {
479     return AddonGetResource(env, info, "GetMediaBase64ByNameSync", FunctionType::SYNC);
480 }
481 
GetMediaByNameSync(napi_env env,napi_callback_info info)482 napi_value ResourceManagerAddon::GetMediaByNameSync(napi_env env, napi_callback_info info)
483 {
484     return AddonGetResource(env, info, "GetMediaByNameSync", FunctionType::SYNC);
485 }
486 
GetStringArrayByNameSync(napi_env env,napi_callback_info info)487 napi_value ResourceManagerAddon::GetStringArrayByNameSync(napi_env env, napi_callback_info info)
488 {
489     return AddonGetResource(env, info, "GetStringArrayByNameSync", FunctionType::SYNC);
490 }
491 
GetConfigurationSync(napi_env env,napi_callback_info info)492 napi_value ResourceManagerAddon::GetConfigurationSync(napi_env env, napi_callback_info info)
493 {
494     return AddonGetResource(env, info, "GetConfigurationSync", FunctionType::SYNC);
495 }
496 
GetDeviceCapabilitySync(napi_env env,napi_callback_info info)497 napi_value ResourceManagerAddon::GetDeviceCapabilitySync(napi_env env, napi_callback_info info)
498 {
499     return AddonGetResource(env, info, "GetDeviceCapabilitySync", FunctionType::SYNC);
500 }
501 
GetLocales(napi_env env,napi_callback_info info)502 napi_value ResourceManagerAddon::GetLocales(napi_env env, napi_callback_info info)
503 {
504     return AddonGetResource(env, info, "GetLocales", FunctionType::SYNC);
505 }
506 
GetSymbol(napi_env env,napi_callback_info info)507 napi_value ResourceManagerAddon::GetSymbol(napi_env env, napi_callback_info info)
508 {
509     return AddonGetResource(env, info, "GetSymbol", FunctionType::SYNC);
510 }
511 
GetSymbolByName(napi_env env,napi_callback_info info)512 napi_value ResourceManagerAddon::GetSymbolByName(napi_env env, napi_callback_info info)
513 {
514     return AddonGetResource(env, info, "GetSymbolByName", FunctionType::SYNC);
515 }
516 
IsRawDir(napi_env env,napi_callback_info info)517 napi_value ResourceManagerAddon::IsRawDir(napi_env env, napi_callback_info info)
518 {
519     return AddonGetResource(env, info, "IsRawDir", FunctionType::SYNC);
520 }
521 
GetOverrideResourceManager(napi_env env,napi_callback_info info)522 napi_value ResourceManagerAddon::GetOverrideResourceManager(napi_env env, napi_callback_info info)
523 {
524     return AddonGetResource(env, info, "GetOverrideResourceManager", FunctionType::SYNC);
525 }
526 
GetOverrideConfiguration(napi_env env,napi_callback_info info)527 napi_value ResourceManagerAddon::GetOverrideConfiguration(napi_env env, napi_callback_info info)
528 {
529     return AddonGetResource(env, info, "GetOverrideConfiguration", FunctionType::SYNC);
530 }
531 
UpdateOverrideConfiguration(napi_env env,napi_callback_info info)532 napi_value ResourceManagerAddon::UpdateOverrideConfiguration(napi_env env, napi_callback_info info)
533 {
534     return AddonGetResource(env, info, "UpdateOverrideConfiguration", FunctionType::SYNC);
535 }
536 } // namespace Resource
537 } // namespace Global
538 } // namespace OHOS