• 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 "resource_manager_addon.h"
17 
18 namespace OHOS {
19 namespace Global {
20 namespace Resource {
21 static thread_local napi_ref* g_constructor = nullptr;
22 static std::shared_ptr<ResourceManager> sysResMgr = nullptr;
23 static std::mutex sysMgrMutex;
24 
Create(napi_env env,const std::string & bundleName,const std::shared_ptr<ResourceManager> & resMgr,std::shared_ptr<AbilityRuntime::Context> context)25 napi_value ResourceManagerAddon::Create(
26     napi_env env, const std::string &bundleName, const std::shared_ptr<ResourceManager> &resMgr,
27     std::shared_ptr<AbilityRuntime::Context> context)
28 {
29     std::shared_ptr<ResourceManagerAddon> addon = std::make_shared<ResourceManagerAddon>(bundleName, resMgr, context);
30     return WrapResourceManager(env, addon);
31 }
32 
WrapResourceManager(napi_env env,std::shared_ptr<ResourceManagerAddon> & addon)33 napi_value ResourceManagerAddon::WrapResourceManager(napi_env env, std::shared_ptr<ResourceManagerAddon> &addon)
34 {
35     if (!Init(env)) {
36         return nullptr;
37     }
38 
39     napi_value constructor;
40     napi_status status = napi_get_reference_value(env, *g_constructor, &constructor);
41     if (status != napi_ok) {
42         return nullptr;
43     }
44     napi_value result;
45     status = napi_new_instance(env, constructor, 0, nullptr, &result);
46     if (status != napi_ok) {
47         return nullptr;
48     }
49 
50     auto addonPtr = std::make_unique<std::shared_ptr<ResourceManagerAddon>>(addon);
51     status = napi_wrap(env, result, reinterpret_cast<void *>(addonPtr.get()), ResourceManagerAddon::Destructor,
52         nullptr, nullptr);
53     if (status != napi_ok) {
54         return nullptr;
55     }
56     addonPtr.release();
57     return result;
58 }
59 
ResourceManagerAddon(const std::string & bundleName,const std::shared_ptr<ResourceManager> & resMgr,const std::shared_ptr<AbilityRuntime::Context> & context,bool isSystem)60 ResourceManagerAddon::ResourceManagerAddon(
61     const std::string &bundleName, const std::shared_ptr<ResourceManager> &resMgr,
62     const std::shared_ptr<AbilityRuntime::Context> &context, bool isSystem)
63     : bundleName_(bundleName), resMgr_(resMgr), context_(context), isSystem_(isSystem)
64 {
65 }
66 
ResourceManagerAddon(const std::shared_ptr<ResourceManager> & resMgr,bool isSystem)67 ResourceManagerAddon::ResourceManagerAddon(const std::shared_ptr<ResourceManager> &resMgr, bool isSystem)
68     : resMgr_(resMgr), isSystem_(isSystem)
69 {
70 }
71 
~ResourceManagerAddon()72 ResourceManagerAddon::~ResourceManagerAddon()
73 {
74 }
75 
Destructor(napi_env env,void * nativeObject,void * hint)76 void ResourceManagerAddon::Destructor(napi_env env, void *nativeObject, void *hint)
77 {
78     std::unique_ptr<std::shared_ptr<ResourceManagerAddon>> addonPtr;
79     addonPtr.reset(static_cast<std::shared_ptr<ResourceManagerAddon>*>(nativeObject));
80 }
81 
Init(napi_env env)82 bool ResourceManagerAddon::Init(napi_env env)
83 {
84     if (g_constructor != nullptr) {
85         return true;
86     }
87 
88     napi_property_descriptor properties[] = {
89         DECLARE_NAPI_FUNCTION("getString", GetString),
90         DECLARE_NAPI_FUNCTION("getStringByName", GetStringByName),
91         DECLARE_NAPI_FUNCTION("getStringArray", GetStringArray),
92         DECLARE_NAPI_FUNCTION("getStringArrayByName", GetStringArrayByName),
93         DECLARE_NAPI_FUNCTION("getMedia", GetMedia),
94         DECLARE_NAPI_FUNCTION("getMediaByName", GetMediaByName),
95         DECLARE_NAPI_FUNCTION("getMediaBase64", GetMediaBase64),
96         DECLARE_NAPI_FUNCTION("getMediaBase64ByName", GetMediaBase64ByName),
97         DECLARE_NAPI_FUNCTION("getConfiguration", GetConfiguration),
98         DECLARE_NAPI_FUNCTION("getDeviceCapability", GetDeviceCapability),
99         DECLARE_NAPI_FUNCTION("getPluralString", GetPluralString),
100         DECLARE_NAPI_FUNCTION("getPluralStringByName", GetPluralStringByName),
101         DECLARE_NAPI_FUNCTION("getRawFile", GetRawFile),
102         DECLARE_NAPI_FUNCTION("getRawFileDescriptor", GetRawFileDescriptor),
103         DECLARE_NAPI_FUNCTION("closeRawFileDescriptor", CloseRawFileDescriptor),
104         DECLARE_NAPI_FUNCTION("getStringSync", GetStringSync),
105         DECLARE_NAPI_FUNCTION("getStringByNameSync", GetStringByNameSync),
106         DECLARE_NAPI_FUNCTION("getBoolean", GetBoolean),
107         DECLARE_NAPI_FUNCTION("getNumber", GetNumber),
108         DECLARE_NAPI_FUNCTION("getBooleanByName", GetBooleanByName),
109         DECLARE_NAPI_FUNCTION("getNumberByName", GetNumberByName),
110         DECLARE_NAPI_FUNCTION("release", Release),
111         DECLARE_NAPI_FUNCTION("getStringValue", GetStringValue),
112         DECLARE_NAPI_FUNCTION("getStringArrayValue", GetStringArrayValue),
113         DECLARE_NAPI_FUNCTION("getPluralStringValue", GetPluralStringValue),
114         DECLARE_NAPI_FUNCTION("getMediaContent", GetMediaContent),
115         DECLARE_NAPI_FUNCTION("getMediaContentBase64", GetMediaContentBase64),
116         DECLARE_NAPI_FUNCTION("getRawFileContent", GetRawFileContent),
117         DECLARE_NAPI_FUNCTION("getRawFd", GetRawFd),
118         DECLARE_NAPI_FUNCTION("closeRawFd", CloseRawFd),
119         DECLARE_NAPI_FUNCTION("getDrawableDescriptor", GetDrawableDescriptor),
120         DECLARE_NAPI_FUNCTION("getDrawableDescriptorByName", GetDrawableDescriptorByName),
121         DECLARE_NAPI_FUNCTION("getRawFileList", GetRawFileList),
122         DECLARE_NAPI_FUNCTION("getColor", GetColor),
123         DECLARE_NAPI_FUNCTION("getColorByName", GetColorByName),
124         DECLARE_NAPI_FUNCTION("getColorSync", GetColorSync),
125         DECLARE_NAPI_FUNCTION("getColorByNameSync", GetColorByNameSync),
126         DECLARE_NAPI_FUNCTION("addResource", AddResource),
127         DECLARE_NAPI_FUNCTION("removeResource", RemoveResource)
128     };
129 
130     napi_value constructor;
131     napi_status status = napi_define_class(env, "ResourceManager", NAPI_AUTO_LENGTH, New, nullptr,
132         sizeof(properties) / sizeof(napi_property_descriptor), properties, &constructor);
133     if (status != napi_ok) {
134         return false;
135     }
136 
137     g_constructor = new (std::nothrow) napi_ref;
138     if (g_constructor == nullptr) {
139         return false;
140     }
141     status = napi_create_reference(env, constructor, 1, g_constructor);
142     if (status != napi_ok) {
143         return false;
144     }
145     return true;
146 }
147 
New(napi_env env,napi_callback_info info)148 napi_value ResourceManagerAddon::New(napi_env env, napi_callback_info info)
149 {
150     return nullptr;
151 }
152 
Release(napi_env env,napi_callback_info info)153 napi_value ResourceManagerAddon::Release(napi_env env, napi_callback_info info)
154 {
155     napi_value undefined;
156     if (napi_get_undefined(env, &undefined) != napi_ok) {
157         return nullptr;
158     }
159     return undefined;
160 }
161 
GetString(napi_env env,napi_callback_info info)162 napi_value ResourceManagerAddon::GetString(napi_env env, napi_callback_info info)
163 {
164     return nullptr;
165 }
166 
GetStringArray(napi_env env,napi_callback_info info)167 napi_value ResourceManagerAddon::GetStringArray(napi_env env, napi_callback_info info)
168 {
169     return nullptr;
170 }
171 
GetMedia(napi_env env,napi_callback_info info)172 napi_value ResourceManagerAddon::GetMedia(napi_env env, napi_callback_info info)
173 {
174     return nullptr;
175 }
176 
GetMediaBase64(napi_env env,napi_callback_info info)177 napi_value ResourceManagerAddon::GetMediaBase64(napi_env env, napi_callback_info info)
178 {
179     return nullptr;
180 }
181 
GetConfiguration(napi_env env,napi_callback_info info)182 napi_value ResourceManagerAddon::GetConfiguration(napi_env env, napi_callback_info info)
183 {
184     return nullptr;
185 }
186 
GetDeviceCapability(napi_env env,napi_callback_info info)187 napi_value ResourceManagerAddon::GetDeviceCapability(napi_env env, napi_callback_info info)
188 {
189     return nullptr;
190 }
191 
GetPluralString(napi_env env,napi_callback_info info)192 napi_value ResourceManagerAddon::GetPluralString(napi_env env, napi_callback_info info)
193 {
194     return nullptr;
195 }
196 
GetRawFile(napi_env env,napi_callback_info info)197 napi_value ResourceManagerAddon::GetRawFile(napi_env env, napi_callback_info info)
198 {
199     return nullptr;
200 }
201 
GetRawFileDescriptor(napi_env env,napi_callback_info info)202 napi_value ResourceManagerAddon::GetRawFileDescriptor(napi_env env, napi_callback_info info)
203 {
204     return nullptr;
205 }
206 
CloseRawFileDescriptor(napi_env env,napi_callback_info info)207 napi_value ResourceManagerAddon::CloseRawFileDescriptor(napi_env env, napi_callback_info info)
208 {
209     return nullptr;
210 }
211 
GetPluralStringByName(napi_env env,napi_callback_info info)212 napi_value ResourceManagerAddon::GetPluralStringByName(napi_env env, napi_callback_info info)
213 {
214     return nullptr;
215 }
216 
GetMediaBase64ByName(napi_env env,napi_callback_info info)217 napi_value ResourceManagerAddon::GetMediaBase64ByName(napi_env env, napi_callback_info info)
218 {
219     return nullptr;
220 }
221 
GetMediaByName(napi_env env,napi_callback_info info)222 napi_value ResourceManagerAddon::GetMediaByName(napi_env env, napi_callback_info info)
223 {
224     return nullptr;
225 }
226 
GetStringArrayByName(napi_env env,napi_callback_info info)227 napi_value ResourceManagerAddon::GetStringArrayByName(napi_env env, napi_callback_info info)
228 {
229     return nullptr;
230 }
231 
GetStringByName(napi_env env,napi_callback_info info)232 napi_value ResourceManagerAddon::GetStringByName(napi_env env, napi_callback_info info)
233 {
234     return nullptr;
235 }
236 
GetStringValue(napi_env env,napi_callback_info info)237 napi_value ResourceManagerAddon::GetStringValue(napi_env env, napi_callback_info info)
238 {
239     return nullptr;
240 }
241 
GetStringArrayValue(napi_env env,napi_callback_info info)242 napi_value ResourceManagerAddon::GetStringArrayValue(napi_env env, napi_callback_info info)
243 {
244     return nullptr;
245 }
246 
GetMediaContent(napi_env env,napi_callback_info info)247 napi_value ResourceManagerAddon::GetMediaContent(napi_env env, napi_callback_info info)
248 {
249     return nullptr;
250 }
251 
GetMediaContentBase64(napi_env env,napi_callback_info info)252 napi_value ResourceManagerAddon::GetMediaContentBase64(napi_env env, napi_callback_info info)
253 {
254     return nullptr;
255 }
256 
GetPluralStringValue(napi_env env,napi_callback_info info)257 napi_value ResourceManagerAddon::GetPluralStringValue(napi_env env, napi_callback_info info)
258 {
259     return nullptr;
260 }
261 
GetRawFileContent(napi_env env,napi_callback_info info)262 napi_value ResourceManagerAddon::GetRawFileContent(napi_env env, napi_callback_info info)
263 {
264     return nullptr;
265 }
266 
GetRawFd(napi_env env,napi_callback_info info)267 napi_value ResourceManagerAddon::GetRawFd(napi_env env, napi_callback_info info)
268 {
269     return nullptr;
270 }
271 
CloseRawFd(napi_env env,napi_callback_info info)272 napi_value ResourceManagerAddon::CloseRawFd(napi_env env, napi_callback_info info)
273 {
274     return nullptr;
275 }
276 
GetRawFileList(napi_env env,napi_callback_info info)277 napi_value ResourceManagerAddon::GetRawFileList(napi_env env, napi_callback_info info)
278 {
279     return nullptr;
280 }
281 
GetColor(napi_env env,napi_callback_info info)282 napi_value ResourceManagerAddon::GetColor(napi_env env, napi_callback_info info)
283 {
284     return nullptr;
285 }
286 
GetColorByName(napi_env env,napi_callback_info info)287 napi_value ResourceManagerAddon::GetColorByName(napi_env env, napi_callback_info info)
288 {
289     return nullptr;
290 }
291 
GetStringSync(napi_env env,napi_callback_info info)292 napi_value ResourceManagerAddon::GetStringSync(napi_env env, napi_callback_info info)
293 {
294     return nullptr;
295 }
296 
GetStringByNameSync(napi_env env,napi_callback_info info)297 napi_value ResourceManagerAddon::GetStringByNameSync(napi_env env, napi_callback_info info)
298 {
299     return nullptr;
300 }
301 
GetBoolean(napi_env env,napi_callback_info info)302 napi_value ResourceManagerAddon::GetBoolean(napi_env env, napi_callback_info info)
303 {
304     return nullptr;
305 }
306 
GetNumber(napi_env env,napi_callback_info info)307 napi_value ResourceManagerAddon::GetNumber(napi_env env, napi_callback_info info)
308 {
309     return nullptr;
310 }
311 
GetNumberByName(napi_env env,napi_callback_info info)312 napi_value ResourceManagerAddon::GetNumberByName(napi_env env, napi_callback_info info)
313 {
314     return nullptr;
315 }
316 
GetBooleanByName(napi_env env,napi_callback_info info)317 napi_value ResourceManagerAddon::GetBooleanByName(napi_env env, napi_callback_info info)
318 {
319     return nullptr;
320 }
321 
GetDrawableDescriptor(napi_env env,napi_callback_info info)322 napi_value ResourceManagerAddon::GetDrawableDescriptor(napi_env env, napi_callback_info info)
323 {
324     return nullptr;
325 }
326 
GetDrawableDescriptorByName(napi_env env,napi_callback_info info)327 napi_value ResourceManagerAddon::GetDrawableDescriptorByName(napi_env env, napi_callback_info info)
328 {
329     return nullptr;
330 }
331 
GetColorSync(napi_env env,napi_callback_info info)332 napi_value ResourceManagerAddon::GetColorSync(napi_env env, napi_callback_info info)
333 {
334     return nullptr;
335 }
336 
GetColorByNameSync(napi_env env,napi_callback_info info)337 napi_value ResourceManagerAddon::GetColorByNameSync(napi_env env, napi_callback_info info)
338 {
339     return nullptr;
340 }
341 
AddResource(napi_env env,napi_callback_info info)342 napi_value ResourceManagerAddon::AddResource(napi_env env, napi_callback_info info)
343 {
344     return nullptr;
345 }
346 
RemoveResource(napi_env env,napi_callback_info info)347 napi_value ResourceManagerAddon::RemoveResource(napi_env env, napi_callback_info info)
348 {
349     return nullptr;
350 }
351 } // namespace Resource
352 } // namespace Global
353 } // namespace OHOS