From d90528168fbd41e5de484cdd4fddea1391e602df Mon Sep 17 00:00:00 2001 From: qianchuang Date: Tue, 15 Apr 2025 11:48:24 +0000 Subject: [PATCH] add Signed-off-by: qianchuang --- .../accessibility_ipc_interface_code.h | 3 ++ .../accessibility_extension_context.js | 15 +++++++++ .../aams/src/accessible_ability_channel.cpp | 31 +++++++++++++++++++ 3 files changed, 49 insertions(+) diff --git a/common/interface/include/accessibility_ipc_interface_code.h b/common/interface/include/accessibility_ipc_interface_code.h index b9596955a..eaa401fb3 100644 --- a/common/interface/include/accessibility_ipc_interface_code.h +++ b/common/interface/include/accessibility_ipc_interface_code.h @@ -65,6 +65,7 @@ namespace Accessibility { DISCONNECT, ON_ACCESSIBILITY_EVENT, ON_KEY_PRESS_EVENT, + EXECUTE_DISCONNECT_CALLBACK, ON_PROPERTY_CHANGED = 600, @@ -149,6 +150,8 @@ namespace Accessibility { REMOVE_REQUEST_ID, SERVICE_CODE_END, GET_SCREEN_READER_STATE, + SET_IS_REGISTER_DISCONNECT_CALLBACK, + NOTIFY_DISCONNECT, ON_STATE_CHANGED = 900, }; diff --git a/interfaces/kits/napi/accessibility_extension_context/accessibility_extension_context.js b/interfaces/kits/napi/accessibility_extension_context/accessibility_extension_context.js index 6ac3d2d8a..ae3bc35c5 100644 --- a/interfaces/kits/napi/accessibility_extension_context/accessibility_extension_context.js +++ b/interfaces/kits/napi/accessibility_extension_context/accessibility_extension_context.js @@ -79,6 +79,21 @@ class AccessibilityExtensionContext extends ExtensionContext { console.log('unholdRunningLockSync'); return this.__context_impl__.unholdRunningLockSync(); } + + on(type, callback) { + console.log('on'); + return this.__context_impl__.on(type, callback); + } + + off(type, callback) { + console.log('off'); + return this.__context_impl__.off(type, callback); + } + + notifyDisconnect() { + console.log('notifyDisconnect'); + return this.__context_impl__.notifyDisconnect(); + } } export default AccessibilityExtensionContext; \ No newline at end of file diff --git a/services/aams/src/accessible_ability_channel.cpp b/services/aams/src/accessible_ability_channel.cpp index 28193c5e1..4266f393f 100644 --- a/services/aams/src/accessible_ability_channel.cpp +++ b/services/aams/src/accessible_ability_channel.cpp @@ -808,5 +808,36 @@ bool AccessibleAbilityChannel::CheckWinFromAwm(const int32_t windowId) } return false; } + +RetError AccessibleAbilityChannel::SetIsRegisterDisconnectCallback(bool isRegister) +{ + HILOG_INFO(); + sptr clientConnection = GetConnection(accountId_, clientName_); + if (clientConnection == nullptr) { + HILOG_ERROR("GetConnection failed, clientName: %{public}s", clientName_.c_str()); + return RET_ERR_NULLPTR; + } + clientConnection->SetIsRegisterDisconnectCallback(isRegister); + return RET_OK; +} + +RetError AccessibleAbilityChannel::NotifyDisconnect() +{ + HILOG_INFO(); + sptr accountData = + Singleton::GetInstance().GetAccountData(accountId_); + if (accountData == nullptr) { + HILOG_ERROR("accountData is nullptr"); + return RET_ERR_NULLPTR; + } + sptr clientConnection = accountData->GetWaitDisConnectAbility(clientName_); + accountData->RemoveWaitDisconnectAbility(clientName_); + if (clientConnection == nullptr) { + HILOG_ERROR("GetConnection failed, clientName: %{public}s", clientName_.c_str()); + return RET_ERR_NULLPTR; + } + clientConnection->NotifyDisconnect(); + return RET_OK; +} } // namespace Accessibility } // namespace OHOS \ No newline at end of file