* 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;
}
}
}