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