From 01aa727096d2ce31aafffa5a6b7a0dd21dc390d9 Mon Sep 17 00:00:00 2001 From: zjxi Date: Thu, 2 Jan 2025 20:41:34 +0800 Subject: [PATCH 1/5] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8Dxcomponent=E9=94=80?= =?UTF-8?q?=E6=AF=81=E6=97=B6=E5=8F=8A=E6=97=B6=E5=9C=A8onSurfaceDestroy()?= =?UTF-8?q?=E9=87=8C=E5=AF=B9=E6=97=A0=E9=9A=9C=E7=A2=8Dprovider=E8=B5=8B?= =?UTF-8?q?=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zjxi --- .../ohos_accessibility_bridge.cpp | 26 ++++++++++++------- .../platform/ohos/ohos_xcomponent_adapter.cpp | 2 ++ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/shell/platform/ohos/accessibility/ohos_accessibility_bridge.cpp b/shell/platform/ohos/accessibility/ohos_accessibility_bridge.cpp index d173fdba5c..d22b4be20c 100644 --- a/shell/platform/ohos/accessibility/ohos_accessibility_bridge.cpp +++ b/shell/platform/ohos/accessibility/ohos_accessibility_bridge.cpp @@ -44,7 +44,9 @@ OhosAccessibilityBridge* OhosAccessibilityBridge::GetInstance() } OhosAccessibilityBridge::OhosAccessibilityBridge() - : isFlutterNavigated_(false), provider_(nullptr), isAccessibilityEnabled_(false) {} + : isFlutterNavigated_(false), + provider_(nullptr), + isAccessibilityEnabled_(false) {} /** * 监听当前ohos平台是否开启无障碍屏幕朗读服务 @@ -81,15 +83,17 @@ void OhosAccessibilityBridge::UpdateSemantics( flutter::CustomAccessibilityActionUpdates actions) { FML_DLOG(INFO) << "OhosAccessibilityBridge::UpdateSemantics()"; + provider_ = XComponentAdapter::GetInstance()->accessibilityProvider_; + std::vector updatedFlutterNodes; // 当flutter页面状态更新(路由新页面)时,自动请求root节点组件获焦(规避滑动组件更新干扰) if (isFlutterNavigated_) { - Flutter_SendAccessibilityAsyncEvent(0, - ArkUI_AccessibilityEventType:: - ARKUI_ACCESSIBILITY_NATIVE_EVENT_TYPE_PAGE_STATE_UPDATE); - RequestFocusWhenPageUpdate(0); - isFlutterNavigated_ = false; + Flutter_SendAccessibilityAsyncEvent(0, + ArkUI_AccessibilityEventType:: + ARKUI_ACCESSIBILITY_NATIVE_EVENT_TYPE_PAGE_STATE_UPDATE); + RequestFocusWhenPageUpdate(0); + isFlutterNavigated_ = false; } /** 获取并分析每个语义节点的更新属性 */ @@ -274,9 +278,7 @@ void OhosAccessibilityBridge::RequestFocusWhenPageUpdate(int32_t requestFocusId) { if (OHOS_API_VERSION < 13) { return; } CHECK_NULL_PTR(provider_, RequestFocusWhenPageUpdate); - if (provider_ == nullptr) { - return; - } + if (provider_ == nullptr) { return; } auto OH_ArkUI_CreateAccessibilityEventInfo = OhosAccessibilityDDL::DLLoadCreateEventInfoFunc(ArkUIAccessibilityConstant::ARKUI_CREATE_EVENT); @@ -1377,6 +1379,8 @@ int32_t OhosAccessibilityBridge::ExecuteAccessibilityAction( << " *actionArguments=" << actionArguments; CHECK_NULL_PTR_WITH_RET(actionArguments, ExecuteAccessibilityAction); + provider_ = XComponentAdapter::GetInstance()->accessibilityProvider_; + // 获取当前elementid对应的flutter语义节点 auto flutterNode = GetFlutterSemanticsNode(static_cast(elementId)); if (!g_flutterSemanticsTree.count(flutterNode.id)) { @@ -1572,7 +1576,8 @@ void OhosAccessibilityBridge::Flutter_SendAccessibilityAnnounceEvent( ArkUI_AccessibilityEventType eventType) { if (OHOS_API_VERSION < 13) { return; } - + + provider_ = XComponentAdapter::GetInstance()->accessibilityProvider_; CHECK_NULL_PTR(provider_, Flutter_SendAccessibilityAnnounceEvent); if (provider_ == nullptr) { return; } @@ -1623,6 +1628,7 @@ void OhosAccessibilityBridge::Flutter_SendAccessibilityAsyncEvent( { if (OHOS_API_VERSION < 13) { return; } + provider_ = XComponentAdapter::GetInstance()->accessibilityProvider_; CHECK_NULL_PTR(provider_, Flutter_SendAccessibilityAsyncEvent); if (provider_ == nullptr) { return; } diff --git a/shell/platform/ohos/ohos_xcomponent_adapter.cpp b/shell/platform/ohos/ohos_xcomponent_adapter.cpp index 8490fd1ade..e5d0395b6c 100644 --- a/shell/platform/ohos/ohos_xcomponent_adapter.cpp +++ b/shell/platform/ohos/ohos_xcomponent_adapter.cpp @@ -388,6 +388,7 @@ void XComponentBase::RegisterArkUIAccessibilityService(OH_NativeXComponent* nati ); XComponentAdapter::GetInstance()->accessibilityProvider_ = a11yProvider; + FML_DLOG(INFO) << "RegisterArkUIAccessibilityService is finished"; } @@ -455,6 +456,7 @@ void XComponentBase::OnSurfaceChanged(OH_NativeXComponent* component, void* wind void XComponentBase::OnSurfaceDestroyed(OH_NativeXComponent* component, void* window) { window_ = nullptr; + XComponentAdapter::GetInstance()->accessibilityProvider_ = nullptr; LOGD("XComponentManger::OnSurfaceDestroyed"); if (isEngineAttached_) { PlatformViewOHOSNapi::SurfaceDestroyed(std::stoll(shellholderId_)); -- Gitee From b549660cd7ab2e7375773ccb59e63d6e36cb569c Mon Sep 17 00:00:00 2001 From: zjxi Date: Mon, 6 Jan 2025 11:34:06 +0800 Subject: [PATCH 2/5] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E6=97=A0=E9=9A=9C?= =?UTF-8?q?=E7=A2=8Dxcomponent=E5=A4=9A=E5=AE=9E=E4=BE=8B=E9=97=AA?= =?UTF-8?q?=E9=80=80bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zjxi --- .../native_accessibility_channel.cpp | 2 +- .../ohos_accessibility_bridge.cpp | 34 +++++++------------ .../accessibility/ohos_accessibility_bridge.h | 11 +++--- .../ohos/napi/platform_view_ohos_napi.cpp | 20 +++++------ .../platform/ohos/ohos_xcomponent_adapter.cpp | 8 ++--- shell/platform/ohos/ohos_xcomponent_adapter.h | 2 ++ shell/platform/ohos/platform_view_ohos.cpp | 8 +++-- 7 files changed, 40 insertions(+), 45 deletions(-) diff --git a/shell/platform/ohos/accessibility/native_accessibility_channel.cpp b/shell/platform/ohos/accessibility/native_accessibility_channel.cpp index b772ab6603..7d571f3528 100644 --- a/shell/platform/ohos/accessibility/native_accessibility_channel.cpp +++ b/shell/platform/ohos/accessibility/native_accessibility_channel.cpp @@ -73,7 +73,7 @@ namespace flutter { { auto ohos_shell_holder = reinterpret_cast(shellHolderId); - ohos_shell_holder->GetPlatformView()->PlatformView::DispatchSemanticsAction(id, action, fml::MallocMapping()); + ohos_shell_holder->GetPlatformView()->PlatformView::DispatchSemanticsAction(id, action, std::move(args)); } /** diff --git a/shell/platform/ohos/accessibility/ohos_accessibility_bridge.cpp b/shell/platform/ohos/accessibility/ohos_accessibility_bridge.cpp index d22b4be20c..1a79f88257 100644 --- a/shell/platform/ohos/accessibility/ohos_accessibility_bridge.cpp +++ b/shell/platform/ohos/accessibility/ohos_accessibility_bridge.cpp @@ -44,18 +44,16 @@ OhosAccessibilityBridge* OhosAccessibilityBridge::GetInstance() } OhosAccessibilityBridge::OhosAccessibilityBridge() - : isFlutterNavigated_(false), - provider_(nullptr), + : isFlutterNavigated_(false), provider_(nullptr), isAccessibilityEnabled_(false) {} /** * 监听当前ohos平台是否开启无障碍屏幕朗读服务 */ void OhosAccessibilityBridge::OnOhosAccessibilityStateChange( - int64_t shellHolderId, - bool ohosAccessibilityEnabled) + bool ohosAccessibilityEnabled, int64_t shellholderId) { - native_shell_holder_id_ = shellHolderId; + native_shell_holder_id_ = shellholderId; provider_ = XComponentAdapter::GetInstance()->accessibilityProvider_; nativeAccessibilityChannel_ = std::make_shared(); accessibilityFeatures_ = std::make_shared(); @@ -80,11 +78,10 @@ void OhosAccessibilityBridge::SetNativeShellHolderId(int64_t id) */ void OhosAccessibilityBridge::UpdateSemantics( flutter::SemanticsNodeUpdates update, - flutter::CustomAccessibilityActionUpdates actions) + flutter::CustomAccessibilityActionUpdates action) { FML_DLOG(INFO) << "OhosAccessibilityBridge::UpdateSemantics()"; provider_ = XComponentAdapter::GetInstance()->accessibilityProvider_; - std::vector updatedFlutterNodes; // 当flutter页面状态更新(路由新页面)时,自动请求root节点组件获焦(规避滑动组件更新干扰) @@ -108,11 +105,7 @@ void OhosAccessibilityBridge::UpdateSemantics( GetSemanticsNodeDebugInfo(nodeEx); GetSemanticsFlagsDebugInfo(nodeEx); - /** - * 构建flutter无障碍语义节点树 - * NOTE: 若使用g_flutterSemanticsTree.insert({node.id, node})方式 - * 来添加新增的语义节点会导致已有key值自动忽略,不会更新原有key对应的value - */ + // 构建flutter无障碍语义节点树 g_flutterSemanticsTree[nodeEx.id] = nodeEx; // 若当前节点为获焦 @@ -277,6 +270,7 @@ void OhosAccessibilityBridge::FlutterScrollExecution( void OhosAccessibilityBridge::RequestFocusWhenPageUpdate(int32_t requestFocusId) { if (OHOS_API_VERSION < 13) { return; } + provider_ = XComponentAdapter::GetInstance()->accessibilityProvider_; CHECK_NULL_PTR(provider_, RequestFocusWhenPageUpdate); if (provider_ == nullptr) { return; } @@ -967,6 +961,8 @@ void OhosAccessibilityBridge::BuildArkUISemanticsTree( //配置当前子节点信息 FlutterSetElementInfoProperties(newElementInfo, levelOrderId); } + // 对于不同xcomponent窗口添加不同的屏幕坐标映射map + // g_xcomponentScreenRectMaps[xcomponentId_] = g_screenRectMap; } /** @@ -982,8 +978,7 @@ int32_t OhosAccessibilityBridge::FindAccessibilityNodeInfosById( if (OHOS_API_VERSION < 13) { return ARKUI_FAILED_CODE; } FML_DLOG(INFO) << "#### FindAccessibilityNodeInfosById input-params ####: elementId = " - << elementId << " mode=" << mode << " requestId=" << requestId - << " elementList= " << elementList; + << elementId << " mode=" << mode; CHECK_NULL_PTR_WITH_RET(elementList, FindAccessibilityNodeInfosById); if (g_flutterSemanticsTree.size() == 0) { @@ -1035,6 +1030,7 @@ int32_t OhosAccessibilityBridge::FindAccessibilityNodeInfosById( FlutterSetElementInfoProperties(elementInfoFromList, elementId); } FML_DLOG(INFO) << "--- FindAccessibilityNodeInfosById is end ---"; + return ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL; } @@ -1049,7 +1045,7 @@ void OhosAccessibilityBridge::DispatchSemanticsAction( nativeAccessibilityChannel_->DispatchSemanticsAction(native_shell_holder_id_, id, action, - fml::MallocMapping()); + std::move(args)); } /** @@ -1374,13 +1370,9 @@ int32_t OhosAccessibilityBridge::ExecuteAccessibilityAction( int32_t requestId) { FML_DLOG(INFO) << "ExecuteAccessibilityAction input-params-> elementId=" - << elementId << " action=" << action - << " requestId=" << requestId - << " *actionArguments=" << actionArguments; + << elementId << " action=" << action; CHECK_NULL_PTR_WITH_RET(actionArguments, ExecuteAccessibilityAction); - provider_ = XComponentAdapter::GetInstance()->accessibilityProvider_; - // 获取当前elementid对应的flutter语义节点 auto flutterNode = GetFlutterSemanticsNode(static_cast(elementId)); if (!g_flutterSemanticsTree.count(flutterNode.id)) { @@ -1576,7 +1568,6 @@ void OhosAccessibilityBridge::Flutter_SendAccessibilityAnnounceEvent( ArkUI_AccessibilityEventType eventType) { if (OHOS_API_VERSION < 13) { return; } - provider_ = XComponentAdapter::GetInstance()->accessibilityProvider_; CHECK_NULL_PTR(provider_, Flutter_SendAccessibilityAnnounceEvent); if (provider_ == nullptr) { return; } @@ -1627,7 +1618,6 @@ void OhosAccessibilityBridge::Flutter_SendAccessibilityAsyncEvent( ArkUI_AccessibilityEventType eventType) { if (OHOS_API_VERSION < 13) { return; } - provider_ = XComponentAdapter::GetInstance()->accessibilityProvider_; CHECK_NULL_PTR(provider_, Flutter_SendAccessibilityAsyncEvent); if (provider_ == nullptr) { return; } diff --git a/shell/platform/ohos/accessibility/ohos_accessibility_bridge.h b/shell/platform/ohos/accessibility/ohos_accessibility_bridge.h index d3ae2d4bf2..e77aa65426 100644 --- a/shell/platform/ohos/accessibility/ohos_accessibility_bridge.h +++ b/shell/platform/ohos/accessibility/ohos_accessibility_bridge.h @@ -82,9 +82,7 @@ public: int64_t native_shell_holder_id_; ArkUI_AccessibilityProvider* provider_; - void OnOhosAccessibilityStateChange( - int64_t shellHolderId, - bool ohosAccessibilityEnabled); + void OnOhosAccessibilityStateChange(bool ohosAccessibilityEnabled, int64_t shellholderId); void SetNativeShellHolderId(int64_t id); @@ -162,9 +160,13 @@ private: static std::unique_ptr bridgeInstance_; std::shared_ptr nativeAccessibilityChannel_; std::shared_ptr accessibilityFeatures_; + std::string xcomponentId_; + std::unordered_map> g_flutterXcomponentTrees; + std::unordered_map>> g_xcomponentParentChildMaps; + std::unordered_map> g_xcomponentScreenRectMaps; + std::unordered_map g_flutterSemanticsTree; std::vector> g_parentChildIdVec; - std::map g_flutterSemanticsTree; std::unordered_map g_screenRectMap; SemanticsNodeExtent inputFocusedNode; @@ -325,6 +327,7 @@ private: std::pair GetRealScaleFactor(); void DoubleClickRouteToNewPage(SemanticsNodeExtent node); void GetSemanticsDebugInfo(); + void AccessibiltiyChangesWithXComponentId(); }; enum class AccessibilityAction : int32_t { diff --git a/shell/platform/ohos/napi/platform_view_ohos_napi.cpp b/shell/platform/ohos/napi/platform_view_ohos_napi.cpp index 1fc61d507a..d1bf9ed472 100644 --- a/shell/platform/ohos/napi/platform_view_ohos_napi.cpp +++ b/shell/platform/ohos/napi/platform_view_ohos_napi.cpp @@ -1850,14 +1850,14 @@ napi_value PlatformViewOHOSNapi::nativeAccessibilityStateChange( << ret; return nullptr; } - int64_t shell_holder_id; - ret = napi_get_value_int64(env, args[0], &shell_holder_id); + + int64_t shellHolder = 0; + ret = napi_get_value_int64(env, args[0], &shellHolder); if (ret != napi_ok) { - FML_DLOG(ERROR) << "PlatformViewOHOSNapi::nativeAccessibilityStateChange " - "napi_get_value_int64 error:" - << ret; + LOGE("nativeAccessibilityStateChange shellHolder napi_get_value_int64 error"); return nullptr; } + bool state = false; ret = napi_get_value_bool(env, args[1], &state); if (ret != napi_ok) { @@ -1866,17 +1866,13 @@ napi_value PlatformViewOHOSNapi::nativeAccessibilityStateChange( << ret; return nullptr; } - LOGD( - "PlatformViewOHOSNapi::nativeAccessibilityStateChange state is: " - "%{public}s", - (state ? "true" : "false")); + LOGD("PlatformViewOHOSNapi::nativeAccessibilityStateChange state is: " + "%{public}s, shellholderId: %{public}ld", (state ? "true" : "false"), shellHolder); //send to accessibility bridge if (OHOS_API_VERSION >= 13) { - OhosAccessibilityBridge::GetInstance()->OnOhosAccessibilityStateChange(shell_holder_id, state); + OhosAccessibilityBridge::GetInstance()->OnOhosAccessibilityStateChange(state, shellHolder); } - FML_DLOG(INFO) << "nativeAccessibilityStateChange: state=" << state - << " shell_holder_id=" << shell_holder_id; return nullptr; } diff --git a/shell/platform/ohos/ohos_xcomponent_adapter.cpp b/shell/platform/ohos/ohos_xcomponent_adapter.cpp index e5d0395b6c..424123a0c6 100644 --- a/shell/platform/ohos/ohos_xcomponent_adapter.cpp +++ b/shell/platform/ohos/ohos_xcomponent_adapter.cpp @@ -366,14 +366,12 @@ void XComponentBase::DetachFlutterEngine() { void XComponentBase::RegisterArkUIAccessibilityService(OH_NativeXComponent* nativeXComponent) { - if (OH_GetSdkApiVersion() < 13) { return; } - LOGD("api version: %{public}d", OH_GetSdkApiVersion()); - BindAccessibilityProviderCallback(); auto OH_NativeXComponent_GetNativeAccessibilityProvider = OhosAccessibilityDDL::DLLoadGetNativeA11yProvider(ArkUIAccessibilityConstant::OH_GET_A11Y_PROVIDER); CHECK_DLL_NULL_PTR(OH_NativeXComponent_GetNativeAccessibilityProvider); + ArkUI_AccessibilityProvider* a11yProvider = nullptr; ARKUI_ACCESSIBILITY_CALL_CHECK( OH_NativeXComponent_GetNativeAccessibilityProvider(nativeXComponent, &a11yProvider) @@ -399,7 +397,9 @@ void XComponentBase::SetNativeXComponent(OH_NativeXComponent* nativeXComponent){ OH_NativeXComponent_RegisterCallback(nativeXComponent_, &callback_); OH_NativeXComponent_RegisterMouseEventCallback(nativeXComponent_, &mouseCallback_); // register the OH_ArkUI accessibility callbacks - RegisterArkUIAccessibilityService(nativeXComponent_); + if (OH_GetSdkApiVersion() >= 13) { + RegisterArkUIAccessibilityService(nativeXComponent_); + } } } diff --git a/shell/platform/ohos/ohos_xcomponent_adapter.h b/shell/platform/ohos/ohos_xcomponent_adapter.h index 529a1d226b..7698e3a8f2 100644 --- a/shell/platform/ohos/ohos_xcomponent_adapter.h +++ b/shell/platform/ohos/ohos_xcomponent_adapter.h @@ -20,6 +20,7 @@ #include #include #include + #include "flutter/shell/platform/ohos/ohos_touch_processor.h" #include "flutter/shell/platform/ohos/napi/platform_view_ohos_napi.h" #include "napi/native_api.h" @@ -66,6 +67,7 @@ public: uint64_t width_; uint64_t height_; OhosTouchProcessor ohosTouchProcessor_; + ArkUI_AccessibilityProvider* accessibilityProvider_; }; diff --git a/shell/platform/ohos/platform_view_ohos.cpp b/shell/platform/ohos/platform_view_ohos.cpp index 2ba37590a3..96ccee9e41 100644 --- a/shell/platform/ohos/platform_view_ohos.cpp +++ b/shell/platform/ohos/platform_view_ohos.cpp @@ -27,6 +27,7 @@ #include "flutter/shell/platform/ohos/platform_view_ohos_delegate.h" #include + namespace flutter { OhosSurfaceFactoryImpl::OhosSurfaceFactoryImpl( @@ -297,9 +298,12 @@ void PlatformViewOHOS::UpdateAssetResolverByType( void PlatformViewOHOS::UpdateSemantics( flutter::SemanticsNodeUpdates update, flutter::CustomAccessibilityActionUpdates actions) { + task_runners_.GetPlatformTaskRunner()->PostTask( + [update = std::move(update), actions = std::move(actions)]() { + auto nativeAccessibilityChannel_ = std::make_shared(); + nativeAccessibilityChannel_->UpdateSemantics(update, actions); + }); FML_DLOG(INFO) << "PlatformViewOHOS::UpdateSemantics is called"; - auto nativeAccessibilityChannel_ = std::make_shared(); - nativeAccessibilityChannel_->UpdateSemantics(update, actions); } // |PlatformView| -- Gitee From f4122f9f0369ad90175ed2d473bebb6dc26922ed Mon Sep 17 00:00:00 2001 From: zjxi Date: Mon, 6 Jan 2025 12:14:02 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=88=90=E5=91=98=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zjxi --- shell/platform/ohos/accessibility/ohos_accessibility_bridge.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/shell/platform/ohos/accessibility/ohos_accessibility_bridge.h b/shell/platform/ohos/accessibility/ohos_accessibility_bridge.h index e77aa65426..f4e03364ce 100644 --- a/shell/platform/ohos/accessibility/ohos_accessibility_bridge.h +++ b/shell/platform/ohos/accessibility/ohos_accessibility_bridge.h @@ -160,11 +160,7 @@ private: static std::unique_ptr bridgeInstance_; std::shared_ptr nativeAccessibilityChannel_; std::shared_ptr accessibilityFeatures_; - std::string xcomponentId_; - std::unordered_map> g_flutterXcomponentTrees; - std::unordered_map>> g_xcomponentParentChildMaps; - std::unordered_map> g_xcomponentScreenRectMaps; std::unordered_map g_flutterSemanticsTree; std::vector> g_parentChildIdVec; std::unordered_map g_screenRectMap; -- Gitee From eb8a8c02f319075a5902746ca6c9c793fcdf1591 Mon Sep 17 00:00:00 2001 From: zjxi Date: Mon, 6 Jan 2025 14:13:59 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E5=8F=82=E6=95=B0=E5=90=8D=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zjxi --- shell/platform/ohos/accessibility/ohos_accessibility_bridge.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/ohos/accessibility/ohos_accessibility_bridge.cpp b/shell/platform/ohos/accessibility/ohos_accessibility_bridge.cpp index 1a79f88257..6ebdfa6bbc 100644 --- a/shell/platform/ohos/accessibility/ohos_accessibility_bridge.cpp +++ b/shell/platform/ohos/accessibility/ohos_accessibility_bridge.cpp @@ -78,7 +78,7 @@ void OhosAccessibilityBridge::SetNativeShellHolderId(int64_t id) */ void OhosAccessibilityBridge::UpdateSemantics( flutter::SemanticsNodeUpdates update, - flutter::CustomAccessibilityActionUpdates action) + flutter::CustomAccessibilityActionUpdates actions) { FML_DLOG(INFO) << "OhosAccessibilityBridge::UpdateSemantics()"; provider_ = XComponentAdapter::GetInstance()->accessibilityProvider_; -- Gitee From c55ac614128101faa9609b4c2108b95080ec3edf Mon Sep 17 00:00:00 2001 From: zjxi Date: Mon, 6 Jan 2025 15:25:19 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E6=B6=88=E9=99=A4=E5=86=97=E4=BD=99?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=EF=BC=8C=E5=A2=9E=E5=8A=A0=E8=BF=94=E5=9B=9E?= =?UTF-8?q?void=E7=9A=84=E7=A9=BA=E6=8C=87=E9=92=88=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E5=AE=8F=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zjxi --- .../ohos/accessibility/ohos_accessibility_bridge.cpp | 11 +++-------- shell/platform/ohos/platform_view_ohos.cpp | 2 +- shell/platform/ohos/utils/ddl_utils.h | 9 +++++++++ 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/shell/platform/ohos/accessibility/ohos_accessibility_bridge.cpp b/shell/platform/ohos/accessibility/ohos_accessibility_bridge.cpp index 6ebdfa6bbc..dbb1a076e9 100644 --- a/shell/platform/ohos/accessibility/ohos_accessibility_bridge.cpp +++ b/shell/platform/ohos/accessibility/ohos_accessibility_bridge.cpp @@ -271,8 +271,7 @@ void OhosAccessibilityBridge::RequestFocusWhenPageUpdate(int32_t requestFocusId) { if (OHOS_API_VERSION < 13) { return; } provider_ = XComponentAdapter::GetInstance()->accessibilityProvider_; - CHECK_NULL_PTR(provider_, RequestFocusWhenPageUpdate); - if (provider_ == nullptr) { return; } + CHECK_NULL_PTR_RET_VOID(provider_, RequestFocusWhenPageUpdate); auto OH_ArkUI_CreateAccessibilityEventInfo = OhosAccessibilityDDL::DLLoadCreateEventInfoFunc(ArkUIAccessibilityConstant::ARKUI_CREATE_EVENT); @@ -961,8 +960,6 @@ void OhosAccessibilityBridge::BuildArkUISemanticsTree( //配置当前子节点信息 FlutterSetElementInfoProperties(newElementInfo, levelOrderId); } - // 对于不同xcomponent窗口添加不同的屏幕坐标映射map - // g_xcomponentScreenRectMaps[xcomponentId_] = g_screenRectMap; } /** @@ -1569,8 +1566,7 @@ void OhosAccessibilityBridge::Flutter_SendAccessibilityAnnounceEvent( { if (OHOS_API_VERSION < 13) { return; } provider_ = XComponentAdapter::GetInstance()->accessibilityProvider_; - CHECK_NULL_PTR(provider_, Flutter_SendAccessibilityAnnounceEvent); - if (provider_ == nullptr) { return; } + CHECK_NULL_PTR_RET_VOID(provider_, Flutter_SendAccessibilityAnnounceEvent); // 创建并设置屏幕朗读事件 auto OH_ArkUI_CreateAccessibilityEventInfo = @@ -1619,8 +1615,7 @@ void OhosAccessibilityBridge::Flutter_SendAccessibilityAsyncEvent( { if (OHOS_API_VERSION < 13) { return; } provider_ = XComponentAdapter::GetInstance()->accessibilityProvider_; - CHECK_NULL_PTR(provider_, Flutter_SendAccessibilityAsyncEvent); - if (provider_ == nullptr) { return; } + CHECK_NULL_PTR_RET_VOID(provider_, Flutter_SendAccessibilityAsyncEvent); // 创建eventInfo对象 auto OH_ArkUI_CreateAccessibilityEventInfo = diff --git a/shell/platform/ohos/platform_view_ohos.cpp b/shell/platform/ohos/platform_view_ohos.cpp index 96ccee9e41..6d860f66aa 100644 --- a/shell/platform/ohos/platform_view_ohos.cpp +++ b/shell/platform/ohos/platform_view_ohos.cpp @@ -302,8 +302,8 @@ void PlatformViewOHOS::UpdateSemantics( [update = std::move(update), actions = std::move(actions)]() { auto nativeAccessibilityChannel_ = std::make_shared(); nativeAccessibilityChannel_->UpdateSemantics(update, actions); + FML_DLOG(INFO) << "PlatformViewOHOS::UpdateSemantics is called"; }); - FML_DLOG(INFO) << "PlatformViewOHOS::UpdateSemantics is called"; } // |PlatformView| diff --git a/shell/platform/ohos/utils/ddl_utils.h b/shell/platform/ohos/utils/ddl_utils.h index 0e5eca65a8..60f89db6d3 100644 --- a/shell/platform/ohos/utils/ddl_utils.h +++ b/shell/platform/ohos/utils/ddl_utils.h @@ -62,4 +62,13 @@ using LIBHANDLE = void*; } \ } while (false) \ +#define CHECK_NULL_PTR_RET_VOID(PARAM, FUNC) \ + do { \ + if (PARAM == nullptr) { \ + LOGE("Error: %{public}s -> %{public}s is nullptr", \ + #FUNC, #PARAM); \ + return; \ + } \ + } while (false) \ + #endif // FOUNDATION_ACE_INTERFACE_INNERKITS_ACE_UTILS_H -- Gitee