From a600270f12d70484c3d0118883ba21f42e6b635b Mon Sep 17 00:00:00 2001 From: zhangzezhong Date: Wed, 23 Jul 2025 11:03:39 +0800 Subject: [PATCH] number to idl Signed-off-by: zhangzezhong --- .../src/ani_common_start_options.cpp | 4 +- .../ani/ani_common/src/ani_common_util.cpp | 48 +++++++++++++++++-- .../ani/app_manager/src/ets_app_manager.cpp | 24 +++++----- .../src/ets_service_extension_context.cpp | 2 +- .../ui_ability/src/ets_ability_context.cpp | 4 +- .../src/ets_ui_extension_context.cpp | 4 +- ...@ohos.app.ability.AtomicServiceOptions.ets | 2 +- frameworks/ets/ets/ability/connectOptions.ets | 6 +-- 8 files changed, 67 insertions(+), 27 deletions(-) diff --git a/frameworks/ets/ani/ani_common/src/ani_common_start_options.cpp b/frameworks/ets/ani/ani_common/src/ani_common_start_options.cpp index 5a7823d5892..6df004f26b8 100644 --- a/frameworks/ets/ani/ani_common/src/ani_common_start_options.cpp +++ b/frameworks/ets/ani/ani_common/src/ani_common_start_options.cpp @@ -309,8 +309,8 @@ bool UnwrapAtomicServiceOptions(ani_env *env, ani_object optionsObj, AAFwk::Want TAG_LOGE(AAFwkTag::ANI, "UnwrapWantParams failed"); } } - double flags = 0.0; - if (GetDoublePropertyObject(env, optionsObj, "flags", flags)) { + int32_t flags = 0; + if (GetIntPropertyObject(env, optionsObj, "flags", flags)) { want.SetFlags(flags); } return true; diff --git a/frameworks/ets/ani/ani_common/src/ani_common_util.cpp b/frameworks/ets/ani/ani_common/src/ani_common_util.cpp index 5c094288213..34eda52d4ae 100644 --- a/frameworks/ets/ani/ani_common/src/ani_common_util.cpp +++ b/frameworks/ets/ani/ani_common/src/ani_common_util.cpp @@ -214,8 +214,23 @@ bool GetFieldIntByName(ani_env *env, ani_object object, const char *name, int32_ return false; } ani_status status = ANI_ERROR; + ani_ref field = nullptr; + if ((status = env->Object_GetFieldByName_Ref(object, name, &field)) != ANI_OK) { + TAG_LOGE(AAFwkTag::ANI, "status: %{public}d", status); + return false; + } + ani_boolean isUndefined = ANI_TRUE; + if ((status = env->Reference_IsUndefined(field, &isUndefined)) != ANI_OK) { + TAG_LOGE(AAFwkTag::ANI, "status: %{public}d", status); + return false; + } + if (isUndefined) { + TAG_LOGE(AAFwkTag::ANI, "%{public}s: undefined", name); + return false; + } ani_int aniInt = 0; - if ((status = env->Object_GetFieldByName_Int(object, name, &aniInt)) != ANI_OK) { + if ((status = env->Object_CallMethodByName_Int( + reinterpret_cast(field), "intValue", nullptr, &aniInt)) != ANI_OK) { TAG_LOGE(AAFwkTag::ANI, "status: %{public}d", status); return false; } @@ -235,7 +250,12 @@ bool SetFieldIntByName(ani_env *env, ani_class cls, ani_object object, const cha TAG_LOGE(AAFwkTag::ANI, "status: %{public}d", status); return false; } - if ((status = env->Object_SetField_Int(object, field, value)) != ANI_OK) { + ani_object obj = CreateInt(env, value); + if (obj == nullptr) { + TAG_LOGE(AAFwkTag::ANI, "obj is null"); + return false; + } + if ((status = env->Object_SetField_Ref(object, field, reinterpret_cast(obj))) != ANI_OK) { TAG_LOGE(AAFwkTag::ANI, "status: %{public}d", status); return false; } @@ -249,8 +269,23 @@ bool GetFieldLongByName(ani_env *env, ani_object object, const char *name, int64 return false; } ani_status status = ANI_ERROR; + ani_ref field = nullptr; + if ((status = env->Object_GetFieldByName_Ref(object, name, &field)) != ANI_OK) { + TAG_LOGE(AAFwkTag::ANI, "status: %{public}d", status); + return false; + } + ani_boolean isUndefined = ANI_TRUE; + if ((status = env->Reference_IsUndefined(field, &isUndefined)) != ANI_OK) { + TAG_LOGE(AAFwkTag::ANI, "status: %{public}d", status); + return false; + } + if (isUndefined) { + TAG_LOGE(AAFwkTag::ANI, "%{public}s: undefined", name); + return false; + } ani_long aniLong = 0; - if ((status = env->Object_GetFieldByName_Long(object, name, &aniLong)) != ANI_OK) { + if ((status = env->Object_CallMethodByName_Long( + reinterpret_cast(field), "longValue", nullptr, &aniLong)) != ANI_OK) { TAG_LOGE(AAFwkTag::ANI, "status: %{public}d", status); return false; } @@ -270,7 +305,12 @@ bool SetFieldLongByName(ani_env *env, ani_class cls, ani_object object, const ch TAG_LOGE(AAFwkTag::ANI, "status: %{public}d", status); return false; } - if ((status = env->Object_SetField_Long(object, field, value)) != ANI_OK) { + ani_object obj = CreateLong(env, value); + if (obj == nullptr) { + TAG_LOGE(AAFwkTag::ANI, "CreateLong failed"); + return false; + } + if ((status = env->Object_SetField_Ref(object, field, reinterpret_cast(obj))) != ANI_OK) { TAG_LOGE(AAFwkTag::ANI, "status: %{public}d", status); return false; } diff --git a/frameworks/ets/ani/app_manager/src/ets_app_manager.cpp b/frameworks/ets/ani/app_manager/src/ets_app_manager.cpp index 75f1fde8c77..f4f9c5ea70e 100644 --- a/frameworks/ets/ani/app_manager/src/ets_app_manager.cpp +++ b/frameworks/ets/ani/app_manager/src/ets_app_manager.cpp @@ -47,10 +47,10 @@ constexpr const char* ON_OFF_TYPE_ABILITY_FIRST_FRAME_STATE = "abilityFirstFrame constexpr const char* ON_OFF_TYPE_APP_FOREGROUND_STATE = "appForegroundState"; constexpr const char *APPLICATION_STATE_WITH_BUNDLELIST_ON_SIGNATURE = - "Lstd/core/String;Lapplication/ApplicationStateObserver/ApplicationStateObserver;Lescompat/Array;:D"; + "Lstd/core/String;Lapplication/ApplicationStateObserver/ApplicationStateObserver;Lescompat/Array;:I"; constexpr const char *APPLICATION_STATE_ON_SIGNATURE = - "Lstd/core/String;Lapplication/ApplicationStateObserver/ApplicationStateObserver;:D"; -constexpr const char *APPLICATION_STATE_OFF_SIGNATURE = "Lstd/core/String;DLutils/AbilityUtils/AsyncCallbackWrapper;:V"; + "Lstd/core/String;Lapplication/ApplicationStateObserver/ApplicationStateObserver;:I"; +constexpr const char *APPLICATION_STATE_OFF_SIGNATURE = "Lstd/core/String;ILutils/AbilityUtils/AsyncCallbackWrapper;:V"; static const char* ON_SIGNATURE_ABILITY_FIRST_FRAME_STATE = "Lstd/core/String;Lapplication/AbilityFirstFrameStateObserver/AbilityFirstFrameStateObserver;Lstd/core/String;:V"; static const char* ON_SIGNATURE_APP_FOREGROUND_STATE @@ -94,10 +94,10 @@ public: ani_env *env, ani_string aniBundleName, ani_int aniUserId, ani_boolean enable, ani_object callback); static void NativeGetKeepAliveBundles(ani_env *env, ani_object callback, ani_enum_item aniType, ani_object aniUserId); - static ani_double OnOnApplicationStateWithBundleList(ani_env *env, ani_string type, + static ani_int OnOnApplicationStateWithBundleList(ani_env *env, ani_string type, ani_object observer, ani_object etsBundleNameList); - static ani_double OnOnApplicationState(ani_env *env, ani_string type, ani_object observer); - static void OnOff(ani_env *env, ani_string type, ani_double etsObserverId, ani_object callback); + static ani_int OnOnApplicationState(ani_env *env, ani_string type, ani_object observer); + static void OnOff(ani_env *env, ani_string type, ani_int etsObserverId, ani_object callback); static void OnOnAppForegroundState(ani_env *env, ani_string type, ani_object observer); static void OnOffAppForegroundState(ani_env *env, ani_string type, ani_object observer); static void OnOnAbilityFirstFrameState( @@ -112,7 +112,7 @@ private: #endif static bool CheckOnOnApplicationStateInnerParam(ani_env *env, ani_string type, ani_object observer, ani_object etsBundleNameList, std::vector &bundleNameList); - static ani_double OnOnApplicationStateInner( + static ani_int OnOnApplicationStateInner( ani_env *env, ani_string type, ani_object observer, ani_object aniBundleNameList); static void KillProcessesByBundleNameInner(ani_env *env, ani_object callback, ani_string etsBundleName, ani_boolean clearPageStack, ani_object etsAppIndex); @@ -441,7 +441,7 @@ bool EtsAppManager::CheckOnOnApplicationStateInnerParam(ani_env *env, ani_string return true; } -ani_double EtsAppManager::OnOnApplicationStateInner(ani_env *env, ani_string type, ani_object observer, +ani_int EtsAppManager::OnOnApplicationStateInner(ani_env *env, ani_string type, ani_object observer, ani_object etsBundleNameList) { TAG_LOGD(AAFwkTag::APPMGR, "OnOnApplicationStateInner called"); @@ -478,13 +478,13 @@ ani_double EtsAppManager::OnOnApplicationStateInner(ani_env *env, ani_string typ return ANI_ERROR; } -ani_double EtsAppManager::OnOnApplicationStateWithBundleList(ani_env *env, ani_string type, +ani_int EtsAppManager::OnOnApplicationStateWithBundleList(ani_env *env, ani_string type, ani_object observer, ani_object etsBundleNameList) { return OnOnApplicationStateInner(env, type, observer, etsBundleNameList); } -ani_double EtsAppManager::OnOnApplicationState(ani_env *env, ani_string type, ani_object observer) +ani_int EtsAppManager::OnOnApplicationState(ani_env *env, ani_string type, ani_object observer) { ani_ref undefined = nullptr; if (env == nullptr) { @@ -495,7 +495,7 @@ ani_double EtsAppManager::OnOnApplicationState(ani_env *env, ani_string type, an return OnOnApplicationStateInner(env, type, observer, static_cast(undefined)); } -void EtsAppManager::OnOff(ani_env *env, ani_string type, ani_double etsObserverId, ani_object callback) +void EtsAppManager::OnOff(ani_env *env, ani_string type, ani_int etsObserverId, ani_object callback) { TAG_LOGD(AAFwkTag::APPMGR, "OnOff called"); if (env == nullptr) { @@ -509,7 +509,7 @@ void EtsAppManager::OnOff(ani_env *env, ani_string type, ani_double etsObserverI env, "Parse param type failed, must be a string, value must be applicationState."); return; } - TAG_LOGD(AAFwkTag::APPMGR, "observerId:%{public}f", etsObserverId); + TAG_LOGD(AAFwkTag::APPMGR, "observerId:%{public}d", etsObserverId); int64_t observerId = static_cast(etsObserverId); sptr appMgr = GetAppManagerInstance(); diff --git a/frameworks/ets/ani/service_extension_ability/src/ets_service_extension_context.cpp b/frameworks/ets/ani/service_extension_ability/src/ets_service_extension_context.cpp index 9eb8e837a4a..05fe8a0f637 100644 --- a/frameworks/ets/ani/service_extension_ability/src/ets_service_extension_context.cpp +++ b/frameworks/ets/ani/service_extension_ability/src/ets_service_extension_context.cpp @@ -602,7 +602,7 @@ void ETSServiceExtensionConnection::CallEtsFailed(int32_t errorCode) TAG_LOGE(AAFwkTag::SERVICE_EXT, "Failed to get env, status: %{public}d", status); return; } - status = env->Object_CallMethodByName_Void(reinterpret_cast(stsConnectionRef_), "onFailed", "D:V", + status = env->Object_CallMethodByName_Void(reinterpret_cast(stsConnectionRef_), "onFailed", "I:V", static_cast(errorCode)); if (status != ANI_OK) { TAG_LOGE(AAFwkTag::SERVICE_EXT, "Failed to call onFailed, status: %{public}d", status); diff --git a/frameworks/ets/ani/ui_ability/src/ets_ability_context.cpp b/frameworks/ets/ani/ui_ability/src/ets_ability_context.cpp index 378cf7218a7..f39e9451768 100644 --- a/frameworks/ets/ani/ui_ability/src/ets_ability_context.cpp +++ b/frameworks/ets/ani/ui_ability/src/ets_ability_context.cpp @@ -1496,8 +1496,8 @@ void ETSAbilityConnection::CallEtsFailed(int32_t errorCode) TAG_LOGE(AAFwkTag::CONTEXT, "Failed to get env, status: %{public}d", status); return; } - status = env->Object_CallMethodByName_Void(reinterpret_cast(stsConnectionRef_), "onFailed", "D:V", - static_cast(errorCode)); + status = env->Object_CallMethodByName_Void(reinterpret_cast(stsConnectionRef_), "onFailed", "I:V", + errorCode); if (status != ANI_OK) { TAG_LOGE(AAFwkTag::CONTEXT, "Failed to call onFailed, status: %{public}d", status); } diff --git a/frameworks/ets/ani/ui_extension_ability/src/ets_ui_extension_context.cpp b/frameworks/ets/ani/ui_extension_ability/src/ets_ui_extension_context.cpp index 2d8ccd2c97a..3b5051a2483 100644 --- a/frameworks/ets/ani/ui_extension_ability/src/ets_ui_extension_context.cpp +++ b/frameworks/ets/ani/ui_extension_ability/src/ets_ui_extension_context.cpp @@ -652,7 +652,7 @@ void EtsUIExtensionConnection::CallEtsFailed(int32_t errorCode) return; } ani_method method = nullptr; - if ((status = env->Class_FindMethod(cls, "onFailed", "D:V", &method))) { + if ((status = env->Class_FindMethod(cls, "onFailed", "I:V", &method))) { TAG_LOGE(AAFwkTag::UI_EXT, "Failed to find onFailed method, status: %{public}d", status); return; } @@ -661,7 +661,7 @@ void EtsUIExtensionConnection::CallEtsFailed(int32_t errorCode) return; } status = env->Object_CallMethod_Void( - reinterpret_cast(stsConnectionRef_), method, static_cast(errorCode)); + reinterpret_cast(stsConnectionRef_), method, errorCode); if (status != ANI_OK) { TAG_LOGE(AAFwkTag::UI_EXT, "Object_CallMethod_Void status: %{public}d", status); } diff --git a/frameworks/ets/ets/@ohos.app.ability.AtomicServiceOptions.ets b/frameworks/ets/ets/@ohos.app.ability.AtomicServiceOptions.ets index 2aeb96bb5da..366dc566859 100644 --- a/frameworks/ets/ets/@ohos.app.ability.AtomicServiceOptions.ets +++ b/frameworks/ets/ets/@ohos.app.ability.AtomicServiceOptions.ets @@ -16,6 +16,6 @@ import StartOptions from '@ohos.app.ability.StartOptions'; export default class AtomicServiceOptions extends StartOptions { - flags?: number; + flags?: int; parameters?: Record; } \ No newline at end of file diff --git a/frameworks/ets/ets/ability/connectOptions.ets b/frameworks/ets/ets/ability/connectOptions.ets index 6baaa29136a..f19b251c967 100644 --- a/frameworks/ets/ets/ability/connectOptions.ets +++ b/frameworks/ets/ets/ability/connectOptions.ets @@ -19,7 +19,7 @@ import rpc from '@ohos.rpc'; export interface ConnectOptions { onConnect(elementName: ElementName, remote: rpc.IRemoteObject): void; onDisconnect(elementName: ElementName): void; - onFailed(code: number): void; + onFailed(code: int): void; } class ConnectOptionsInner implements ConnectOptions { @@ -29,7 +29,7 @@ class ConnectOptionsInner implements ConnectOptions { onDisconnect(elementName: ElementName): void { console.log('onDisconnect'); } - onFailed(code: number): void { + onFailed(code: int): void { console.log('onFailed'); } -} \ No newline at end of file +} -- Gitee