merge master into master

fix code

Created-by: littlejerry1
Commit-by: unknown
Merged-by: openharmony_ci
Description: **IssueNo**:https://gitcode.com/openharmony/ability_ability_runtime/issues/13064?ref=&did=3298889#tid-3298889

**Description**:napi返回值处理

**稳定性自检:**
NA

**安全编码自检:**
NA

**TDD Result**:
NA

**XTS Result**:
NA

### 是否已执行L0用例
- [ ] 已验证
- [ NA ] 不涉及。如不涉及,请写明理由


See merge request: openharmony/ability_ability_runtime!16615
This commit is contained in:
openharmony_ci
2025-09-18 17:18:13 +08:00
13 changed files with 116 additions and 28 deletions
@@ -54,7 +54,11 @@ void JsAbilityAutoStartupCallBack::Register(napi_value value)
}
napi_ref ref = nullptr;
napi_create_reference(env_, value, 1, &ref);
napi_status createStatus = napi_create_reference(env_, value, 1, &ref);
if (createStatus != napi_ok || ref == nullptr) {
TAG_LOGE(AAFwkTag::AUTO_STARTUP, "napi_create_reference failed, %{public}d", createStatus);
return;
}
callbacks_.emplace_back(std::unique_ptr<NativeReference>(reinterpret_cast<NativeReference *>(ref)));
}
@@ -71,7 +71,11 @@ bool IsNormalObject(napi_env env, napi_value value)
napi_value CreateJsAutoStartupInfoArray(napi_env env, const std::vector<AutoStartupInfo> &infoList)
{
napi_value arrayObj = nullptr;
napi_create_array(env, &arrayObj);
napi_status createStatus = napi_create_array(env, &arrayObj);
if (createStatus != napi_ok || arrayObj == nullptr) {
TAG_LOGE(AAFwkTag::AUTO_STARTUP, "napi_create_reference failed, %{public}d", createStatus);
return nullptr;
}
for (size_t i = 0; i < infoList.size(); ++i) {
auto object = CreateJsAutoStartupInfo(env, infoList.at(i));
if (object == nullptr) {
@@ -126,7 +126,11 @@ void JSAbilityForegroundStateObserver::AddJsObserverObject(const napi_value &jsO
return;
}
napi_ref ref = nullptr;
napi_create_reference(env_, jsObserverObject, 1, &ref);
napi_status createStatus = napi_create_reference(env_, jsObserverObject, 1, &ref);
if (createStatus != napi_ok || ref == nullptr) {
TAG_LOGE(AAFwkTag::UIABILITY, "napi_create_reference failed, %{public}d", createStatus);
return;
}
jsObserverObjectSet_.emplace(std::shared_ptr<NativeReference>(reinterpret_cast<NativeReference *>(ref)));
}
@@ -46,7 +46,11 @@ napi_value CreateJSToken(napi_env env, const sptr<IRemoteObject> target)
napi_value CreateJsAbilityRunningInfoArray(napi_env env, const std::vector<AAFwk::AbilityRunningInfo> &infos)
{
napi_value arrayValue = nullptr;
napi_create_array_with_length(env, infos.size(), &arrayValue);
napi_status createStatus = napi_create_array_with_length(env, infos.size(), &arrayValue);
if (createStatus != napi_ok || arrayValue == nullptr) {
TAG_LOGE(AAFwkTag::ABILITYMGR, "napi_create_reference failed, %{public}d", createStatus);
return nullptr;
}
uint32_t index = 0;
for (const auto &runningInfo : infos) {
napi_set_element(env, arrayValue, index++, CreateJsAbilityRunningInfo(env, runningInfo));
@@ -62,7 +66,11 @@ napi_value CreateJsElementName(napi_env env, const AppExecFwk::ElementName &elem
napi_value CreateJsExtensionRunningInfoArray(napi_env env, const std::vector<AAFwk::ExtensionRunningInfo> &infos)
{
napi_value arrayValue = nullptr;
napi_create_array_with_length(env, infos.size(), &arrayValue);
napi_status createStatus = napi_create_array_with_length(env, infos.size(), &arrayValue);
if (createStatus != napi_ok || arrayValue == nullptr) {
TAG_LOGE(AAFwkTag::ABILITYMGR, "null arrayValue");
return nullptr;
}
uint32_t index = 0;
for (const auto &runningInfo : infos) {
napi_set_element(env, arrayValue, index++, CreateJsExtensionRunningInfo(env, runningInfo));
@@ -73,7 +81,11 @@ napi_value CreateJsExtensionRunningInfoArray(napi_env env, const std::vector<AAF
napi_value CreateJsAbilityRunningInfo(napi_env env, const AAFwk::AbilityRunningInfo &info)
{
napi_value objValue = nullptr;
napi_create_object(env, &objValue);
napi_status createStatus = napi_create_object(env, &objValue);
if (createStatus != napi_ok || objValue == nullptr) {
TAG_LOGE(AAFwkTag::ABILITYMGR, "null ObjValue");
return nullptr;
}
napi_value napiElementName = OHOS::AppExecFwk::WrapElementName(env, info.ability);
napi_set_named_property(env, objValue, "ability", napiElementName);
@@ -88,7 +100,11 @@ napi_value CreateJsAbilityRunningInfo(napi_env env, const AAFwk::AbilityRunningI
napi_value CreateJsExtensionRunningInfo(napi_env env, const AAFwk::ExtensionRunningInfo &info)
{
napi_value objValue = nullptr;
napi_create_object(env, &objValue);
napi_status createStatus = napi_create_object(env, &objValue);
if (createStatus != napi_ok || objValue == nullptr) {
TAG_LOGE(AAFwkTag::ABILITYMGR, "null ObjValue");
return nullptr;
}
napi_value napiElementName = OHOS::AppExecFwk::WrapElementName(env, info.extension);
napi_set_named_property(env, objValue, "extension", napiElementName);
@@ -105,7 +121,11 @@ napi_value AbilityStateInit(napi_env env)
{
TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
napi_value objValue = nullptr;
napi_create_object(env, &objValue);
napi_status createStatus = napi_create_object(env, &objValue);
if (createStatus != napi_ok || objValue == nullptr) {
TAG_LOGE(AAFwkTag::ABILITYMGR, "null ObjValue");
return nullptr;
}
napi_set_named_property(env, objValue, "INITIAL", CreateJsValue(env, AAFwk::AbilityState::INITIAL));
napi_set_named_property(env, objValue, "FOCUS", CreateJsValue(env, AAFwk::AbilityState::ACTIVE));
@@ -120,7 +140,11 @@ napi_value UserStatusInit(napi_env env)
{
TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
napi_value objValue = nullptr;
napi_create_object(env, &objValue);
napi_status createStatus = napi_create_object(env, &objValue);
if (createStatus != napi_ok || objValue == nullptr) {
TAG_LOGE(AAFwkTag::ABILITYMGR, "null ObjValue");
return nullptr;
}
napi_set_named_property(
env, objValue, "ASSERT_TERMINATE", CreateJsValue(env, AAFwk::UserStatus::ASSERT_TERMINATE));
@@ -133,8 +157,8 @@ napi_value CreateJsAbilityStateData(napi_env env, const AbilityStateData &abilit
{
TAG_LOGD(AAFwkTag::ABILITYMGR, "called");
napi_value object = nullptr;
napi_create_object(env, &object);
if (object == nullptr) {
napi_status createStatus = napi_create_object(env, &object);
if (createStatus != napi_ok || object == nullptr) {
TAG_LOGE(AAFwkTag::ABILITYMGR, "null ObjValue");
return nullptr;
}
@@ -156,7 +180,11 @@ napi_value CreateJsAbilityStateDataArray(
napi_env env, const std::vector<AppExecFwk::AbilityStateData> &abilityStateDatas)
{
napi_value arrayValue = nullptr;
napi_create_array_with_length(env, abilityStateDatas.size(), &arrayValue);
napi_status createStatus = napi_create_array_with_length(env, abilityStateDatas.size(), &arrayValue);
if (createStatus != napi_ok || arrayValue == nullptr) {
TAG_LOGE(AAFwkTag::ABILITYMGR, "napi_create_reference failed, %{public}d", createStatus);
return nullptr;
}
uint32_t index = 0;
for (const auto &abilityStateData : abilityStateDatas) {
napi_set_element(env, arrayValue, index++, CreateJsAbilityStateData(env, abilityStateData));
@@ -83,7 +83,11 @@ void JSAbilityFirstFrameStateObserver::SetJsObserverObject(const napi_value &jsO
return;
}
napi_ref ref = nullptr;
napi_create_reference(env_, jsObserverObject, 1, &ref);
napi_status createStatus = napi_create_reference(env_, jsObserverObject, 1, &ref);
if (createStatus != napi_ok || ref == nullptr) {
TAG_LOGE(AAFwkTag::ABILITYMGR, "napi_create_reference failed, %{public}d", createStatus);
return;
}
jsObserverObject_ = std::shared_ptr<NativeReference>(reinterpret_cast<NativeReference *>(ref));
}
@@ -171,7 +171,11 @@ napi_value CreateJsAutoFillType(napi_env env)
{
TAG_LOGD(AAFwkTag::AUTOFILLMGR, "called");
napi_value objValue = nullptr;
napi_create_object(env, &objValue);
napi_status createStatus = napi_create_object(env, &objValue);
if (createStatus != napi_ok || objValue == nullptr) {
TAG_LOGE(AAFwkTag::AUTOFILLMGR, "napi_create_reference failed, %{public}d", createStatus);
return nullptr;
}
napi_set_named_property(env, objValue, "UNSPECIFIED", CreateJsValue(env, AbilityBase::AutoFillType::UNSPECIFIED));
napi_set_named_property(env, objValue, "PASSWORD", CreateJsValue(env, AbilityBase::AutoFillType::PASSWORD));
@@ -223,7 +227,11 @@ napi_value CreateJsPopupPlacement(napi_env env)
{
TAG_LOGD(AAFwkTag::AUTOFILLMGR, "called");
napi_value objValue = nullptr;
napi_create_object(env, &objValue);
napi_status createStatus = napi_create_object(env, &objValue);
if (createStatus != napi_ok || objValue == nullptr) {
TAG_LOGE(AAFwkTag::AUTOFILLMGR, "napi_create_reference failed, %{public}d", createStatus);
return nullptr;
}
napi_set_named_property(env, objValue, "LEFT", CreateJsValue(env, AbilityBase::PopupPlacement::LEFT));
napi_set_named_property(env, objValue, "RIGHT", CreateJsValue(env, AbilityBase::PopupPlacement::RIGHT));
@@ -59,7 +59,11 @@ void JsAutoSaveRequestCallback::Register(napi_value value)
}
napi_ref ref = nullptr;
napi_create_reference(env_, value, 1, &ref);
napi_status createStatus = napi_create_reference(env_, value, 1, &ref);
if (createStatus != napi_ok || ref == nullptr) {
TAG_LOGE(AAFwkTag::AUTOFILLMGR, "napi_create_reference failed, %{public}d", createStatus);
return;
}
callback_ = std::unique_ptr<NativeReference>(reinterpret_cast<NativeReference *>(ref));
}
@@ -119,9 +119,11 @@ napi_value JsFeatureAbilityInit(napi_env env, napi_value exports)
napi_value contextValue = CreateNapiJSContext(env);
if (contextValue != nullptr) {
napi_ref contextRef = nullptr;
napi_create_reference(env, contextValue, 1, &contextRef);
jsFeatureAbility->SetFAContext(
std::shared_ptr<NativeReference>(reinterpret_cast<NativeReference*>(contextRef)));
napi_status createStatus = napi_create_reference(env, contextValue, 1, &contextRef);
if (createStatus == napi_ok && contextRef != nullptr) {
jsFeatureAbility->SetFAContext(
std::shared_ptr<NativeReference>(reinterpret_cast<NativeReference*>(contextRef)));
}
}
napi_wrap(env, exports, jsFeatureAbility.release(), JsFeatureAbility::Finalizer, nullptr, nullptr);
@@ -446,14 +446,20 @@ bool JsFeatureAbility::UnWrapRequestParams(napi_env env, napi_value param, Distr
napi_value JsFeatureAbility::CreateJsResult(napi_env env, int32_t errCode, const std::string &message)
{
napi_value jsResult = nullptr;
napi_create_object(env, &jsResult);
napi_status createStatus = napi_create_object(env, &jsResult);
if (createStatus != napi_ok || jsResult == nullptr) {
TAG_LOGE(AAFwkTag::FA, "napi_create_reference failed, %{public}d", createStatus);
return nullptr;
}
napi_set_named_property(env, jsResult, "code", CreateJsNumber(env, errCode));
if (errCode == 0) {
napi_set_named_property(env, jsResult, "data", CreateJsUndefined(env));
} else {
napi_value dataVal = nullptr;
napi_create_string_utf8(env, message.c_str(), message.length(), &dataVal);
napi_set_named_property(env, jsResult, "data", dataVal);
napi_status createStatus = napi_create_string_utf8(env, message.c_str(), message.length(), &dataVal);
if (createStatus == napi_ok) {
napi_set_named_property(env, jsResult, "data", dataVal);
}
}
return jsResult;
@@ -462,7 +468,11 @@ napi_value JsFeatureAbility::CreateJsResult(napi_env env, int32_t errCode, const
napi_value JsFeatureAbility::CreateJsFeatureAbility(napi_env env)
{
napi_value object = nullptr;
napi_create_object(env, &object);
napi_status createStatus = napi_create_object(env, &object);
if (createStatus != napi_ok || object == nullptr) {
TAG_LOGE(AAFwkTag::FA, "napi_create_reference failed, %{public}d", createStatus);
return nullptr;
}
std::unique_ptr<JsFeatureAbility> jsFeatureAbility = std::make_unique<JsFeatureAbility>();
napi_wrap(env, object, jsFeatureAbility.release(), JsFeatureAbility::Finalizer, nullptr, nullptr);
@@ -267,7 +267,11 @@ public:
return;
}
napi_ref ref = nullptr;
napi_create_reference(env, value, 1, &ref);
napi_status createStatus = napi_create_reference(env, value, 1, &ref);
if (createStatus != napi_ok || ref == nullptr) {
TAG_LOGE(AAFwkTag::DEFAULT, "napi_create_reference failed, %{public}d", createStatus);
return;
}
jsRemoteObj_.reset(reinterpret_cast<NativeReference*>(ref));
jsRemoteObjEnv_ = env;
}
@@ -222,13 +222,17 @@ void BindContext(napi_env env, std::unique_ptr<NativeReference> contextRef, JsRu
return;
}
abilityContext->Bind(jsRuntime, contextRef.release());
napi_wrap(
napi_status wrapStatus = napi_wrap(
env, contextObj, workContext,
[](napi_env, void* data, void* hint) {
TAG_LOGD(AAFwkTag::UIABILITY, "finalizer for weak_ptr ability context is called");
delete static_cast<std::weak_ptr<AbilityRuntime::AbilityContext>*>(data);
},
nullptr, nullptr);
if (wrapStatus != napi_ok) {
TAG_LOGE(AAFwkTag::UIABILITY, "napi_wrap failed");
delete workContext;
}
}
} // namespace
@@ -1518,7 +1522,11 @@ int32_t JsUIAbility::OnContinue(WantParams &wantParams, bool &isAsyncOnContinue,
}
std::weak_ptr<UIAbility> weakPtr = shared_from_this();
napi_ref jsWantParamsRef;
napi_create_reference(env, jsWantParams, 1, &jsWantParamsRef);
napi_status createStatus = napi_create_reference(env, jsWantParams, 1, &jsWantParamsRef);
if (createStatus != napi_ok) {
TAG_LOGE(AAFwkTag::UIABILITY, "napi_create_reference failed, %{public}d", createStatus);
return AppExecFwk::ContinuationManagerStage::OnContinueResult::ON_CONTINUE_ERR;
}
ReleaseOnContinueAsset(env, result, jsWantParamsRef, callbackInfo);
auto asyncCallback = [jsWantParamsRef, abilityWeakPtr = weakPtr, abilityInfo](int32_t status) {
auto ability = abilityWeakPtr.lock();
@@ -356,8 +356,12 @@ bool JsAutoFillExtension::CallPromise(napi_value result, AppExecFwk::AbilityTran
}
HandleScope handleScope(jsRuntime_);
napi_value promiseCallback = nullptr;
napi_create_function(env, "promiseCallback", strlen("promiseCallback"), PromiseCallback,
napi_status createStatus = napi_create_function(env, "promiseCallback", strlen("promiseCallback"), PromiseCallback,
callbackInfo, &promiseCallback);
if (createStatus != napi_ok || promiseCallback == nullptr) {
TAG_LOGE(AAFwkTag::AUTOFILL_EXT, "napi_create_reference failed, %{public}d", createStatus);
return false;
}
napi_value argv[1] = { promiseCallback };
napi_call_function(env, result, then, 1, argv, nullptr);
return true;
@@ -306,7 +306,11 @@ napi_value DumpRuntimeHelper::GetJsLeakModule(napi_env env, napi_value global)
return nullptr;
}
napi_value moduleName = nullptr;
napi_create_string_utf8(env, MODULE_NAME, strlen(MODULE_NAME), &moduleName);
status = napi_create_string_utf8(env, MODULE_NAME, strlen(MODULE_NAME), &moduleName);
if (status != napi_ok) {
TAG_LOGE(AAFwkTag::APPKIT, "fail, %{public}d", status);
return nullptr;
}
napi_value param[1] = {moduleName};
napi_value requireValue = nullptr;
status = napi_call_function(env, global, napiFunc, 1, &param[0], &requireValue);