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 "system_ability_manager.h"
17 #include "ability_death_recipient.h"
18 #include "datetime_ex.h"
19 #include "errors.h"
20 #include "hilog_wrapper.h"
21 #include "sam_log.h"
22 #include "string_ex.h"
23 #include "system_ability_definition.h"
24 
25 namespace OHOS {
26 ffrt::mutex SystemAbilityManager::instanceLock;
27 sptr<SystemAbilityManager> SystemAbilityManager::instance;
28 
SystemAbilityManager()29 SystemAbilityManager::SystemAbilityManager()
30 {}
31 
~SystemAbilityManager()32 SystemAbilityManager::~SystemAbilityManager()
33 {}
34 
Init()35 void SystemAbilityManager::Init()
36 {}
37 
GetDBinder() const38 const sptr<DBinderService> SystemAbilityManager::GetDBinder() const
39 {
40     return nullptr;
41 }
42 
GetInstance()43 sptr<SystemAbilityManager> SystemAbilityManager::GetInstance()
44 {
45     HILOG_ERROR("SystemAbilityManager::GetInstance");
46     std::lock_guard<ffrt::mutex> autoLock(instanceLock);
47     if (!instance) {
48         instance = new SystemAbilityManager;
49     }
50     return instance;
51 }
52 
GetSystemAbility(int32_t systemAbilityId)53 sptr<IRemoteObject> SystemAbilityManager::GetSystemAbility(int32_t systemAbilityId)
54 {
55     HILOG_ERROR("SystemAbilityManager::GetSystemAbility");
56     auto iter = abilityMap_.find(systemAbilityId);
57     if (iter != abilityMap_.end()) {
58         return iter->second.remoteObj;
59     }
60     HILOG_ERROR("SystemAbilityManager::GetSystemAbility nullptr");
61     return nullptr;
62 }
63 
GetSystemAbility(int32_t systemAbilityId,const std::string & deviceId)64 sptr<IRemoteObject> SystemAbilityManager::GetSystemAbility(int32_t systemAbilityId, const std::string& deviceId)
65 {
66     (void)systemAbilityId;
67     (void)deviceId;
68     return nullptr;
69 }
70 
CheckSystemAbility(int32_t systemAbilityId)71 sptr<IRemoteObject> SystemAbilityManager::CheckSystemAbility(int32_t systemAbilityId)
72 {
73     (void)systemAbilityId;
74     return nullptr;
75 }
76 
CheckDistributedPermission()77 bool SystemAbilityManager::CheckDistributedPermission()
78 {
79     return true;
80 }
81 
CheckSystemAbility(int32_t systemAbilityId,const std::string & deviceId)82 sptr<IRemoteObject> SystemAbilityManager::CheckSystemAbility(int32_t systemAbilityId, const std::string& deviceId)
83 {
84     (void)systemAbilityId;
85     (void)deviceId;
86     return nullptr;
87 }
88 
FindSystemAbilityNotify(int32_t systemAbilityId,int32_t code)89 int32_t SystemAbilityManager::FindSystemAbilityNotify(int32_t systemAbilityId, int32_t code)
90 {
91     (void)systemAbilityId;
92     (void)code;
93     return 0;
94 }
95 
FindSystemAbilityNotify(int32_t systemAbilityId,const std::string & deviceId,int32_t code)96 int32_t SystemAbilityManager::FindSystemAbilityNotify(
97     int32_t systemAbilityId, const std::string& deviceId, int32_t code)
98 {
99     (void)systemAbilityId;
100     (void)deviceId;
101     (void)code;
102     return ERR_OK;
103 }
104 
IsNameInValid(const std::u16string & name)105 bool SystemAbilityManager::IsNameInValid(const std::u16string& name)
106 {
107     (void)name;
108     return false;
109 }
110 
AddOnDemandSystemAbilityInfo(int32_t systemAbilityId,const std::u16string & localAbilityManagerName)111 int32_t SystemAbilityManager::AddOnDemandSystemAbilityInfo(
112     int32_t systemAbilityId, const std::u16string& localAbilityManagerName)
113 {
114     (void)systemAbilityId;
115     (void)localAbilityManagerName;
116     return ERR_OK;
117 }
118 
StartOnDemandAbility(int32_t systemAbilityId)119 int32_t SystemAbilityManager::StartOnDemandAbility(int32_t systemAbilityId)
120 {
121     (void)systemAbilityId;
122     return ERR_INVALID_VALUE;
123 }
124 
CheckSystemAbility(int32_t systemAbilityId,bool & isExist)125 sptr<IRemoteObject> SystemAbilityManager::CheckSystemAbility(int32_t systemAbilityId, bool& isExist)
126 {
127     (void)systemAbilityId;
128     (void)isExist;
129     return nullptr;
130 }
131 
LoadSystemAbility(int32_t systemAbilityId,const sptr<ISystemAbilityLoadCallback> & callback)132 int32_t SystemAbilityManager::LoadSystemAbility(
133     int32_t systemAbilityId, const sptr<ISystemAbilityLoadCallback>& callback)
134 {
135     (void)systemAbilityId;
136     (void)callback;
137     return ERR_OK;
138 }
139 
DoInsertSaData(const std::u16string & strName,const sptr<IRemoteObject> & ability,const SAExtraProp & extraProp)140 void SystemAbilityManager::DoInsertSaData(
141     const std::u16string& strName, const sptr<IRemoteObject>& ability, const SAExtraProp& extraProp)
142 {
143     (void)strName;
144     (void)ability;
145     (void)extraProp;
146 }
147 
RemoveSystemAbility(int32_t systemAbilityId)148 int32_t SystemAbilityManager::RemoveSystemAbility(int32_t systemAbilityId)
149 {
150     (void)systemAbilityId;
151     abilityMap_.clear();
152     return ERR_OK;
153 }
154 
RemoveSystemAbility(const sptr<IRemoteObject> & ability)155 int32_t SystemAbilityManager::RemoveSystemAbility(const sptr<IRemoteObject>& ability)
156 {
157     (void)ability;
158     return ERR_OK;
159 }
160 
ListSystemAbilities(unsigned int dumpFlags)161 std::vector<std::u16string> SystemAbilityManager::ListSystemAbilities(unsigned int dumpFlags)
162 {
163     (void)dumpFlags;
164     std::vector<std::u16string> list;
165     return list;
166 }
167 
SubscribeSystemAbility(int32_t systemAbilityId,const sptr<ISystemAbilityStatusChange> & listener)168 int32_t SystemAbilityManager::SubscribeSystemAbility(
169     int32_t systemAbilityId, const sptr<ISystemAbilityStatusChange>& listener)
170 {
171     (void)systemAbilityId;
172     (void)listener;
173     return ERR_OK;
174 }
175 
UnSubscribeSystemAbility(int32_t systemAbilityId,const sptr<ISystemAbilityStatusChange> & listener)176 int32_t SystemAbilityManager::UnSubscribeSystemAbility(
177     int32_t systemAbilityId, const sptr<ISystemAbilityStatusChange>& listener)
178 {
179     (void)systemAbilityId;
180     (void)listener;
181     return ERR_OK;
182 }
183 
SetDeviceName(const std::u16string & name)184 void SystemAbilityManager::SetDeviceName(const std::u16string& name)
185 {
186     (void)name;
187 }
188 
GetDeviceName() const189 const std::u16string& SystemAbilityManager::GetDeviceName() const
190 {
191     return deviceName_;
192 }
193 
NotifyRemoteSaDied(const std::u16string & name)194 void SystemAbilityManager::NotifyRemoteSaDied(const std::u16string& name)
195 {
196     (void)name;
197 }
198 
NotifyRemoteDeviceOffline(const std::string & deviceId)199 void SystemAbilityManager::NotifyRemoteDeviceOffline(const std::string& deviceId)
200 {
201     (void)deviceId;
202 }
203 
ParseRemoteSaName(const std::u16string & name,std::string & deviceId,std::u16string & saName)204 void SystemAbilityManager::ParseRemoteSaName(const std::u16string& name, std::string& deviceId, std::u16string& saName)
205 {
206     (void)name;
207     (void)deviceId;
208     (void)saName;
209 }
210 
AddSystemAbility(int32_t systemAbilityId,const sptr<IRemoteObject> & ability,const SAExtraProp & extraProp)211 int32_t SystemAbilityManager::AddSystemAbility(
212     int32_t systemAbilityId, const sptr<IRemoteObject>& ability, const SAExtraProp& extraProp)
213 {
214     SAInfo saInfo;
215     saInfo.remoteObj = ability;
216     saInfo.isDistributed = extraProp.isDistributed;
217     saInfo.capability = extraProp.capability;
218     saInfo.permission = Str16ToStr8(extraProp.permission);
219     abilityMap_[systemAbilityId] = std::move(saInfo);
220     return 0;
221 }
222 
IsLocalDeviceId(const std::string & deviceId)223 bool SystemAbilityManager::IsLocalDeviceId(const std::string& deviceId)
224 {
225     (void)deviceId;
226     return false;
227 }
228 
AddSystemProcess(const std::u16string & procName,const sptr<IRemoteObject> & procObject)229 int32_t SystemAbilityManager::AddSystemProcess(const std::u16string& procName, const sptr<IRemoteObject>& procObject)
230 {
231     (void)procName;
232     (void)procObject;
233     return 0;
234 }
235 } // namespace OHOS