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