1885b47fbSopenharmony_ci/*
2885b47fbSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
3885b47fbSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4885b47fbSopenharmony_ci * you may not use this file except in compliance with the License.
5885b47fbSopenharmony_ci * You may obtain a copy of the License at
6885b47fbSopenharmony_ci *
7885b47fbSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8885b47fbSopenharmony_ci *
9885b47fbSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10885b47fbSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11885b47fbSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12885b47fbSopenharmony_ci * See the License for the specific language governing permissions and
13885b47fbSopenharmony_ci * limitations under the License.
14885b47fbSopenharmony_ci */
15885b47fbSopenharmony_ci
16885b47fbSopenharmony_ci#include "accessibility_setting_provider.h"
17885b47fbSopenharmony_ci
18885b47fbSopenharmony_ci#include "ipc_skeleton.h"
19885b47fbSopenharmony_ci#include "iservice_registry.h"
20885b47fbSopenharmony_ci#include "result_set.h"
21885b47fbSopenharmony_ci#include "uri.h"
22885b47fbSopenharmony_ci
23885b47fbSopenharmony_ci#include "hilog_wrapper.h"
24885b47fbSopenharmony_ci
25885b47fbSopenharmony_cinamespace OHOS {
26885b47fbSopenharmony_cinamespace Accessibility {
27885b47fbSopenharmony_cistd::shared_ptr<AccessibilitySettingProvider> AccessibilitySettingProvider::instance_ = nullptr;
28885b47fbSopenharmony_ciffrt::mutex AccessibilitySettingProvider::mutex_;
29885b47fbSopenharmony_cinamespace {
30885b47fbSopenharmony_ci    constexpr int32_t DEFAULT_ACCOUNT_ID = 100;
31885b47fbSopenharmony_ci} // namespace
32885b47fbSopenharmony_ci
33885b47fbSopenharmony_ciAccessibilitySettingProvider::AccessibilitySettingProvider()
34885b47fbSopenharmony_ci    : AccessibilityDatashareHelper(DATASHARE_TYPE::GLOBAL, DEFAULT_ACCOUNT_ID)
35885b47fbSopenharmony_ci{
36885b47fbSopenharmony_ci}
37885b47fbSopenharmony_ci
38885b47fbSopenharmony_ciAccessibilitySettingProvider::~AccessibilitySettingProvider()
39885b47fbSopenharmony_ci{
40885b47fbSopenharmony_ci    instance_ = nullptr;
41885b47fbSopenharmony_ci}
42885b47fbSopenharmony_ci
43885b47fbSopenharmony_cistd::shared_ptr<AccessibilitySettingProvider> AccessibilitySettingProvider::GetInstance(int32_t systemAbilityId)
44885b47fbSopenharmony_ci{
45885b47fbSopenharmony_ci    HILOG_DEBUG("etInstance start, systemAbilityId = %{public}d.", systemAbilityId);
46885b47fbSopenharmony_ci    std::lock_guard<ffrt::mutex> lock(mutex_);
47885b47fbSopenharmony_ci    if (instance_ == nullptr) {
48885b47fbSopenharmony_ci        instance_ = std::make_shared<AccessibilitySettingProvider>();
49885b47fbSopenharmony_ci        instance_->Initialize(systemAbilityId);
50885b47fbSopenharmony_ci    }
51885b47fbSopenharmony_ci    return instance_;
52885b47fbSopenharmony_ci}
53885b47fbSopenharmony_ci
54885b47fbSopenharmony_civoid AccessibilitySettingProvider::DeleteInstance()
55885b47fbSopenharmony_ci{
56885b47fbSopenharmony_ci    HILOG_DEBUG();
57885b47fbSopenharmony_ci    std::lock_guard<ffrt::mutex> lock(mutex_);
58885b47fbSopenharmony_ci    if (instance_ == nullptr) {
59885b47fbSopenharmony_ci        HILOG_INFO("instance_ is nullptr");
60885b47fbSopenharmony_ci        return;
61885b47fbSopenharmony_ci    }
62885b47fbSopenharmony_ci    instance_ = nullptr;
63885b47fbSopenharmony_ci}
64885b47fbSopenharmony_ci
65885b47fbSopenharmony_ciRetError AccessibilitySettingProvider::GetIntValue(const std::string& key, int32_t& value)
66885b47fbSopenharmony_ci{
67885b47fbSopenharmony_ci    value = AccessibilityDatashareHelper::GetIntValue(key, 0);
68885b47fbSopenharmony_ci    return RET_OK;
69885b47fbSopenharmony_ci}
70885b47fbSopenharmony_ci
71885b47fbSopenharmony_ciRetError AccessibilitySettingProvider::GetLongValue(const std::string& key, int64_t& value)
72885b47fbSopenharmony_ci{
73885b47fbSopenharmony_ci    value = AccessibilityDatashareHelper::GetLongValue(key, 0);
74885b47fbSopenharmony_ci    return RET_OK;
75885b47fbSopenharmony_ci}
76885b47fbSopenharmony_ci
77885b47fbSopenharmony_ciRetError AccessibilitySettingProvider::GetFloatValue(const std::string& key, float& value)
78885b47fbSopenharmony_ci{
79885b47fbSopenharmony_ci    value = AccessibilityDatashareHelper::GetFloatValue(key, 0);
80885b47fbSopenharmony_ci    return RET_OK;
81885b47fbSopenharmony_ci}
82885b47fbSopenharmony_ci
83885b47fbSopenharmony_ciRetError AccessibilitySettingProvider::GetBoolValue(const std::string& key, bool& value)
84885b47fbSopenharmony_ci{
85885b47fbSopenharmony_ci    value = AccessibilityDatashareHelper::GetBoolValue(key, 0);
86885b47fbSopenharmony_ci    return RET_OK;
87885b47fbSopenharmony_ci}
88885b47fbSopenharmony_ci
89885b47fbSopenharmony_ciRetError AccessibilitySettingProvider::GetStringValue(const std::string& key, std::string& value)
90885b47fbSopenharmony_ci{
91885b47fbSopenharmony_ci    value = AccessibilityDatashareHelper::GetStringValue(key, "");
92885b47fbSopenharmony_ci    return RET_OK;
93885b47fbSopenharmony_ci}
94885b47fbSopenharmony_ci
95885b47fbSopenharmony_ciRetError AccessibilitySettingProvider::PutIntValue(const std::string& key, int32_t value, bool needNotify)
96885b47fbSopenharmony_ci{
97885b47fbSopenharmony_ci    return AccessibilityDatashareHelper::PutIntValue(key, value, needNotify);
98885b47fbSopenharmony_ci}
99885b47fbSopenharmony_ci
100885b47fbSopenharmony_ciRetError AccessibilitySettingProvider::PutLongValue(const std::string& key, int64_t value, bool needNotify)
101885b47fbSopenharmony_ci{
102885b47fbSopenharmony_ci    return AccessibilityDatashareHelper::PutLongValue(key, value, needNotify);
103885b47fbSopenharmony_ci}
104885b47fbSopenharmony_ci
105885b47fbSopenharmony_ciRetError AccessibilitySettingProvider::PutBoolValue(const std::string& key, bool value, bool needNotify)
106885b47fbSopenharmony_ci{
107885b47fbSopenharmony_ci    return AccessibilityDatashareHelper::PutBoolValue(key, value, needNotify);
108885b47fbSopenharmony_ci}
109885b47fbSopenharmony_ci
110885b47fbSopenharmony_ciRetError AccessibilitySettingProvider::PutStringValue(const std::string& key, const std::string& value, bool needNotify)
111885b47fbSopenharmony_ci{
112885b47fbSopenharmony_ci    return AccessibilityDatashareHelper::PutStringValue(key, value, needNotify);
113885b47fbSopenharmony_ci}
114885b47fbSopenharmony_ci
115885b47fbSopenharmony_cisptr<AccessibilitySettingObserver> AccessibilitySettingProvider::CreateObserver(const std::string& key,
116885b47fbSopenharmony_ci    AccessibilitySettingObserver::UpdateFunc& func)
117885b47fbSopenharmony_ci{
118885b47fbSopenharmony_ci    return AccessibilityDatashareHelper::CreateObserver(key, func);
119885b47fbSopenharmony_ci}
120885b47fbSopenharmony_ci
121885b47fbSopenharmony_ciRetError AccessibilitySettingProvider::RegisterObserver(const std::string& key,
122885b47fbSopenharmony_ci    AccessibilitySettingObserver::UpdateFunc& func)
123885b47fbSopenharmony_ci{
124885b47fbSopenharmony_ci    return AccessibilityDatashareHelper::RegisterObserver(key, func);
125885b47fbSopenharmony_ci}
126885b47fbSopenharmony_ci
127885b47fbSopenharmony_ciRetError AccessibilitySettingProvider::UnregisterObserver(const std::string& key)
128885b47fbSopenharmony_ci{
129885b47fbSopenharmony_ci    return AccessibilityDatashareHelper::UnregisterObserver(key);
130885b47fbSopenharmony_ci}
131885b47fbSopenharmony_ci} // namespace Accessibility
132885b47fbSopenharmony_ci} // namespace OHOS