* Copyright (C) 2022-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.
*/
#include "accessibility_config.h"
#include "accessibility_config_impl.h"
#include "hilog_wrapper.h"
namespace OHOS {
namespace AccessibilityConfig {
#define CHECK_IMPL_PTR(ret_expr) \
if (!pImpl_) { \
HILOG_ERROR("pImpl_ is nullptr"); \
return ret_expr; \
}
ACCESSIBILITY_DEFINE_SINGLETON(AccessibilityConfig)
AccessibilityConfig::AccessibilityConfig() : pImpl_(std::make_unique<Impl>())
{
if (!pImpl_) {
HILOG_ERROR("Create AccessibilityConfigImpl Failed");
}
}
AccessibilityConfig::~AccessibilityConfig()
{
}
bool AccessibilityConfig::InitializeContext()
{
CHECK_IMPL_PTR(false)
return pImpl_->InitializeContext();
}
Accessibility::RetError AccessibilityConfig::SubscribeConfigObserver(const CONFIG_ID id,
const std::shared_ptr<AccessibilityConfigObserver> &observer, const bool retFlag)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SubscribeConfigObserver(id, observer, retFlag);
}
Accessibility::RetError AccessibilityConfig::UnsubscribeConfigObserver(const CONFIG_ID id,
const std::shared_ptr<AccessibilityConfigObserver> &observer)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->UnsubscribeConfigObserver(id, observer);
}
Accessibility::RetError AccessibilityConfig::SubscribeEnableAbilityCallbackObserver(
const std::shared_ptr<AccessibilityEnableAbilityCallbackObserver> &observer)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SubscribeEnableAbilityCallbackObserver(observer);
}
Accessibility::RetError AccessibilityConfig::UnsubscribeEnableAbilityCallbackObserver(
const std::shared_ptr<AccessibilityEnableAbilityCallbackObserver> &observer)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->UnsubscribeEnableAbilityCallbackObserver(observer);
}
Accessibility::RetError AccessibilityConfig::SubscribeEnableAbilityListsObserver(
const std::shared_ptr<AccessibilityEnableAbilityListsObserver> &observer)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SubscribeEnableAbilityListsObserver(observer);
}
Accessibility::RetError AccessibilityConfig::UnsubscribeEnableAbilityListsObserver(
const std::shared_ptr<AccessibilityEnableAbilityListsObserver> &observer)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->UnsubscribeEnableAbilityListsObserver(observer);
}
Accessibility::RetError AccessibilityConfig::EnableAbility(
const std::string &name, const uint32_t capabilities, const bool connectCallBackFlag)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->EnableAbility(name, capabilities, connectCallBackFlag);
}
Accessibility::RetError AccessibilityConfig::DisableAbility(const std::string &name)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->DisableAbility(name);
}
Accessibility::RetError AccessibilityConfig::SetMagnificationState(const bool state)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetMagnificationState(state);
}
Accessibility::RetError AccessibilityConfig::SetScreenMagnificationState(const bool state)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetScreenMagnificationState(state);
}
Accessibility::RetError AccessibilityConfig::SetShortKeyState(const bool state)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetShortKeyState(state);
}
Accessibility::RetError AccessibilityConfig::SetMouseKeyState(const bool state)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetMouseKeyState(state);
}
Accessibility::RetError AccessibilityConfig::SetCaptionsState(const bool state, bool isPermissionRequired)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetCaptionsState(state, isPermissionRequired);
}
Accessibility::RetError AccessibilityConfig::SetCaptionsProperty(const CaptionProperty &caption,
bool isPermissionRequired)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetCaptionsProperty(caption, isPermissionRequired);
}
Accessibility::RetError AccessibilityConfig::SetMouseAutoClick(const int32_t time)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetMouseAutoClick(time);
}
Accessibility::RetError AccessibilityConfig::SetShortkeyTarget(const std::string &name)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetShortkeyTarget(name);
}
Accessibility::RetError AccessibilityConfig::SetShortkeyMultiTarget(const std::vector<std::string> &name)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetShortkeyMultiTarget(name);
}
Accessibility::RetError AccessibilityConfig::SetHighContrastTextState(bool state)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetHighContrastTextState(state);
}
Accessibility::RetError AccessibilityConfig::SetInvertColorState(const bool state)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetInvertColorState(state);
}
Accessibility::RetError AccessibilityConfig::SetDaltonizationState(bool state)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetDaltonizationState(state);
}
Accessibility::RetError AccessibilityConfig::SetDaltonizationColorFilter(const DALTONIZATION_TYPE type)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetDaltonizationColorFilter(type);
}
Accessibility::RetError AccessibilityConfig::SetContentTimeout(const uint32_t timer)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetContentTimeout(timer);
}
Accessibility::RetError AccessibilityConfig::SetAnimationOffState(const bool state)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetAnimationOffState(state);
}
Accessibility::RetError AccessibilityConfig::SetBrightnessDiscount(const float brightness)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetBrightnessDiscount(brightness);
}
Accessibility::RetError AccessibilityConfig::SetAudioMonoState(const bool state)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetAudioMonoState(state);
}
Accessibility::RetError AccessibilityConfig::SetAudioBalance(const float balance)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetAudioBalance(balance);
}
Accessibility::RetError AccessibilityConfig::SetClickResponseTime(const CLICK_RESPONSE_TIME time)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetClickResponseTime(time);
}
Accessibility::RetError AccessibilityConfig::SetIgnoreRepeatClickState(const bool state)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetIgnoreRepeatClickState(state);
}
Accessibility::RetError AccessibilityConfig::SetIgnoreRepeatClickTime(const IGNORE_REPEAT_CLICK_TIME time)
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetIgnoreRepeatClickTime(time);
}
Accessibility::RetError AccessibilityConfig::GetScreenMagnificationState(bool &state) const
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->GetScreenMagnificationState(state);
}
Accessibility::RetError AccessibilityConfig::GetShortKeyState(bool &state) const
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->GetShortKeyState(state);
}
Accessibility::RetError AccessibilityConfig::GetMouseKeyState(bool &state) const
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->GetMouseKeyState(state);
}
Accessibility::RetError AccessibilityConfig::GetCaptionsState(bool &state, bool isPermissionRequired) const
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->GetCaptionsState(state, isPermissionRequired);
}
Accessibility::RetError AccessibilityConfig::GetCaptionsProperty(CaptionProperty &caption,
bool isPermissionRequired) const
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->GetCaptionsProperty(caption, isPermissionRequired);
}
Accessibility::RetError AccessibilityConfig::GetMouseAutoClick(int32_t &time) const
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->GetMouseAutoClick(time);
}
Accessibility::RetError AccessibilityConfig::GetShortkeyTarget(std::string &name) const
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->GetShortkeyTarget(name);
}
Accessibility::RetError AccessibilityConfig::GetShortkeyMultiTarget(std::vector<std::string> &name) const
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->GetShortkeyMultiTarget(name);
}
Accessibility::RetError AccessibilityConfig::GetInvertColorState(bool &state) const
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->GetInvertColorState(state);
}
Accessibility::RetError AccessibilityConfig::GetHighContrastTextState(bool &state) const
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->GetHighContrastTextState(state);
}
Accessibility::RetError AccessibilityConfig::GetDaltonizationState(bool &state) const
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->GetDaltonizationState(state);
}
Accessibility::RetError AccessibilityConfig::GetDaltonizationColorFilter(DALTONIZATION_TYPE &type) const
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->GetDaltonizationColorFilter(type);
}
Accessibility::RetError AccessibilityConfig::GetContentTimeout(uint32_t &timer) const
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->GetContentTimeout(timer);
}
Accessibility::RetError AccessibilityConfig::GetAnimationOffState(bool &state) const
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->GetAnimationOffState(state);
}
Accessibility::RetError AccessibilityConfig::GetBrightnessDiscount(float &brightness) const
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->GetBrightnessDiscount(brightness);
}
Accessibility::RetError AccessibilityConfig::GetAudioMonoState(bool &state) const
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->GetAudioMonoState(state);
}
Accessibility::RetError AccessibilityConfig::GetAudioBalance(float &balance) const
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->GetAudioBalance(balance);
}
Accessibility::RetError AccessibilityConfig::GetClickResponseTime(CLICK_RESPONSE_TIME &time) const
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->GetClickResponseTime(time);
}
Accessibility::RetError AccessibilityConfig::GetIgnoreRepeatClickState(bool &state) const
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->GetIgnoreRepeatClickState(state);
}
Accessibility::RetError AccessibilityConfig::GetIgnoreRepeatClickTime(IGNORE_REPEAT_CLICK_TIME &time) const
{
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->GetIgnoreRepeatClickTime(time);
}
Accessibility::RetError AccessibilityConfig::SetEnhanceConfig(uint8_t *cfg, uint32_t cfgLen) const
{
HILOG_INFO();
if (cfg == nullptr || cfgLen <= 0) {
HILOG_ERROR("SecCompEnhance cfg info is empty");
return Accessibility::RET_ERR_INVALID_PARAM;
}
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetEnhanceConfig(cfg, cfgLen);
}
Accessibility::RetError AccessibilityConfig::GetSeniorModeStateForApp(const std::string &bundleName,
int32_t appIndex, bool &state) const
{
HILOG_INFO();
if (appIndex < 0) {
HILOG_ERROR("appIndex < 0");
return Accessibility::RET_ERR_INVALID_PARAM;
}
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->GetSeniorModeStateForApp(bundleName, appIndex, state);
}
Accessibility::RetError AccessibilityConfig::SetSeniorModeStateForApp(
const std::vector<AccessibilityBundleSeniorModeInfo> &infos)
{
HILOG_INFO();
if (infos.size() == 0) {
HILOG_ERROR("infos is empty");
return Accessibility::RET_ERR_INVALID_PARAM;
}
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SetSeniorModeStateForApp(infos);
}
Accessibility::RetError AccessibilityConfig::SubscribeAppSeniorModeStateObserver(
const std::shared_ptr<AccessibilityAppSeniorModeStateObserver> &observer)
{
HILOG_INFO();
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->SubscribeAppSeniorModeStateObserver(observer);
}
Accessibility::RetError AccessibilityConfig::UnsubscribeAppSeniorModeStateObserver(
const std::shared_ptr<AccessibilityAppSeniorModeStateObserver> &observer)
{
HILOG_INFO();
CHECK_IMPL_PTR(Accessibility::RET_ERR_NULLPTR)
return pImpl_->UnsubscribeAppSeniorModeStateObserver(observer);
}
}
}