1 /* 2 * Copyright (c) 2022 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 NAPI_PARSE_UTILS_H 17 #define NAPI_PARSE_UTILS_H 18 19 #include <vector> 20 21 #include "napi/native_api.h" 22 #include "napi/native_common.h" 23 #include "napi/native_node_api.h" 24 #include "nweb.h" 25 #include "nweb_web_message.h" 26 #include "web_errors.h" 27 28 namespace OHOS { 29 namespace NWeb { 30 constexpr int INTEGER_ZERO = 0; 31 constexpr int INTEGER_ONE = 1; 32 constexpr int INTEGER_TWO = 2; 33 constexpr int INTEGER_THREE = 3; 34 constexpr int INTEGER_FOUR = 4; 35 constexpr int INTEGER_FIVE = 5; 36 constexpr int MAX_CUSTOM_SCHEME_NAME_LENGTH = 32; 37 constexpr int MAX_CUSTOM_SCHEME_SIZE = 10; 38 constexpr int MAX_STRING_TO_INT32_LENGTH = 10; 39 40 class NapiParseUtils { 41 public: 42 static napi_value CreateEnumConstructor(napi_env env, napi_callback_info info); 43 static napi_value ToInt32Value(napi_env env, int32_t number); 44 static bool ParseUint32(napi_env env, napi_value argv, uint32_t& outValue); 45 static bool ParseInt32(napi_env env, napi_value argv, int32_t& outValue); 46 static bool ParseUint64(napi_env env, napi_value argv, uint64_t& outValue, bool *lossless); 47 static bool ParseInt64(napi_env env, napi_value argv, int64_t& outValue); 48 static bool ParseDouble(napi_env env, napi_value argv, double& outValue); 49 static bool ParseString(napi_env env, napi_value argv, std::string& outValue); 50 static bool ParseArrayBuffer(napi_env env, napi_value argv, std::string& outValue); 51 static bool ParseBoolean(napi_env env, napi_value argv, bool& outValue); 52 static bool ParseStringArray(napi_env env, napi_value argv, std::vector<std::string>& outValue); 53 static bool ParseBooleanArray(napi_env env, napi_value argv, std::vector<bool>& outValue); 54 static bool ParseDoubleArray(napi_env env, napi_value argv, std::vector<double>& outValue); 55 static bool ParseInt64Array(napi_env env, napi_value argv, std::vector<int64_t>& outValue); 56 static bool ParseFloat(napi_env env, napi_value argv, float& outValue); 57 static bool ConvertNWebToNapiValue(napi_env env, std::shared_ptr<NWebMessage> src, napi_value& dst); 58 static ErrCode ConstructStringFlowbuf(napi_env env, napi_value argv, int& fd, size_t& scriptLength); 59 static ErrCode ConstructArrayBufFlowbuf(napi_env env, napi_value argv, int& fd, size_t& scriptLength); 60 static bool ParseJsLengthStringToInt(const std::string& input, PixelUnit& type, int32_t& value); 61 }; 62 } // namespace NWeb 63 } // namespace OHOS 64 #endif