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 std::shared_ptr<AccessibilitySettingProvider> AccessibilitySettingProvider::instance_ = nullptr;
28 ffrt::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 std::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
DeleteInstance()54 void 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
GetIntValue(const std::string & key,int32_t & value,const bool readOnlyFlag)65 RetError AccessibilitySettingProvider::GetIntValue(const std::string& key, int32_t& value, const bool readOnlyFlag)
66 {
67 value = AccessibilityDatashareHelper::GetIntValue(key, 0, readOnlyFlag);
68 return RET_OK;
69 }
70
GetLongValue(const std::string & key,int64_t & value,const bool readOnlyFlag)71 RetError AccessibilitySettingProvider::GetLongValue(const std::string& key, int64_t& value, const bool readOnlyFlag)
72 {
73 value = AccessibilityDatashareHelper::GetLongValue(key, 0, readOnlyFlag);
74 return RET_OK;
75 }
76
GetFloatValue(const std::string & key,float & value,const bool readOnlyFlag)77 RetError AccessibilitySettingProvider::GetFloatValue(const std::string& key, float& value, const bool readOnlyFlag)
78 {
79 value = AccessibilityDatashareHelper::GetFloatValue(key, 0, readOnlyFlag);
80 return RET_OK;
81 }
82
GetBoolValue(const std::string & key,bool & value,const bool readOnlyFlag)83 RetError AccessibilitySettingProvider::GetBoolValue(const std::string& key, bool& value, const bool readOnlyFlag)
84 {
85 value = AccessibilityDatashareHelper::GetBoolValue(key, 0, readOnlyFlag);
86 return RET_OK;
87 }
88
GetStringValue(const std::string & key,std::string & value,const bool readOnlyFlag)89 RetError AccessibilitySettingProvider::GetStringValue(const std::string& key, std::string& value,
90 const bool readOnlyFlag)
91 {
92 value = AccessibilityDatashareHelper::GetStringValue(key, "", readOnlyFlag);
93 return RET_OK;
94 }
95
PutIntValue(const std::string & key,int32_t value,bool needNotify)96 RetError AccessibilitySettingProvider::PutIntValue(const std::string& key, int32_t value, bool needNotify)
97 {
98 return AccessibilityDatashareHelper::PutIntValue(key, value, needNotify);
99 }
100
PutLongValue(const std::string & key,int64_t value,bool needNotify)101 RetError AccessibilitySettingProvider::PutLongValue(const std::string& key, int64_t value, bool needNotify)
102 {
103 return AccessibilityDatashareHelper::PutLongValue(key, value, needNotify);
104 }
105
PutBoolValue(const std::string & key,bool value,bool needNotify)106 RetError AccessibilitySettingProvider::PutBoolValue(const std::string& key, bool value, bool needNotify)
107 {
108 return AccessibilityDatashareHelper::PutBoolValue(key, value, needNotify);
109 }
110
PutStringValue(const std::string & key,const std::string & value,bool needNotify)111 RetError AccessibilitySettingProvider::PutStringValue(const std::string& key, const std::string& value, bool needNotify)
112 {
113 return AccessibilityDatashareHelper::PutStringValue(key, value, needNotify);
114 }
115
CreateObserver(const std::string & key,AccessibilitySettingObserver::UpdateFunc & func)116 sptr<AccessibilitySettingObserver> AccessibilitySettingProvider::CreateObserver(const std::string& key,
117 AccessibilitySettingObserver::UpdateFunc& func)
118 {
119 return AccessibilityDatashareHelper::CreateObserver(key, func);
120 }
121
RegisterObserver(const std::string & key,AccessibilitySettingObserver::UpdateFunc & func)122 RetError AccessibilitySettingProvider::RegisterObserver(const std::string& key,
123 AccessibilitySettingObserver::UpdateFunc& func)
124 {
125 return AccessibilityDatashareHelper::RegisterObserver(key, func);
126 }
127
UnregisterObserver(const std::string & key)128 RetError AccessibilitySettingProvider::UnregisterObserver(const std::string& key)
129 {
130 return AccessibilityDatashareHelper::UnregisterObserver(key);
131 }
132 } // namespace Accessibility
133 } // namespace OHOS