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