• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #ifndef RESOURCE_MANAGER_ADDON_H
17 #define RESOURCE_MANAGER_ADDON_H
18 
19 #if !defined(__IDE_PREVIEW__)
20 #include "application_context.h"
21 #else
22 #include "context.h"
23 #endif
24 #include "napi/native_api.h"
25 #include "napi/native_node_api.h"
26 #include "resource_manager.h"
27 #include "resource_manager_napi_context.h"
28 namespace OHOS {
29 namespace Global {
30 namespace Resource {
31 class EXPORT_FUNC ResourceManagerAddon {
32 #define GET_PARAMS(env, info, num)    \
33     size_t argc = num;                \
34     napi_value argv[num] = {nullptr}; \
35     napi_value thisVar = nullptr;     \
36     void *data = nullptr;             \
37     napi_get_cb_info(env, info, &argc, argv, &thisVar, &data)
38 public:
39     static napi_value Create(
40         napi_env env, const std::string& bundleName,
41             const std::shared_ptr<ResourceManager>& resMgr, std::shared_ptr<AbilityRuntime::Context> context);
42 
43     static bool Init(napi_env env);
44 
45     static void Destructor(napi_env env, void *nativeObject, void *finalize_hint);
46 
47     ResourceManagerAddon(const std::string& bundleName, const std::shared_ptr<ResourceManager>& resMgr,
48         const std::shared_ptr<AbilityRuntime::Context>& context, bool isSystem = false);
49 
50     ResourceManagerAddon(const std::shared_ptr<ResourceManager>& resMgr, bool isSystem = false);
51 
52     static napi_value GetSystemResMgr(napi_env env);
53 
54     static napi_value GetSysResourceManager(napi_env env);
55 
56     ~ResourceManagerAddon();
57 
GetResMgr()58     inline std::shared_ptr<ResourceManager> GetResMgr()
59     {
60         return resMgr_;
61     }
62 
GetContext()63     inline std::shared_ptr<AbilityRuntime::Context> GetContext()
64     {
65         return context_;
66     }
67 
IsSystem()68     inline bool IsSystem()
69     {
70         return isSystem_;
71     }
72 
73     napi_value CreateOverrideAddon(napi_env env, const std::shared_ptr<ResourceManager>& resMgr);
74 
isOverrideAddon()75     bool isOverrideAddon()
76     {
77         return isOverrideAddon_;
78     }
79 
80 private:
81     static napi_value AddonGetResource(napi_env env, napi_callback_info info, const std::string& name,
82         FunctionType type);
83 
84     static napi_value GetString(napi_env env, napi_callback_info info);
85 
86     static napi_value GetStringArray(napi_env env, napi_callback_info info);
87 
88     static napi_value GetMedia(napi_env env, napi_callback_info info);
89 
90     static napi_value GetMediaBase64(napi_env env, napi_callback_info info);
91 
92     static napi_value ProcessNoParam(napi_env env, napi_callback_info info, const std::string &name,
93         napi_async_execute_callback execute);
94 
95     static napi_value GetConfiguration(napi_env env, napi_callback_info info);
96 
97     static napi_value GetDeviceCapability(napi_env env, napi_callback_info info);
98 
99     static napi_value GetPluralString(napi_env env, napi_callback_info info);
100 
101     static napi_value New(napi_env env, napi_callback_info info);
102 
103     static napi_value GetRawFile(napi_env env, napi_callback_info info);
104 
105     static std::string GetResNameOrPath(napi_env env, size_t argc, napi_value *argv);
106 
107     static napi_value GetRawFileDescriptor(napi_env env, napi_callback_info info);
108 
109     static napi_value CloseRawFileDescriptor(napi_env env, napi_callback_info info);
110 
111     static napi_value Release(napi_env env, napi_callback_info info);
112 
113     static std::string GetResName(napi_env env, size_t argc, napi_value *argv);
114 
115     static napi_value GetMediaByName(napi_env env, napi_callback_info info);
116 
117     static napi_value GetMediaBase64ByName(napi_env env, napi_callback_info info);
118 
119     static napi_value GetStringByName(napi_env env, napi_callback_info info);
120 
121     static napi_value GetStringArrayByName(napi_env env, napi_callback_info info);
122 
123     static napi_value GetPluralStringByName(napi_env env, napi_callback_info info);
124 
125     static napi_value GetNumber(napi_env env, napi_callback_info info);
126 
127     static napi_value GetNumberByName(napi_env env, napi_callback_info info);
128 
129     static napi_value GetBoolean(napi_env env, napi_callback_info info);
130 
131     static napi_value GetBooleanByName(napi_env env, napi_callback_info info);
132 
133     static napi_value GetStringSync(napi_env env, napi_callback_info info);
134 
135     static napi_value GetStringByNameSync(napi_env env, napi_callback_info info);
136 
137     static napi_value GetStringValue(napi_env env, napi_callback_info info);
138 
139     static napi_value GetStringArrayValue(napi_env env, napi_callback_info info);
140 
141     static napi_value GetPluralStringValue(napi_env env, napi_callback_info info);
142 
143     static napi_value GetMediaContent(napi_env env, napi_callback_info info);
144 
145     static napi_value GetMediaContentBase64(napi_env env, napi_callback_info info);
146 
147     static napi_value GetRawFileContent(napi_env env, napi_callback_info info);
148 
149     static napi_value GetRawFd(napi_env env, napi_callback_info info);
150 
151     static napi_value CloseRawFd(napi_env env, napi_callback_info info);
152 
153     static napi_value GetDrawableDescriptor(napi_env env, napi_callback_info info);
154 
155     static napi_value GetDrawableDescriptorByName(napi_env env, napi_callback_info info);
156 
157     static napi_value GetRawFileList(napi_env env, napi_callback_info info);
158 
159     static napi_value GetColorByNameSync(napi_env env, napi_callback_info info);
160 
161     static napi_value GetColorSync(napi_env env, napi_callback_info info);
162 
163     static napi_value GetColor(napi_env env, napi_callback_info info);
164 
165     static napi_value GetColorByName(napi_env env, napi_callback_info info);
166 
167     static napi_value WrapResourceManager(napi_env env, std::shared_ptr<ResourceManagerAddon> &addon);
168 
169     static napi_value AddResource(napi_env env, napi_callback_info info);
170 
171     static napi_value RemoveResource(napi_env env, napi_callback_info info);
172 
173     static napi_value GetMediaContentBase64Sync(napi_env env, napi_callback_info info);
174 
175     static napi_value GetMediaContentSync(napi_env env, napi_callback_info info);
176 
177     static napi_value GetPluralStringValueSync(napi_env env, napi_callback_info info);
178 
179     static napi_value GetStringArrayValueSync(napi_env env, napi_callback_info info);
180 
181     static napi_value GetRawFileContentSync(napi_env env, napi_callback_info info);
182 
183     static napi_value GetRawFdSync(napi_env env, napi_callback_info info);
184 
185     static napi_value CloseRawFdSync(napi_env env, napi_callback_info info);
186 
187     static napi_value GetRawFileListSync(napi_env env, napi_callback_info info);
188 
189     static napi_value GetPluralStringByNameSync(napi_env env, napi_callback_info info);
190 
191     static napi_value GetMediaBase64ByNameSync(napi_env env, napi_callback_info info);
192 
193     static napi_value GetMediaByNameSync(napi_env env, napi_callback_info info);
194 
195     static napi_value GetStringArrayByNameSync(napi_env env, napi_callback_info info);
196 
197     static napi_value GetConfigurationSync(napi_env env, napi_callback_info info);
198 
199     static napi_value GetDeviceCapabilitySync(napi_env env, napi_callback_info info);
200 
201     static napi_value GetLocales(napi_env env, napi_callback_info info);
202 
203     static napi_value GetSymbol(napi_env env, napi_callback_info info);
204 
205     static napi_value GetSymbolByName(napi_env env, napi_callback_info info);
206 
207     static napi_value IsRawDir(napi_env env, napi_callback_info info);
208 
209     static napi_value GetOverrideResourceManager(napi_env env, napi_callback_info info);
210 
211     static napi_value GetOverrideConfiguration(napi_env env, napi_callback_info info);
212 
213     static napi_value UpdateOverrideConfiguration(napi_env env, napi_callback_info info);
214 
215     static napi_value GetIntPluralStringValueSync(napi_env env, napi_callback_info info);
216 
217     static napi_value GetDoublePluralStringValueSync(napi_env env, napi_callback_info info);
218 
219     static napi_value GetIntPluralStringByNameSync(napi_env env, napi_callback_info info);
220 
221     static napi_value GetDoublePluralStringByNameSync(napi_env env, napi_callback_info info);
222 
223     std::string bundleName_;
224     std::shared_ptr<ResourceManager> resMgr_;
225     std::shared_ptr<AbilityRuntime::Context> context_;
226     bool isSystem_;
227     std::shared_ptr<ResourceManagerNapiContext> napiContext_;
228     static napi_property_descriptor properties[];
229     bool isOverrideAddon_ = false;
230 };
231 } // namespace Resource
232 } // namespace Global
233 } // namespace OHOS
234 #endif