From adfee0b87a4e2dba62740b5d78a706d28e847fe2 Mon Sep 17 00:00:00 2001 From: zhanghang Date: Wed, 23 Jul 2025 15:25:46 +0800 Subject: [PATCH] intercept applement Signed-off-by: zhanghang --- .../arkui/src/component/common.ets | 46 +++++++++++++++++++ .../arkts/ArkUIGeneratedNativeModule.ets | 2 + .../src/generated/arkoala_api_generated.h | 19 ++++++++ .../native/src/generated/bridge_generated.cc | 14 ++++++ .../native/src/generated/real_impl.cc | 4 ++ .../arkts/ArkUIGeneratedNativeModule.ts | 2 + .../arkui-ohos/src/component/common.ts | 37 +++++++++++++++ .../src/handwritten/modifiers/ArkBaseNode.ts | 4 ++ .../modifiers/ArkCommonModifier.ts | 3 ++ .../native/src/generated/dummy_impl.cc | 10 ++++ .../inner_api/arkui/component/common.d.ets | 6 +++ .../core/interfaces/arkoala/arkoala_api.h | 9 ++++ .../native/node/node_common_modifier.cpp | 29 ++++++++++++ 13 files changed, 185 insertions(+) diff --git a/frameworks/bridge/arkts_frontend/koala_mirror/arkoala-arkts/arkui/src/component/common.ets b/frameworks/bridge/arkts_frontend/koala_mirror/arkoala-arkts/arkui/src/component/common.ets index 4d79d94c7d4..f80b3c5156b 100644 --- a/frameworks/bridge/arkts_frontend/koala_mirror/arkoala-arkts/arkui/src/component/common.ets +++ b/frameworks/bridge/arkts_frontend/koala_mirror/arkoala-arkts/arkui/src/component/common.ets @@ -4759,6 +4759,18 @@ export class ArkCommonMethodPeer extends PeerNode { ArkUIGeneratedNativeModule._CommonMethod_setAccessibilityRole(this.peer.ptr, thisSerializer.asBuffer(), thisSerializer.length()) thisSerializer.release() } + SetOnAccessibilityActionInterceptAttribute(value: AccessibilityActionInterceptCallback | undefined): void { + const thisSerializer : SerializerBase = SerializerBase.hold() + let value_type : int32 = RuntimeType.UNDEFINED + value_type = runtimeType(value) + thisSerializer.writeInt8((value_type).toChar()) + if ((value_type) != (RuntimeType.UNDEFINED)) { + const value_value = value! + thisSerializer.holdAndWriteCallback(value_value) + } + ArkUIGeneratedNativeModule._CommonMethod_setOnAccessibilityFocus(this.peer.ptr, thisSerializer.asBuffer(), thisSerializer.length()) + thisSerializer.release() + } setOnAccessibilityFocusAttribute(value: AccessibilityFocusCallback | undefined): void { const thisSerializer : SerializerBase = SerializerBase.hold() let value_type : int32 = RuntimeType.UNDEFINED @@ -6827,6 +6839,16 @@ export enum AccessibilityRoleType { XCOMPONENT = 123, ROLE_NONE = 124 } +export enum AccessibilityAction { + UNDEFINED_ACTION = 0, + ACCESSIBILITY_CLICK = 1, +} +export enum AccessibilityActionInterceptResult { + ACTION_INTERCEPT = 0, + ACTION_CONTINUE = 1, + ACTION_RISE = 2, +} +export type AccessibilityActionInterceptCallback = (action: AccessibilityAction) => AccessibilityActionInterceptResult; export type AccessibilityFocusCallback = (isFocus: boolean) => void; export enum FinishCallbackType { REMOVED = 0, @@ -8007,6 +8029,9 @@ export interface CommonMethod { accessibilityRole(value: AccessibilityRoleType | undefined): this { throw new Error("Unimplemented method accessibilityRole") } + onAccessibilityActionIntercept(value: AccessibilityActionInterceptCallback | undefined): this { + throw new Error("Unimplemented method onAccessibilityActionIntercept") + } onAccessibilityFocus(value: AccessibilityFocusCallback | undefined): this { throw new Error("Unimplemented method onAccessibilityFocus") } @@ -8339,6 +8364,7 @@ export class ArkCommonMethodStyle implements CommonMethod { accessibilityUseSamePage_value?: AccessibilitySamePageMode | undefined accessibilityScrollTriggerable_value?: boolean | undefined accessibilityRole_value?: AccessibilityRoleType | undefined + onAccessibilityActionIntercept_value?: AccessibilityActionInterceptCallback | undefined onAccessibilityFocus_value?: AccessibilityFocusCallback | undefined accessibilityTextHint_value?: string | undefined accessibilityDescription_value?: string | undefined @@ -8770,6 +8796,9 @@ export class ArkCommonMethodStyle implements CommonMethod { public accessibilityRole(value: AccessibilityRoleType | undefined): this { return this } + public onAccessibilityActionIntercept(value: AccessibilityActionInterceptCallback | undefined): this { + return this + } public onAccessibilityFocus(value: AccessibilityFocusCallback | undefined): this { return this } @@ -10757,6 +10786,14 @@ export class ArkCommonMethodComponent extends ComponentBase implements CommonMet } return this } + public onAccessibilityActionIntercept(value: AccessibilityActionInterceptCallback | undefined): this { + if (this.checkPriority("onAccessibilityActionIntercept")) { + const value_casted = value as (AccessibilityActionInterceptCallback | undefined) + this.getPeer()?.setOnAccessibilityActionInterceptAttribute(value_casted) + return this + } + return this + } public onAccessibilityFocus(value: AccessibilityFocusCallback | undefined): this { if (this.checkPriority("onAccessibilityFocus")) { const value_casted = value as (AccessibilityFocusCallback | undefined) @@ -11892,6 +11929,8 @@ export class ArkCommonMethodSet implements CommonMethod { _accessibilityScrollTriggerable0_value?: boolean | undefined _accessibilityRole_flag?: boolean _accessibilityRole0_value?: AccessibilityRoleType | undefined + _onAccessibilityActionIntercept_flag?: boolean + _onAccessibilityActionIntercept0_value?: AccessibilityActionInterceptCallback | undefined _onAccessibilityFocus_flag?: boolean _onAccessibilityFocus0_value?: AccessibilityFocusCallback | undefined _accessibilityTextHint_flag?: boolean @@ -12302,6 +12341,8 @@ export class ArkCommonMethodSet implements CommonMethod { component.accessibilityScrollTriggerable((this._accessibilityScrollTriggerable0_value as boolean | undefined)) if (this._accessibilityRole_flag) component.accessibilityRole((this._accessibilityRole0_value as AccessibilityRoleType | undefined)) + if (this._onAccessibilityActionIntercept_flag) + component.onAccessibilityActionIntercept((this._onAccessibilityActionIntercept0_value as AccessibilityActionInterceptCallback | undefined)) if (this._onAccessibilityFocus_flag) component.onAccessibilityFocus((this._onAccessibilityFocus0_value as AccessibilityFocusCallback | undefined)) if (this._accessibilityTextHint_flag) @@ -13086,6 +13127,11 @@ export class ArkCommonMethodSet implements CommonMethod { this._accessibilityRole0_value = value return this } + public onAccessibilityActionIntercept(value: AccessibilityActionInterceptCallback | undefined): this { + this._onAccessibilityActionIntercept_flag = true + this._onAccessibilityActionIntercept0_value = value + return this + } public onAccessibilityFocus(value: AccessibilityFocusCallback | undefined): this { this._onAccessibilityFocus_flag = true this._onAccessibilityFocus0_value = value diff --git a/frameworks/bridge/arkts_frontend/koala_mirror/arkoala-arkts/arkui/src/generated/arkts/ArkUIGeneratedNativeModule.ets b/frameworks/bridge/arkts_frontend/koala_mirror/arkoala-arkts/arkui/src/generated/arkts/ArkUIGeneratedNativeModule.ets index cbb8421a82b..e385bb3fd2c 100644 --- a/frameworks/bridge/arkts_frontend/koala_mirror/arkoala-arkts/arkui/src/generated/arkts/ArkUIGeneratedNativeModule.ets +++ b/frameworks/bridge/arkts_frontend/koala_mirror/arkoala-arkts/arkui/src/generated/arkts/ArkUIGeneratedNativeModule.ets @@ -521,6 +521,8 @@ export class ArkUIGeneratedNativeModule { @ani.unsafe.Direct native static _CommonMethod_setAccessibilityRole(ptr: KPointer, thisArray: KSerializerBuffer, thisLength: int32): void @ani.unsafe.Direct + native static _CommonMethod_setonAccessibilityActionIntercept(ptr: KPointer, thisArray: KSerializerBuffer, thisLength: int32): void + @ani.unsafe.Direct native static _CommonMethod_setOnAccessibilityFocus(ptr: KPointer, thisArray: KSerializerBuffer, thisLength: int32): void @ani.unsafe.Direct native static _CommonMethod_setAccessibilityTextHint(ptr: KPointer, thisArray: KSerializerBuffer, thisLength: int32): void diff --git a/frameworks/bridge/arkts_frontend/koala_mirror/arkoala-arkts/framework/native/src/generated/arkoala_api_generated.h b/frameworks/bridge/arkts_frontend/koala_mirror/arkoala-arkts/framework/native/src/generated/arkoala_api_generated.h index 0b951ba467a..1737a81058e 100644 --- a/frameworks/bridge/arkts_frontend/koala_mirror/arkoala-arkts/framework/native/src/generated/arkoala_api_generated.h +++ b/frameworks/bridge/arkts_frontend/koala_mirror/arkoala-arkts/framework/native/src/generated/arkoala_api_generated.h @@ -7014,6 +7014,25 @@ typedef struct Opt_AccessibilityCallback { Ark_Tag tag; AccessibilityCallback value; } Opt_AccessibilityCallback; +typedef enum Ark_AccessibilityAction { + ARK_UNDEFINED_ACTION = 0, + ARK_ACCESSIBILITY_CLICK = 1, +}Ark_AccessibilityAction; +typedef enum Ark_AccessibilityActionInterceptResult { + ARK_ACTION_INTERCEPT = 0, + ARK_ACTION_CONTINUE = 1, + ARK_ACTION_RISE = 2, +}Ark_AccessibilityActionInterceptResult; +typedef struct AccessibilityActionInterceptCallback { + /* kind: Callback */ + Ark_CallbackResource resource; + Ark_AccessibilityActionInterceptResult (*call)(const Ark_Int32 resourceId, const Ark_AccessibilityAction action); + Ark_AccessibilityActionInterceptResult (*callSync)(Ark_VMContext vmContext, const Ark_Int32 resourceId, const Ark_AccessibilityAction action); +} AccessibilityActionInterceptCallback; +typedef struct Opt_AccessibilityActionInterceptCallback { + Ark_Tag tag; + AccessibilityActionInterceptCallback value; +} Opt_AccessibilityActionInterceptCallback; typedef struct AccessibilityFocusCallback { /* kind: Callback */ Ark_CallbackResource resource; diff --git a/frameworks/bridge/arkts_frontend/koala_mirror/arkoala-arkts/framework/native/src/generated/bridge_generated.cc b/frameworks/bridge/arkts_frontend/koala_mirror/arkoala-arkts/framework/native/src/generated/bridge_generated.cc index cbb4333a331..e3f95ef5130 100644 --- a/frameworks/bridge/arkts_frontend/koala_mirror/arkoala-arkts/framework/native/src/generated/bridge_generated.cc +++ b/frameworks/bridge/arkts_frontend/koala_mirror/arkoala-arkts/framework/native/src/generated/bridge_generated.cc @@ -4603,6 +4603,20 @@ void impl_CommonMethod_setAccessibilityRole(Ark_NativePointer thisPtr, KSerializ GetNodeModifiers()->getCommonMethodModifier()->setAccessibilityRole(self, static_cast(&value_value)); } KOALA_INTEROP_DIRECT_V3(CommonMethod_setAccessibilityRole, Ark_NativePointer, KSerializerBuffer, int32_t) +void impl_CommonMethod_setOnAccessibilityActionIntercept(Ark_NativePointer thisPtr, KSerializerBuffer thisArray, int32_t thisLength) { + Ark_NodeHandle self = reinterpret_cast(thisPtr); + DeserializerBase thisDeserializer(thisArray, thisLength); + const auto value_value_buf_runtimeType = static_cast(thisDeserializer.readInt8()); + Opt_AccessibilityActionInterceptCallback value_value_buf = {}; + value_value_buf.tag = value_value_buf_runtimeType == INTEROP_RUNTIME_UNDEFINED ? INTEROP_TAG_UNDEFINED : INTEROP_TAG_OBJECT; + if ((value_value_buf_runtimeType) != (INTEROP_RUNTIME_UNDEFINED)) + { + value_value_buf.value = {thisDeserializer.readCallbackResource(), reinterpret_cast(thisDeserializer.readPointerOrDefault(reinterpret_cast(getManagedCallbackCaller(Kind_AccessibilityActionInterceptCallback)))), reinterpret_cast(thisDeserializer.readPointerOrDefault(reinterpret_cast(getManagedCallbackCallerSync(Kind_AccessibilityActionInterceptCallback))))}; + } + Opt_AccessibilityActionInterceptCallback value_value = value_value_buf;; + GetNodeModifiers()->getCommonMethodModifier()->setOnAccessibilityActionIntercept(self, static_cast(&value_value)); +} +KOALA_INTEROP_DIRECT_V3(CommonMethod_setOnAccessibilityActionIntercept, Ark_NativePointer, KSerializerBuffer, int32_t) void impl_CommonMethod_setOnAccessibilityFocus(Ark_NativePointer thisPtr, KSerializerBuffer thisArray, int32_t thisLength) { Ark_NodeHandle self = reinterpret_cast(thisPtr); DeserializerBase thisDeserializer(thisArray, thisLength); diff --git a/frameworks/bridge/arkts_frontend/koala_mirror/arkoala-arkts/framework/native/src/generated/real_impl.cc b/frameworks/bridge/arkts_frontend/koala_mirror/arkoala-arkts/framework/native/src/generated/real_impl.cc index cf35022b88c..13b3aef2a60 100644 --- a/frameworks/bridge/arkts_frontend/koala_mirror/arkoala-arkts/framework/native/src/generated/real_impl.cc +++ b/frameworks/bridge/arkts_frontend/koala_mirror/arkoala-arkts/framework/native/src/generated/real_impl.cc @@ -2058,6 +2058,10 @@ namespace OHOS::Ace::NG::GeneratedModifier { const Opt_AccessibilityRoleType* value) { } + void onAccessibilityActionInterceptImpl(Ark_NativePointer node, + const Opt_onAccessibilityActionInterceptType* value) + { + } void OnAccessibilityFocusImpl(Ark_NativePointer node, const Opt_AccessibilityFocusCallback* value) { diff --git a/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/component/arkts/ArkUIGeneratedNativeModule.ts b/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/component/arkts/ArkUIGeneratedNativeModule.ts index 2e12b363515..ca86160bcfa 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/component/arkts/ArkUIGeneratedNativeModule.ts +++ b/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/component/arkts/ArkUIGeneratedNativeModule.ts @@ -608,6 +608,8 @@ export class ArkUIGeneratedNativeModule { @ani.unsafe.Direct native static _CommonMethod_accessibilityRole(ptr: KPointer, thisArray: KSerializerBuffer, thisLength: int32): void @ani.unsafe.Direct + native static _CommonMethod_onAccessibilityActionIntercept(ptr: KPointer, thisArray: KSerializerBuffer, thisLength: int32): void + @ani.unsafe.Direct native static _CommonMethod_onAccessibilityFocus(ptr: KPointer, thisArray: KSerializerBuffer, thisLength: int32): void @ani.unsafe.Direct native static _CommonMethod_accessibilityTextHint(ptr: KPointer, thisArray: KSerializerBuffer, thisLength: int32): void diff --git a/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/component/common.ts b/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/component/common.ts index 22fe768b197..80bf0b75dbf 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/component/common.ts +++ b/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/component/common.ts @@ -5158,6 +5158,19 @@ export class ArkCommonMethodPeer extends PeerNode { ArkUIGeneratedNativeModule._CommonMethod_accessibilityRole(this.peer.ptr, thisSerializer.asBuffer(), thisSerializer.length()) thisSerializer.release() } + + onAccessibilityActionInterceptAttribute(value: AccessibilityActionInterceptCallback | undefined): void { + const thisSerializer : Serializer = Serializer.hold() + let value_type : int32 = RuntimeType.UNDEFINED + value_type = runtimeType(value) + thisSerializer.writeInt8(value_type as int32) + if ((RuntimeType.UNDEFINED) != (value_type)) { + const value_value = value! + thisSerializer.holdAndWriteCallback(value_value) + } + ArkUIGeneratedNativeModule._CommonMethod_onAccessibilityActionIntercept(this.peer.ptr, thisSerializer.asBuffer(), thisSerializer.length()) + thisSerializer.release() + } onAccessibilityFocusAttribute(value: AccessibilityFocusCallback | undefined): void { const thisSerializer : Serializer = Serializer.hold() let value_type : int32 = RuntimeType.UNDEFINED @@ -7071,6 +7084,17 @@ export enum AccessibilityRoleType { XCOMPONENT = 123, ROLE_NONE = 124 } +export enum AccessibilityAction { + UNDEFINED_ACTION = 0, + ACCESSIBILITY_CLICK = 1, + +} +export enum AccessibilityActionInterceptResult { + ACTION_INTERCEPT = 0, + ACTION_CONTINUE = 1, + ACTION_RISE = 2, +} +export type AccessibilityActionInterceptCallback = (action: AccessibilityAction) => AccessibilityActionInterceptResult; export type AccessibilityFocusCallback = (isFocus: boolean) => void; export enum FinishCallbackType { REMOVED = 0, @@ -8126,6 +8150,7 @@ export interface CommonMethod { accessibilityUseSamePage(value: AccessibilitySamePageMode | undefined): this {return this;} accessibilityScrollTriggerable(value: boolean | undefined): this {return this;} accessibilityRole(value: AccessibilityRoleType | undefined): this {return this;} + onAccessibilityActionIntercept(value: AccessibilityActionInterceptCallback | undefined): this {return this;} onAccessibilityFocus(value: AccessibilityFocusCallback | undefined): this {return this;} accessibilityTextHint(value: string | undefined): this {return this;} accessibilityDescription(value: string | undefined | Resource | undefined): this {return this;} @@ -8317,6 +8342,7 @@ export class ArkCommonMethodStyle implements CommonMethod { accessibilityUseSamePage_value?: AccessibilitySamePageMode | undefined accessibilityScrollTriggerable_value?: boolean | undefined accessibilityRole_value?: AccessibilityRoleType | undefined + onAccessibilityActionIntercept_value?: AccessibilityActionInterceptCallback | undefined onAccessibilityFocus_value?: AccessibilityFocusCallback | undefined accessibilityTextHint_value?: string | undefined accessibilityDescription_value?: string | undefined @@ -8762,6 +8788,9 @@ export class ArkCommonMethodStyle implements CommonMethod { public accessibilityRole(value: AccessibilityRoleType | undefined): this { return this } + public onAccessibilityActionIntercept(value: AccessibilityActionInterceptCallback | undefined): this { + return this + } public onAccessibilityFocus(value: AccessibilityFocusCallback | undefined): this { return this } @@ -10806,6 +10835,14 @@ export class ArkCommonMethodComponent extends ComponentBase implements CommonMet } return this } + public onAccessibilityActionIntercept(value: AccessibilityActionInterceptCallback | undefined): this { + if (this.checkPriority("onAccessibilityActionIntercept")) { + const value_casted = value as (AccessibilityActionInterceptCallback | undefined) + this.getPeer()?.onAccessibilityActionInterceptAttribute(value_casted) + return this + } + return this + } public onAccessibilityFocus(value: AccessibilityFocusCallback | undefined): this { if (this.checkPriority("onAccessibilityFocus")) { const value_casted = value as (AccessibilityFocusCallback | undefined) diff --git a/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/handwritten/modifiers/ArkBaseNode.ts b/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/handwritten/modifiers/ArkBaseNode.ts index 5b9d2fcda00..61dbfb46f6a 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/handwritten/modifiers/ArkBaseNode.ts +++ b/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/handwritten/modifiers/ArkBaseNode.ts @@ -29,6 +29,7 @@ import { TouchTestInfo, TransitionEffect, TransitionFinishCallback, TransitionOp import { VisibleAreaChangeCallback, sharedTransitionOptions, BackgroundImageOptions, ArkCommonMethodPeer } from '../../component/common'; import { SystemAdaptiveOptions, CrownEvent, FocusAxisEvent, AxisEvent, FocusMovement, LinearGradientOptions } from '../../component/common'; import { OnDragEventCallback, LayoutPolicy, PreviewConfiguration, DropOptions, SweepGradientOptions, AccessibilitySamePageMode } from '../../component/common'; +import { AccessibilityActionInterceptCallback, AccessibilityAction, AccessibilityActionInterceptResult} from '../../component/common'; import { AccessibilityFocusCallback, ReuseOptions, TipsMessageType, TipsOptions, VisibleAreaEventOptions, RadialGradientOptions} from '../../component/common'; import { Color, HitTestMode, ImageSize, Alignment, BorderStyle, ColoringStrategy, HoverEffect, Visibility, ItemAlign, Direction, ObscuredReasons, RenderFit, FocusDrawLevel, ImageRepeat, Axis, ResponseType, FunctionKey, ModifierKey } from '../../component/enums' import { ResourceColor, ConstraintSizeOptions, SizeOptions, Length, ChainWeightOptions, Padding, LocalizedPadding, Position, BorderOptions, EdgeWidths, LocalizedEdgeWidths, EdgeColors, LocalizedEdgeColors, BorderRadiuses, LocalizedBorderRadiuses, OutlineOptions, EdgeOutlineStyles, Dimension, EdgeOutlineWidths, OutlineRadiuses, Area, LocalizedEdges, LocalizedPosition, ResourceStr, AccessibilityOptions, EdgeStyles, Edges } from '../../component/units' @@ -505,6 +506,9 @@ export class ArkBaseNode extends ComponentBase implements CommonAttribute { public accessibilityRole(value: AccessibilityRoleType | undefined): this { return this } + public onAccessibilityActionIntercept(value: AccessibilityActionInterceptCallback | undefined): this { + return this + } public onAccessibilityFocus(value: AccessibilityFocusCallback | undefined): this { return this } diff --git a/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/handwritten/modifiers/ArkCommonModifier.ts b/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/handwritten/modifiers/ArkCommonModifier.ts index a4a7731f589..0a102d167e0 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/handwritten/modifiers/ArkCommonModifier.ts +++ b/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/handwritten/modifiers/ArkCommonModifier.ts @@ -1751,6 +1751,9 @@ export class ArkCommonAttributeSet implements CommonAttribute { public accessibilityRole(value: AccessibilityRoleType | undefined): this { return this } + public onAccessibilityActionIntercept(value: AccessibilityFocusCallback | undefined): this { + return this + } public onAccessibilityFocus(value: AccessibilityFocusCallback | undefined): this { return this } diff --git a/frameworks/bridge/arkts_frontend/koala_projects/arkoala/framework/native/src/generated/dummy_impl.cc b/frameworks/bridge/arkts_frontend/koala_projects/arkoala/framework/native/src/generated/dummy_impl.cc index edd3321a365..71be493efc8 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/arkoala/framework/native/src/generated/dummy_impl.cc +++ b/frameworks/bridge/arkts_frontend/koala_projects/arkoala/framework/native/src/generated/dummy_impl.cc @@ -3972,6 +3972,16 @@ namespace OHOS::Ace::NG::GeneratedModifier { out.append(") \n"); appendGroupedLog(1, out); } + void onAccessibilityActionInterceptImpl(Ark_NativePointer node, + const Opt_AccessibilityRoleType* value) + { + if (!needGroupedLog(1)) + return; + string out("onAccessibilityActionIntercept("); + WriteToString(&out, value); + out.append(") \n"); + appendGroupedLog(1, out); + } void OnAccessibilityFocusImpl(Ark_NativePointer node, const Opt_AccessibilityFocusCallback* value) { diff --git a/frameworks/bridge/arkts_frontend/koala_projects/inner_api/arkui/component/common.d.ets b/frameworks/bridge/arkts_frontend/koala_projects/inner_api/arkui/component/common.d.ets index d1f8aac2e20..9a53552e7ef 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/inner_api/arkui/component/common.d.ets +++ b/frameworks/bridge/arkts_frontend/koala_projects/inner_api/arkui/component/common.d.ets @@ -90,6 +90,7 @@ import { RadialGradientOptions, AccessibilitySamePageMode, AccessibilityRoleType, + AccessibilityActionInterceptCallback, AccessibilityFocusCallback, ReuseOptions, BackgroundImageOptions, @@ -354,6 +355,7 @@ export interface CommonMethod { accessibilityUseSamePage(value: AccessibilitySamePageMode | undefined): this; accessibilityScrollTriggerable(value: boolean | undefined): this; accessibilityRole(value: AccessibilityRoleType | undefined): this; + onAccessibilityActionIntercept(value: AccessibilityActionInterceptCallback | undefined): this; onAccessibilityFocus(value: AccessibilityFocusCallback | undefined): this; accessibilityTextHint(value: string | undefined): this; accessibilityDescription(value: string | undefined | Resource | undefined): this; @@ -641,6 +643,7 @@ export declare class ArkCommonMethodPeer extends PeerNode { public accessibilityUseSamePageAttribute(value: AccessibilitySamePageMode | undefined): void; public accessibilityScrollTriggerableAttribute(value: boolean | undefined): void; public accessibilityRoleAttribute(value: AccessibilityRoleType | undefined): void; + public onAccessibilityActionInterceptAttribute(value: AccessibilityActionInterceptCallback | undefined): void; public onAccessibilityFocusAttribute(value: AccessibilityFocusCallback | undefined): void; public accessibilityTextHintAttribute(value: string | undefined): void; public accessibilityDescription0Attribute(value: string | undefined): void; @@ -924,6 +927,7 @@ export declare class ArkCommonMethodComponent extends ComponentBase implements C public accessibilityUseSamePage(value: AccessibilitySamePageMode | undefined): this; public accessibilityScrollTriggerable(value: boolean | undefined): this; public accessibilityRole(value: AccessibilityRoleType | undefined): this; + public onAccessibilityActionIntercept(value: AccessibilityActionInterceptCallback | undefined): this; public onAccessibilityFocus(value: AccessibilityFocusCallback | undefined): this; public accessibilityTextHint(value: string | undefined): this; public accessibilityDescription(value: string | undefined | Resource | undefined): this; @@ -1146,6 +1150,7 @@ export declare class ArkCommonMethodStyle implements CommonMethod { public accessibilityUseSamePage_value?: AccessibilitySamePageMode | undefined; public accessibilityScrollTriggerable_value?: boolean | undefined; public accessibilityRole_value?: AccessibilityRoleType | undefined; + public onAccessibilityActionIntercept_value?: AccessibilityActionInterceptCallback | undefined; public onAccessibilityFocus_value?: AccessibilityFocusCallback | undefined; public accessibilityTextHint_value?: string | undefined; public accessibilityDescription_value?: string | undefined; @@ -1317,6 +1322,7 @@ export declare class ArkCommonMethodStyle implements CommonMethod { public accessibilityUseSamePage(value: AccessibilitySamePageMode | undefined): this; public accessibilityScrollTriggerable(value: boolean | undefined): this; public accessibilityRole(value: AccessibilityRoleType | undefined): this; + public onAccessibilityActionIntercept(value: AccessibilityActionInterceptCallback | undefined): this; public onAccessibilityFocus(value: AccessibilityFocusCallback | undefined): this; public accessibilityTextHint(value: string | undefined): this; public accessibilityDescription(value: string | undefined | Resource | undefined): this; diff --git a/frameworks/core/interfaces/arkoala/arkoala_api.h b/frameworks/core/interfaces/arkoala/arkoala_api.h index f0da788dfc4..f7a3e998eb8 100644 --- a/frameworks/core/interfaces/arkoala/arkoala_api.h +++ b/frameworks/core/interfaces/arkoala/arkoala_api.h @@ -67,6 +67,12 @@ typedef enum { FOCUS_MOVE_RIGHT, } FocusMove; +typedef enum { + ARK_ACTION_INTERCEPT = 0, + ARK_ACTION_CONTINUE = 1, + ARK_ACTION_RISE = 2, +}ArkUIAccessibilityActionInterceptResult; + typedef int ArkUI_Bool; typedef std::int16_t ArkUI_Int16; typedef int ArkUI_Int32; @@ -2643,6 +2649,9 @@ struct ArkUICommonModifier { void (*setAccessibilityActions)(ArkUINodeHandle node, ArkUI_Uint32 actions); void (*resetAccessibilityActions)(ArkUINodeHandle node); ArkUI_Uint32 (*getAccessibilityActions)(ArkUINodeHandle node); + void (*setOnAccessibilityActionIntercept)(ArkUINodeHandle node, ArkUIAccessibilityActionInterceptResult onAccessibilityActionInterceptCallback); + void (*resetOnAccessibilityActionIntercept)(ArkUINodeHandle node); + ArkUI_CharPtr (*getOnAccessibilityActionIntercept)(ArkUINodeHandle node); void (*setAccessibilityRole)(ArkUINodeHandle node, ArkUI_CharPtr role); void (*resetAccessibilityRole)(ArkUINodeHandle node); ArkUI_CharPtr (*getAccessibilityRole)(ArkUINodeHandle node); diff --git a/frameworks/core/interfaces/native/node/node_common_modifier.cpp b/frameworks/core/interfaces/native/node/node_common_modifier.cpp index 9ec88707939..69c60822f26 100644 --- a/frameworks/core/interfaces/native/node/node_common_modifier.cpp +++ b/frameworks/core/interfaces/native/node/node_common_modifier.cpp @@ -7693,7 +7693,30 @@ ArkUI_Uint32 GetAccessibilityActions(ArkUINodeHandle node) auto accessibilityProperty = frameNode->GetAccessibilityProperty(); return accessibilityProperty->GetAccessibilityActions(); } +void SetOnAccessibilityActionIntercept(ArkUINodeHandle node, ArkUIAccessibilityActionInterceptResult onAccessibilityActionInterceptCallback) +{ + auto* frameNode = reinterpret_cast(node); + CHECK_NULL_VOID(frameNode); + auto accessibilityProperty = frameNode->GetOnAccessibilityActionIntercept(); + accessibilityProperty->SetOnAccessibilityActionIntercept(::ArkUIAccessibilityActionInterceptResult(onAccessibilityActionInterceptCallback)); +} + +void ResetOnAccessibilityActionIntercept(ArkUINodeHandle node) +{ + auto* frameNode = reinterpret_cast(node); + CHECK_NULL_VOID(frameNode); + auto accessibilityProperty = frameNode->GetAccessibilityProperty(); + accessibilityProperty->ResetOnAccessibilityActionIntercept(); +} +ArkUI_CharPtr GetOnAccessibilityActionIntercept(ArkUINodeHandle node) +{ + auto* frameNode = reinterpret_cast(node); + CHECK_NULL_RETURN(frameNode, nullptr); + auto accessibilityProperty = frameNode->GetAccessibilityProperty(); + g_strValue = accessibilityProperty->GetOnAccessibilityActionIntercept(); + return g_strValue.c_str(); +} void SetAccessibilityRole(ArkUINodeHandle node, ArkUI_CharPtr role) { auto* frameNode = reinterpret_cast(node); @@ -9145,6 +9168,9 @@ const ArkUICommonModifier* GetCommonModifier() .setAccessibilityActions = SetAccessibilityActions, .resetAccessibilityActions = ResetAccessibilityActions, .getAccessibilityActions = GetAccessibilityActions, + .setOnAccessibilityActionIntercept = SetOnAccessibilityActionIntercept, + .resetOnAccessibilityActionIntercept= ResetOnAccessibilityActionIntercept, + .getOnAccessibilityActionIntercept = GetOnAccessibilityActionIntercept, .setAccessibilityRole = SetAccessibilityRole, .resetAccessibilityRole = ResetAccessibilityRole, .getAccessibilityRole = GetAccessibilityRole, @@ -9586,6 +9612,9 @@ const CJUICommonModifier* GetCJUICommonModifier() .setAccessibilityActions = SetAccessibilityActions, .resetAccessibilityActions = ResetAccessibilityActions, .getAccessibilityActions = GetAccessibilityActions, + .setOnAccessibilityActionIntercept = SetOnAccessibilityActionIntercept, + .resetOnAccessibilityActionIntercept = ResetOnAccessibilityActionIntercept, + .getOnAccessibilityActionIntercept = GetOnAccessibilityActionIntercept, .setAccessibilityRole = SetAccessibilityRole, .resetAccessibilityRole = ResetAccessibilityRole, .getAccessibilityRole = GetAccessibilityRole, -- Gitee