1 /*
2  * Copyright (c) 2021-2023 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 #ifndef SERVICES_SAMGR_NATIVE_INCLUDE_SYSTEM_ABILITY_MANAGER_STUB_H
17 #define SERVICES_SAMGR_NATIVE_INCLUDE_SYSTEM_ABILITY_MANAGER_STUB_H
18 
19 #include <map>
20 #include "if_system_ability_manager.h"
21 #include "iremote_object.h"
22 #include "iremote_stub.h"
23 
24 namespace OHOS {
25 class SystemAbilityManagerStub : public IRemoteStub<ISystemAbilityManager> {
26 public:
27     SystemAbilityManagerStub();
28     ~SystemAbilityManagerStub() = default;
29     int32_t OnRemoteRequest(uint32_t code, MessageParcel& data, MessageParcel& reply, MessageOption &option) override;
30 
31 protected:
32     static bool CanRequest();
33     static bool EnforceInterceToken(MessageParcel& data);
34     static bool CheckPermission(const std::string& permission);
35 
36 private:
LocalListSystemAbility(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)37     static int32_t LocalListSystemAbility(SystemAbilityManagerStub* stub,
38         MessageParcel& data, MessageParcel& reply)
39     {
40         return stub->ListSystemAbilityInner(data, reply);
41     }
LocalSubsSystemAbility(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)42     static int32_t LocalSubsSystemAbility(SystemAbilityManagerStub* stub,
43         MessageParcel& data, MessageParcel& reply)
44     {
45         return stub->SubsSystemAbilityInner(data, reply);
46     }
LocalUnSubsSystemAbility(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)47     static int32_t LocalUnSubsSystemAbility(SystemAbilityManagerStub* stub,
48         MessageParcel& data, MessageParcel& reply)
49     {
50         return stub->UnSubsSystemAbilityInner(data, reply);
51     }
LocalCheckRemtSystemAbility(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)52     static int32_t LocalCheckRemtSystemAbility(SystemAbilityManagerStub* stub,
53         MessageParcel& data, MessageParcel& reply)
54     {
55         return stub->CheckRemtSystemAbilityInner(data, reply);
56     }
LocalAddOndemandSystemAbility(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)57     static int32_t LocalAddOndemandSystemAbility(SystemAbilityManagerStub* stub,
58         MessageParcel& data, MessageParcel& reply)
59     {
60         return stub->AddOndemandSystemAbilityInner(data, reply);
61     }
LocalCheckSystemAbilityImme(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)62     static int32_t LocalCheckSystemAbilityImme(SystemAbilityManagerStub* stub,
63         MessageParcel& data, MessageParcel& reply)
64     {
65         return stub->CheckSystemAbilityImmeInner(data, reply);
66     }
LocalAddSystemAbility(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)67     static int32_t LocalAddSystemAbility(SystemAbilityManagerStub* stub,
68         MessageParcel& data, MessageParcel& reply)
69     {
70         return stub->AddSystemAbilityInner(data, reply);
71     }
LocalGetSystemAbility(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)72     static int32_t LocalGetSystemAbility(SystemAbilityManagerStub* stub,
73         MessageParcel& data, MessageParcel& reply)
74     {
75         return stub->GetSystemAbilityInner(data, reply);
76     }
LocalCheckSystemAbility(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)77     static int32_t LocalCheckSystemAbility(SystemAbilityManagerStub* stub,
78         MessageParcel& data, MessageParcel& reply)
79     {
80         return stub->CheckSystemAbilityInner(data, reply);
81     }
LocalAddSystemProcess(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)82     static int32_t LocalAddSystemProcess(SystemAbilityManagerStub* stub,
83         MessageParcel& data, MessageParcel& reply)
84     {
85         return stub->AddSystemProcessInner(data, reply);
86     }
LocalRemoveSystemAbility(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)87     static int32_t LocalRemoveSystemAbility(SystemAbilityManagerStub* stub,
88         MessageParcel& data, MessageParcel& reply)
89     {
90         return stub->RemoveSystemAbilityInner(data, reply);
91     }
LocalGetSystemProcessInfo(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)92     static int32_t LocalGetSystemProcessInfo(SystemAbilityManagerStub* stub,
93         MessageParcel& data, MessageParcel& reply)
94     {
95         return stub->GetSystemProcessInfoInner(data, reply);
96     }
LocalGetRunningSystemProcess(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)97     static int32_t LocalGetRunningSystemProcess(SystemAbilityManagerStub* stub,
98         MessageParcel& data, MessageParcel& reply)
99     {
100         return stub->GetRunningSystemProcessInner(data, reply);
101     }
LocalSubscribeSystemProcess(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)102     static int32_t LocalSubscribeSystemProcess(SystemAbilityManagerStub* stub,
103         MessageParcel& data, MessageParcel& reply)
104     {
105         return stub->SubscribeSystemProcessInner(data, reply);
106     }
LocalUnSubscribeSystemProcess(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)107     static int32_t LocalUnSubscribeSystemProcess(SystemAbilityManagerStub* stub,
108         MessageParcel& data, MessageParcel& reply)
109     {
110         return stub->UnSubscribeSystemProcessInner(data, reply);
111     }
LocalLoadSystemAbility(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)112     static int32_t LocalLoadSystemAbility(SystemAbilityManagerStub* stub,
113         MessageParcel& data, MessageParcel& reply)
114     {
115         return stub->LoadSystemAbilityInner(data, reply);
116     }
LocalLoadRemoteSystemAbility(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)117     static int32_t LocalLoadRemoteSystemAbility(SystemAbilityManagerStub* stub,
118         MessageParcel& data, MessageParcel& reply)
119     {
120         return stub->LoadRemoteSystemAbilityInner(data, reply);
121     }
LocalUnloadSystemAbility(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)122     static int32_t LocalUnloadSystemAbility(SystemAbilityManagerStub* stub,
123         MessageParcel& data, MessageParcel& reply)
124     {
125         return stub->UnloadSystemAbilityInner(data, reply);
126     }
LocalCancelUnloadSystemAbility(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)127     static int32_t LocalCancelUnloadSystemAbility(SystemAbilityManagerStub* stub,
128         MessageParcel& data, MessageParcel& reply)
129     {
130         return stub->CancelUnloadSystemAbilityInner(data, reply);
131     }
LocalUnloadAllIdleSystemAbility(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)132     static int32_t LocalUnloadAllIdleSystemAbility(SystemAbilityManagerStub* stub,
133         MessageParcel& data, MessageParcel& reply)
134     {
135         return stub->UnloadAllIdleSystemAbilityInner(data, reply);
136     }
LocalGetOnDemandReasonExtraData(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)137     static int32_t LocalGetOnDemandReasonExtraData(SystemAbilityManagerStub* stub,
138         MessageParcel& data, MessageParcel& reply)
139     {
140         return stub->GetOnDemandReasonExtraDataInner(data, reply);
141     }
LocalGetOnDemandPolicy(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)142     static int32_t LocalGetOnDemandPolicy(SystemAbilityManagerStub* stub,
143         MessageParcel& data, MessageParcel& reply)
144     {
145         return stub->GetOnDemandPolicyInner(data, reply);
146     }
LocalUpdateOnDemandPolicy(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)147     static int32_t LocalUpdateOnDemandPolicy(SystemAbilityManagerStub* stub,
148         MessageParcel& data, MessageParcel& reply)
149     {
150         return stub->UpdateOnDemandPolicyInner(data, reply);
151     }
LocalGetOnDemandSystemAbilityIds(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)152     static int32_t LocalGetOnDemandSystemAbilityIds(SystemAbilityManagerStub* stub,
153         MessageParcel& data, MessageParcel& reply)
154     {
155         return stub->GetOnDemandSystemAbilityIdsInner(data, reply);
156     }
LocalSendStrategy(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)157     static int32_t LocalSendStrategy(SystemAbilityManagerStub* stub,
158         MessageParcel& data, MessageParcel& reply)
159     {
160         return stub->SendStrategyInner(data, reply);
161     }
LocalGetExtensionSaIds(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)162     static int32_t LocalGetExtensionSaIds(SystemAbilityManagerStub* stub,
163         MessageParcel& data, MessageParcel& reply)
164     {
165         return stub->GetExtensionSaIdsInner(data, reply);
166     }
LocalGetExtensionRunningSaList(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)167     static int32_t LocalGetExtensionRunningSaList(SystemAbilityManagerStub* stub,
168         MessageParcel& data, MessageParcel& reply)
169     {
170         return stub->GetExtensionRunningSaListInner(data, reply);
171     }
LocalGetRunningSaExtensionInfoList(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)172     static int32_t LocalGetRunningSaExtensionInfoList(SystemAbilityManagerStub* stub,
173         MessageParcel& data, MessageParcel& reply)
174     {
175         return stub->GetRunningSaExtensionInfoListInner(data, reply);
176     }
LocalGetCommonEventExtraDataIdlist(SystemAbilityManagerStub * stub,MessageParcel & data,MessageParcel & reply)177     static int32_t LocalGetCommonEventExtraDataIdlist(SystemAbilityManagerStub* stub,
178         MessageParcel& data, MessageParcel& reply)
179     {
180         return stub->GetCommonEventExtraDataIdlistInner(data, reply);
181     }
182     int32_t ListSystemAbilityInner(MessageParcel& data, MessageParcel& reply);
183     int32_t SubsSystemAbilityInner(MessageParcel& data, MessageParcel& reply);
184     int32_t UnSubsSystemAbilityInner(MessageParcel& data, MessageParcel& reply);
185     int32_t CheckRemtSystemAbilityInner(MessageParcel& data, MessageParcel& reply);
186     int32_t AddOndemandSystemAbilityInner(MessageParcel& data, MessageParcel& reply);
187     int32_t CheckSystemAbilityImmeInner(MessageParcel& data, MessageParcel& reply);
188     int32_t AddSystemAbilityInner(MessageParcel& data, MessageParcel& reply);
189     int32_t GetSystemAbilityInner(MessageParcel& data, MessageParcel& reply);
190     int32_t CheckSystemAbilityInner(MessageParcel& data, MessageParcel& reply);
191     int32_t AddSystemProcessInner(MessageParcel& data, MessageParcel& reply);
192     int32_t RemoveSystemAbilityInner(MessageParcel& data, MessageParcel& reply);
193     int32_t GetSystemProcessInfoInner(MessageParcel& data, MessageParcel& reply);
194     int32_t GetRunningSystemProcessInner(MessageParcel& data, MessageParcel& reply);
195     int32_t SubscribeSystemProcessInner(MessageParcel& data, MessageParcel& reply);
196     int32_t UnSubscribeSystemProcessInner(MessageParcel& data, MessageParcel& reply);
197     int32_t LoadSystemAbilityInner(MessageParcel& data, MessageParcel& reply);
198     int32_t LoadRemoteSystemAbilityInner(MessageParcel& data, MessageParcel& reply);
199     int32_t UnloadSystemAbilityInner(MessageParcel& data, MessageParcel& reply);
200     int32_t CancelUnloadSystemAbilityInner(MessageParcel& data, MessageParcel& reply);
201     int32_t UnloadAllIdleSystemAbilityInner(MessageParcel& data, MessageParcel& reply);
202     int32_t GetOnDemandReasonExtraDataInner(MessageParcel& data, MessageParcel& reply);
203     int32_t GetOnDemandPolicyInner(MessageParcel& data, MessageParcel& reply);
204     int32_t UpdateOnDemandPolicyInner(MessageParcel& data, MessageParcel& reply);
205     int32_t UnmarshalingSaExtraProp(MessageParcel& data, SAExtraProp& extraProp);
206     int32_t GetOnDemandSystemAbilityIdsInner(MessageParcel& data, MessageParcel& reply);
207     int32_t SendStrategyInner(MessageParcel& data, MessageParcel& reply);
208     int32_t GetExtensionSaIdsInner(MessageParcel& data, MessageParcel& reply);
209     int32_t GetExtensionRunningSaListInner(MessageParcel& data, MessageParcel& reply);
210     int32_t GetRunningSaExtensionInfoListInner(MessageParcel& data, MessageParcel& reply);
211     int32_t GetCommonEventExtraDataIdlistInner(MessageParcel& data, MessageParcel& reply);
212     static int32_t GetHapIdMultiuser(int32_t uid);
213     void SetAbilityFuncMap();
214     void SetProcessFuncMap();
215 
216     using SystemAbilityManagerStubFunc =
217         int32_t (*)(SystemAbilityManagerStub* stub, MessageParcel& data, MessageParcel& reply);
218     std::map<uint32_t, SystemAbilityManagerStubFunc> memberFuncMap_;
219 };
220 } // namespace OHOS
221 
222 #endif // !defined(SERVICES_SAMGR_NATIVE_INCLUDE_SYSTEM_ABILITY_MANAGER_STUB_H)
223