/* * Copyright (c) 2021-2022 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "napi_utils.h" #include "battery_log.h" namespace OHOS { namespace PowerMgr { namespace { constexpr uint32_t MAX_SIZE = 255; } napi_value NapiUtils::GetCallbackInfo(napi_env& env, napi_callback_info& info, size_t& argc, napi_value argv[]) { napi_value thisVar = nullptr; void* data = nullptr; if (napi_ok != napi_get_cb_info(env, info, &argc, argv, &thisVar, &data)) { BATTERY_HILOGW(FEATURE_BATT_INFO, "Failed to get the input parameter"); } return thisVar; } std::string NapiUtils::GetStringFromNapi(napi_env& env, napi_value& napiStr) { char str[MAX_SIZE] = {0}; size_t strLen; if (napi_ok != napi_get_value_string_utf8(env, napiStr, str, MAX_SIZE - 1, &strLen)) { BATTERY_HILOGW(FEATURE_BATT_INFO, "napi_get_value_string_utf8 failed"); return ""; } return std::string(str); } napi_ref NapiUtils::CreateReference(napi_env& env, napi_value& value) { napi_ref refVal = nullptr; if (napi_ok != napi_create_reference(env, value, 1, &refVal)) { BATTERY_HILOGW(FEATURE_BATT_INFO, "Failed to create a value reference"); return refVal; } return refVal; } void NapiUtils::ReleaseReference(napi_env& env, napi_ref& ref) { if (ref != nullptr) { napi_delete_reference(env, ref); ref = nullptr; } } bool NapiUtils::CheckValueType(napi_env& env, napi_value& value, napi_valuetype checkType) { napi_valuetype valueType = napi_undefined; napi_typeof(env, value, &valueType); if (valueType != checkType) { BATTERY_HILOGW(FEATURE_BATT_INFO, "Parameter type error"); return false; } return true; } } // namespace PowerMgr } // namespace OHOS