• 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 "main_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 MainAbilityBCode = 300;
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 MainAbility::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("MainAbility::Init");
36     Ability::Init(abilityInfo, application, handler, token);
37 }
38 
OnStart(const Want & want)39 void MainAbility::OnStart(const Want &want)
40 {
41     APP_LOGI("MainAbility::onStart");
42     SubscribeEvent();
43     Ability::OnStart(want);
44     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB_LIFECYCLE, MainAbilityBCode, "onStart");
45 }
46 
OnStop()47 void MainAbility::OnStop()
48 {
49     APP_LOGI("MainAbility::OnStop");
50     Ability::OnStop();
51     CommonEventManager::UnSubscribeCommonEvent(subscriber_);
52     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB_LIFECYCLE, MainAbilityBCode, "OnStop");
53 }
54 
OnActive()55 void MainAbility::OnActive()
56 {
57     APP_LOGI("MainAbility::OnActive");
58     Ability::OnActive();
59     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB_LIFECYCLE, MainAbilityBCode, "OnActive");
60 }
61 
OnInactive()62 void MainAbility::OnInactive()
63 {
64     APP_LOGI("MainAbility::OnInactive");
65     Ability::OnInactive();
66     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB_LIFECYCLE, MainAbilityBCode, "OnInactive");
67 }
68 
OnBackground()69 void MainAbility::OnBackground()
70 {
71     APP_LOGI("MainAbility::OnBackground");
72     Ability::OnBackground();
73     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB_LIFECYCLE, MainAbilityBCode, "OnBackground");
74 }
75 
OnForeground(const Want & want)76 void MainAbility::OnForeground(const Want &want)
77 {
78     APP_LOGI("MainAbility::OnForeground");
79     Ability::OnForeground(want);
80     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB_LIFECYCLE, MainAbilityBCode, "OnForeground");
81 }
82 
OnAbilityResult(int requestCode,int resultCode,const Want & resultData)83 void MainAbility::OnAbilityResult(int requestCode, int resultCode, const Want &resultData)
84 {
85     APP_LOGI("MainAbility::OnAbilityResult");
86     Ability::OnAbilityResult(requestCode, resultCode, resultData);
87     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB_LIFECYCLE, 0, resultData.ToUri());
88 }
89 
OnBackPressed()90 void MainAbility::OnBackPressed()
91 {
92     APP_LOGI("MainAbility::OnBackPressed");
93     Ability::OnBackPressed();
94     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB_LIFECYCLE, 0, "");
95 }
96 
OnNewWant(const Want & want)97 void MainAbility::OnNewWant(const Want &want)
98 {
99     APP_LOGI("MainAbility::OnNewWant");
100     Ability::OnNewWant(want);
101     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB_LIFECYCLE, 0, want.ToUri());
102 }
103 
~MainAbility()104 MainAbility::~MainAbility()
105 {
106     CommonEventManager::UnSubscribeCommonEvent(subscriber_);
107 }
108 
SubscribeEvent()109 void MainAbility::SubscribeEvent()
110 {
111     std::vector<std::string> eventList = {
112         g_EVENT_REQU_FIRSTB,
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<FirstEventSubscriber>(subscribeInfo);
121     subscriber_->mainAbility = this;
122     CommonEventManager::SubscribeCommonEvent(subscriber_);
123 }
124 
OnReceiveEvent(const CommonEventData & data)125 void FirstEventSubscriber::OnReceiveEvent(const CommonEventData &data)
126 {
127     APP_LOGI("FirstEventSubscriber::OnReceiveEvent:event=%{public}s", data.GetWant().GetAction().c_str());
128     APP_LOGI("FirstEventSubscriber::OnReceiveEvent:data=%{public}s", data.GetData().c_str());
129     APP_LOGI("FirstEventSubscriber::OnReceiveEvent:code=%{public}d", data.GetCode());
130     auto eventName = data.GetWant().GetAction();
131     if (std::strcmp(eventName.c_str(), g_EVENT_REQU_FIRSTB.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 MainAbility::TestAbility(int apiIndex, int caseIndex, int code)
146 {
147     APP_LOGI("MainAbility::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 MainAbility::GetApplicationInfoCase1(int code)
156 {
157     return;
158 }
GetApplicationInfoCase2(int code)159 void MainAbility::GetApplicationInfoCase2(int code)
160 {
161     return;
162 }
GetApplicationInfoCase3(int code)163 void MainAbility::GetApplicationInfoCase3(int code)
164 {
165     auto appInfo = AbilityContext::GetApplicationInfo();
166     string result = "";
167     if (appInfo != nullptr) {
168         result = appInfo->name;
169     }
170 
171     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB, code, result);
172 }
173 
GetCacheDirCase1(int code)174 void MainAbility::GetCacheDirCase1(int code)
175 {
176     return;
177 }
GetCacheDirCase2(int code)178 void MainAbility::GetCacheDirCase2(int code)
179 {
180     return;
181 }
GetCacheDirCase3(int code)182 void MainAbility::GetCacheDirCase3(int code)
183 {
184     string cacheDir = AbilityContext::GetCacheDir();
185     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB, code, cacheDir);
186 }
187 
GetDatabaseDirCase1(int code)188 void MainAbility::GetDatabaseDirCase1(int code)
189 {
190     return;
191 }
GetDatabaseDirCase2(int code)192 void MainAbility::GetDatabaseDirCase2(int code)
193 {
194     return;
195 }
GetDatabaseDirCase3(int code)196 void MainAbility::GetDatabaseDirCase3(int code)
197 {
198     string databaseDir = AbilityContext::GetDatabaseDir();
199     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB, code, databaseDir);
200 }
201 
GetDataDirCase1(int code)202 void MainAbility::GetDataDirCase1(int code)
203 {
204     return;
205 }
206 
GetDataDirCase2(int code)207 void MainAbility::GetDataDirCase2(int code)
208 {
209     return;
210 }
211 
GetDataDirCase3(int code)212 void MainAbility::GetDataDirCase3(int code)
213 {
214     string dataDir = AbilityContext::GetDataDir();
215     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB, code, dataDir);
216 }
217 
GetDirCase1(int code)218 void MainAbility::GetDirCase1(int code)
219 {
220     return;
221 }
222 
GetDirCase2(int code)223 void MainAbility::GetDirCase2(int code)
224 {
225     return;
226 }
227 
GetDirCase3(int code)228 void MainAbility::GetDirCase3(int code)
229 {
230     string name = "getDir";
231     string dir = AbilityContext::GetDir(name, 0);
232     dir = AbilityContext::GetDir(name, 0);
233     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB, code, dir);
234 }
235 
GetNoBackupFilesDirCase1(int code)236 void MainAbility::GetNoBackupFilesDirCase1(int code)
237 {
238     return;
239 }
240 
GetBundleManagerCase1(int code)241 void MainAbility::GetBundleManagerCase1(int code)
242 {
243     return;
244 }
245 
VerifyCallingPermissionCase1(int code)246 void MainAbility::VerifyCallingPermissionCase1(int code)
247 {
248     return;
249 }
250 
VerifyPermissionCase1(int code)251 void MainAbility::VerifyPermissionCase1(int code)
252 {
253     return;
254 }
255 
VerifySelfPermissionCase1(int code)256 void MainAbility::VerifySelfPermissionCase1(int code)
257 {
258     return;
259 }
260 
GetBundleCodePathCase1(int code)261 void MainAbility::GetBundleCodePathCase1(int code)
262 {
263     return;
264 }
265 
GetBundleCodePathCase2(int code)266 void MainAbility::GetBundleCodePathCase2(int code)
267 {
268     return;
269 }
270 
GetBundleCodePathCase3(int code)271 void MainAbility::GetBundleCodePathCase3(int code)
272 {
273     string bundleCodePath = AbilityContext::GetBundleCodePath();
274     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB, code, bundleCodePath);
275 }
276 
GetBundleNameCase1(int code)277 void MainAbility::GetBundleNameCase1(int code)
278 {
279     return;
280 }
281 
GetBundleNameCase2(int code)282 void MainAbility::GetBundleNameCase2(int code)
283 {
284     return;
285 }
286 
GetBundleNameCase3(int code)287 void MainAbility::GetBundleNameCase3(int code)
288 {
289     string bundleName = AbilityContext::GetBundleName();
290     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB, code, bundleName);
291     return;
292 }
293 
GetBundleResourcePathCase1(int code)294 void MainAbility::GetBundleResourcePathCase1(int code)
295 {
296     return;
297 }
298 
GetBundleResourcePathCase2(int code)299 void MainAbility::GetBundleResourcePathCase2(int code)
300 {
301     return;
302 }
303 
GetBundleResourcePathCase3(int code)304 void MainAbility::GetBundleResourcePathCase3(int code)
305 {
306     string bundleResourcePath = AbilityContext::GetBundleResourcePath();
307     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB, code, bundleResourcePath);
308 }
309 
CanRequestPermissionCase1(int code)310 void MainAbility::CanRequestPermissionCase1(int code)
311 {
312     return;
313 }
314 
GetCallingAbilityCase1(int code)315 void MainAbility::GetCallingAbilityCase1(int code)
316 {
317     return;
318 }
319 
GetCallingAbilityCase2(int code)320 void MainAbility::GetCallingAbilityCase2(int code)
321 {
322     auto callingAbility = AbilityContext::GetCallingAbility();
323     string result = "";
324     if (callingAbility != nullptr)
325         result = callingAbility->GetURI();
326     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB, code, result);
327     return;
328 }
329 
GetCallingAbilityCase3(int code)330 void MainAbility::GetCallingAbilityCase3(int code)
331 {
332     string targetBundle = "com.ohos.amsst.AppKitA";
333     string targetAbility = "SecondAbility";
334     Want want;
335     want.SetElementName(targetBundle, targetAbility);
336     want.SetParam("operator", 0);
337     StartAbility(want);
338 }
339 
GetContextCase1(int code)340 void MainAbility::GetContextCase1(int code)
341 {
342     return;
343 }
344 
GetAbilityManagerCase1(int code)345 void MainAbility::GetAbilityManagerCase1(int code)
346 {
347     return;
348 }
349 
GetProcessInfoCase1(int code)350 void MainAbility::GetProcessInfoCase1(int code)
351 {
352     return;
353 }
354 
GetProcessInfoCase2(int code)355 void MainAbility::GetProcessInfoCase2(int code)
356 {
357     return;
358 }
359 
GetProcessInfoCase3(int code)360 void MainAbility::GetProcessInfoCase3(int code)
361 {
362     auto processInfo = AbilityContext::GetProcessInfo();
363     string result = "";
364     if (processInfo != nullptr) {
365         result = processInfo->GetProcessName();
366     }
367 
368     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB, code, result);
369 }
370 
GetAppTypeCase1(int code)371 void MainAbility::GetAppTypeCase1(int code)
372 {
373     return;
374 }
375 
GetAppTypeCase2(int code)376 void MainAbility::GetAppTypeCase2(int code)
377 {
378     return;
379 }
380 
GetAppTypeCase3(int code)381 void MainAbility::GetAppTypeCase3(int code)
382 {
383     string appType = AbilityContext::GetAppType();
384     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB, code, appType);
385 }
386 
GetCallingBundleCase1(int code)387 void MainAbility::GetCallingBundleCase1(int code)
388 {
389     return;
390 }
391 
GetCallingBundleCase2(int code)392 void MainAbility::GetCallingBundleCase2(int code)
393 {
394     string callingBundle = AbilityContext::GetCallingBundle();
395     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB, code, callingBundle);
396 }
397 
GetCallingBundleCase3(int code)398 void MainAbility::GetCallingBundleCase3(int code)
399 {
400     string targetBundle = "com.ohos.amsst.AppKitA";
401     string targetAbility = "SecondAbility";
402     Want want;
403     want.SetElementName(targetBundle, targetAbility);
404     want.SetParam("operator", 0);
405     StartAbility(want);
406 }
407 
StartAbilityCase1(int code)408 void MainAbility::StartAbilityCase1(int code)
409 {
410     return;
411 }
412 
StartAbilityCase2(int code)413 void MainAbility::StartAbilityCase2(int code)
414 {
415     return;
416 }
417 
TerminateAbilityCase1(int code)418 void MainAbility::TerminateAbilityCase1(int code)
419 {
420     return;
421 }
422 
GetElementNameCase1(int code)423 void MainAbility::GetElementNameCase1(int code)
424 {
425     return;
426 }
427 
GetElementNameCase2(int code)428 void MainAbility::GetElementNameCase2(int code)
429 {
430     return;
431 }
432 
GetElementNameCase3(int code)433 void MainAbility::GetElementNameCase3(int code)
434 {
435     auto elementName = AbilityContext::GetElementName();
436     string result = "";
437     if (elementName != nullptr)
438         result = elementName->GetBundleName();
439     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB, code, result);
440 }
441 
GetHapModuleInfoCase1(int code)442 void MainAbility::GetHapModuleInfoCase1(int code)
443 {
444     return;
445 }
446 
GetHapModuleInfoCase2(int code)447 void MainAbility::GetHapModuleInfoCase2(int code)
448 {
449     return;
450 }
451 
GetHapModuleInfoCase3(int code)452 void MainAbility::GetHapModuleInfoCase3(int code)
453 {
454     auto elementName = AbilityContext::GetHapModuleInfo();
455     string result = "";
456     if (elementName != nullptr)
457         result = elementName->moduleName;
458     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB, code, result);
459 }
460 
GetCodeCacheDirCase1(int code)461 void MainAbility::GetCodeCacheDirCase1(int code)
462 {}
GetCodeCacheDirCase2(int code)463 void MainAbility::GetCodeCacheDirCase2(int code)
464 {}
GetCodeCacheDirCase3(int code)465 void MainAbility::GetCodeCacheDirCase3(int code)
466 {
467     string codeCacheDir = AbilityContext::GetCodeCacheDir();
468     TestUtils::PublishEvent(g_EVENT_RESP_FIRSTB, code, codeCacheDir);
469 }
470 
GetApplicationContextCase1(int code)471 void MainAbility::GetApplicationContextCase1(int code)
472 {}
473 
474 REGISTER_AA(MainAbility)
475 }  // namespace AppExecFwk
476 }  // namespace OHOS
477