• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "second_ability.h"
17 #include "app_log_wrapper.h"
18 #include "test_utils.h"
19 
20 namespace OHOS {
21 namespace AppExecFwk {
22 using namespace OHOS::EventFwk;
23 namespace {
24 const int SecondAbilityACode = 200;
25 constexpr int index_f = 0;
26 constexpr int index_s = 1;
27 constexpr int index_t = 2;
28 constexpr int numThree = 3;
29 }
30 
Init(const std::shared_ptr<AbilityInfo> & abilityInfo,const std::shared_ptr<OHOSApplication> & application,std::shared_ptr<AbilityHandler> & handler,const sptr<IRemoteObject> & token)31 void SecondAbility::Init(const std::shared_ptr<AbilityInfo> &abilityInfo,
32     const std::shared_ptr<OHOSApplication> &application, std::shared_ptr<AbilityHandler> &handler,
33     const sptr<IRemoteObject> &token)
34 {
35     APP_LOGI("SecondAbility::Init");
36     Ability::Init(abilityInfo, application, handler, token);
37 }
38 
~SecondAbility()39 SecondAbility::~SecondAbility()
40 {
41     CommonEventManager::UnSubscribeCommonEvent(subscriber_);
42 }
43 
OnStart(const Want & want)44 void SecondAbility::OnStart(const Want &want)
45 {
46     APP_LOGI("SecondAbility::onStart");
47     SubscribeEvent();
48     Ability::OnStart(want);
49     TestUtils::PublishEvent(g_EVENT_RESP_SECOND_LIFECYCLE, SecondAbilityACode, "onStart");
50 }
51 
OnStop()52 void SecondAbility::OnStop()
53 {
54     APP_LOGI("SecondAbility::OnStop");
55     Ability::OnStop();
56     CommonEventManager::UnSubscribeCommonEvent(subscriber_);
57     TestUtils::PublishEvent(g_EVENT_RESP_SECOND_LIFECYCLE, SecondAbilityACode, "OnStop");
58 }
59 
OnActive()60 void SecondAbility::OnActive()
61 {
62     APP_LOGI("SecondAbility::OnActive");
63     Ability::OnActive();
64     TestUtils::PublishEvent(g_EVENT_RESP_SECOND_LIFECYCLE, SecondAbilityACode, "OnActive");
65 }
66 
OnInactive()67 void SecondAbility::OnInactive()
68 {
69     APP_LOGI("SecondAbility::OnInactive");
70     Ability::OnInactive();
71     TestUtils::PublishEvent(g_EVENT_RESP_SECOND_LIFECYCLE, SecondAbilityACode, "OnInactive");
72 }
73 
OnBackground()74 void SecondAbility::OnBackground()
75 {
76     APP_LOGI("SecondAbility::OnBackground");
77     Ability::OnBackground();
78     TestUtils::PublishEvent(g_EVENT_RESP_SECOND_LIFECYCLE, SecondAbilityACode, "OnBackground");
79 }
80 
OnForeground(const Want & want)81 void SecondAbility::OnForeground(const Want &want)
82 {
83     APP_LOGI("SecondAbility::OnForeground");
84     Ability::OnForeground(want);
85     TestUtils::PublishEvent(g_EVENT_RESP_SECOND_LIFECYCLE, SecondAbilityACode, "OnForeground");
86 }
87 
OnAbilityResult(int requestCode,int resultCode,const Want & resultData)88 void SecondAbility::OnAbilityResult(int requestCode, int resultCode, const Want &resultData)
89 {
90     APP_LOGI("SecondAbility::OnAbilityResult");
91     Ability::OnAbilityResult(requestCode, resultCode, resultData);
92     TestUtils::PublishEvent(g_EVENT_RESP_SECOND_LIFECYCLE, 0, resultData.ToUri());
93 }
94 
OnBackPressed()95 void SecondAbility::OnBackPressed()
96 {
97     APP_LOGI("SecondAbility::OnBackPressed");
98     Ability::OnBackPressed();
99     TestUtils::PublishEvent(g_EVENT_RESP_SECOND_LIFECYCLE, 0, "");
100 }
101 
OnNewWant(const Want & want)102 void SecondAbility::OnNewWant(const Want &want)
103 {
104     APP_LOGI("SecondAbility::OnNewWant");
105     Ability::OnNewWant(want);
106     TestUtils::PublishEvent(g_EVENT_RESP_SECOND_LIFECYCLE, 0, want.ToUri());
107 }
108 
SubscribeEvent()109 void SecondAbility::SubscribeEvent()
110 {
111     std::vector<std::string> eventList = {
112         g_EVENT_REQU_SECOND,
113     };
114     MatchingSkills matchingSkills;
115     for (const auto &e : eventList) {
116         matchingSkills.AddEvent(e);
117     }
118     CommonEventSubscribeInfo subscribeInfo(matchingSkills);
119     subscribeInfo.SetPriority(1);
120     subscriber_ = std::make_shared<SecondEventSubscriber>(subscribeInfo);
121     subscriber_->mainAbility = this;
122     CommonEventManager::SubscribeCommonEvent(subscriber_);
123 }
124 
OnReceiveEvent(const CommonEventData & data)125 void SecondEventSubscriber::OnReceiveEvent(const CommonEventData &data)
126 {
127     APP_LOGI("SecondEventSubscriber::OnReceiveEvent:event=%{public}s", data.GetWant().GetAction().c_str());
128     APP_LOGI("SecondEventSubscriber::OnReceiveEvent:data=%{public}s", data.GetData().c_str());
129     APP_LOGI("SecondEventSubscriber::OnReceiveEvent:code=%{public}d", data.GetCode());
130     auto eventName = data.GetWant().GetAction();
131     if (std::strcmp(eventName.c_str(), g_EVENT_REQU_SECOND.c_str()) == 0) {
132         auto target = data.GetData();
133         auto caseInfo = TestUtils::split(target, "_");
134         if (caseInfo.size() < numThree) {
135             return;
136         }
137         if (mapTestFunc_.find(caseInfo[index_f]) != mapTestFunc_.end()) {
138             mapTestFunc_[caseInfo[index_f]](std::stoi(caseInfo[index_s]), std::stoi(caseInfo[index_t]), data.GetCode());
139         } else {
140             APP_LOGI("OnReceiveEvent: CommonEventData error(%{public}s)", target.c_str());
141         }
142     }
143 }
144 
TestAbility(int apiIndex,int caseIndex,int code)145 void SecondAbility::TestAbility(int apiIndex, int caseIndex, int code)
146 {
147     APP_LOGI("SecondAbility::TestAbility");
148     if (mapCase_.find(apiIndex) != mapCase_.end()) {
149         if (caseIndex < (int)mapCase_[apiIndex].size()) {
150             mapCase_[apiIndex][caseIndex](code);
151         }
152     }
153 }
154 
GetApplicationInfoCase1(int code)155 void SecondAbility::GetApplicationInfoCase1(int code)
156 {}
GetApplicationInfoCase2(int code)157 void SecondAbility::GetApplicationInfoCase2(int code)
158 {
159     auto appInfo = AbilityContext::GetApplicationInfo();
160     string result = "";
161     if (appInfo != nullptr) {
162         result = appInfo->name;
163     }
164 
165     TestUtils::PublishEvent(g_EVENT_RESP_SECOND, code, result);
166 }
GetApplicationInfoCase3(int code)167 void SecondAbility::GetApplicationInfoCase3(int code)
168 {}
169 
GetCacheDirCase1(int code)170 void SecondAbility::GetCacheDirCase1(int code)
171 {}
GetCacheDirCase2(int code)172 void SecondAbility::GetCacheDirCase2(int code)
173 {
174     string cacheDir = AbilityContext::GetCacheDir();
175     TestUtils::PublishEvent(g_EVENT_RESP_SECOND, code, cacheDir);
176 }
GetCacheDirCase3(int code)177 void SecondAbility::GetCacheDirCase3(int code)
178 {}
179 
GetDatabaseDirCase1(int code)180 void SecondAbility::GetDatabaseDirCase1(int code)
181 {}
GetDatabaseDirCase2(int code)182 void SecondAbility::GetDatabaseDirCase2(int code)
183 {
184     string databaseDir = AbilityContext::GetDatabaseDir();
185     TestUtils::PublishEvent(g_EVENT_RESP_SECOND, code, databaseDir);
186 }
GetDatabaseDirCase3(int code)187 void SecondAbility::GetDatabaseDirCase3(int code)
188 {}
189 
GetDataDirCase1(int code)190 void SecondAbility::GetDataDirCase1(int code)
191 {}
192 
GetDataDirCase2(int code)193 void SecondAbility::GetDataDirCase2(int code)
194 {
195     string dataDir = AbilityContext::GetDataDir();
196     TestUtils::PublishEvent(g_EVENT_RESP_SECOND, code, dataDir);
197 }
198 
GetDataDirCase3(int code)199 void SecondAbility::GetDataDirCase3(int code)
200 {}
201 
GetDirCase1(int code)202 void SecondAbility::GetDirCase1(int code)
203 {}
204 
GetDirCase2(int code)205 void SecondAbility::GetDirCase2(int code)
206 {
207     string name = "getDir";
208     string dir = AbilityContext::GetDir(name, 0);
209     dir = AbilityContext::GetDir(name, 0);
210     TestUtils::PublishEvent(g_EVENT_RESP_SECOND, code, dir);
211 }
212 
GetDirCase3(int code)213 void SecondAbility::GetDirCase3(int code)
214 {}
215 
GetNoBackupFilesDirCase1(int code)216 void SecondAbility::GetNoBackupFilesDirCase1(int code)
217 {}
218 
GetBundleManagerCase1(int code)219 void SecondAbility::GetBundleManagerCase1(int code)
220 {}
221 
VerifyCallingPermissionCase1(int code)222 void SecondAbility::VerifyCallingPermissionCase1(int code)
223 {}
224 
VerifyPermissionCase1(int code)225 void SecondAbility::VerifyPermissionCase1(int code)
226 {}
227 
VerifySelfPermissionCase1(int code)228 void SecondAbility::VerifySelfPermissionCase1(int code)
229 {}
230 
GetBundleCodePathCase1(int code)231 void SecondAbility::GetBundleCodePathCase1(int code)
232 {}
233 
GetBundleCodePathCase2(int code)234 void SecondAbility::GetBundleCodePathCase2(int code)
235 {
236     string bundleCodePath = AbilityContext::GetBundleCodePath();
237     TestUtils::PublishEvent(g_EVENT_RESP_SECOND, code, bundleCodePath);
238 }
239 
GetBundleCodePathCase3(int code)240 void SecondAbility::GetBundleCodePathCase3(int code)
241 {}
242 
GetBundleNameCase1(int code)243 void SecondAbility::GetBundleNameCase1(int code)
244 {}
245 
GetBundleNameCase2(int code)246 void SecondAbility::GetBundleNameCase2(int code)
247 {
248     string bundleName = AbilityContext::GetBundleName();
249     TestUtils::PublishEvent(g_EVENT_RESP_SECOND, code, bundleName);
250 }
251 
GetBundleNameCase3(int code)252 void SecondAbility::GetBundleNameCase3(int code)
253 {}
254 
GetBundleResourcePathCase1(int code)255 void SecondAbility::GetBundleResourcePathCase1(int code)
256 {}
257 
GetBundleResourcePathCase2(int code)258 void SecondAbility::GetBundleResourcePathCase2(int code)
259 {
260     string bundleResourcePath = AbilityContext::GetBundleResourcePath();
261     TestUtils::PublishEvent(g_EVENT_RESP_SECOND, code, bundleResourcePath);
262 }
263 
GetBundleResourcePathCase3(int code)264 void SecondAbility::GetBundleResourcePathCase3(int code)
265 {}
266 
CanRequestPermissionCase1(int code)267 void SecondAbility::CanRequestPermissionCase1(int code)
268 {}
269 
GetCallingAbilityCase1(int code)270 void SecondAbility::GetCallingAbilityCase1(int code)
271 {
272     auto callingAbility = AbilityContext::GetCallingAbility();
273     string result = "";
274     if (callingAbility != nullptr)
275         result = callingAbility->GetURI();
276     TestUtils::PublishEvent(g_EVENT_RESP_SECOND, code, result);
277 }
278 
GetCallingAbilityCase2(int code)279 void SecondAbility::GetCallingAbilityCase2(int code)
280 {
281     auto callingAbility = AbilityContext::GetCallingAbility();
282     string result = "";
283     if (callingAbility != nullptr)
284         result = callingAbility->GetURI();
285     TestUtils::PublishEvent(g_EVENT_RESP_SECOND, code, result);
286 }
287 
GetCallingAbilityCase3(int code)288 void SecondAbility::GetCallingAbilityCase3(int code)
289 {
290     auto callingAbility = AbilityContext::GetCallingAbility();
291     string result = "";
292     if (callingAbility != nullptr && (callingTime == 0 || callingTime == code)) {
293         callingTime = code;
294         result = callingAbility->GetURI();
295         TestUtils::PublishEvent(g_EVENT_RESP_SECOND, code, result);
296     }
297 }
298 
GetContextCase1(int code)299 void SecondAbility::GetContextCase1(int code)
300 {}
301 
GetAbilityManagerCase1(int code)302 void SecondAbility::GetAbilityManagerCase1(int code)
303 {}
304 
GetProcessInfoCase1(int code)305 void SecondAbility::GetProcessInfoCase1(int code)
306 {}
307 
GetProcessInfoCase2(int code)308 void SecondAbility::GetProcessInfoCase2(int code)
309 {
310     auto processInfo = AbilityContext::GetProcessInfo();
311     string result = "";
312     if (processInfo != nullptr) {
313         result = processInfo->GetProcessName();
314     }
315 
316     TestUtils::PublishEvent(g_EVENT_RESP_SECOND, code, result);
317 }
318 
GetProcessInfoCase3(int code)319 void SecondAbility::GetProcessInfoCase3(int code)
320 {}
321 
GetAppTypeCase1(int code)322 void SecondAbility::GetAppTypeCase1(int code)
323 {}
324 
GetAppTypeCase2(int code)325 void SecondAbility::GetAppTypeCase2(int code)
326 {
327     string appType = AbilityContext::GetAppType();
328     TestUtils::PublishEvent(g_EVENT_RESP_SECOND, code, appType);
329 }
330 
GetAppTypeCase3(int code)331 void SecondAbility::GetAppTypeCase3(int code)
332 {}
333 
GetCallingBundleCase1(int code)334 void SecondAbility::GetCallingBundleCase1(int code)
335 {
336     string callingBundle = AbilityContext::GetCallingBundle();
337     TestUtils::PublishEvent(g_EVENT_RESP_SECOND, code, callingBundle);
338 }
339 
GetCallingBundleCase2(int code)340 void SecondAbility::GetCallingBundleCase2(int code)
341 {
342     string callingBundle = AbilityContext::GetCallingBundle();
343     TestUtils::PublishEvent(g_EVENT_RESP_SECOND, code, callingBundle);
344 }
345 
GetCallingBundleCase3(int code)346 void SecondAbility::GetCallingBundleCase3(int code)
347 {
348     string callingBundle = "";
349     if (callingTime == 0 || callingTime == code) {
350         callingTime = code;
351         callingBundle = AbilityContext::GetCallingBundle();
352         TestUtils::PublishEvent(g_EVENT_RESP_SECOND, code, callingBundle);
353     }
354 }
355 
StartAbilityCase1(int code)356 void SecondAbility::StartAbilityCase1(int code)
357 {}
358 
StartAbilityCase2(int code)359 void SecondAbility::StartAbilityCase2(int code)
360 {}
361 
TerminateAbilityCase1(int code)362 void SecondAbility::TerminateAbilityCase1(int code)
363 {}
364 
GetElementNameCase1(int code)365 void SecondAbility::GetElementNameCase1(int code)
366 {}
367 
GetElementNameCase2(int code)368 void SecondAbility::GetElementNameCase2(int code)
369 {
370     auto elementName = AbilityContext::GetElementName();
371     string result = "";
372     if (elementName != nullptr)
373         result = elementName->GetBundleName();
374     TestUtils::PublishEvent(g_EVENT_RESP_SECOND, code, result);
375 }
376 
GetElementNameCase3(int code)377 void SecondAbility::GetElementNameCase3(int code)
378 {}
379 
GetHapModuleInfoCase1(int code)380 void SecondAbility::GetHapModuleInfoCase1(int code)
381 {}
382 
GetHapModuleInfoCase2(int code)383 void SecondAbility::GetHapModuleInfoCase2(int code)
384 {
385     auto elementName = AbilityContext::GetHapModuleInfo();
386     string result = "";
387     if (elementName != nullptr)
388         result = elementName->moduleName;
389     TestUtils::PublishEvent(g_EVENT_RESP_SECOND, code, result);
390 }
391 
GetHapModuleInfoCase3(int code)392 void SecondAbility::GetHapModuleInfoCase3(int code)
393 {}
394 
GetCodeCacheDirCase1(int code)395 void SecondAbility::GetCodeCacheDirCase1(int code)
396 {}
GetCodeCacheDirCase2(int code)397 void SecondAbility::GetCodeCacheDirCase2(int code)
398 {
399     string codeCacheDir = AbilityContext::GetCodeCacheDir();
400     TestUtils::PublishEvent(g_EVENT_RESP_SECOND, code, codeCacheDir);
401 }
GetCodeCacheDirCase3(int code)402 void SecondAbility::GetCodeCacheDirCase3(int code)
403 {}
404 
GetApplicationContextCase1(int code)405 void SecondAbility::GetApplicationContextCase1(int code)
406 {}
407 
408 REGISTER_AA(SecondAbility)
409 }  // namespace AppExecFwk
410 }  // namespace OHOS
411