1 /*
2 * Copyright (c) 2021-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 "mock_ability_manager_service.h"
17 #include <gtest/gtest.h>
18
19 #include <functional>
20 #include <memory>
21 #include <string>
22 #include <unistd.h>
23
24 #include "session_info.h"
25
26 using OHOS::AppExecFwk::ElementName;
27
28 namespace OHOS {
29 namespace AAFwk {
MockAbilityManagerService()30 MockAbilityManagerService::MockAbilityManagerService() : abilityScheduler_(nullptr)
31 {
32 abilityScheduler_ = nullptr;
33 }
34
~MockAbilityManagerService()35 MockAbilityManagerService::~MockAbilityManagerService()
36 {}
37
StartAbility(const Want & want,int32_t userId,int requestCode)38 int MockAbilityManagerService::StartAbility(const Want& want, int32_t userId, int requestCode)
39 {
40 GTEST_LOG_(INFO) << "MockAbilityManagerService::StartAbility called";
41 curstate_ = AbilityLifeCycleState::ABILITY_STATE_INITIAL;
42 switch (requestCode) {
43 case AbilityLifeCycleState::ABILITY_STATE_INITIAL:
44 curstate_ = AbilityLifeCycleState::ABILITY_STATE_INITIAL;
45 break;
46 case AbilityLifeCycleState::ABILITY_STATE_INACTIVE:
47 curstate_ = AbilityLifeCycleState::ABILITY_STATE_INACTIVE;
48 break;
49 case AbilityLifeCycleState::ABILITY_STATE_ACTIVE:
50 curstate_ = AbilityLifeCycleState::ABILITY_STATE_ACTIVE;
51 break;
52 case AbilityLifeCycleState::ABILITY_STATE_BACKGROUND:
53 curstate_ = AbilityLifeCycleState::ABILITY_STATE_BACKGROUND;
54 break;
55 default:
56 break;
57 }
58
59 if (abilityScheduler_ != nullptr) {
60 want_ = want;
61 want_.SetElementName("BundleName", "abilityName");
62 LifeCycleStateInfo stateInfo;
63 stateInfo.state = curstate_;
64 abilityScheduler_->ScheduleAbilityTransaction(want_, stateInfo);
65 }
66
67 return 0;
68 }
69
StartAbility(const Want & want,const sptr<IRemoteObject> & callerToken,int32_t userId,int requestCode)70 int MockAbilityManagerService::StartAbility(const Want& want, const sptr<IRemoteObject>& callerToken,
71 int32_t userId, int requestCode)
72 {
73 return 0;
74 }
75
StartAbilityAsCaller(const Want & want,const sptr<IRemoteObject> & callerToken,sptr<IRemoteObject> asCallerSourceToken,int32_t userId,int requestCode)76 int MockAbilityManagerService::StartAbilityAsCaller(const Want& want, const sptr<IRemoteObject>& callerToken,
77 sptr<IRemoteObject> asCallerSourceToken, int32_t userId, int requestCode)
78 {
79 return 0;
80 }
81
TerminateAbility(const sptr<IRemoteObject> & token,int resultCode,const Want * resultWant)82 int MockAbilityManagerService::TerminateAbility(
83 const sptr<IRemoteObject>& token, int resultCode, const Want* resultWant)
84 {
85 GTEST_LOG_(INFO) << "MockAbilityManagerService::TerminateAbility";
86
87 if (abilityScheduler_ != nullptr) {
88 LifeCycleStateInfo stateInfo;
89 stateInfo.state = AbilityLifeCycleState::ABILITY_STATE_INITIAL;
90 curstate_ = AbilityLifeCycleState::ABILITY_STATE_INITIAL;
91 abilityScheduler_->ScheduleAbilityTransaction(want_, stateInfo);
92
93 int ceode = 250;
94 abilityScheduler_->SendResult(ceode, resultCode, *resultWant);
95 }
96 return 0;
97 }
98
ConnectAbility(const Want & want,const sptr<IAbilityConnection> & connect,const sptr<IRemoteObject> & callerToken,int32_t userId)99 int MockAbilityManagerService::ConnectAbility(
100 const Want& want, const sptr<IAbilityConnection>& connect, const sptr<IRemoteObject>& callerToken, int32_t userId)
101 {
102 if (abilityScheduler_ != nullptr) {
103 PacMap inState;
104 abilityScheduler_->ScheduleSaveAbilityState();
105 abilityScheduler_->ScheduleRestoreAbilityState(inState);
106 }
107 return 0;
108 }
109
DisconnectAbility(sptr<IAbilityConnection> connect)110 int MockAbilityManagerService::DisconnectAbility(sptr<IAbilityConnection> connect)
111 {
112 GTEST_LOG_(INFO) << "MockAbilityManagerService::DisconnectAbility";
113 AbilityLifeCycleState lifeState = AbilityLifeCycleState::ABILITY_STATE_ACTIVE;
114
115 if (abilityScheduler_ != nullptr) {
116 LifeCycleStateInfo stateInfo;
117 stateInfo.state = lifeState;
118 stateInfo.isNewWant = true;
119 want_.SetElementName("BundleName", "abilityName");
120 curstate_ = AbilityLifeCycleState::ABILITY_STATE_ACTIVE;
121 abilityScheduler_->ScheduleAbilityTransaction(want_, stateInfo);
122 }
123 return 0;
124 }
125
AttachAbilityThread(const sptr<IAbilityScheduler> & scheduler,const sptr<IRemoteObject> & token)126 int MockAbilityManagerService::AttachAbilityThread(
127 const sptr<IAbilityScheduler>& scheduler, const sptr<IRemoteObject>& token)
128 {
129 abilityScheduler_ = scheduler;
130 EXPECT_NE(nullptr, token);
131 return 0;
132 }
133
DumpState(const std::string & args,std::vector<std::string> & info)134 void MockAbilityManagerService::DumpState(const std::string& args, std::vector<std::string>& info)
135 {}
136
DumpSysState(const std::string & args,std::vector<std::string> & state,bool isClient,bool isUserID,int UserID)137 void MockAbilityManagerService::DumpSysState(
138 const std::string& args, std::vector<std::string>& state, bool isClient, bool isUserID, int UserID)
139 {}
140
AbilityTransitionDone(const sptr<IRemoteObject> & token,int state,const PacMap & saveData)141 int MockAbilityManagerService::AbilityTransitionDone(
142 const sptr<IRemoteObject>& token, int state, const PacMap& saveData)
143 {
144 GTEST_LOG_(INFO) << "MockAbilityManagerService::AbilityTransitionDone called";
145 return 0;
146 }
147
ScheduleConnectAbilityDone(const sptr<IRemoteObject> & token,const sptr<IRemoteObject> & remoteObject)148 int MockAbilityManagerService::ScheduleConnectAbilityDone(
149 const sptr<IRemoteObject>& token, const sptr<IRemoteObject>& remoteObject)
150 {
151 return 0;
152 }
153
ScheduleDisconnectAbilityDone(const sptr<IRemoteObject> & token)154 int MockAbilityManagerService::ScheduleDisconnectAbilityDone(const sptr<IRemoteObject>& token)
155 {
156 return 0;
157 }
158
ScheduleCommandAbilityDone(const sptr<IRemoteObject> & token)159 int MockAbilityManagerService::ScheduleCommandAbilityDone(const sptr<IRemoteObject>& token)
160 {
161 return 0;
162 }
163
ScheduleCommandAbilityWindowDone(const sptr<IRemoteObject> & token,const sptr<SessionInfo> & sessionInfo,WindowCommand winCmd,AbilityCommand abilityCmd)164 int MockAbilityManagerService::ScheduleCommandAbilityWindowDone(
165 const sptr<IRemoteObject> &token,
166 const sptr<SessionInfo> &sessionInfo,
167 WindowCommand winCmd,
168 AbilityCommand abilityCmd)
169 {
170 return 0;
171 }
172
StopServiceAbility(const Want & want,int32_t userId,const sptr<IRemoteObject> & token)173 int MockAbilityManagerService::StopServiceAbility(const Want& want, int32_t userId, const sptr<IRemoteObject> &token)
174 {
175 return 0;
176 }
177
AcquireDataAbility(const Uri & uri,bool tryBind,const sptr<IRemoteObject> & callerToken)178 sptr<IAbilityScheduler> MockAbilityManagerService::AcquireDataAbility(
179 const Uri& uri, bool tryBind, const sptr<IRemoteObject>& callerToken)
180 {
181 if (abilityScheduler_ != nullptr) {
182 return abilityScheduler_;
183 }
184 return nullptr;
185 }
186
ReleaseDataAbility(sptr<IAbilityScheduler> dataAbilityScheduler,const sptr<IRemoteObject> & callerToken)187 ErrCode MockAbilityManagerService::ReleaseDataAbility(
188 sptr<IAbilityScheduler> dataAbilityScheduler, const sptr<IRemoteObject>& callerToken)
189 {
190 if (abilityScheduler_ != nullptr) {
191 abilityScheduler_ = nullptr;
192 return 0;
193 }
194 return -1;
195 }
196 } // namespace AAFwk
197 } // namespace OHOS
198