* Copyright (C) 2025-2026 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.
*/
#include "accessibility_notification_helper.h"
#include "visibility.h"
#include "time_service_client.h"
#include "extend_service_manager.h"
#include "accessibility_extend_power_manager.h"
#include "magnification_manager.h"
OHOS::Accessibility::ExtendServiceManager &serviceManagerInstance =
OHOS::Singleton<OHOS::Accessibility::ExtendServiceManager>::GetInstance();
extern "C" {
API_EXPORT void SetSendAccessibilityEventToAACallback(
OHOS::Accessibility::SendAccessibilityEventToAACallback cb)
{
serviceManagerInstance.sendAccessibilityEventToAACallback = cb;
}
API_EXPORT void SetGetDelayTimeCallback(OHOS::Accessibility::GetDelayTime cb)
{
serviceManagerInstance.getDelayTime = cb;
}
API_EXPORT void SetGetMagnificationStateCallback(OHOS::Accessibility::GetMagnificationState cb)
{
serviceManagerInstance.getMagnificationState = cb;
}
API_EXPORT void SetFindFocusedElementCallback(
OHOS::Accessibility::FindFocusedElementCallback cb)
{
serviceManagerInstance.findFocusedElementCallback = cb;
}
API_EXPORT void SetExecuteActionOnAccessibilityFocusedCallback(
OHOS::Accessibility::ExecuteActionOnAccessibilityFocusedCallback cb)
{
serviceManagerInstance.executeActionOnAccessibilityFocusedCallback = cb;
}
API_EXPORT void SetGetFocusedWindowIdCallback(
OHOS::Accessibility::GetFocusedWindowIdCallback cb)
{
serviceManagerInstance.getFocusedWindowIdCallback = cb;
}
API_EXPORT void SetGetAccessibilityFocusedWindowIdCallback(
OHOS::Accessibility::GetAccessibilityFocusedWindowIdCallback cb)
{
serviceManagerInstance.getAccessibilityFocusedWindowIdCallback = cb;
}
API_EXPORT void SetGetAccessibilityWindowCallback(
OHOS::Accessibility::GetAccessibilityWindowCallback cb)
{
serviceManagerInstance.getAccessibilityWindowCallback = cb;
}
API_EXPORT void SetSendPointerEventForHoverCallback(
OHOS::Accessibility::SendPointerEventForHoverCallback cb)
{
serviceManagerInstance.sendPointerEventForHoverCallback = cb;
}
API_EXPORT void SetCheckDisplayIdCallback(
OHOS::Accessibility::CheckDisplayIdCallback cb)
{
serviceManagerInstance.checkDisplayIdCallback = cb;
}
API_EXPORT void SetNotifyZoomGesutureConflictDialogCallback(
OHOS::Accessibility::NotifyZoomGesutureConflictDialogCallback cb)
{
serviceManagerInstance.notifyZoomGesutureConflictDialogCallback = cb;
}
API_EXPORT void SetGetNotifyZoomGestureConflictCallback(
OHOS::Accessibility::GetNotifyZoomGestureConflictCallback cb)
{
serviceManagerInstance.getNotifyZoomGestureConflictCallback = cb;
}
API_EXPORT int32_t PublishIgnoreRepeatClickReminder()
{
return OHOS::Accessibility::IgnoreRepeatClickNotification::PublishIgnoreRepeatClickReminder();
}
API_EXPORT void CancelNotification()
{
return OHOS::Accessibility::IgnoreRepeatClickNotification::CancelNotification();
}
API_EXPORT int32_t RegisterTimers(uint64_t beginTime)
{
return OHOS::Accessibility::IgnoreRepeatClickNotification::RegisterTimers(beginTime);
}
API_EXPORT void DestroyTimers()
{
return OHOS::Accessibility::IgnoreRepeatClickNotification::DestroyTimers();
}
API_EXPORT int64_t GetWallTimeMs()
{
if (OHOS::MiscServices::TimeServiceClient::GetInstance()) {
return OHOS::MiscServices::TimeServiceClient::GetInstance()->GetWallTimeMs();
}
return 0;
}
API_EXPORT int32_t PublishTransitionAnimationsReminder()
{
return OHOS::Accessibility::TransitionAnimationsNotification::PublishTransitionAnimationsReminder();
}
API_EXPORT void TransitionAnimationsCancelNotification()
{
return OHOS::Accessibility::TransitionAnimationsNotification::CancelNotification();
}
API_EXPORT int32_t TransitionAnimationsRegisterTimers(uint64_t beginTime)
{
return OHOS::Accessibility::TransitionAnimationsNotification::RegisterTimers(beginTime);
}
API_EXPORT void TransitionAnimationsDestroyTimers()
{
return OHOS::Accessibility::TransitionAnimationsNotification::DestroyTimers();
}
API_EXPORT void UpdateInputFilter(uint32_t state)
{
serviceManagerInstance.UpdateInputFilter(state);
}
API_EXPORT void GetClickPosition(int32_t &xPos, int32_t &yPos)
{
serviceManagerInstance.GetClickPosition(xPos, yPos);
}
API_EXPORT OHOS::Accessibility::RetError SetCurtainScreenUsingStatus(bool isEnable)
{
return serviceManagerInstance.SetCurtainScreenUsingStatus(isEnable);
}
API_EXPORT uint64_t GetDefaultDisplayId()
{
return serviceManagerInstance.GetDefaultDisplayId();
}
API_EXPORT void SetMagnificationScale(float scale)
{
serviceManagerInstance.SetMagnificationScale(scale);
}
API_EXPORT void SetMagnificationMode(uint32_t mode)
{
serviceManagerInstance.SetMagnificationMode(mode);
}
API_EXPORT void SetMagnificationType(uint32_t type)
{
serviceManagerInstance.SetMagnificationType(type);
}
API_EXPORT OHOS::Accessibility::RetError SetClickConfig(OHOS::AccessibilityConfig::IGNORE_REPEAT_CLICK_TIME clickTime,
bool state, OHOS::AccessibilityConfig::CLICK_RESPONSE_TIME responseTime)
{
return serviceManagerInstance.SetClickConfig(clickTime, state, responseTime);
}
API_EXPORT OHOS::Accessibility::RetError SetMouseAutoClick(int32_t time)
{
return serviceManagerInstance.SetMouseAutoClick(time);
}
API_EXPORT void SetServiceOnKeyEventResult(int32_t connectionId, bool isHandled, uint32_t sequenceNum)
{
serviceManagerInstance.SetServiceOnKeyEventResult(connectionId, isHandled, sequenceNum);
}
API_EXPORT OHOS::Accessibility::RetError InjectEvents(
const std::shared_ptr<OHOS::Accessibility::AccessibilityGestureInjectPath>& gesturePath)
{
return serviceManagerInstance.InjectEvents(gesturePath);
}
API_EXPORT void OnScreenMagnificationTriggerMethodChanged(int32_t screenMagnificationTriggerMethod)
{
HILOG_INFO();
return serviceManagerInstance.OnScreenMagnificationTriggerMethodChanged(screenMagnificationTriggerMethod);
}
API_EXPORT void OnScreenMagnificationTypeChanged(uint32_t screenMagnificationType)
{
HILOG_INFO();
return serviceManagerInstance.OnScreenMagnificationTypeChanged(screenMagnificationType);
}
API_EXPORT void OnScreenMagnificationStateChanged()
{
HILOG_INFO();
return serviceManagerInstance.OnScreenMagnificationStateChanged();
}
API_EXPORT void UnregisterDisplayListener()
{
HILOG_INFO();
serviceManagerInstance.UnregisterDisplayListener();
}
API_EXPORT void ExtendGetMagnificationModeCallback(OHOS::Accessibility::GetMagnificationModeCallback cb)
{
HILOG_INFO();
serviceManagerInstance.getMagnificationModeCallback = cb;
}
API_EXPORT void ExtendGetMagnificationTriggerMethodCallback(
OHOS::Accessibility::GetMagnificationTriggerMethodCallback cb)
{
HILOG_INFO();
serviceManagerInstance.getMagnificationTriggerMethodCallback = cb;
}
API_EXPORT void ExtendGetMagnificationScaleCallback(OHOS::Accessibility::GetMagnificationScaleCallback cb)
{
HILOG_INFO();
serviceManagerInstance.getMagnificationScaleCallback = cb;
}
API_EXPORT void ExtendUpdateInputFilterCallback(OHOS::Accessibility::UpdateInputFilterCallback cb)
{
HILOG_INFO();
serviceManagerInstance.updateInputFilterCallback = cb;
}
API_EXPORT void SetMagnificationModeCallback(OHOS::Accessibility::MagnificationModeCallback cb)
{
HILOG_INFO();
serviceManagerInstance.magnificationModeCallback = cb;
}
API_EXPORT void GetMagnificationTypeCallback(OHOS::Accessibility::MagnificationTypeCallback cb)
{
HILOG_INFO();
serviceManagerInstance.magnificationTypeCallback = cb;
}
API_EXPORT void ExtendAnnouncedForMagnificationCallback(OHOS::Accessibility::AnnouncedForMagnificationCallback cb)
{
HILOG_INFO();
serviceManagerInstance.announcedForMagnificationCallback = cb;
}
API_EXPORT void SetDispatchKeyEventCallback(OHOS::Accessibility::DispatchKeyEventCallback cb)
{
serviceManagerInstance.dispatchKeyEventCallback = cb;
}
API_EXPORT bool DiscountBrightness(const float discount)
{
#ifdef OHOS_BUILD_ENABLE_POWER_MANAGER
return OHOS::Singleton<OHOS::Accessibility::AccessibilityExtendPowerManager>::GetInstance().DiscountBrightness(
discount);
#else
return true;
#endif
}
API_EXPORT void SetMagnificationScaleCallback(OHOS::Accessibility::MagnificationScaleCallback cb)
{
HILOG_INFO();
serviceManagerInstance.magnificationScaleCallback = cb;
}
API_EXPORT void ExtendGetAccessibilityWindowsCallback(OHOS::Accessibility::GetAccessibilityWindowsCallback cb)
{
HILOG_INFO();
serviceManagerInstance.getAccessibilityWindowsCallback = cb;
}
API_EXPORT void FollowFocuseElement(const int32_t centerX, const int32_t centerY)
{
HILOG_INFO();
OHOS::Accessibility::MagnificationManager::GetInstance()->FollowFocuseElement(centerX, centerY);
}
API_EXPORT void OffZoomGesture()
{
HILOG_INFO();
serviceManagerInstance.OffZoomGesture();
}
API_EXPORT void ExtendSubscribeOsAccountCallback(OHOS::Accessibility::SubscribeOsAccountCallback cb)
{
HILOG_INFO();
serviceManagerInstance.subscribeOsAccountCallback = cb;
}
API_EXPORT void SetMagnificationState(bool state, uint32_t type, uint32_t mode)
{
HILOG_INFO();
serviceManagerInstance.SetMagnificationState(state, type, mode);
}
API_EXPORT void SetCurrentAccountId(int32_t accountId)
{
HILOG_DEBUG();
serviceManagerInstance.SetCurrentAccountId(accountId);
}
}