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
25 namespace OHOS {
26 namespace Accessibility {
27 AccessibilitySettingProvider* AccessibilitySettingProvider::instance_;
28 std::mutex AccessibilitySettingProvider::mutex_;
29 namespace {
30 constexpr int32_t DEFAULT_ACCOUNT_ID = 100;
31 } // namespace
32
AccessibilitySettingProvider()33 AccessibilitySettingProvider::AccessibilitySettingProvider()
34 : AccessibilityDatashareHelper(DATASHARE_TYPE::GLOBAL, DEFAULT_ACCOUNT_ID)
35 {
36 }
37
~AccessibilitySettingProvider()38 AccessibilitySettingProvider::~AccessibilitySettingProvider()
39 {
40 instance_ = nullptr;
41 }
42
GetInstance(int32_t systemAbilityId)43 AccessibilitySettingProvider& AccessibilitySettingProvider::GetInstance(int32_t systemAbilityId)
44 {
45 HILOG_DEBUG("etInstance start, systemAbilityId = %{public}d.", systemAbilityId);
46 if (instance_ == nullptr) {
47 std::lock_guard<std::mutex> lock(mutex_);
48 if (instance_ == nullptr) {
49 instance_ = new AccessibilitySettingProvider();
50 instance_->Initialize(systemAbilityId);
51 }
52 }
53 return *instance_;
54 }
55
DeleteInstance()56 void AccessibilitySettingProvider::DeleteInstance()
57 {
58 HILOG_DEBUG();
59 std::lock_guard<std::mutex> lock(mutex_);
60 if (instance_ == nullptr) {
61 HILOG_INFO("instance_ is nullptr");
62 return;
63 }
64 delete instance_;
65 instance_ = nullptr;
66 }
67
GetIntValue(const std::string & key,int32_t & value)68 RetError AccessibilitySettingProvider::GetIntValue(const std::string& key, int32_t& value)
69 {
70 value = AccessibilityDatashareHelper::GetIntValue(key, 0);
71 return RET_OK;
72 }
73
GetLongValue(const std::string & key,int64_t & value)74 RetError AccessibilitySettingProvider::GetLongValue(const std::string& key, int64_t& value)
75 {
76 value = AccessibilityDatashareHelper::GetLongValue(key, 0);
77 return RET_OK;
78 }
79
GetFloatValue(const std::string & key,float & value)80 RetError AccessibilitySettingProvider::GetFloatValue(const std::string& key, float& value)
81 {
82 value = AccessibilityDatashareHelper::GetFloatValue(key, 0);
83 return RET_OK;
84 }
85
GetBoolValue(const std::string & key,bool & value)86 RetError AccessibilitySettingProvider::GetBoolValue(const std::string& key, bool& value)
87 {
88 value = AccessibilityDatashareHelper::GetBoolValue(key, 0);
89 return RET_OK;
90 }
91
GetStringValue(const std::string & key,std::string & value)92 RetError AccessibilitySettingProvider::GetStringValue(const std::string& key, std::string& value)
93 {
94 value = AccessibilityDatashareHelper::GetStringValue(key, "");
95 return RET_OK;
96 }
97
PutIntValue(const std::string & key,int32_t value,bool needNotify)98 RetError AccessibilitySettingProvider::PutIntValue(const std::string& key, int32_t value, bool needNotify)
99 {
100 return AccessibilityDatashareHelper::PutIntValue(key, value, needNotify);
101 }
102
PutLongValue(const std::string & key,int64_t value,bool needNotify)103 RetError AccessibilitySettingProvider::PutLongValue(const std::string& key, int64_t value, bool needNotify)
104 {
105 return AccessibilityDatashareHelper::PutLongValue(key, value, needNotify);
106 }
107
PutBoolValue(const std::string & key,bool value,bool needNotify)108 RetError AccessibilitySettingProvider::PutBoolValue(const std::string& key, bool value, bool needNotify)
109 {
110 return AccessibilityDatashareHelper::PutBoolValue(key, value, needNotify);
111 }
112
PutStringValue(const std::string & key,const std::string & value,bool needNotify)113 RetError AccessibilitySettingProvider::PutStringValue(const std::string& key, const std::string& value, bool needNotify)
114 {
115 return AccessibilityDatashareHelper::PutStringValue(key, value, needNotify);
116 }
117
CreateObserver(const std::string & key,AccessibilitySettingObserver::UpdateFunc & func)118 sptr<AccessibilitySettingObserver> AccessibilitySettingProvider::CreateObserver(const std::string& key,
119 AccessibilitySettingObserver::UpdateFunc& func)
120 {
121 return AccessibilityDatashareHelper::CreateObserver(key, func);
122 }
123
RegisterObserver(const std::string & key,AccessibilitySettingObserver::UpdateFunc & func)124 RetError AccessibilitySettingProvider::RegisterObserver(const std::string& key,
125 AccessibilitySettingObserver::UpdateFunc& func)
126 {
127 return AccessibilityDatashareHelper::RegisterObserver(key, func);
128 }
129
UnregisterObserver(const std::string & key)130 RetError AccessibilitySettingProvider::UnregisterObserver(const std::string& key)
131 {
132 return AccessibilityDatashareHelper::UnregisterObserver(key);
133 }
134 } // namespace Accessibility
135 } // namespace OHOS