diff --git a/frameworks/js/napi/audiomanager/napi_audio_spatialization_manager.cpp b/frameworks/js/napi/audiomanager/napi_audio_spatialization_manager.cpp index deeb98ff5d661759cb6da71510fe6e7c05fcdca8..5453572d39f995e42700a95f298f23da6578cedd 100644 --- a/frameworks/js/napi/audiomanager/napi_audio_spatialization_manager.cpp +++ b/frameworks/js/napi/audiomanager/napi_audio_spatialization_manager.cpp @@ -214,6 +214,10 @@ napi_value NapiAudioSpatializationManager::SetSpatializationEnabled(napi_env env NAPI_ERR_INPUT_INVALID); }; context->GetCbInfo(env, info, inputParser); + if (context->status != napi_ok) { + NapiAudioError::ThrowError(env, context->errCode); + return NapiParamUtils::GetUndefinedValue(env); + } auto executor = [context]() { CHECK_AND_RETURN_LOG(CheckContextStatus(context), "context object state is error."); @@ -267,6 +271,10 @@ napi_value NapiAudioSpatializationManager::SetHeadTrackingEnabled(napi_env env, NAPI_ERR_INPUT_INVALID); }; context->GetCbInfo(env, info, inputParser); + if (context->status != napi_ok) { + NapiAudioError::ThrowError(env, context->errCode); + return NapiParamUtils::GetUndefinedValue(env); + } auto executor = [context]() { CHECK_AND_RETURN_LOG(CheckContextStatus(context), "context object state is error."); @@ -378,7 +386,7 @@ napi_value NapiAudioSpatializationManager::UpdateSpatialDeviceState(napi_env env CHECK_AND_RETURN_RET_LOG(argc >= ARGS_ONE, ThrowErrorAndReturn(env, NAPI_ERR_INPUT_INVALID), "invalid arguments"); AudioSpatialDeviceState audioSpatialDeviceState; - if (!NapiParamUtils::GetSpatialDeviceState(env, &audioSpatialDeviceState, args[PARAM0])) { + if (NapiParamUtils::GetSpatialDeviceState(env, &audioSpatialDeviceState, args[PARAM0]) != napi_ok) { NapiAudioError::ThrowError(env, NAPI_ERR_INVALID_PARAM); return result; } diff --git a/frameworks/js/napi/common/napi_param_utils.cpp b/frameworks/js/napi/common/napi_param_utils.cpp index 323b82937220c75c1d01c399f3942e697e5edd06..033e7f29e6dc81cc7c213c10ba84a9bcaffb78e4 100644 --- a/frameworks/js/napi/common/napi_param_utils.cpp +++ b/frameworks/js/napi/common/napi_param_utils.cpp @@ -15,6 +15,7 @@ #include "napi_param_utils.h" #include "napi_audio_enum.h" +#include "audio_effect.h" namespace OHOS { namespace AudioStandard { @@ -955,22 +956,24 @@ napi_status NapiParamUtils::GetSpatialDeviceState(napi_env env, AudioSpatialDevi { napi_value res = nullptr; int32_t intValue = {0}; - if (napi_get_named_property(env, in, "address", &res) == napi_ok) { - spatialDeviceState->address = NapiParamUtils::GetStringArgument(env, res); - } - - if (napi_get_named_property(env, in, "isSpatializationSupported", &res) == napi_ok) { - napi_get_value_bool(env, res, &(spatialDeviceState->isSpatializationSupported)); - } - - if (napi_get_named_property(env, in, "isHeadTrackingSupported", &res) == napi_ok) { - napi_get_value_bool(env, res, &(spatialDeviceState->isHeadTrackingSupported)); - } - - if (napi_get_named_property(env, in, "spatialDeviceType", &res) == napi_ok) { - napi_get_value_int32(env, res, &intValue); - spatialDeviceState->spatialDeviceType = static_cast(intValue); - } + napi_valuetype valueType = napi_undefined; + napi_status status = napi_get_named_property(env, in, "address", &res); + CHECK_AND_RETURN_RET_LOG(status == napi_ok, status, "Get address name failed"); + napi_typeof(env, res, &valueType); + CHECK_AND_RETURN_RET_LOG(valueType == napi_string, napi_invalid_arg, "Get address type failed"); + spatialDeviceState->address = NapiParamUtils::GetStringArgument(env, res); + + status = GetValueBoolean(env, "isSpatializationSupported", spatialDeviceState->isSpatializationSupported, in); + CHECK_AND_RETURN_RET_LOG(status == napi_ok, status, "Get isSpatializationSupported failed"); + + status = GetValueBoolean(env, "isHeadTrackingSupported", spatialDeviceState->isHeadTrackingSupported, in); + CHECK_AND_RETURN_RET_LOG(status == napi_ok, status, "Get isHeadTrackingSupported failed"); + + status = GetValueInt32(env, "spatialDeviceType", intValue, in); + CHECK_AND_RETURN_RET_LOG(status == napi_ok, status, "Get spatialDeviceType failed"); + CHECK_AND_RETURN_RET_LOG((intValue >= EARPHONE_TYPE_NONE) && (intValue <= EARPHONE_TYPE_OTHERS), + napi_invalid_arg, "Get spatialDeviceType failed"); + spatialDeviceState->spatialDeviceType = static_cast(intValue); return napi_ok; }