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