1 /*
2 * Copyright (c) 2021 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 #include "js_napi_common.h"
16
17 namespace ACE {
18 namespace NAPI {
19 namespace SYSTEM_TEST_NAPI {
20
IsTypeForNapiValue(napi_env env,napi_value param,napi_valuetype expectType)21 bool IsTypeForNapiValue(napi_env env, napi_value param, napi_valuetype expectType)
22 {
23 HILOG_INFO("%{public}s,called", __func__);
24 napi_valuetype valueType = napi_undefined;
25
26 if (napi_typeof(env, param, &valueType) != napi_ok) {
27 return false;
28 }
29 return valueType == expectType;
30 }
31
UnwrapIntValue(napi_env env,napi_value jsValue,int & result)32 bool UnwrapIntValue(napi_env env, napi_value jsValue, int& result)
33 {
34 HILOG_INFO("%{public}s,called", __func__);
35 napi_valuetype jsValueType = napi_undefined;
36 NAPI_CALL_BASE(env, napi_typeof(env, jsValue, &jsValueType), false);
37 if (jsValueType != napi_number) {
38 return false;
39 }
40 int32_t natValue32 = 0;
41 NAPI_CALL_BASE(env, napi_get_value_int32(env, jsValue, &natValue32), false);
42 result = static_cast<int>(natValue32);
43 return true;
44 }
45
UnwrapStringParam(std::string & str,napi_env env,napi_value argv)46 napi_value UnwrapStringParam(std::string& str, napi_env env, napi_value argv)
47 {
48 HILOG_INFO("%{public}s,called", __func__);
49 napi_valuetype valueType = napi_valuetype::napi_undefined;
50
51 napi_status rev = napi_typeof(env, argv, &valueType);
52 if (rev != napi_ok) {
53 return nullptr;
54 }
55
56 if (valueType != napi_valuetype::napi_string) {
57 HILOG_INFO("%{public}s called, Parameter type does not match", __func__);
58 return nullptr;
59 }
60
61 size_t len;
62 napi_status status = napi_get_value_string_utf8(env, argv, nullptr, 0, &len);
63 if (status != napi_ok) {
64 HILOG_INFO("%{public}s called, Get locale tag length failed", __func__);
65 return nullptr;
66 }
67 std::vector<char> buf(len + 1);
68 status = napi_get_value_string_utf8(env, argv, buf.data(), len + 1, &len);
69 if (status != napi_ok) {
70 HILOG_INFO("%{public}s called, Get locale tag failed", __func__);
71 return nullptr;
72 }
73 str = std::string(buf.data());
74
75 napi_value result = nullptr;
76 NAPI_CALL(env, napi_create_int32(env, 1, &result));
77 return result;
78 }
79 } // namespace SYSTEM_TEST_NAPI
80 } // namespace NAPI
81 } // namespace ACE