diff --git a/frameworks/ets/ani/form_extension_ability/include/ets_form_extension.h b/frameworks/ets/ani/form_extension_ability/include/ets_form_extension.h index 2bddeb4300fe92d5b7e46837d30d5139fc7259dc..a991461fc44fd8c75c6ba15128e654408f664c13 100644 --- a/frameworks/ets/ani/form_extension_ability/include/ets_form_extension.h +++ b/frameworks/ets/ani/form_extension_ability/include/ets_form_extension.h @@ -78,6 +78,12 @@ private: bool ExtractFormData(ani_env *env, ani_ref nativeResult, AppExecFwk::FormProviderData &formData, std::vector &formDataProxies); + bool ExtractFormDataProxyFromElement(ani_env* env, ani_object arrayValue, ani_double length, + std::vector& formDataProxies); + + bool FillRecordObjectFromMap(ani_env* env, ani_object recordObject, + ani_method recordSetMethod, const std::map& formEventsMap); + bool ConvertFromDataProxies(ani_env *env, ani_object arrayValue, std::vector &formDataProxies); std::string ANIUtils_ANIStringToStdString(ani_env *env, ani_string ani_str); ani_status ANIUtils_FormIdToAniString(ani_env *env, int64_t formId, ani_string &formIdStr); diff --git a/frameworks/ets/ani/form_extension_ability/include/ets_form_extension_context.h b/frameworks/ets/ani/form_extension_ability/include/ets_form_extension_context.h index 13261bae4d4c245fe45bc09f2af99ff277e23bcd..ff84c108a6428b46a3316a1bcc749d6bbb6a5d52 100644 --- a/frameworks/ets/ani/form_extension_ability/include/ets_form_extension_context.h +++ b/frameworks/ets/ani/form_extension_ability/include/ets_form_extension_context.h @@ -89,10 +89,7 @@ struct ConnectionKey { struct key_compare { bool operator()(const ConnectionKey &key1, const ConnectionKey &key2) const { - if (key1.id < key2.id) { - return true; - } - return false; + return key1.id < key2.id; } }; } // namespace AbilityRuntime diff --git a/frameworks/ets/ani/form_extension_ability/src/ets_form_extension.cpp b/frameworks/ets/ani/form_extension_ability/src/ets_form_extension.cpp index 91624d9d27857a351632e2593858626f5b007cc6..9bceae4155edc8fb8db3f810fa7ba2b298e62752 100644 --- a/frameworks/ets/ani/form_extension_ability/src/ets_form_extension.cpp +++ b/frameworks/ets/ani/form_extension_ability/src/ets_form_extension.cpp @@ -174,19 +174,19 @@ void ETSFormExtension::BindContext(std::shared_ptr &abilityInfo, st return; } ani_ref contextGlobalRef = nullptr; - ani_field field = nullptr; - ani_status status = ANI_ERROR; - - if ((status = env->GlobalReference_Create(contextObj, &contextGlobalRef)) != ANI_OK) { + ani_status status = env->GlobalReference_Create(contextObj, &contextGlobalRef); + if (status != ANI_OK) { TAG_LOGE(AAFwkTag::FORM_EXT, "GlobalReference_Create failed, status : %{public}d", status); return; } - if ((status = env->Class_FindField(etsAbilityObj_->aniCls, "context", &field)) != ANI_OK) { + ani_field field = nullptr; + status = env->Class_FindField(etsAbilityObj_->aniCls, "context", &field); + if (status != ANI_OK || field == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "Class_FindField failed, status : %{public}d", status); return; } - - if ((status = env->Object_SetField_Ref(etsAbilityObj_->aniObj, field, contextGlobalRef)) != ANI_OK) { + status = env->Object_SetField_Ref(etsAbilityObj_->aniObj, field, contextGlobalRef); + if (status != ANI_OK) { TAG_LOGE(AAFwkTag::FORM_EXT, "Object_SetField_Ref failed, status : %{public}d", status); return; } @@ -197,8 +197,9 @@ void ETSFormExtension::BindContext(std::shared_ptr &abilityInfo, st std::string ETSFormExtension::ANIUtils_ANIStringToStdString(ani_env *env, ani_string ani_str) { TAG_LOGI(AAFwkTag::FORM_EXT, "ANIUtils_ANIStringToStdString Call"); - ani_size strSize; - if (ANI_OK != env->String_GetUTF8Size(ani_str, &strSize)) { + ani_size strSize = 0; + ani_status status = env->String_GetUTF8Size(ani_str, &strSize); + if (status != ANI_OK) { TAG_LOGE(AAFwkTag::FORM_EXT, "String_GetUTF8Size Failed"); return ""; } @@ -207,7 +208,8 @@ std::string ETSFormExtension::ANIUtils_ANIStringToStdString(ani_env *env, ani_st char *utf8_buffer = buffer.data(); ani_size bytes_written = 0; - if (ANI_OK != env->String_GetUTF8(ani_str, utf8_buffer, strSize + 1, &bytes_written)) { + status = env->String_GetUTF8(ani_str, utf8_buffer, strSize + 1, &bytes_written); + if (status != ANI_OK) { TAG_LOGE(AAFwkTag::FORM_EXT, "String_GetUTF8 Failed"); return ""; } @@ -228,60 +230,65 @@ bool ETSFormExtension::ConvertFromDataProxies( ani_env *env, ani_object arrayValue, std::vector &formDataProxies) { TAG_LOGI(AAFwkTag::FORM_EXT, "ConvertFromDataProxies Call"); - ani_status status = ANI_OK; if (arrayValue == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "arrayValue null"); return false; } - - ani_double length; - if (ANI_OK != env->Object_GetPropertyByName_Double(arrayValue, "length", &length)) { + ani_double length = 0; + ani_status status = env->Object_GetPropertyByName_Double(arrayValue, "length", &length); + if (status != ANI_OK) { TAG_LOGE(AAFwkTag::FORM_EXT, "Object_GetPropertyByName_Double length Failed"); return false; } + if (!ExtractFormDataProxyFromElement(env, arrayValue, length, formDataProxies)) { + TAG_LOGE(AAFwkTag::FORM_EXT, "ExtractFormDataProxyFromElement Failed"); + return false; + } + TAG_LOGI(AAFwkTag::FORM_EXT, "ConvertFromDataProxies End"); + return true; +} +bool ETSFormExtension::ExtractFormDataProxyFromElement(ani_env* env, ani_object arrayValue, + ani_double length, std::vector& formDataProxies) +{ int proxyLength = static_cast(std::round(length)); for (int i = 0; i < proxyLength; i++) { FormDataProxy formDataProxy("", ""); - ani_ref stringEntryRef; - if (ANI_OK != env->Object_CallMethodByName_Ref( - arrayValue, "$_get", "i:C{std.core.Object}", - &stringEntryRef, (ani_int)i)) { + ani_ref stringEntryRef = nullptr; + ani_status status = env->Object_CallMethodByName_Ref(arrayValue, + "$_get", "i:C{std.core.Object}", &stringEntryRef, (ani_int)i); + if (status != ANI_OK || stringEntryRef == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "Object_CallMethodByName_Ref _get Failed"); return false; } - - ani_field key; - if ((status = env->Class_FindField(etsAbilityObj_->aniCls, "key", &key)) != ANI_OK) { + ani_field key = nullptr; + status = env->Class_FindField(etsAbilityObj_->aniCls, "key", &key); + if (status != ANI_OK || key == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "Class_FindField status : %{public}d", status); return false; } - - ani_ref keyRef; - if ((status = env->Object_GetField_Ref(static_cast(stringEntryRef), key, &keyRef)) != ANI_OK) { + ani_ref keyRef = nullptr; + status = env->Object_GetField_Ref(static_cast(stringEntryRef), key, &keyRef); + if (status != ANI_OK || keyRef == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "Object_GetField_Ref status : %{public}d", status); return false; } - formDataProxy.key = ANIUtils_ANIStringToStdString(env, static_cast(keyRef)); - - ani_field subscriberId; - if ((status = env->Class_FindField(etsAbilityObj_->aniCls, "subscriberId", &subscriberId)) != ANI_OK) { + ani_field subscriberId = nullptr; + status = env->Class_FindField(etsAbilityObj_->aniCls, "subscriberId", &subscriberId); + if (status != ANI_OK || subscriberId == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "Class_FindField status : %{public}d", status); return false; } - - ani_ref subscriberIdRef; + ani_ref subscriberIdRef = nullptr; status = env->Object_GetField_Ref(static_cast(stringEntryRef), subscriberId, &subscriberIdRef); - if (status != ANI_OK) { + if (status != ANI_OK || subscriberIdRef == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "Object_GetField_Ref status : %{public}d", status); return false; } - formDataProxy.subscribeId = ANIUtils_ANIStringToStdString(env, static_cast(subscriberIdRef)); formDataProxies.push_back(formDataProxy); } - TAG_LOGI(AAFwkTag::FORM_EXT, "ConvertFromDataProxies End"); return true; } @@ -361,23 +368,23 @@ bool ETSFormExtension::ExtractFormData(ani_env *env, ani_ref nativeResult, AppEx { ani_status status = ANI_OK; - ani_class cls{}; + ani_class cls = nullptr; status = env->FindClass(FORM_BINDING_DATA_CLASS_NAME, &cls); if (status != ANI_OK || cls == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "FindClass status: %{public}d", status); return false; } - ani_method data{}; + ani_method data = nullptr; status = env->Class_FindMethod(cls, Builder::BuildGetterName("data").c_str(), nullptr, &data); - if (status != ANI_OK) { + if (status != ANI_OK || data == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "Class_FindMethod data status: %{public}d", status); return false; } - ani_ref dataRef; + ani_ref dataRef = nullptr; status = env->Object_CallMethod_Ref(static_cast(nativeResult), data, &dataRef); - if (status != ANI_OK) { + if (status != ANI_OK || dataRef == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "Object_CallMethod_Ref data status: %{public}d", status); return false; } @@ -385,22 +392,23 @@ bool ETSFormExtension::ExtractFormData(ani_env *env, ani_ref nativeResult, AppEx std::string dataStr = ANIUtils_ANIStringToStdString(env, static_cast(dataRef)); formData = AppExecFwk::FormProviderData(dataStr); - ani_method proxies; + ani_method proxies = nullptr; status = env->Class_FindMethod(cls, Builder::BuildGetterName("proxies").c_str(), nullptr, &proxies); - if (status != ANI_OK) { + if (status != ANI_OK || proxies == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "Class_FindMethod proxies status: %{public}d", status); return true; } - ani_ref proxiesRef; + ani_ref proxiesRef = nullptr; status = env->Object_CallMethod_Ref(static_cast(nativeResult), proxies, &proxiesRef); - if (status != ANI_OK) { + if (status != ANI_OK || proxiesRef == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "Object_CallMethod_Ref proxies status: %{public}d", status); return true; } ani_boolean isUndefined = ANI_TRUE; - if ((status = env->Reference_IsUndefined(proxiesRef, &isUndefined)) != ANI_OK) { + status = env->Reference_IsUndefined(proxiesRef, &isUndefined); + if (status != ANI_OK) { TAG_LOGE(AAFwkTag::FORM_EXT, "Reference_IsUndefined status: %{public}d", status); } @@ -589,46 +597,69 @@ bool ETSFormExtension::CreateAndFillRecordObject(ani_env *env, const std::mapFindClass(RECORD_CLASS_NAME, &recordCls); if (status != ANI_OK) { TAG_LOGE(AAFwkTag::FORM_EXT, "FindClass failed status: %{public}d", status); return false; } - ani_method objectMethod; - if ((status = env->Class_FindMethod(recordCls, "", ":", &objectMethod)) != ANI_OK) { + ani_method objectMethod = nullptr; + status = env->Class_FindMethod(recordCls, "", ":", &objectMethod); + if (status != ANI_OK || objectMethod == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "Class_FindMethod constructor failed: %{public}d", status); return false; } - if ((status = env->Object_New(recordCls, objectMethod, &recordObject)) != ANI_OK) { + status = env->Object_New(recordCls, objectMethod, &recordObject); + if (status != ANI_OK) { TAG_LOGE(AAFwkTag::FORM_EXT, "Object_New failed: %{public}d", status); return false; } - ani_method recordSetMethod; + ani_method recordSetMethod = nullptr; status = env->Class_FindMethod(recordCls, "$_set", "Lstd/core/Object;Lstd/core/Object;:V", &recordSetMethod); - if (status != ANI_OK) { + if (status != ANI_OK || recordSetMethod == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "Class_FindMethod set failed: %{public}d", status); return false; } + if (!FillRecordObjectFromMap(env, recordObject, recordSetMethod, formEventsMap)) { + TAG_LOGE(AAFwkTag::FORM_EXT, "Failed to fill record object"); + return false; + } + return true; +} + +bool ETSFormExtension::FillRecordObjectFromMap(ani_env* env, ani_object recordObject, + ani_method recordSetMethod, const std::map& formEventsMap) +{ for (auto iter = formEventsMap.begin(); iter != formEventsMap.end(); ++iter) { std::string key = std::to_string(iter->first); - ani_string ani_key; + ani_string ani_key = nullptr; ani_int ani_value = iter->second; - if ((status = env->String_NewUTF8(key.c_str(), key.length(), &ani_key)) != ANI_OK) { + ani_status status = env->String_NewUTF8(key.c_str(), key.length(), &ani_key); + if (status != ANI_OK) { TAG_LOGE(AAFwkTag::FORM_EXT, "String_NewUTF8 key failed status : %{public}d", status); return false; } static const char *className = "C{std.core.Int}"; - ani_class persion_cls; - if (ANI_OK != env->FindClass(className, &persion_cls)) { + ani_class persion_cls = nullptr; + status = env->FindClass(className, &persion_cls); + if (status != ANI_OK || persion_cls == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "FindClass failed status: %{public}d", status); return false; } - ani_method personInfoCtor; - env->Class_FindMethod(persion_cls, "", "i:", &personInfoCtor); - ani_object personInfoObj; - env->Object_New(persion_cls, personInfoCtor, &personInfoObj, ani_value); - if ((status = env->Object_CallMethod_Void(recordObject, recordSetMethod, ani_key, personInfoObj)) != ANI_OK) { + ani_method personInfoCtor = nullptr; + status = env->Class_FindMethod(persion_cls, "", "i:", &personInfoCtor); + if (status != ANI_OK || personInfoCtor == nullptr) { + TAG_LOGE(AAFwkTag::FORM_EXT, "Class_FindMethod failed status: %{public}d", status); + return false; + } + ani_object personInfoObj = nullptr; + status = env->Object_New(persion_cls, personInfoCtor, &personInfoObj, ani_value); + if (status != ANI_OK || personInfoObj == nullptr) { + TAG_LOGE(AAFwkTag::FORM_EXT, "Class_FindMethod failed status: %{public}d", status); + return false; + } + status = env->Object_CallMethod_Void(recordObject, recordSetMethod, ani_key, personInfoObj); + if (status != ANI_OK) { TAG_LOGE(AAFwkTag::FORM_EXT, "Object_CallMethod_Void failed status : %{public}d", status); return false; } @@ -779,7 +810,7 @@ bool ETSFormExtension::OnShare(int64_t formId, AAFwk::WantParams &wantParams) bool ETSFormExtension::OnAcquireData(int64_t formId, AAFwk::WantParams &wantParams) { - TAG_LOGI(AAFwkTag::FORM_EXT, "OnShare Call"); + TAG_LOGI(AAFwkTag::FORM_EXT, "OnAcquireData Call"); auto env = etsRuntime_.GetAniEnv(); if (env == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "env nullptr"); @@ -832,7 +863,7 @@ void ETSFormExtension::OnFormLocationChanged(const int64_t formId, const int32_t status = env->Object_CallMethod_Void(etsAbilityObj_->aniObj, function, formIdStr, formLocationStateItem); if (status != ANI_OK) { - TAG_LOGE(AAFwkTag::FORM_EXT, "Object_New status : %{public}d", status); + TAG_LOGE(AAFwkTag::FORM_EXT, "Object_CallMethod_Void status : %{public}d", status); return; } } diff --git a/frameworks/ets/ani/form_extension_ability/src/ets_form_extension_context.cpp b/frameworks/ets/ani/form_extension_ability/src/ets_form_extension_context.cpp index 4738fd384072319c928ff366491ca0087a98ce59..77405d3131cc732596ef0f0d5787be859275e184 100644 --- a/frameworks/ets/ani/form_extension_ability/src/ets_form_extension_context.cpp +++ b/frameworks/ets/ani/form_extension_ability/src/ets_form_extension_context.cpp @@ -62,8 +62,8 @@ bool BindNativeMethods(ani_env *env, ani_class &cls) ani_native_function { "nativeCheckConnectionAbility", SIGNATURE_CHECK_CONNECTION, reinterpret_cast(ETSFormExtensionContext::CheckConnectionAbility) }, }; - if ((status = env->Class_BindNativeMethods(cls, functions.data(), functions.size())) != ANI_OK - && status != ANI_ALREADY_BINDED) { + status = env->Class_BindNativeMethods(cls, functions.data(), functions.size()); + if (status != ANI_OK && status != ANI_ALREADY_BINDED) { TAG_LOGE(AAFwkTag::FORM_EXT, "bind method status: %{public}d", status); return false; } @@ -76,8 +76,8 @@ bool BindNativeMethods(ani_env *env, ani_class &cls) std::array CleanerMethods = { ani_native_function { "clean", nullptr, reinterpret_cast(ETSFormExtensionContext::Finalizer) }, }; - if ((status = env->Class_BindNativeMethods(cleanerCls, CleanerMethods.data(), CleanerMethods.size())) != ANI_OK - && status != ANI_ALREADY_BINDED) { + status = env->Class_BindNativeMethods(cleanerCls, CleanerMethods.data(), CleanerMethods.size()); + if (status != ANI_OK && status != ANI_ALREADY_BINDED) { TAG_LOGE(AAFwkTag::FORM_EXT, "bind method status: %{public}d", status); return false; } @@ -88,13 +88,11 @@ bool CheckConnectionParam(ani_object connectOptionsObj, { connection->SetConnectionRef(connectOptionsObj); ConnectionKey key; + std::lock_guard lock(g_connectsMutex_); key.id = g_serialNumber; key.want = want; connection->SetConnectionId(key.id); - { - std::lock_guard lock(g_connectsMutex_); - g_connects.emplace(key, connection); - } + g_connects.emplace(key, connection); if (g_serialNumber < INT32_MAX) { g_serialNumber++; } else { @@ -105,7 +103,7 @@ bool CheckConnectionParam(ani_object connectOptionsObj, } void FindConnection(AAFwk::Want& want, - sptr& connection, int64_t& connectId) + sptr& connection, int64_t connectId) { TAG_LOGD(AAFwkTag::FORM_EXT, "connection:%{public}d", static_cast(connectId)); std::lock_guard lock(g_connectsMutex_); @@ -120,7 +118,6 @@ void FindConnection(AAFwk::Want& want, connection = item->second; TAG_LOGD(AAFwkTag::FORM_EXT, "ability not exist"); } - return; } void RemoveConnection(int64_t connectId) @@ -149,8 +146,9 @@ void ETSFormExtensionContext::Finalizer(ani_env *env, ani_object obj) TAG_LOGE(AAFwkTag::FORM_EXT, "null env"); return; } - ani_long nativeEtsContextPtr; - if (env->Object_GetFieldByName_Long(obj, "nativeEtsContext", &nativeEtsContextPtr) != ANI_OK) { + ani_long nativeEtsContextPtr = 0; + ani_status status = env->Object_GetFieldByName_Long(obj, "nativeEtsContext", &nativeEtsContextPtr); + if (status != ANI_OK) { TAG_LOGE(AAFwkTag::FORM_EXT, "Failed to get nativeEtsContext"); return; } @@ -233,22 +231,25 @@ ETSFormExtensionContext *ETSFormExtensionContext::GetEtsAbilityContext(ani_env * { TAG_LOGD(AAFwkTag::FORM_EXT, "GetEtsAbilityContext"); ani_class cls = nullptr; - ani_long nativeContextLong; + ani_long nativeContextLong = 0; ani_field contextField = nullptr; ani_status status = ANI_ERROR; if (env == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "null env"); return nullptr; } - if ((status = env->FindClass(FORM_EXTENSION_CONTEXT_CLASS_NAME, &cls)) != ANI_OK) { + status = env->FindClass(FORM_EXTENSION_CONTEXT_CLASS_NAME, &cls); + if (status != ANI_OK) { TAG_LOGE(AAFwkTag::FORM_EXT, "Failed to find class, status : %{public}d", status); return nullptr; } - if ((status = env->Class_FindField(cls, "nativeEtsContext", &contextField)) != ANI_OK) { + status = env->Class_FindField(cls, "nativeEtsContext", &contextField); + if (status != ANI_OK) { TAG_LOGE(AAFwkTag::FORM_EXT, "Failed to find filed, status : %{public}d", status); return nullptr; } - if ((status = env->Object_GetField_Long(aniObj, contextField, &nativeContextLong)) != ANI_OK) { + status = env->Object_GetField_Long(aniObj, contextField, &nativeContextLong); + if (status != ANI_OK) { TAG_LOGE(AAFwkTag::FORM_EXT, "Failed to get filed, status : %{public}d", status); return nullptr; } @@ -309,7 +310,8 @@ ani_long ETSFormExtensionContext::OnConnectAbility(ani_env *env, ani_object aniO return ERROR_LONG_VALUE; } ani_vm *etsVm = nullptr; - if (env->GetVM(&etsVm) != ANI_OK || etsVm == nullptr) { + ani_status status = env->GetVM(&etsVm); + if (status != ANI_OK || etsVm == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "Failed to getVM"); EtsErrorUtil::ThrowError(env, AbilityErrorCode::ERROR_CODE_INNER); return ERROR_LONG_VALUE; @@ -381,8 +383,8 @@ ani_object CreateEtsFormExtensionContext(ani_env *env, std::shared_ptrFindClass(FORM_EXTENSION_CONTEXT_CLASS_NAME, &cls)) != ANI_OK || cls == nullptr) { + ani_status status = env->FindClass(FORM_EXTENSION_CONTEXT_CLASS_NAME, &cls); + if (status != ANI_OK || cls == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "Failed to find class, status: %{public}d", status); return nullptr; } @@ -391,23 +393,20 @@ ani_object CreateEtsFormExtensionContext(ani_env *env, std::shared_ptrClass_FindMethod(cls, "", "J:V", &method)) != ANI_OK || method == nullptr) { + status = env->Class_FindMethod(cls, "", "J:V", &method); + if (status != ANI_OK || method == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "Failed to find constructor, status : %{public}d", status); return nullptr; } std::unique_ptr workContext = std::make_unique(context); - if (workContext == nullptr) { - TAG_LOGE(AAFwkTag::FORM_EXT, "Failed to create etsFormExtensionContext"); - return nullptr; - } auto formContextPtr = new std::weak_ptr (workContext->GetAbilityContext()); if (formContextPtr == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "formContextPtr is nullptr"); return nullptr; } ani_object contextObj = nullptr; - if ((status = env->Object_New(cls, method, &contextObj, (ani_long)workContext.release())) != ANI_OK || - contextObj == nullptr) { + status = env->Object_New(cls, method, &contextObj, (ani_long)workContext.release()); + if (status != ANI_OK || contextObj == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "Failed to create object, status : %{public}d", status); return nullptr; } @@ -436,7 +435,8 @@ void ETSFormExtensionConnection::RemoveConnectionObject() { if (etsVm_ != nullptr && stsConnectionRef_ != nullptr) { ani_env *env = nullptr; - if (etsVm_->GetEnv(ANI_VERSION_1, &env) == ANI_OK && env != nullptr) { + ani_status status = etsVm_->GetEnv(ANI_VERSION_1, &env); + if (status == ANI_OK && env != nullptr) { env->GlobalReference_Delete(stsConnectionRef_); stsConnectionRef_ = nullptr; } @@ -455,14 +455,15 @@ void ETSFormExtensionConnection::CallEtsFailed(int32_t errorCode) return; } ani_env *env = nullptr; - ani_status status = ANI_OK; - if ((status = etsVm_->GetEnv(ANI_VERSION_1, &env)) != ANI_OK || env == nullptr) { + ani_status status = status = etsVm_->GetEnv(ANI_VERSION_1, &env); + if (status != ANI_OK || env == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "Failed to get env, status: %{public}d", status); return; } - ani_ref funRef; - if ((status = env->Object_GetPropertyByName_Ref(reinterpret_cast(stsConnectionRef_), - "onFailed", &funRef)) != ANI_OK) { + ani_ref funRef = nullptr; + status = env->Object_GetPropertyByName_Ref(reinterpret_cast(stsConnectionRef_), + "onFailed", &funRef); + if (status != ANI_OK) { TAG_LOGE(AAFwkTag::FORM_EXT, "get onFailed failed status : %{public}d", status); return; } @@ -475,10 +476,10 @@ void ETSFormExtensionConnection::CallEtsFailed(int32_t errorCode) TAG_LOGE(AAFwkTag::FORM_EXT, "null errorCodeObj"); return; } - ani_ref result; + ani_ref result = nullptr; std::vector argv = { errorCodeObj }; - if ((status = env->FunctionalObject_Call(reinterpret_cast(funRef), ARGC_ONE, argv.data(), - &result)) != ANI_OK) { + status = env->FunctionalObject_Call(reinterpret_cast(funRef), ARGC_ONE, argv.data(), &result); + if (status != ANI_OK) { TAG_LOGE(AAFwkTag::FORM_EXT, "Failed to call onFailed, status: %{public}d", status); } } @@ -490,12 +491,13 @@ void ETSFormExtensionConnection::SetConnectionRef(ani_object connectOptionsObj) return; } ani_env *env = nullptr; - ani_status status = ANI_ERROR; - if ((status = etsVm_->GetEnv(ANI_VERSION_1, &env)) != ANI_OK || env == nullptr) { + ani_status status = etsVm_->GetEnv(ANI_VERSION_1, &env); + if (status != ANI_OK || env == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "status: %{public}d", status); return; } - if ((status = env->GlobalReference_Create(connectOptionsObj, &stsConnectionRef_)) != ANI_OK) { + status = env->GlobalReference_Create(connectOptionsObj, &stsConnectionRef_); + if (status != ANI_OK) { TAG_LOGE(AAFwkTag::FORM_EXT, "status: %{public}d", status); } } @@ -530,10 +532,10 @@ void ETSFormExtensionConnection::OnAbilityConnectDone( DetachCurrentThread(); return; } - ani_status status = ANI_ERROR; - ani_ref funRef; - if ((status = env->Object_GetPropertyByName_Ref(reinterpret_cast(stsConnectionRef_), - "onConnect", &funRef)) != ANI_OK) { + ani_ref funRef = nullptr; + ani_status status = env->Object_GetPropertyByName_Ref(reinterpret_cast(stsConnectionRef_), + "onConnect", &funRef); + if (status != ANI_OK || funRef == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "get onConnect failed status : %{public}d", status); return; } @@ -541,10 +543,10 @@ void ETSFormExtensionConnection::OnAbilityConnectDone( TAG_LOGI(AAFwkTag::FORM_EXT, "invalid onConnect property"); return; } - ani_ref result; + ani_ref result = nullptr; std::vector argv = { refElement, refRemoteObject}; - if ((status = env->FunctionalObject_Call(reinterpret_cast(funRef), ARGC_TWO, argv.data(), - &result)) != ANI_OK) { + status = env->FunctionalObject_Call(reinterpret_cast(funRef), ARGC_TWO, argv.data(), &result); + if (status != ANI_OK || result == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "Failed to call onConnect, status: %{public}d", status); } DetachCurrentThread(); @@ -568,10 +570,10 @@ void ETSFormExtensionConnection::OnAbilityDisconnectDone(const AppExecFwk::Eleme DetachCurrentThread(); return; } - ani_status status = ANI_ERROR; - ani_ref funRef; - if ((status = env->Object_GetPropertyByName_Ref(reinterpret_cast(stsConnectionRef_), - "onDisconnect", &funRef)) != ANI_OK) { + ani_ref funRef = nullptr; + ani_status status = env->Object_GetPropertyByName_Ref(reinterpret_cast(stsConnectionRef_), + "onDisconnect", &funRef); + if (status != ANI_OK || funRef == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "get onDisconnect failed status : %{public}d", status); return; } @@ -579,10 +581,11 @@ void ETSFormExtensionConnection::OnAbilityDisconnectDone(const AppExecFwk::Eleme TAG_LOGI(AAFwkTag::FORM_EXT, "invalid onDisconnect property"); return; } - ani_ref result; + ani_ref result = nullptr; std::vector argv = { refElement }; - if ((status = env->FunctionalObject_Call(reinterpret_cast(funRef), ARGC_ONE, argv.data(), - &result)) != ANI_OK) { + status = env->FunctionalObject_Call(reinterpret_cast(funRef), ARGC_ONE, argv.data(), + &result); + if (status != ANI_OK || result == nullptr) { TAG_LOGE(AAFwkTag::FORM_EXT, "Failed to call onDisconnect, status: %{public}d", status); } DetachCurrentThread(); @@ -591,13 +594,14 @@ void ETSFormExtensionConnection::OnAbilityDisconnectDone(const AppExecFwk::Eleme ani_env *ETSFormExtensionConnection::AttachCurrentThread() { ani_env *env = nullptr; - ani_status status = ANI_ERROR; - if ((status = etsVm_->GetEnv(ANI_VERSION_1, &env)) == ANI_OK) { + ani_status status = etsVm_->GetEnv(ANI_VERSION_1, &env); + if (status == ANI_OK) { return env; } ani_option interopEnabled { "--interop=disable", nullptr }; ani_options aniArgs { 1, &interopEnabled }; - if ((status = etsVm_->AttachCurrentThread(&aniArgs, ANI_VERSION_1, &env)) != ANI_OK) { + status = etsVm_->AttachCurrentThread(&aniArgs, ANI_VERSION_1, &env); + if (status != ANI_OK) { TAG_LOGE(AAFwkTag::FORM_EXT, "status: %{public}d", status); return nullptr; }