1/*
2 * Copyright (c) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#include "accessibility_setting_provider.h"
17
18#include "ipc_skeleton.h"
19#include "iservice_registry.h"
20#include "result_set.h"
21#include "uri.h"
22
23#include "hilog_wrapper.h"
24
25namespace OHOS {
26namespace Accessibility {
27std::shared_ptr<AccessibilitySettingProvider> AccessibilitySettingProvider::instance_ = nullptr;
28ffrt::mutex AccessibilitySettingProvider::mutex_;
29namespace {
30    constexpr int32_t DEFAULT_ACCOUNT_ID = 100;
31} // namespace
32
33AccessibilitySettingProvider::AccessibilitySettingProvider()
34    : AccessibilityDatashareHelper(DATASHARE_TYPE::GLOBAL, DEFAULT_ACCOUNT_ID)
35{
36}
37
38AccessibilitySettingProvider::~AccessibilitySettingProvider()
39{
40    instance_ = nullptr;
41}
42
43std::shared_ptr<AccessibilitySettingProvider> AccessibilitySettingProvider::GetInstance(int32_t systemAbilityId)
44{
45    HILOG_DEBUG("etInstance start, systemAbilityId = %{public}d.", systemAbilityId);
46    std::lock_guard<ffrt::mutex> lock(mutex_);
47    if (instance_ == nullptr) {
48        instance_ = std::make_shared<AccessibilitySettingProvider>();
49        instance_->Initialize(systemAbilityId);
50    }
51    return instance_;
52}
53
54void AccessibilitySettingProvider::DeleteInstance()
55{
56    HILOG_DEBUG();
57    std::lock_guard<ffrt::mutex> lock(mutex_);
58    if (instance_ == nullptr) {
59        HILOG_INFO("instance_ is nullptr");
60        return;
61    }
62    instance_ = nullptr;
63}
64
65RetError AccessibilitySettingProvider::GetIntValue(const std::string& key, int32_t& value)
66{
67    value = AccessibilityDatashareHelper::GetIntValue(key, 0);
68    return RET_OK;
69}
70
71RetError AccessibilitySettingProvider::GetLongValue(const std::string& key, int64_t& value)
72{
73    value = AccessibilityDatashareHelper::GetLongValue(key, 0);
74    return RET_OK;
75}
76
77RetError AccessibilitySettingProvider::GetFloatValue(const std::string& key, float& value)
78{
79    value = AccessibilityDatashareHelper::GetFloatValue(key, 0);
80    return RET_OK;
81}
82
83RetError AccessibilitySettingProvider::GetBoolValue(const std::string& key, bool& value)
84{
85    value = AccessibilityDatashareHelper::GetBoolValue(key, 0);
86    return RET_OK;
87}
88
89RetError AccessibilitySettingProvider::GetStringValue(const std::string& key, std::string& value)
90{
91    value = AccessibilityDatashareHelper::GetStringValue(key, "");
92    return RET_OK;
93}
94
95RetError AccessibilitySettingProvider::PutIntValue(const std::string& key, int32_t value, bool needNotify)
96{
97    return AccessibilityDatashareHelper::PutIntValue(key, value, needNotify);
98}
99
100RetError AccessibilitySettingProvider::PutLongValue(const std::string& key, int64_t value, bool needNotify)
101{
102    return AccessibilityDatashareHelper::PutLongValue(key, value, needNotify);
103}
104
105RetError AccessibilitySettingProvider::PutBoolValue(const std::string& key, bool value, bool needNotify)
106{
107    return AccessibilityDatashareHelper::PutBoolValue(key, value, needNotify);
108}
109
110RetError AccessibilitySettingProvider::PutStringValue(const std::string& key, const std::string& value, bool needNotify)
111{
112    return AccessibilityDatashareHelper::PutStringValue(key, value, needNotify);
113}
114
115sptr<AccessibilitySettingObserver> AccessibilitySettingProvider::CreateObserver(const std::string& key,
116    AccessibilitySettingObserver::UpdateFunc& func)
117{
118    return AccessibilityDatashareHelper::CreateObserver(key, func);
119}
120
121RetError AccessibilitySettingProvider::RegisterObserver(const std::string& key,
122    AccessibilitySettingObserver::UpdateFunc& func)
123{
124    return AccessibilityDatashareHelper::RegisterObserver(key, func);
125}
126
127RetError AccessibilitySettingProvider::UnregisterObserver(const std::string& key)
128{
129    return AccessibilityDatashareHelper::UnregisterObserver(key);
130}
131} // namespace Accessibility
132} // namespace OHOS