1 /*
2  * Copyright (c) 2021 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 <singleton.h>
17 #include <gtest/gtest.h>
18 #include "gmock/gmock.h"
19 
20 #include "string_ex.h"
21 
22 #include "ability_manager_interface.h"
23 #include "ability_context.h"
24 
25 #include "mock_ability_manager_client_interface1.h"
26 
27 namespace OHOS {
28 namespace AAFwk {
MockAbilityManagerClient()29 MockAbilityManagerClient::MockAbilityManagerClient()
30 {
31     startAbility_ = ERR_INVALID_OPERATION;
32     terminateAbility_ = ERR_INVALID_OPERATION;
33     terminateAbilityValue_ = 0;
34     missionId_ = -1;
35 }
~MockAbilityManagerClient()36 MockAbilityManagerClient::~MockAbilityManagerClient()
37 {}
38 
39 std::shared_ptr<MockAbilityManagerClient> MockAbilityManagerClient::mock_instance_ = nullptr;
40 bool MockAbilityManagerClient::mock_intanceIsNull_ = true;
41 
GetInstance()42 std::shared_ptr<MockAbilityManagerClient> MockAbilityManagerClient::GetInstance()
43 {
44     if (mock_instance_ == nullptr) {
45         mock_instance_ = std::make_shared<MockAbilityManagerClient>();
46     }
47 
48     return mock_instance_;
49 }
50 
SetInstanceNull(bool flag)51 void MockAbilityManagerClient::SetInstanceNull(bool flag)
52 {
53     mock_intanceIsNull_ = flag;
54 }
55 
GetInstance()56 std::shared_ptr<AbilityManagerClient> AbilityManagerClient::GetInstance()
57 {
58     if (instance_ == nullptr) {
59         std::lock_guard<std::mutex> lock_l(mutex_);
60         if (instance_ == nullptr) {
61             instance_ = MockAbilityManagerClient::GetInstance();
62         }
63     }
64     if (MockAbilityManagerClient::mock_intanceIsNull_)
65         return instance_;
66     else
67         return nullptr;
68 }
69 
~AbilityManagerClient()70 AbilityManagerClient::~AbilityManagerClient()
71 {}
72 
AttachAbilityThread(sptr<IAbilityScheduler> scheduler,sptr<IRemoteObject> token)73 ErrCode AbilityManagerClient::AttachAbilityThread(
74     sptr<IAbilityScheduler> scheduler, sptr<IRemoteObject> token)
75 {
76     return ERR_OK;
77 }
78 
AbilityTransitionDone(sptr<IRemoteObject> token,int state,const PacMap & saveData)79 ErrCode AbilityManagerClient::AbilityTransitionDone(sptr<IRemoteObject> token, int state, const PacMap& saveData)
80 {
81     return ERR_OK;
82 }
83 
ScheduleConnectAbilityDone(sptr<IRemoteObject> token,sptr<IRemoteObject> remoteObject)84 ErrCode AbilityManagerClient::ScheduleConnectAbilityDone(
85     sptr<IRemoteObject> token, sptr<IRemoteObject> remoteObject)
86 {
87     return ERR_OK;
88 }
89 
ScheduleDisconnectAbilityDone(sptr<IRemoteObject> token)90 ErrCode AbilityManagerClient::ScheduleDisconnectAbilityDone(sptr<IRemoteObject> token)
91 {
92     return ERR_OK;
93 }
94 
ScheduleCommandAbilityDone(sptr<IRemoteObject> token)95 ErrCode AbilityManagerClient::ScheduleCommandAbilityDone(sptr<IRemoteObject> token)
96 {
97     return ERR_OK;
98 }
99 
ScheduleCommandAbilityWindowDone(sptr<IRemoteObject> token,sptr<SessionInfo> sessionInfo,WindowCommand winCmd,AbilityCommand abilityCmd)100 ErrCode AbilityManagerClient::ScheduleCommandAbilityWindowDone(
101     sptr<IRemoteObject> token,
102     sptr<SessionInfo> sessionInfo,
103     WindowCommand winCmd,
104     AbilityCommand abilityCmd)
105 {
106     return ERR_OK;
107 }
108 
TerminateAbility(sptr<IRemoteObject> token,int resultCode,const Want * resultWant)109 ErrCode AbilityManagerClient::TerminateAbility(sptr<IRemoteObject> token, int resultCode, const Want* resultWant)
110 {
111     return ERR_OK;
112 }
113 
ConnectAbility(const Want & want,sptr<IAbilityConnection> connect,sptr<IRemoteObject> callerToken)114 ErrCode AbilityManagerClient::ConnectAbility(
115     const Want& want, sptr<IAbilityConnection> connect, sptr<IRemoteObject> callerToken)
116 {
117     return ERR_OK;
118 }
119 
DisconnectAbility(sptr<IAbilityConnection> connect)120 ErrCode AbilityManagerClient::DisconnectAbility(sptr<IAbilityConnection> connect)
121 {
122     return ERR_OK;
123 }
124 
AcquireDataAbility(const Uri & uri,bool tryBind,sptr<IRemoteObject> callerToken)125 sptr<IAbilityScheduler> AbilityManagerClient::AcquireDataAbility(
126     const Uri& uri, bool tryBind, sptr<IRemoteObject> callerToken)
127 {
128     return nullptr;
129 }
130 
ReleaseDataAbility(sptr<IAbilityScheduler> dataAbilityScheduler,sptr<IRemoteObject> callerToken)131 ErrCode AbilityManagerClient::ReleaseDataAbility(
132     sptr<IAbilityScheduler> dataAbilityScheduler, sptr<IRemoteObject> callerToken)
133 {
134     return ERR_OK;
135 }
136 
DumpState(const std::string & args,std::vector<std::string> & state)137 ErrCode AbilityManagerClient::DumpState(const std::string& args, std::vector<std::string>& state)
138 {
139     return ERR_OK;
140 }
141 
Connect()142 ErrCode AbilityManagerClient::Connect()
143 {
144     return ERR_OK;
145 }
146 
StopServiceAbility(const Want & want,sptr<IRemoteObject> token)147 ErrCode AbilityManagerClient::StopServiceAbility(const Want& want, sptr<IRemoteObject> token)
148 {
149     return ERR_OK;
150 }
151 
KillProcess(const std::string & bundleName,const bool clearPageStack)152 ErrCode AbilityManagerClient::KillProcess(const std::string& bundleName, const bool clearPageStack)
153 {
154     return ERR_OK;
155 }
156 
StartAbility(const Want & want,int requestCode)157 ErrCode AbilityManagerClient::StartAbility(const Want& want, int requestCode)
158 {
159     return MockAbilityManagerClient::GetInstance()->GetStartAbility();
160 }
161 
StartAbility(const Want & want,sptr<IRemoteObject> callerToken,int requestCode)162 ErrCode AbilityManagerClient::StartAbility(const Want& want, sptr<IRemoteObject> callerToken, int requestCode)
163 {
164     return MockAbilityManagerClient::GetInstance()->GetStartAbility();
165 }
166 
TerminateAbility(sptr<IRemoteObject> callerToken,int requestCode)167 ErrCode AbilityManagerClient::TerminateAbility(sptr<IRemoteObject> callerToken, int requestCode)
168 {
169     MockAbilityManagerClient::GetInstance()->SetTerminateAbilityValue(requestCode);
170     return MockAbilityManagerClient::GetInstance()->GetTerminateAbility();
171 }
172 
GetStartAbility()173 ErrCode MockAbilityManagerClient::GetStartAbility()
174 {
175     return startAbility_;
176 }
GetTerminateAbility()177 ErrCode MockAbilityManagerClient::GetTerminateAbility()
178 {
179     return terminateAbility_;
180 }
181 
SetStartAbility(ErrCode tValue)182 void MockAbilityManagerClient::SetStartAbility(ErrCode tValue)
183 {
184     startAbility_ = tValue;
185 }
SetTerminateAbility(ErrCode tValue)186 void MockAbilityManagerClient::SetTerminateAbility(ErrCode tValue)
187 {
188     terminateAbility_ = tValue;
189 }
190 
GetTerminateAbilityValue()191 int MockAbilityManagerClient::GetTerminateAbilityValue()
192 {
193     return terminateAbilityValue_;
194 }
SetTerminateAbilityValue(int nValue)195 void MockAbilityManagerClient::SetTerminateAbilityValue(int nValue)
196 {
197     terminateAbilityValue_ = nValue;
198 }
199 
GetMockMissionId()200 int MockAbilityManagerClient::GetMockMissionId()
201 {
202     return missionId_;
203 }
SetMockMissionId(int missionId)204 void MockAbilityManagerClient::SetMockMissionId(int missionId)
205 {
206     missionId_ = missionId;
207 }
208 }  // namespace AAFwk
209 }  // namespace OHOS
210 
211 namespace OHOS {
212 namespace AppExecFwk {
MockAbilityContextDeal()213 MockAbilityContextDeal::MockAbilityContextDeal()
214 {
215     hapModInfo_ = nullptr;
216 }
~MockAbilityContextDeal()217 MockAbilityContextDeal::~MockAbilityContextDeal()
218 {}
219 
GetHapModuleInfo()220 std::shared_ptr<AppExecFwk::HapModuleInfo> MockAbilityContextDeal::GetHapModuleInfo()
221 {
222     if (hapModInfo_ == nullptr) {
223         hapModInfo_ = std::make_shared<AppExecFwk::HapModuleInfo>();
224     }
225     return hapModInfo_;
226 }
227 
MockAbilityContextTest()228 MockAbilityContextTest::MockAbilityContextTest()
229 {
230     startAbilityRunCount_ = 0;
231 }
~MockAbilityContextTest()232 MockAbilityContextTest::~MockAbilityContextTest()
233 {}
234 
StartAbility(const AAFwk::Want & want,int requestCode)235 void MockAbilityContextTest::StartAbility(const AAFwk::Want& want, int requestCode)
236 {
237     ++startAbilityRunCount_;
238 }
239 
GetStartAbilityRunCount()240 size_t MockAbilityContextTest::GetStartAbilityRunCount()
241 {
242     return startAbilityRunCount_;
243 }
SetStartAbilityRunCount(size_t nCount)244 void MockAbilityContextTest::SetStartAbilityRunCount(size_t nCount)
245 {
246     startAbilityRunCount_ = nCount;
247 }
248 
SetToken(const sptr<IRemoteObject> token)249 void MockAbilityContextTest::SetToken(const sptr<IRemoteObject> token)
250 {
251     token_ = token;
252 }
253 }  // namespace AppExecFwk
254 }  // namespace OHOS
255