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 #ifndef RESOURCE_MANAGER_NAPI_UTILS_H 17 #define RESOURCE_MANAGER_NAPI_UTILS_H 18 19 #include "resource_manager_data_context.h" 20 namespace OHOS { 21 namespace Global { 22 namespace Resource { 23 class ResourceManagerNapiUtils { 24 public: 25 static bool IsNapiString(napi_env env, napi_callback_info info); 26 27 static bool IsNapiNumber(napi_env env, napi_callback_info info); 28 29 static bool IsNapiObject(napi_env env, napi_callback_info info); 30 31 static napi_value CreateJsUint8Array(napi_env env, ResMgrDataContext &context); 32 33 static napi_value CreateJsRawFd(napi_env env, ResMgrDataContext &context); 34 35 static napi_value CloseJsRawFd(napi_env env, ResMgrDataContext& context); 36 37 static napi_value CreateJsArray(napi_env env, ResMgrDataContext &context); 38 39 static napi_value CreateJsString(napi_env env, ResMgrDataContext& context); 40 41 static napi_value CreateJsDeviceCap(napi_env env, ResMgrDataContext& context); 42 43 static napi_value CreateJsConfig(napi_env env, ResMgrDataContext& context); 44 45 static napi_value CreateOverrideJsConfig(napi_env env, ResMgrDataContext& context); 46 47 static napi_value CreateJsNumber(napi_env env, ResMgrDataContext& context); 48 49 static napi_value CreateJsBool(napi_env env, ResMgrDataContext& context); 50 51 static napi_value CreateJsColor(napi_env env, ResMgrDataContext& context); 52 53 static napi_value CreateJsSymbol(napi_env env, ResMgrDataContext& context); 54 55 static RState GetDataType(napi_env env, napi_value value, uint32_t& density); 56 57 static napi_valuetype GetType(napi_env env, napi_value value); 58 59 static std::string GetResNameOrPath(napi_env env, size_t argc, napi_value *argv); 60 61 static int GetResId(napi_env env, size_t argc, napi_value *argv); 62 63 static void NapiThrow(napi_env env, int32_t errCode); 64 65 static int32_t GetResourceObject(napi_env env, std::shared_ptr<ResourceManager::Resource> &resourcePtr, 66 napi_value &value); 67 68 static bool GetHapResourceManager(const ResMgrDataContext* dataContext, 69 std::shared_ptr<ResourceManager> &resMgr, int32_t &resId); 70 71 static RState GetIncludeSystem(napi_env env, napi_value value, bool &includeSystem); 72 73 static RState GetConfigObject(napi_env env, napi_value object, std::unique_ptr<ResMgrDataContext> &dataContext); 74 75 private: 76 77 static const std::unordered_map<int32_t, std::string> ErrorCodeToMsg; 78 79 static std::string FindErrMsg(int32_t errCode); 80 81 static bool GetResourceObjectId(napi_env env, std::shared_ptr<ResourceManager::Resource> &resourcePtr, 82 napi_value &value); 83 84 static bool GetResourceObjectName(napi_env env, std::shared_ptr<ResourceManager::Resource> &resourcePtr, 85 napi_value &value, int32_t type); 86 87 static std::string GetLocale(std::unique_ptr<ResConfig> &cfg); 88 89 static napi_value CreateConfig(napi_env env, ResMgrDataContext& context, std::unique_ptr<ResConfig> &cfg); 90 91 static bool SetIntProperty(napi_env env, ResMgrDataContext& context, 92 napi_value &object, const std::string &property, const int &value); 93 94 static bool GetEnumParamOfConfig(napi_env env, std::shared_ptr<ResConfig> configPtr, napi_value &object); 95 96 static bool GetLocaleOfConfig(napi_env env, std::shared_ptr<ResConfig> configPtr, napi_value &object); 97 }; 98 } // namespace Resource 99 } // namespace Global 100 } // namespace OHOS 101 #endif