From 6fb80a381ec87bec0bbdb7d3c4a0836c40b11991 Mon Sep 17 00:00:00 2001 From: 15690690116 Date: Fri, 21 Mar 2025 17:03:46 +0800 Subject: [PATCH] del callback Signed-off-by: 15690690116 --- .../js/kits/include/font_napi_callback.h | 4 +- interfaces/js/kits/src/font_manager_addon.cpp | 66 ++++--------------- 2 files changed, 12 insertions(+), 58 deletions(-) diff --git a/interfaces/js/kits/include/font_napi_callback.h b/interfaces/js/kits/include/font_napi_callback.h index 866119e..62674b7 100644 --- a/interfaces/js/kits/include/font_napi_callback.h +++ b/interfaces/js/kits/include/font_napi_callback.h @@ -27,14 +27,12 @@ namespace FontManager { struct FontNapiCallback { napi_async_work work_; napi_deferred deferred_; - napi_ref callbackRef_; std::string value_; std::string errMsg_; bool success_; int errCode_; - FontNapiCallback() : work_(nullptr), deferred_(nullptr), callbackRef_(nullptr), success_(true), - errCode_(SUCCESS) {} + FontNapiCallback() : work_(nullptr), deferred_(nullptr), success_(true), errCode_(SUCCESS) {} void SetErrorMsg(const std::string &msg, int32_t errCode) { diff --git a/interfaces/js/kits/src/font_manager_addon.cpp b/interfaces/js/kits/src/font_manager_addon.cpp index 88f922e..86921d7 100644 --- a/interfaces/js/kits/src/font_manager_addon.cpp +++ b/interfaces/js/kits/src/font_manager_addon.cpp @@ -22,15 +22,9 @@ namespace OHOS { namespace Global { namespace FontManager { -#define GET_PARAMS(env, info, num) \ - size_t argc = num; \ - napi_value argv[num] = {nullptr}; \ - napi_value thisVar = nullptr; \ - void *data = nullptr; \ - napi_get_cb_info(env, info, &argc, argv, &thisVar, &data) static constexpr int32_t ARRAY_SUBCRIPTOR_ZERO = 0; - +static constexpr int32_t ARGS_SIZE_ONE = 1; napi_value FontManagerAddon::Init(napi_env env, napi_value exports) { napi_property_descriptor properties[] = { @@ -66,7 +60,7 @@ void FontManagerAddon::Complete(napi_env env, napi_status status, void* data) napi_value finalResult = nullptr; napi_status ret = napi_create_int32(env, fontNapiCallback->errCode_, &finalResult); if (ret != napi_ok) { - FONT_LOGE("InstallFont: create boolean result failed"); + FONT_LOGE("InstallFont: create int result failed"); fontNapiCallback->success_ = false; } @@ -78,11 +72,7 @@ void FontManagerAddon::Complete(napi_env env, napi_status status, void* data) result[0] = GetCallbackErrorCode(env, fontNapiCallback->errCode_, fontNapiCallback->errMsg_.c_str()); napi_get_undefined(env, &result[1]); } - if (fontNapiCallback->deferred_) { - ProcessPromiseResult(env, fontNapiCallback, result); - } else { - ProcessCallbackResult(env, fontNapiCallback, result); - } + ProcessPromiseResult(env, fontNapiCallback, result); napi_delete_async_work(env, fontNapiCallback->work_); delete fontNapiCallback; }; @@ -104,31 +94,6 @@ void FontManagerAddon::ProcessPromiseResult(napi_env env, FontNapiCallback *font } } -void FontManagerAddon::ProcessCallbackResult(napi_env env, FontNapiCallback *fontCallback, napi_value (&result)[2]) -{ - if (fontCallback == nullptr) { - return; - } - - napi_value callback = nullptr; - napi_status status = napi_get_reference_value(env, fontCallback->callbackRef_, &callback); - if (status != napi_ok) { - FONT_LOGE("napi_get_reference_value failed status=%{public}d", status); - return; - } - napi_value userRet; - status = napi_call_function(env, nullptr, callback, sizeof(result) / sizeof(napi_value), result, &userRet); - if (status != napi_ok) { - FONT_LOGE("napi_call_function failed status=%{public}d", status); - return; - } - status = napi_delete_reference(env, fontCallback->callbackRef_); - if (status != napi_ok) { - FONT_LOGE("napi_call_function failed status=%{public}d", status); - return; - } -} - napi_value FontManagerAddon::GetResult(napi_env env, std::unique_ptr &callback, const std::string &name, napi_async_execute_callback execute) { @@ -136,11 +101,7 @@ napi_value FontManagerAddon::GetResult(napi_env env, std::unique_ptrcallbackRef_ == nullptr) { - napi_create_promise(env, &callback->deferred_, &result); - } else { - napi_get_undefined(env, &result); - } + napi_create_promise(env, &callback->deferred_, &result); napi_value resource = nullptr; napi_create_string_utf8(env, name.c_str(), NAPI_AUTO_LENGTH, &resource); if (napi_create_async_work(env, nullptr, resource, execute, FontManagerAddon::Complete, @@ -204,19 +165,14 @@ napi_value FontManagerAddon::ProcessFontByValue( napi_env env, napi_callback_info info, const std::string &name, napi_async_execute_callback execute) { FONT_LOGI("ProcessFontByValue, func:%{public}s", name.c_str()); - GET_PARAMS(env, info, 2); + size_t argc = ARGS_SIZE_ONE; + napi_value argv[ARGS_SIZE_ONE] = {nullptr}; + napi_value thisVar = nullptr; + void *data = nullptr; + napi_get_cb_info(env, info, &argc, argv, &thisVar, &data); std::unique_ptr callback = std::make_unique(); - for (size_t i = 0; i < argc; i++) { - napi_valuetype valueType; - napi_typeof(env, argv[i], &valueType); - if (i == 0 && valueType == napi_string) { - callback->value_ = GetResNameOrPath(env, argc, argv); - FONT_LOGD("ProcessFontByValue callback->value_= %{public}s", callback->value_.c_str()); - } else if (i == 1 && valueType == napi_function) { - napi_create_reference(env, argv[i], 1, &callback->callbackRef_); - break; - } - } + callback->value_ = GetResNameOrPath(env, argc, argv); + FONT_LOGD("ProcessFontByValue callback->value_= %{public}s", callback->value_.c_str()); return GetResult(env, callback, name, execute); } -- Gitee