From 1a1a25fb804cfb1656eba36f2ec101ac9e762817 Mon Sep 17 00:00:00 2001 From: liuyongkai2 Date: Thu, 24 Jul 2025 22:03:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=9C=AC=E7=B1=BB=E7=BB=84=E4=BB=B607?= =?UTF-8?q?02=E5=88=86=E6=94=AF=E6=A3=80=E8=A7=86=E6=84=8F=E8=A7=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: liuyongkai2 --- .../interop/src/cpp/ani/convertors-ani.h | 106 +++++++----- .../interop/src/arkts/Finalizable.ts | 15 +- .../interop/src/arkts/InteropNativeModule.ts | 15 ++ .../interop/src/arkts/ResourceManager.ts | 12 +- .../interop/src/arkts/loadLibraries.ts | 15 ++ .../interop/src/cpp/common-interop.cc | 34 ++-- .../interop/src/cpp/crashdump.h | 4 +- .../interop/src/cpp/ets/convertors-ets.h | 46 +++-- .../interop/src/cpp/interop-logging.cc | 4 +- .../interop/src/cpp/jni/convertors-jni.cc | 4 +- .../interop/src/cpp/jsc/convertors-jsc.cc | 4 - .../interop/src/cpp/napi/convertors-napi.h | 163 +++++++++--------- .../koala_projects/interop/src/cpp/profiler.h | 2 +- .../koala_projects/interop/src/cpp/tracer.h | 15 ++ .../interop/src/cpp/types/koala-types.h | 29 ++-- .../interop/src/cpp/types/signatures.cc | 12 +- .../pattern/search/search_model_static.h | 2 +- .../pattern/symbol/symbol_model_static.cpp | 3 +- .../pattern/symbol/symbol_model_static.h | 2 +- .../pattern/text/span_model_static.h | 1 + .../text_field/text_field_model_static.cpp | 3 +- .../implementation/base_event_accessor.cpp | 2 +- .../implementation/drag_event_accessor.cpp | 2 +- .../search_controller_accessor.cpp | 1 + .../implementation/styled_string_peer.h | 1 + .../text_base_controller_accessor.cpp | 1 + .../text_input_controller_accessor.cpp | 1 + .../native/implementation/text_modifier.cpp | 6 +- .../text_shadow_style_accessor.cpp | 1 + .../text_style_styled_string_accessor.cpp | 1 + .../implementation/url_style_accessor.cpp | 1 + .../worker_event_listener_accessor.cpp | 2 +- .../native/utility/accessor_utils.cpp | 2 +- .../native/utility/accessor_utils.h | 2 + .../interfaces/native/utility/base_keeper.h | 4 +- .../interfaces/native/utility/converter.cpp | 6 +- .../interfaces/native/utility/converter.h | 14 +- .../native/utility/reverse_converter.cpp | 10 +- .../native/utility/reverse_converter.h | 2 +- .../utility/reverse_converter_enums.cpp | 2 +- 40 files changed, 336 insertions(+), 216 deletions(-) diff --git a/frameworks/bridge/arkts_frontend/koala_mirror/interop/src/cpp/ani/convertors-ani.h b/frameworks/bridge/arkts_frontend/koala_mirror/interop/src/cpp/ani/convertors-ani.h index 65d4cb5accc..a4b6aa97372 100644 --- a/frameworks/bridge/arkts_frontend/koala_mirror/interop/src/cpp/ani/convertors-ani.h +++ b/frameworks/bridge/arkts_frontend/koala_mirror/interop/src/cpp/ani/convertors-ani.h @@ -134,15 +134,17 @@ template<> struct InteropTypeConverter { using InteropType = ani_fixedarray_byte; static inline KInteropBuffer convertFrom(ani_env* env, InteropType value) { - if (value == nullptr) return KInteropBuffer(); - ani_size length = 0; - CHECK_ANI_FATAL(env->FixedArray_GetLength(value, &length)); - KByte* data = new KByte[length]; - CHECK_ANI_FATAL(env->FixedArray_GetRegion_Byte(value, 0, length, (ani_byte*)data)); - KInteropBuffer result = { 0 }; - result.data = data; - result.length = length; - return result; + if (value == nullptr) { + return KInteropBuffer(); + } + ani_size length = 0; + CHECK_ANI_FATAL(env->FixedArray_GetLength(value, &length)); + KByte* data = new KByte[length]; + CHECK_ANI_FATAL(env->FixedArray_GetRegion_Byte(value, 0, length, (ani_byte*)data)); + KInteropBuffer result = { 0 }; + result.data = data; + result.length = length; + return result; } static inline InteropType convertTo(ani_env* env, KInteropBuffer value) { ani_fixedarray_byte result; @@ -184,7 +186,9 @@ template<> struct InteropTypeConverter { using InteropType = ani_string; static KStringPtr convertFrom(ani_env* env, InteropType value) { - if (value == nullptr) return KStringPtr(); + if (value == nullptr) { + return KStringPtr(); + } KStringPtr result; // Notice that we use UTF length for buffer size, but counter is expressed in number of Unicode chars. ani_size lengthUtf8 = 0; @@ -219,12 +223,14 @@ template<> struct InteropTypeConverter { using InteropType = ani_array_int; static KInt* convertFrom(ani_env* env, InteropType value) { - if (!value) return nullptr; - ani_size length = 0; - CHECK_ANI_FATAL(env->Array_GetLength(value, &length)); - KInt* data = new KInt[length]; - CHECK_ANI_FATAL(env->Array_GetRegion_Int(value, 0, length, (ani_int*)data)); - return data; + if (!value) { + return nullptr; + } + ani_size length = 0; + CHECK_ANI_FATAL(env->Array_GetLength(value, &length)); + KInt* data = new KInt[length]; + CHECK_ANI_FATAL(env->Array_GetRegion_Int(value, 0, length, (ani_int*)data)); + return data; } static InteropType convertTo(ani_env* env, KInt* value) = delete; static void release(ani_env* env, InteropType value, KInt* converted) { @@ -241,12 +247,14 @@ template<> struct InteropTypeConverter { using InteropType = ani_array_float; static KFloat* convertFrom(ani_env* env, InteropType value) { - if (!value) return nullptr; - ani_size length = 0; - CHECK_ANI_FATAL(env->Array_GetLength(value, &length)); - KFloat* data = new KFloat[length]; - CHECK_ANI_FATAL(env->Array_GetRegion_Float(value, 0, length, (ani_float*)data)); - return data; + if (!value) { + return nullptr; + } + ani_size length = 0; + CHECK_ANI_FATAL(env->Array_GetLength(value, &length)); + KFloat* data = new KFloat[length]; + CHECK_ANI_FATAL(env->Array_GetRegion_Float(value, 0, length, (ani_float*)data)); + return data; } static InteropType convertTo(ani_env* env, KFloat* value) = delete; static void release(ani_env* env, InteropType value, KFloat* converted) { @@ -263,14 +271,16 @@ template<> struct InteropTypeConverter { using InteropType = ani_array_byte; static KByte* convertFrom(ani_env* env, InteropType value) { - if (!value) return nullptr; - ani_size length = 0; - CHECK_ANI_FATAL(env->Array_GetLength(value, &length)); - KByte* data = new KByte[length]; - if (length > 0) { - CHECK_ANI_FATAL(env->Array_GetRegion_Byte(value, 0, length, (ani_byte*)data)); - } - return data; + if (!value) { + return nullptr; + } + ani_size length = 0; + CHECK_ANI_FATAL(env->Array_GetLength(value, &length)); + KByte* data = new KByte[length]; + if (length > 0) { + CHECK_ANI_FATAL(env->Array_GetRegion_Byte(value, 0, length, (ani_byte*)data)); + } + return data; } static InteropType convertTo(ani_env* env, KByte* value) = delete; static void release(ani_env* env, InteropType value, KByte* converted) { @@ -323,20 +333,24 @@ struct InteropTypeConverter { ani_boolean isInstanceOf; CHECK_ANI_FATAL(env->Object_InstanceOf(valueObj, double_class, &isInstanceOf)); if (isInstanceOf) { - static ani_method double_p = nullptr; - if (!double_p) CHECK_ANI_FATAL(env->Class_FindMethod(double_class, "unboxed", ":D", &double_p)); - ani_double result; - CHECK_ANI_FATAL(env->Object_CallMethod_Double(valueObj, double_p, &result)); - return KLength{ 1, (KFloat) result, 1, 0 }; + static ani_method double_p = nullptr; + if (!double_p) { + CHECK_ANI_FATAL(env->Class_FindMethod(double_class, "unboxed", ":D", &double_p)); + } + ani_double result; + CHECK_ANI_FATAL(env->Object_CallMethod_Double(valueObj, double_p, &result)); + return KLength{ 1, (KFloat) result, 1, 0 }; } CHECK_ANI_FATAL(env->Object_InstanceOf(valueObj, int_class, &isInstanceOf)); if (isInstanceOf) { - static ani_method int_p = nullptr; - if (!int_p) CHECK_ANI_FATAL(env->Class_FindMethod(int_class, "unboxed", ":I", &int_p)); - ani_int result; - CHECK_ANI_FATAL(env->Object_CallMethod_Int(valueObj, int_p, &result)); - return KLength{ 1, (KFloat) result, 1, 0 }; + static ani_method int_p = nullptr; + if (!int_p) { + CHECK_ANI_FATAL(env->Class_FindMethod(int_class, "unboxed", ":I", &int_p)); + } + ani_int result; + CHECK_ANI_FATAL(env->Object_CallMethod_Int(valueObj, int_p, &result)); + return KLength{ 1, (KFloat) result, 1, 0 }; } CHECK_ANI_FATAL(env->Object_InstanceOf(valueObj, string_class, &isInstanceOf)); @@ -351,11 +365,13 @@ struct InteropTypeConverter { CHECK_ANI_FATAL(env->Object_InstanceOf(valueObj, resource_class, &isInstanceOf)); if (isInstanceOf) { - static ani_method resource_p = nullptr; - if (!resource_p) CHECK_ANI_FATAL(env->Class_FindMethod(resource_class, "id",":D", &resource_p)); - ani_double result; - CHECK_ANI_FATAL(env->Object_CallMethod_Double(valueObj, resource_p, &result)); - return KLength{ 3, 0, 1, (KInt) result }; + static ani_method resource_p = nullptr; + if (!resource_p) { + CHECK_ANI_FATAL(env->Class_FindMethod(resource_class, "id", ":D", &resource_p)); + } + ani_double result; + CHECK_ANI_FATAL(env->Object_CallMethod_Double(valueObj, resource_p, &result)); + return KLength{ 3, 0, 1, (KInt) result }; } return KLength( { 0, 0, 0, 0}); diff --git a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/arkts/Finalizable.ts b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/arkts/Finalizable.ts index 6ae3ac2d8b4..53ef973f36e 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/arkts/Finalizable.ts +++ b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/arkts/Finalizable.ts @@ -56,8 +56,12 @@ export class Finalizable { const handle = undefined if (this.managed) { - if (this.ptr == nullptr) throw new Error("Can't have nullptr ptr ${}") - if (this.finalizer == nullptr) throw new Error("Managed finalizer is 0") + if (this.ptr == nullptr) { + throw new Error("Can't have nullptr ptr ${}") + } + if (this.finalizer == nullptr) { + throw new Error("Managed finalizer is 0") + } const thunk = new NativeThunk(ptr, finalizer, handle) finalizerRegister(this, thunk) @@ -80,15 +84,18 @@ export class Finalizable { release(): pointer { finalizerUnregister(this) - if (this.cleaner) + if (this.cleaner) { this.cleaner!.obj = nullptr + } let result = this.ptr this.ptr = nullptr return result } resetPeer(pointer: pointer) { - if (this.managed) throw new Error("Can only reset peer for an unmanaged object") + if (this.managed) { + throw new Error("Can only reset peer for an unmanaged object") + } this.ptr = pointer } diff --git a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/arkts/InteropNativeModule.ts b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/arkts/InteropNativeModule.ts index 9b494ba8c8f..5eb99c60d91 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/arkts/InteropNativeModule.ts +++ b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/arkts/InteropNativeModule.ts @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import { int32, int64 } from "@koalaui/common"; import { KPointer, KUint8ArrayPtr, KInt, KSerializerBuffer } from "./InteropTypes"; import { callCallback } from "./callback" diff --git a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/arkts/ResourceManager.ts b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/arkts/ResourceManager.ts index fca2c6eea66..7ab65289d65 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/arkts/ResourceManager.ts +++ b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/arkts/ResourceManager.ts @@ -34,18 +34,21 @@ export class ResourceHolder { } public hold(resourceId: ResourceId) { - if (!this.resources.has(resourceId)) + if (!this.resources.has(resourceId)) { throw new Error(`Resource ${resourceId} does not exists, can not hold`) + } this.resources.get(resourceId)!.holdersCount++ } public release(resourceId: ResourceId) { - if (!this.resources.has(resourceId)) + if (!this.resources.has(resourceId)) { throw new Error(`Resource ${resourceId} does not exists, can not release`) + } const resource = this.resources.get(resourceId)! resource.holdersCount-- - if (resource.holdersCount <= 0) + if (resource.holdersCount <= 0) { this.resources.delete(resourceId) + } } public registerAndHold(resource: object): ResourceId { @@ -58,8 +61,9 @@ export class ResourceHolder { } public get(resourceId: ResourceId): object { - if (!this.resources.has(resourceId)) + if (!this.resources.has(resourceId)) { throw new Error(`Resource ${resourceId} does not exists`) + } return this.resources.get(resourceId)!.resource } diff --git a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/arkts/loadLibraries.ts b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/arkts/loadLibraries.ts index 5312de39eba..33238bc6081 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/arkts/loadLibraries.ts +++ b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/arkts/loadLibraries.ts @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + const nativeModuleLibraries: Map = new Map() export function loadNativeLibrary(library: string) { diff --git a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/common-interop.cc b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/common-interop.cc index 6e14ba9bf82..0bd786c0223 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/common-interop.cc +++ b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/common-interop.cc @@ -242,8 +242,9 @@ void impl_StopGroupedLog(KInt index) { KOALA_INTEROP_V1(StopGroupedLog, KInt) void impl_AppendGroupedLog(KInt index, const KStringPtr& message) { - if (GetDefaultLogger()->needGroupedLog(index)) + if (GetDefaultLogger()->needGroupedLog(index)) { GetDefaultLogger()->appendGroupedLog(index, message.c_str()); + } } KOALA_INTEROP_V2(AppendGroupedLog, KInt, KStringPtr) @@ -302,7 +303,7 @@ KInt impl_LoadVirtualMachine(KVMContext vmContext, KInt vmKind, const KStringPtr static LoadVirtualMachine_t impl = nullptr; if (!impl) impl = reinterpret_cast(getImpl(nativeLibPath, "LoadVirtualMachine")); - if (!impl) KOALA_INTEROP_THROW_STRING(vmContext, "Cannot load VM", -1); + if (!impl) { KOALA_INTEROP_THROW_STRING(vmContext, "Cannot load VM", -1); } const ForeignVMContext foreignVM = { vmContext, &callCallback }; @@ -312,21 +313,21 @@ KOALA_INTEROP_CTX_3(LoadVirtualMachine, KInt, KInt, KStringPtr, KStringPtr) KNativePointer impl_StartApplication(const KStringPtr& appUrl, const KStringPtr& appParams) { static StartApplication_t impl = nullptr; - if (!impl) impl = reinterpret_cast(getImpl(nullptr, "StartApplication")); + if (!impl) { impl = reinterpret_cast(getImpl(nullptr, "StartApplication")); } return impl(appUrl.c_str(), appParams.c_str()); } KOALA_INTEROP_2(StartApplication, KNativePointer, KStringPtr, KStringPtr) KBoolean impl_RunApplication(const KInt arg0, const KInt arg1) { static RunApplication_t impl = nullptr; - if (!impl) impl = reinterpret_cast(getImpl(nullptr, "RunApplication")); + if (!impl) { impl = reinterpret_cast(getImpl(nullptr, "RunApplication")); } return impl(arg0, arg1); } KOALA_INTEROP_2(RunApplication, KBoolean, KInt, KInt) KStringPtr impl_EmitEvent(KVMContext vmContext, KInt type, KInt target, KInt arg0, KInt arg1) { static EmitEvent_t impl = nullptr; - if (!impl) impl = reinterpret_cast(getImpl(nullptr, "EmitEvent")); + if (!impl) { impl = reinterpret_cast(getImpl(nullptr, "EmitEvent")); } const char* out = impl(type, target, arg0, arg1); auto size = std::string(out).size(); KStringPtr result(out, size, true); @@ -336,7 +337,7 @@ KOALA_INTEROP_CTX_4(EmitEvent, KStringPtr, KInt, KInt, KInt, KInt) void impl_RestartWith(const KStringPtr& page) { static RestartWith_t impl = nullptr; - if (!impl) impl = reinterpret_cast(getImpl(nullptr, "RestartWith")); + if (!impl) { impl = reinterpret_cast(getImpl(nullptr, "RestartWith")); } impl(page.c_str()); } KOALA_INTEROP_V1(RestartWith, KStringPtr) @@ -454,7 +455,7 @@ KOALA_INTEROP_V1(NativeLog, KStringPtr) void resolveDeferred(KVMDeferred* deferred, uint8_t* argsData, int32_t argsLength) { #ifdef KOALA_NAPI auto status = napi_call_threadsafe_function((napi_threadsafe_function)deferred->handler, deferred, napi_tsfn_nonblocking); - if (status != napi_ok) LOGE("cannot call thread-safe function; status=%d", status); + if (status != napi_ok) { LOGE("cannot call thread-safe function; status=%d", status); } napi_release_threadsafe_function((napi_threadsafe_function)deferred->handler, napi_tsfn_release); #endif } @@ -471,7 +472,7 @@ void resolveDeferredImpl(napi_env env, napi_value js_callback, KVMDeferred* defe napi_value undefined = nullptr; napi_get_undefined(env, &undefined); auto status = napi_resolve_deferred(env, (napi_deferred)deferred->context, undefined); - if (status != napi_ok) LOGE("cannot resolve deferred; status=%d", status); + if (status != napi_ok) { LOGE("cannot resolve deferred; status=%d", status); } delete deferred; } #endif @@ -487,7 +488,9 @@ KVMDeferred* CreateDeferred(KVMContext vmContext, KVMObjectHandle* promiseHandle napi_value resourceName; napi_create_string_utf8(env, "Async", 5, &resourceName); auto status = napi_create_promise(env, (napi_deferred*)&deferred->context, &promise); - if (status != napi_ok) LOGE("cannot make a promise; status=%d", status); + if (status != napi_ok) { + LOGE("cannot make a promise; status=%d", status); + } status = napi_create_threadsafe_function(env, nullptr, nullptr, @@ -499,7 +502,9 @@ KVMDeferred* CreateDeferred(KVMContext vmContext, KVMObjectHandle* promiseHandle deferred, (napi_threadsafe_function_call_js)resolveDeferredImpl, (napi_threadsafe_function*)&deferred->handler); - if (status != napi_ok) LOGE("cannot make threadsafe function; status=%d", status); + if (status != napi_ok) { + LOGE("cannot make threadsafe function; status=%d", status); + } *promiseHandle = (KVMObjectHandle)promise; #endif return deferred; @@ -640,8 +645,9 @@ KoalaWork::KoalaWork(InteropVMContext vmContext, void (*complete)(InteropNativePointer handle) ): vmContext(vmContext), handle(handle), execute(execute), complete(complete) { #ifdef KOALA_FOREIGN_NAPI - if (g_foreignVMContext == nullptr) + if (g_foreignVMContext == nullptr) { INTEROP_FATAL("Can not launch async work while foreign VM context is not available. Please ensure you have called SetForeignVMContext"); + } foreignVMContext = g_foreignVMContext; napi_env env = (napi_env)foreignVMContext; napi_value resourceName = nullptr; @@ -720,10 +726,12 @@ KInteropReturnBuffer impl_RawReturnData(KVMContext vmContext, KInt v1, KInt v2) KOALA_INTEROP_CTX_2(RawReturnData, KInteropReturnBuffer, KInt, KInt) KInteropNumber impl_IncrementNumber(KInteropNumber number) { - if (number.tag == 102) + if (number.tag == 102) { number.i32++; - else + } + else { number.f32 += 1.f; + } return number; } KOALA_INTEROP_1(IncrementNumber, KInteropNumber, KInteropNumber) diff --git a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/crashdump.h b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/crashdump.h index 128f7ba6171..2e22efff478 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/crashdump.h +++ b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/crashdump.h @@ -26,7 +26,9 @@ static void onCrashHandler(int signo) { void* stack[20]; size_t size = backtrace(stack, 20); backtrace_symbols_fd(stack, size, STDERR_FILENO); - if (oldCrashHandler) oldCrashHandler(signo); + if (oldCrashHandler) { + oldCrashHandler(signo); + } } static void installCrashHandlers() { diff --git a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/ets/convertors-ets.h b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/ets/convertors-ets.h index d95bee1fcca..5812b1a5f6d 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/ets/convertors-ets.h +++ b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/ets/convertors-ets.h @@ -104,11 +104,13 @@ template<> struct InteropTypeConverter { using InteropType = ets_byteArray; static KInteropBuffer convertFrom(EtsEnv* env, InteropType value) { - if (!value) return KInteropBuffer(); - KInteropBuffer result; - result.data = (KByte*)env->PinByteArray(value); - result.length = env->GetArrayLength(value); - return result; + if (!value) { + return KInteropBuffer(); + } + KInteropBuffer result; + result.data = (KByte*)env->PinByteArray(value); + result.length = env->GetArrayLength(value); + return result; } static InteropType convertTo(EtsEnv* env, KInteropBuffer value) { ets_byteArray array = env->NewByteArray(value.length); @@ -129,7 +131,9 @@ template<> struct InteropTypeConverter { using InteropType = ets_string; static KStringPtr convertFrom(EtsEnv* env, InteropType value) { - if (value == nullptr) return KStringPtr(); + if (value == nullptr) { + return KStringPtr(); + } KStringPtr result; // Notice that we use UTF length for buffer size, but counter is expressed in number of Unicode chars. result.resize(env->GetStringUTFLength(value)); @@ -183,12 +187,16 @@ template<> struct InteropTypeConverter { using InteropType = ets_intArray; static KInt* convertFrom(EtsEnv* env, InteropType value) { - if (!value) return nullptr; - return env->PinIntArray(value); + if (!value) { + return nullptr; + } + return env->PinIntArray(value); } static InteropType convertTo(EtsEnv* env, KInt* value) = delete; static void release(EtsEnv* env, InteropType value, KInt* converted) { - if (value) env->UnpinIntArray(value); + if (value) { + env->UnpinIntArray(value); + } } }; @@ -196,12 +204,16 @@ template<> struct InteropTypeConverter { using InteropType = ets_floatArray; static KFloat* convertFrom(EtsEnv* env, InteropType value) { - if (!value) return nullptr; - return env->PinFloatArray(value); + if (!value) { + return nullptr; + } + return env->PinFloatArray(value); } static InteropType convertTo(EtsEnv* env, KFloat* value) = delete; static void release(EtsEnv* env, InteropType value, KFloat* converted) { - if (value) env->UnpinFloatArray(value); + if (value) { + env->UnpinFloatArray(value); + } } }; @@ -226,12 +238,16 @@ template<> struct InteropTypeConverter { using InteropType = ets_byteArray; static KByte* convertFrom(EtsEnv* env, InteropType value) { - if (!value) return nullptr; - return (KByte*)env->PinByteArray(value); + if (!value) { + return nullptr; + } + return (KByte*)env->PinByteArray(value); } static InteropType convertTo(EtsEnv* env, KByte* value) = delete; static void release(EtsEnv* env, InteropType value, KByte* converted) { - if (value) env->UnpinByteArray((ets_byteArray)value); + if (value) { + env->UnpinByteArray((ets_byteArray)value); + } } }; diff --git a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/interop-logging.cc b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/interop-logging.cc index 928ddba8838..4e2f82ed91f 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/interop-logging.cc +++ b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/interop-logging.cc @@ -30,7 +30,9 @@ void startGroupedLog(int index) { if (index >= (int)groupedLogs.size()) { groupedLogs.resize(index + 1); for (int i = 0; i <= index; i++) { - if (!groupedLogs[i]) groupedLogs[i] = new Log(); + if (!groupedLogs[i]) { + groupedLogs[i] = new Log(); + } } } groupedLogs[index]->isActive = true; diff --git a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/jni/convertors-jni.cc b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/jni/convertors-jni.cc index 683625b09e9..b24d3b219f6 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/jni/convertors-jni.cc +++ b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/jni/convertors-jni.cc @@ -67,7 +67,9 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { } registerNatives(env, nativeModule, JniExports::getInstance()->getMethods(*it)); } - if (!setKoalaJniCallbackDispatcher(env, defaultNativeModule, callCallbackFromNative, callCallbackFromNativeSig)) return JNI_ERR; + if (!setKoalaJniCallbackDispatcher(env, defaultNativeModule, callCallbackFromNative, callCallbackFromNativeSig)) { + return JNI_ERR; + } return JNI_VERSION_1_8; } diff --git a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/jsc/convertors-jsc.cc b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/jsc/convertors-jsc.cc index 2cfbe14644f..55c3fc3ec27 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/jsc/convertors-jsc.cc +++ b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/jsc/convertors-jsc.cc @@ -21,10 +21,6 @@ #include "convertors-jsc.h" -// See https://github.com/BabylonJS/BabylonNative/blob/master/Dependencies/napi/napi-direct/source/js_native_api_javascriptcore.cc -// for convertors logic. - - KInt* getInt32Elements(JSContextRef context, const JSValueRef arguments) { return getTypedElements(context, arguments); } diff --git a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/napi/convertors-napi.h b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/napi/convertors-napi.h index 270f0586867..ebf2dccc11a 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/napi/convertors-napi.h +++ b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/napi/convertors-napi.h @@ -104,9 +104,6 @@ struct InteropTypeConverter { (void*)copy, &result ); - if (status != napi_ok) { - // do smth here - } return result; }; static void release(napi_env env, InteropType value, KInteropBuffer converted) {} @@ -116,11 +113,11 @@ template<> struct InteropTypeConverter { using InteropType = napi_value; static KStringPtr convertFrom(napi_env env, InteropType value) { - if (value == nullptr) return KStringPtr(); + if (value == nullptr) { return KStringPtr(); } KStringPtr result; size_t length = 0; napi_status status = napi_get_value_string_utf8(env, value, nullptr, 0, &length); - if (status != 0) return result; + if (status != 0) { return result; } result.resize(length); status = napi_get_value_string_utf8(env, value, result.data(), length + 1, nullptr); return result; @@ -477,44 +474,44 @@ inline KSerializerBuffer getArgument(const CallbackInfo& info template <> inline KLength getArgument(const CallbackInfo& info, int index) { - KLength result { 0 }; - NAPI_ASSERT_INDEX(info, index, result); - auto value = info[index]; - napi_valuetype type; - auto status = napi_typeof(info.Env(), value, &type); - if (status != 0) return result; - switch (type) { - case napi_number: { - result.value = getFloat32(info.Env(), value); - result.unit = 1; - result.type = 0; - break; - } - case napi_string: { - KStringPtr string = getString(info.Env(), value); - parseKLength(string, &result); - result.type = 1; - result.resource = 0; - break; - } - case napi_object: { - result.value = 0; - result.unit = 1; - result.type = 2; - napi_value field; - napi_status status = napi_get_named_property(info.Env(), value, "id", &field); - if (status == 0) { - status = napi_get_value_int32(info.Env(), field, &result.resource); - if (status != 0) result.resource = 0; - } else { - result.resource = 0; - } - break; + KLength result { 0 }; + NAPI_ASSERT_INDEX(info, index, result); + auto value = info[index]; + napi_valuetype type; + auto status = napi_typeof(info.Env(), value, &type); + if (status != 0) { return result; } + switch (type) { + case napi_number: { + result.value = getFloat32(info.Env(), value); + result.unit = 1; + result.type = 0; + break; + } + case napi_string: { + KStringPtr string = getString(info.Env(), value); + parseKLength(string, &result); + result.type = 1; + result.resource = 0; + break; + } + case napi_object: { + result.value = 0; + result.unit = 1; + result.type = 2; + napi_value field; + napi_status status = napi_get_named_property(info.Env(), value, "id", &field); + if (status == 0) { + status = napi_get_value_int32(info.Env(), field, &result.resource); + if (status != 0) { result.resource = 0; } + } else { + result.resource = 0; + } + break; + } + default: + INTEROP_FATAL("Error, unexpected KLength type"); } - default: - INTEROP_FATAL("Error, unexpected KLength type"); - } - return result; + return result; } @@ -1413,49 +1410,53 @@ public: napi_value getKoalaNapiCallbackDispatcher(napi_env env); // TODO: can/shall we cache bridge reference? -#define KOALA_INTEROP_CALL_VOID(venv, id, length, args) \ -{ \ - napi_env env = reinterpret_cast(venv); \ - napi_value bridge = getKoalaNapiCallbackDispatcher(env), \ - global = nullptr, return_val = nullptr; \ - napi_handle_scope scope = nullptr; \ - napi_open_handle_scope(env, &scope); \ - napi_status status = napi_get_global(env, &global); \ - napi_value node_args[3]; \ - napi_create_int32(env, id, &node_args[0]); \ - napi_value buffer = nullptr; \ - napi_create_external_arraybuffer(env, \ - args, length, \ - [](napi_env, void* data, void* hint) {}, nullptr, &buffer); \ - napi_create_typedarray(env, napi_uint8_array, length, buffer, 0, &node_args[1]); \ - napi_create_int32(env, length, &node_args[2]); \ - status = napi_call_function(env, global, bridge, 3, node_args, &return_val); \ - if (status != napi_ok) NODEJS_GET_AND_THROW_LAST_ERROR((env)); \ - napi_close_handle_scope(env, scope); \ +#define KOALA_INTEROP_CALL_VOID(venv, id, length, args) \ +{ \ + napi_env env = reinterpret_cast(venv); \ + napi_value bridge = getKoalaNapiCallbackDispatcher(env), \ + global = nullptr, return_val = nullptr; \ + napi_handle_scope scope = nullptr; \ + napi_open_handle_scope(env, &scope); \ + napi_status status = napi_get_global(env, &global); \ + napi_value node_args[3]; \ + napi_create_int32(env, id, &node_args[0]); \ + napi_value buffer = nullptr; \ + napi_create_external_arraybuffer(env, \ + args, length, \ + [](napi_env, void* data, void* hint) {}, nullptr, &buffer); \ + napi_create_typedarray(env, napi_uint8_array, length, buffer, 0, &node_args[1]); \ + napi_create_int32(env, length, &node_args[2]); \ + status = napi_call_function(env, global, bridge, 3, node_args, &return_val); \ + if (status != napi_ok) { \ + NODEJS_GET_AND_THROW_LAST_ERROR((env)); \ + } \ + napi_close_handle_scope(env, scope); \ } #define KOALA_INTEROP_CALL_INT(venv, id, length, args) \ { \ - napi_env env = reinterpret_cast(venv); \ - napi_value bridge = getKoalaNapiCallbackDispatcher(env), \ - global = nullptr, return_val = nullptr; \ - napi_handle_scope scope = nullptr; \ - napi_open_handle_scope(env, &scope); \ - napi_status status = napi_get_global(env, &global); \ - napi_value node_args[3]; \ - napi_create_int32(env, id, &node_args[0]); \ - napi_value buffer = nullptr; \ - napi_create_external_arraybuffer(env, \ - args, length, \ - [](napi_env, void* data, void* hint) {}, nullptr, &buffer); \ - napi_create_typedarray(env, napi_uint8_array, length, buffer, 0, &node_args[1]); \ - napi_create_int32(env, length, &node_args[2]); \ - status = napi_call_function(env, global, bridge, 3, node_args, &return_val); \ - if (status != napi_ok) NODEJS_GET_AND_THROW_LAST_ERROR((env)); \ - int result; \ - status = napi_get_value_int32(env, return_val, &result); \ - napi_close_handle_scope(env, scope); \ - return result; \ + napi_env env = reinterpret_cast(venv); \ + napi_value bridge = getKoalaNapiCallbackDispatcher(env), \ + global = nullptr, return_val = nullptr; \ + napi_handle_scope scope = nullptr; \ + napi_open_handle_scope(env, &scope); \ + napi_status status = napi_get_global(env, &global); \ + napi_value node_args[3]; \ + napi_create_int32(env, id, &node_args[0]); \ + napi_value buffer = nullptr; \ + napi_create_external_arraybuffer(env, \ + args, length, \ + [](napi_env, void* data, void* hint) {}, nullptr, &buffer); \ + napi_create_typedarray(env, napi_uint8_array, length, buffer, 0, &node_args[1]); \ + napi_create_int32(env, length, &node_args[2]); \ + status = napi_call_function(env, global, bridge, 3, node_args, &return_val); \ + if (status != napi_ok) { \ + NODEJS_GET_AND_THROW_LAST_ERROR((env)); \ + } \ + int result; \ + status = napi_get_value_int32(env, return_val, &result); \ + napi_close_handle_scope(env, scope); \ + return result; \ } #define KOALA_INTEROP_CALL_VOID_INTS32(venv, id, argc, args) KOALA_INTEROP_CALL_VOID(venv, id, (argc) * sizeof(int32_t), args) diff --git a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/profiler.h b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/profiler.h index 4f5fbbdab0f..46a34b8dc6b 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/profiler.h +++ b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/profiler.h @@ -39,7 +39,7 @@ class InteropProfiler { public: static InteropProfiler* instance() { - if (!_instance) _instance = new InteropProfiler(); + if (!_instance) { _instance = new InteropProfiler(); } return _instance; } diff --git a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/tracer.h b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/tracer.h index 2bfe87f343f..54dfe2abeef 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/tracer.h +++ b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/tracer.h @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + #ifndef _KOALA_TRACER_ #define _KOALA_TRACER_ diff --git a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/types/koala-types.h b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/types/koala-types.h index 78438e8c99b..28910a11792 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/types/koala-types.h +++ b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/types/koala-types.h @@ -63,7 +63,12 @@ struct KStringPtrImpl { this->_length = other._length; } - ~KStringPtrImpl() { if (_value && _owned) free(_value); } + ~KStringPtrImpl() + { + if (_value && _owned) { + free(_value); + } + } bool isNull() const { return _value == nullptr; } const char* c_str() const { return _value; } @@ -72,7 +77,7 @@ struct KStringPtrImpl { void resize(int size) { _length = size; - if (!_owned) return; + if (!_owned) { return; } // Ignore old content. if (_value && _owned) free(_value); _value = reinterpret_cast(malloc(size + 1)); @@ -84,7 +89,7 @@ struct KStringPtrImpl { } void assign(const char* data, int len) { - if (_value && _owned) free(_value); + if (_value && _owned) { free(_value); } if (data) { if (_owned) { _value = reinterpret_cast(malloc(len + 1)); @@ -152,16 +157,18 @@ struct KInteropNumber { return result; } inline double asDouble() { - if (tag == INTEROP_TAG_INT32) - return (double)i32; - else - return (double)f32; + if (tag == INTEROP_TAG_INT32) { + return (double)i32; + } else { + return (double)f32; + } } inline int32_t asInt32() { - if (tag == INTEROP_TAG_INT32) - return i32; - else - return (int32_t)f32; + if (tag == INTEROP_TAG_INT32) { + return i32; + } else { + return (int32_t)f32; + } } }; diff --git a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/types/signatures.cc b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/types/signatures.cc index 3750c592b74..a1fe8da5c72 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/types/signatures.cc +++ b/frameworks/bridge/arkts_frontend/koala_projects/interop/src/cpp/types/signatures.cc @@ -22,8 +22,16 @@ // For types with the same name on ets and jni #define KOALA_INTEROP_TYPEDEF(func, lang, CPP_TYPE, SIG_TYPE, CODE_TYPE) \ - if (std::strcmp(func, "sigType") == 0) if (type == CPP_TYPE) return SIG_TYPE; \ - if (std::strcmp(func, "codeType") == 0) if (type == CPP_TYPE) return CODE_TYPE; + if (std::strcmp(func, "sigType") == 0) { \ + if (type == (CPP_TYPE)) { \ + return (SIG_TYPE); \ + } \ + } \ + if (std::strcmp(func, "codeType") == 0) { \ + if (type == (CPP_TYPE)) { \ + return (CODE_TYPE); \ + } \ + } // For types with distinct names on ets and jni #define KOALA_INTEROP_TYPEDEF_LS(func, lang, CPP_TYPE, ETS_SIG_TYPE, ETS_CODE_TYPE, JNI_SIG_TYPE, JNI_CODE_TYPE) \ diff --git a/frameworks/core/components_ng/pattern/search/search_model_static.h b/frameworks/core/components_ng/pattern/search/search_model_static.h index 67a06074948..5a84595a097 100644 --- a/frameworks/core/components_ng/pattern/search/search_model_static.h +++ b/frameworks/core/components_ng/pattern/search/search_model_static.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-2025 Huawei Device Co., Ltd. + * Copyright (c) 2025 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at diff --git a/frameworks/core/components_ng/pattern/symbol/symbol_model_static.cpp b/frameworks/core/components_ng/pattern/symbol/symbol_model_static.cpp index 264bf90e4a1..f997940fcfa 100644 --- a/frameworks/core/components_ng/pattern/symbol/symbol_model_static.cpp +++ b/frameworks/core/components_ng/pattern/symbol/symbol_model_static.cpp @@ -13,9 +13,10 @@ * limitations under the License. */ +#include "core/components_ng/pattern/symbol/symbol_model_static.h" + #include "base/utils/utils.h" #include "core/components_ng/pattern/symbol/symbol_model_ng.h" -#include "core/components_ng/pattern/symbol/symbol_model_static.h" #include "core/components_ng/pattern/text/text_pattern.h" namespace OHOS::Ace::NG { diff --git a/frameworks/core/components_ng/pattern/symbol/symbol_model_static.h b/frameworks/core/components_ng/pattern/symbol/symbol_model_static.h index fcfdf199dbd..af64d8044db 100644 --- a/frameworks/core/components_ng/pattern/symbol/symbol_model_static.h +++ b/frameworks/core/components_ng/pattern/symbol/symbol_model_static.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Huawei Device Co., Ltd. + * Copyright (c) 2025 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at diff --git a/frameworks/core/components_ng/pattern/text/span_model_static.h b/frameworks/core/components_ng/pattern/text/span_model_static.h index bd61294d119..18a8fdaaf5d 100644 --- a/frameworks/core/components_ng/pattern/text/span_model_static.h +++ b/frameworks/core/components_ng/pattern/text/span_model_static.h @@ -23,6 +23,7 @@ #include "core/components_ng/pattern/text/span_model.h" #include "core/components_ng/pattern/text/span_node.h" + namespace OHOS::Ace::NG { class ACE_EXPORT SpanModelStatic { public: diff --git a/frameworks/core/components_ng/pattern/text_field/text_field_model_static.cpp b/frameworks/core/components_ng/pattern/text_field/text_field_model_static.cpp index 3ca352c9aa2..13746c566ad 100644 --- a/frameworks/core/components_ng/pattern/text_field/text_field_model_static.cpp +++ b/frameworks/core/components_ng/pattern/text_field/text_field_model_static.cpp @@ -31,7 +31,6 @@ namespace OHOS::Ace::NG { namespace { -const auto DEFAULT_KEYBOARD_APPERANCE = KeyboardAppearance::NONE_IMMERSIVE; constexpr uint32_t MAX_LINES = 3; constexpr double DEFAULT_OPACITY = 0.2; constexpr int32_t DEFAULT_ALPHA = 255; @@ -627,7 +626,7 @@ void TextFieldModelStatic::SetStopBackPress(FrameNode* frameNode, const std::opt void TextFieldModelStatic::SetKeyboardAppearance(FrameNode* frameNode, const std::optional& valueOpt) { - TextFieldModelNG::SetKeyboardAppearance(frameNode, valueOpt.value_or(DEFAULT_KEYBOARD_APPERANCE)); + TextFieldModelNG::SetKeyboardAppearance(frameNode, valueOpt.value_or(KeyboardAppearance::NONE_IMMERSIVE)); } void TextFieldModelStatic::RequestKeyboardOnFocus(FrameNode* frameNode, const std::optional& needToRequest) diff --git a/frameworks/core/interfaces/native/implementation/base_event_accessor.cpp b/frameworks/core/interfaces/native/implementation/base_event_accessor.cpp index 2a8a1f4192c..52f958a6434 100644 --- a/frameworks/core/interfaces/native/implementation/base_event_accessor.cpp +++ b/frameworks/core/interfaces/native/implementation/base_event_accessor.cpp @@ -52,7 +52,7 @@ Ark_Boolean GetModifierKeyStateImpl(Ark_VMContext vmContext, CHECK_NULL_RETURN(keys, DefaultValueBoolean); auto eventKeys = peer->GetBaseInfo()->GetPressedKeyCodes(); auto keysStr = Converter::Convert>(*keys); - return Converter::ArkValue(AccessorUtils::CheckKeysPressed(keysStr, eventKeys)); + return Converter::ArkValue(OHOS::Ace::NG::AccessorUtils::CheckKeysPressed(keysStr, eventKeys)); } Ark_EventTarget GetTargetImpl(Ark_BaseEvent peer) { diff --git a/frameworks/core/interfaces/native/implementation/drag_event_accessor.cpp b/frameworks/core/interfaces/native/implementation/drag_event_accessor.cpp index e74a4969506..15762bcf81c 100644 --- a/frameworks/core/interfaces/native/implementation/drag_event_accessor.cpp +++ b/frameworks/core/interfaces/native/implementation/drag_event_accessor.cpp @@ -214,7 +214,7 @@ Ark_Boolean GetModifierKeyStateImpl(Ark_VMContext vmContext, CHECK_NULL_RETURN(info, defaultValue); auto eventKeys = info->GetPressedKeyCodes(); auto keysStr = Converter::Convert>(*keys); - return Converter::ArkValue(AccessorUtils::CheckKeysPressed(keysStr, eventKeys)); + return Converter::ArkValue(OHOS::Ace::NG::AccessorUtils::CheckKeysPressed(keysStr, eventKeys)); } void ExecuteDropAnimationImpl(Ark_DragEvent peer, const Callback_Void* customDropAnimation) diff --git a/frameworks/core/interfaces/native/implementation/search_controller_accessor.cpp b/frameworks/core/interfaces/native/implementation/search_controller_accessor.cpp index a5b7b2f11ee..40c2b5145e4 100644 --- a/frameworks/core/interfaces/native/implementation/search_controller_accessor.cpp +++ b/frameworks/core/interfaces/native/implementation/search_controller_accessor.cpp @@ -21,6 +21,7 @@ namespace OHOS::Ace::NG::GeneratedModifier { namespace SearchControllerAccessor { void DestroyPeerImpl(Ark_SearchController peer) { + CHECK_NULL_VOID(peer); delete peer; } Ark_SearchController CtorImpl() diff --git a/frameworks/core/interfaces/native/implementation/styled_string_peer.h b/frameworks/core/interfaces/native/implementation/styled_string_peer.h index d840df7fc63..88a2d3f4776 100644 --- a/frameworks/core/interfaces/native/implementation/styled_string_peer.h +++ b/frameworks/core/interfaces/native/implementation/styled_string_peer.h @@ -29,6 +29,7 @@ struct StyledStringPeer { static void Destroy(StyledStringPeer *peer) { + CHECK_NULL_VOID(peer); delete peer; } diff --git a/frameworks/core/interfaces/native/implementation/text_base_controller_accessor.cpp b/frameworks/core/interfaces/native/implementation/text_base_controller_accessor.cpp index fe5548bef6c..0a965f940ef 100644 --- a/frameworks/core/interfaces/native/implementation/text_base_controller_accessor.cpp +++ b/frameworks/core/interfaces/native/implementation/text_base_controller_accessor.cpp @@ -23,6 +23,7 @@ const GENERATED_ArkUILayoutManagerAccessor* GetLayoutManagerAccessor(); namespace TextBaseControllerAccessor { void DestroyPeerImpl(Ark_TextBaseController peer) { + CHECK_NULL_VOID(peer); delete peer; } Ark_TextBaseController CtorImpl() diff --git a/frameworks/core/interfaces/native/implementation/text_input_controller_accessor.cpp b/frameworks/core/interfaces/native/implementation/text_input_controller_accessor.cpp index 0b4f80e5872..6d0ea0ee403 100644 --- a/frameworks/core/interfaces/native/implementation/text_input_controller_accessor.cpp +++ b/frameworks/core/interfaces/native/implementation/text_input_controller_accessor.cpp @@ -22,6 +22,7 @@ namespace OHOS::Ace::NG::GeneratedModifier { namespace TextInputControllerAccessor { void DestroyPeerImpl(Ark_TextInputController peer) { + CHECK_NULL_VOID(peer); delete peer; } Ark_TextInputController CtorImpl() diff --git a/frameworks/core/interfaces/native/implementation/text_modifier.cpp b/frameworks/core/interfaces/native/implementation/text_modifier.cpp index fb32544902b..4506d845324 100644 --- a/frameworks/core/interfaces/native/implementation/text_modifier.cpp +++ b/frameworks/core/interfaces/native/implementation/text_modifier.cpp @@ -35,7 +35,7 @@ struct FontSettingOptions { }; struct TextOptions { - TextControllerPeer* peer; + TextControllerPeer* peer = nullptr; }; template<> @@ -517,7 +517,6 @@ void OnCopyImpl(Ark_NativePointer node, CHECK_NULL_VOID(frameNode); auto optValue = Converter::GetOptPtr(value); if (!optValue) { - // TODO: Reset value return; } auto onCopy = [arkCallback = CallbackHelper(*optValue)](const std::u16string& param) { @@ -577,7 +576,6 @@ void OnTextSelectionChangeImpl(Ark_NativePointer node, CHECK_NULL_VOID(frameNode); auto optValue = Converter::GetOptPtr(value); if (!optValue) { - // TODO: Reset value return; } auto onSelectionChange = [arkCallback = CallbackHelper(*optValue)](int32_t start, int32_t end) { @@ -612,7 +610,6 @@ void OnMarqueeStateChangeImpl(Ark_NativePointer node, CHECK_NULL_VOID(frameNode); auto optValue = Converter::GetOptPtr(value); if (!optValue) { - // TODO: Reset value return; } auto modelCallback = [callbackHelper = CallbackHelper(*optValue)](int32_t marqueeState) { @@ -643,7 +640,6 @@ void EditMenuOptionsImpl(Ark_NativePointer node, CHECK_NULL_VOID(frameNode); auto optValue = Converter::GetOptPtr(value); if (!optValue) { - // TODO: Reset value return; } auto onCreateMenuCallback = [arkCreateMenu = CallbackHelper(optValue->onCreateMenu)]( diff --git a/frameworks/core/interfaces/native/implementation/text_shadow_style_accessor.cpp b/frameworks/core/interfaces/native/implementation/text_shadow_style_accessor.cpp index 89777f4f747..da42f278806 100644 --- a/frameworks/core/interfaces/native/implementation/text_shadow_style_accessor.cpp +++ b/frameworks/core/interfaces/native/implementation/text_shadow_style_accessor.cpp @@ -23,6 +23,7 @@ namespace OHOS::Ace::NG::GeneratedModifier { namespace TextShadowStyleAccessor { void DestroyPeerImpl(Ark_TextShadowStyle peer) { + CHECK_NULL_VOID(peer); PeerUtils::DestroyPeer(peer); } Ark_TextShadowStyle CtorImpl(const Ark_Union_ShadowOptions_Array_ShadowOptions* value) diff --git a/frameworks/core/interfaces/native/implementation/text_style_styled_string_accessor.cpp b/frameworks/core/interfaces/native/implementation/text_style_styled_string_accessor.cpp index 277c9d116b6..3b3729ec9ab 100644 --- a/frameworks/core/interfaces/native/implementation/text_style_styled_string_accessor.cpp +++ b/frameworks/core/interfaces/native/implementation/text_style_styled_string_accessor.cpp @@ -27,6 +27,7 @@ namespace OHOS::Ace::NG::GeneratedModifier { namespace TextStyle_styled_stringAccessor { void DestroyPeerImpl(Ark_TextStyle_styled_string peer) { + CHECK_NULL_VOID(peer); PeerUtils::DestroyPeer(peer); } Ark_TextStyle_styled_string CtorImpl(const Opt_TextStyleInterface* value) diff --git a/frameworks/core/interfaces/native/implementation/url_style_accessor.cpp b/frameworks/core/interfaces/native/implementation/url_style_accessor.cpp index 4688b373b25..fe43a7c6844 100644 --- a/frameworks/core/interfaces/native/implementation/url_style_accessor.cpp +++ b/frameworks/core/interfaces/native/implementation/url_style_accessor.cpp @@ -23,6 +23,7 @@ namespace OHOS::Ace::NG::GeneratedModifier { namespace UrlStyleAccessor { void DestroyPeerImpl(Ark_UrlStyle peer) { + CHECK_NULL_VOID(peer); PeerUtils::DestroyPeer(peer); } Ark_UrlStyle CtorImpl(const Ark_String* url) diff --git a/frameworks/core/interfaces/native/implementation/worker_event_listener_accessor.cpp b/frameworks/core/interfaces/native/implementation/worker_event_listener_accessor.cpp index ad0b8224768..2428c550016 100644 --- a/frameworks/core/interfaces/native/implementation/worker_event_listener_accessor.cpp +++ b/frameworks/core/interfaces/native/implementation/worker_event_listener_accessor.cpp @@ -13,9 +13,9 @@ * limitations under the License. */ +#include "arkoala_api_generated.h" #include "core/components_ng/base/frame_node.h" #include "core/interfaces/native/utility/converter.h" -#include "arkoala_api_generated.h" namespace OHOS::Ace::NG::GeneratedModifier { namespace WorkerEventListenerAccessor { diff --git a/frameworks/core/interfaces/native/utility/accessor_utils.cpp b/frameworks/core/interfaces/native/utility/accessor_utils.cpp index a2626f95393..1282b08920f 100644 --- a/frameworks/core/interfaces/native/utility/accessor_utils.cpp +++ b/frameworks/core/interfaces/native/utility/accessor_utils.cpp @@ -15,7 +15,7 @@ #include "core/interfaces/native/utility/accessor_utils.h" -bool AccessorUtils::CheckKeysPressed(const std::vector& keysStrs, +bool OHOS::Ace::NG::AccessorUtils::CheckKeysPressed(const std::vector& keysStrs, const std::vector& keysCodes) { auto intersects = diff --git a/frameworks/core/interfaces/native/utility/accessor_utils.h b/frameworks/core/interfaces/native/utility/accessor_utils.h index 55557a82765..ff04f7864c3 100644 --- a/frameworks/core/interfaces/native/utility/accessor_utils.h +++ b/frameworks/core/interfaces/native/utility/accessor_utils.h @@ -17,9 +17,11 @@ #include "core/event/key_event.h" +namespace OHOS::Ace::NG { class AccessorUtils { public: static bool CheckKeysPressed(const std::vector& keysStrs, const std::vector& keysCodes); }; +} // namespace OHOS::Ace::NG #endif // FOUNDATION_ARKUI_ACE_ENGINE_FRAMEWORKS_CORE_INTERFACES_ARKOALA_ACCESSOR_UTILS_H \ No newline at end of file diff --git a/frameworks/core/interfaces/native/utility/base_keeper.h b/frameworks/core/interfaces/native/utility/base_keeper.h index 0df5d718735..dda54c60abb 100644 --- a/frameworks/core/interfaces/native/utility/base_keeper.h +++ b/frameworks/core/interfaces/native/utility/base_keeper.h @@ -28,10 +28,10 @@ template class BaseKeeper { protected: struct ResourceData { - int counter; + int32_t counter = 0; ResourceDataT data; }; - typedef typename std::unordered_map ResourceMapType; + using ResourceMapType = std::unordered_map; typedef typename ResourceMapType::iterator ResourceMapIteratorType; static void Hold(Ark_Int32 resourceId) diff --git a/frameworks/core/interfaces/native/utility/converter.cpp b/frameworks/core/interfaces/native/utility/converter.cpp index 1e4af16391e..835a2394ff8 100644 --- a/frameworks/core/interfaces/native/utility/converter.cpp +++ b/frameworks/core/interfaces/native/utility/converter.cpp @@ -254,8 +254,8 @@ void AssignLinearGradientDirection(std::shared_ptr Dimension Convert(const Ark_CustomObject& src) { - LOGE("Convert [Ark_CustomObject] to [Dimension] is not supported"); + LOGW("Convert [Ark_CustomObject] to [Dimension] is not supported"); return Dimension(); } diff --git a/frameworks/core/interfaces/native/utility/converter.h b/frameworks/core/interfaces/native/utility/converter.h index 68d8186d239..89f3e6b8ffe 100644 --- a/frameworks/core/interfaces/native/utility/converter.h +++ b/frameworks/core/interfaces/native/utility/converter.h @@ -301,7 +301,7 @@ namespace Converter { template<> inline long Convert(const Ark_Number& src) { - LOGE("Ark_Number doesn`t support long type"); + LOGW("Ark_Number doesn`t support long type"); return static_cast(Convert(src)); } @@ -314,7 +314,7 @@ namespace Converter { template<> inline double Convert(const Ark_Number& src) { - LOGE("Ark_Number doesn`t support double type"); + LOGW("Ark_Number doesn`t support double type"); return src.tag == INTEROP_TAG_FLOAT32 ? static_cast(src.f32) : static_cast(src.i32); } @@ -363,7 +363,7 @@ namespace Converter { template<> inline ImageSourceInfo Convert(const Ark_DrawableDescriptor& value) { - LOGE("Convert [Ark_DrawableDescriptor] to [ImageSourceInfo] is not supported"); + LOGW("Convert [Ark_DrawableDescriptor] to [ImageSourceInfo] is not supported"); return ImageSourceInfo(); } @@ -381,7 +381,7 @@ namespace Converter { template<> inline ImageSourceInfo Convert(const Ark_LinearGradient_common& value) { - LOGE("Convert [Ark_LinearGradient] to [ImageSourceInfo] is not supported"); + LOGW("Convert [Ark_LinearGradient] to [ImageSourceInfo] is not supported"); return ImageSourceInfo(); } @@ -436,19 +436,19 @@ namespace Converter { template<> inline void AssignCast(std::optional& dst, const Ark_CustomObject& src) { - LOGE("ARKOALA Converter Ark_CustomObject -> Dimension is not implemented."); + LOGW("ARKOALA Converter Ark_CustomObject -> Dimension is not implemented."); } template<> inline void AssignCast(std::optional& dst, const Ark_Resource& src) { - LOGE("ARKOALA Converter -> Resource support (String) is not implemented."); + LOGW("ARKOALA Converter -> Resource support (String) is not implemented."); } template<> inline void AssignCast(std::optional& dst, const Ark_ColoringStrategy& src) { - LOGE("ARKOALA Converter Ark_ColoringStrategy -> Color is not implemented."); + LOGW("ARKOALA Converter Ark_ColoringStrategy -> Color is not implemented."); } template<> diff --git a/frameworks/core/interfaces/native/utility/reverse_converter.cpp b/frameworks/core/interfaces/native/utility/reverse_converter.cpp index 2865e7ca88f..cf2fba0cd92 100644 --- a/frameworks/core/interfaces/native/utility/reverse_converter.cpp +++ b/frameworks/core/interfaces/native/utility/reverse_converter.cpp @@ -132,9 +132,9 @@ void AssignArkValue(Ark_DragEvent& dragEvent, const RefPtr void AssignArkValue(Ark_TimePickerResult& dst, const std::string& src) { auto data = JsonUtil::ParseJsonString(src); - auto hour = data->GetValue("hour")->GetInt(); - auto minute = data->GetValue("minute")->GetInt(); - auto second = data->GetValue("second")->GetInt(); + auto hour = data->GetValue(HOUR)->GetInt(); + auto minute = data->GetValue(MINUTE)->GetInt(); + auto second = data->GetValue(SECOND)->GetInt(); dst = { .hour = ArkValue(hour), .minute = ArkValue(minute), @@ -555,11 +555,11 @@ void AssignArkValue(Ark_SpanStyle& dst, const RefPtr& src) CreateStylePeer(dst, src); break; case Ace::SpanType::CustomSpan: { - LOGE("Converter::AssignArkValue(Ark_SpanStyle) the Ark_CustomSpan is not implemented."); + LOGW("Converter::AssignArkValue(Ark_SpanStyle) the Ark_CustomSpan is not implemented."); break; } case Ace::SpanType::ExtSpan: { - LOGE("Converter::AssignArkValue(Ark_SpanStyle) the Ark_UserDataSpan is not implemented."); + LOGW("Converter::AssignArkValue(Ark_SpanStyle) the Ark_UserDataSpan is not implemented."); break; } default: LOGE("Unexpected enum value in SpanType: %{public}d", src->GetSpanType()); diff --git a/frameworks/core/interfaces/native/utility/reverse_converter.h b/frameworks/core/interfaces/native/utility/reverse_converter.h index 453be6925cf..82ae1c1444c 100644 --- a/frameworks/core/interfaces/native/utility/reverse_converter.h +++ b/frameworks/core/interfaces/native/utility/reverse_converter.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Huawei Device Co., Ltd. + * Copyright (c) 2025 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at diff --git a/frameworks/core/interfaces/native/utility/reverse_converter_enums.cpp b/frameworks/core/interfaces/native/utility/reverse_converter_enums.cpp index dc848c2dff6..f3cfba9dd93 100644 --- a/frameworks/core/interfaces/native/utility/reverse_converter_enums.cpp +++ b/frameworks/core/interfaces/native/utility/reverse_converter_enums.cpp @@ -33,7 +33,7 @@ void AssignArkValue(Ark_AccessibilityHoverType& dst, const AccessibilityHoverAct case AccessibilityHoverAction::HOVER_CANCEL: dst = ARK_ACCESSIBILITY_HOVER_TYPE_HOVER_CANCEL; break; default: dst = static_cast(-1); - LOGE("Unexpected enum value in Ark_AccessibilityHoverType: %{public}d", src); + LOGW("Unexpected enum value in Ark_AccessibilityHoverType: %{public}d", src); break; } } -- Gitee