• 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 #ifndef AMS_KIT_SYSTEM_TEST_B_MAIN_ABILITY_H
17 #define AMS_KIT_SYSTEM_TEST_B_MAIN_ABILITY_H
18 #include "ability.h"
19 #include "ability_loader.h"
20 #include "common_event.h"
21 #include "common_event_manager.h"
22 #include "kit_test_common_info.h"
23 
24 namespace OHOS {
25 namespace AppExecFwk {
26 using namespace OHOS::EventFwk;
27 class FirstEventSubscriber;
28 class MainAbility : public Ability {
29 public:
30     void GetApplicationInfoCase1(int code);
31     void GetApplicationInfoCase2(int code);
32     void GetApplicationInfoCase3(int code);
33 
34     void GetCacheDirCase1(int code);
35     void GetCacheDirCase2(int code);
36     void GetCacheDirCase3(int code);
37 
38     void GetDatabaseDirCase1(int code);
39     void GetDatabaseDirCase2(int code);
40     void GetDatabaseDirCase3(int code);
41 
42     void GetDataDirCase1(int code);
43     void GetDataDirCase2(int code);
44     void GetDataDirCase3(int code);
45 
46     void GetCodeCacheDirCase1(int code);
47     void GetCodeCacheDirCase2(int code);
48     void GetCodeCacheDirCase3(int code);
49 
50     void GetApplicationContextCase1(int code);
51 
52     void GetDirCase1(int code);
53     void GetDirCase2(int code);
54     void GetDirCase3(int code);
55 
56     void GetNoBackupFilesDirCase1(int code);
57 
58     void GetBundleManagerCase1(int code);
59 
60     void VerifyCallingPermissionCase1(int code);
61 
62     void VerifyPermissionCase1(int code);
63 
64     void VerifySelfPermissionCase1(int code);
65 
66     void GetBundleCodePathCase1(int code);
67     void GetBundleCodePathCase2(int code);
68     void GetBundleCodePathCase3(int code);
69 
70     void GetBundleNameCase1(int code);
71     void GetBundleNameCase2(int code);
72     void GetBundleNameCase3(int code);
73 
74     void GetBundleResourcePathCase1(int code);
75     void GetBundleResourcePathCase2(int code);
76     void GetBundleResourcePathCase3(int code);
77 
78     void CanRequestPermissionCase1(int code);
79 
80     void GetCallingAbilityCase1(int code);
81     void GetCallingAbilityCase2(int code);
82     void GetCallingAbilityCase3(int code);
83 
84     void GetContextCase1(int code);
85 
86     void GetAbilityManagerCase1(int code);
87 
88     void GetProcessInfoCase1(int code);
89     void GetProcessInfoCase2(int code);
90     void GetProcessInfoCase3(int code);
91 
92     void GetAppTypeCase1(int code);
93     void GetAppTypeCase2(int code);
94     void GetAppTypeCase3(int code);
95 
96     void GetCallingBundleCase1(int code);
97     void GetCallingBundleCase2(int code);
98     void GetCallingBundleCase3(int code);
99 
100     void StartAbilityCase1(int code);
101     void StartAbilityCase2(int code);
102 
103     void TerminateAbilityCase1(int code);
104 
105     void GetElementNameCase1(int code);
106     void GetElementNameCase2(int code);
107     void GetElementNameCase3(int code);
108 
109     void GetHapModuleInfoCase1(int code);
110     void GetHapModuleInfoCase2(int code);
111     void GetHapModuleInfoCase3(int code);
112 
MainAbility()113     MainAbility()
114     {
115         initCaseFirst();
116         initCaseSecond();
117         initCaseThird();
118     }
119 
initCaseFirst()120     void initCaseFirst()
121     {
122         std::unordered_map<int, std::vector<std::function<void(int)>>> testCase = {
123             {(int)AbilityContextApi::GetApplicationInfo,
124                 {
125                     [this](int code) { GetApplicationInfoCase1(code); },
126                     [this](int code) { GetApplicationInfoCase2(code); },
127                     [this](int code) { GetApplicationInfoCase3(code); },
128                 }},
129             {(int)AbilityContextApi::GetCacheDir,
130                 {
131                     [this](int code) { GetCacheDirCase1(code); },
132                     [this](int code) { GetCacheDirCase2(code); },
133                     [this](int code) { GetCacheDirCase3(code); },
134                 }},
135             {(int)AbilityContextApi::GetCodeCacheDir,
136                 {
137                     [this](int code) { GetCodeCacheDirCase1(code); },
138                     [this](int code) { GetCodeCacheDirCase2(code); },
139                     [this](int code) { GetCodeCacheDirCase3(code); },
140                 }},
141             {(int)AbilityContextApi::GetDatabaseDir,
142                 {
143                     [this](int code) { GetDatabaseDirCase1(code); },
144                     [this](int code) { GetDatabaseDirCase2(code); },
145                     [this](int code) { GetDatabaseDirCase3(code); },
146                 }},
147             {(int)AbilityContextApi::GetDataDir,
148                 {
149                     [this](int code) { GetDataDirCase1(code); },
150                     [this](int code) { GetDataDirCase2(code); },
151                     [this](int code) { GetDataDirCase3(code); },
152                 }},
153         };
154         mapCase_.insert(testCase.begin(), testCase.end());
155     }
156 
initCaseSecond()157     void initCaseSecond()
158     {
159         std::unordered_map<int, std::vector<std::function<void(int)>>> testCase = {
160             {(int)AbilityContextApi::GetDir,
161                 {
162                     [this](int code) { GetDirCase1(code); },
163                     [this](int code) { GetDirCase2(code); },
164                     [this](int code) { GetDirCase3(code); },
165                 }},
166             {(int)AbilityContextApi::GetBundleManager,
167                 {
168                     [this](int code) { GetBundleManagerCase1(code); },
169                 }},
170             {(int)AbilityContextApi::GetBundleCodePath,
171                 {
172                     [this](int code) { GetBundleCodePathCase1(code); },
173                     [this](int code) { GetBundleCodePathCase2(code); },
174                     [this](int code) { GetBundleCodePathCase3(code); },
175                 }},
176             {(int)AbilityContextApi::GetBundleName,
177                 {
178                     [this](int code) { GetBundleNameCase1(code); },
179                     [this](int code) { GetBundleNameCase2(code); },
180                     [this](int code) { GetBundleNameCase3(code); },
181                 }},
182             {(int)AbilityContextApi::GetBundleResourcePath,
183                 {
184                     [this](int code) { GetBundleResourcePathCase1(code); },
185                     [this](int code) { GetBundleResourcePathCase2(code); },
186                     [this](int code) { GetBundleResourcePathCase3(code); },
187                 }},
188             {(int)AbilityContextApi::GetApplicationContext,
189                 {
190                     [this](int code) { GetApplicationContextCase1(code); },
191                 }},
192             {(int)AbilityContextApi::GetCallingAbility,
193                 {
194                     [this](int code) { GetCallingAbilityCase1(code); },
195                     [this](int code) { GetCallingAbilityCase2(code); },
196                     [this](int code) { GetCallingAbilityCase3(code); },
197                 }},
198             {(int)AbilityContextApi::GetContext,
199                 {
200                     [this](int code) { GetContextCase1(code); },
201                 }},
202         };
203         mapCase_.insert(testCase.begin(), testCase.end());
204     }
205 
initCaseThird()206     void initCaseThird()
207     {
208         std::unordered_map<int, std::vector<std::function<void(int)>>> testCase = {
209             {(int)AbilityContextApi::GetAbilityManager,
210                 {
211                     [this](int code) { GetAbilityManagerCase1(code); },
212                 }},
213             {(int)AbilityContextApi::GetProcessInfo,
214                 {
215                     [this](int code) { GetProcessInfoCase1(code); },
216                     [this](int code) { GetProcessInfoCase2(code); },
217                     [this](int code) { GetProcessInfoCase3(code); },
218                 }},
219             {(int)AbilityContextApi::GetAppType,
220                 {
221                     [this](int code) { GetAppTypeCase1(code); },
222                     [this](int code) { GetAppTypeCase2(code); },
223                     [this](int code) { GetAppTypeCase3(code); },
224                 }},
225             {(int)AbilityContextApi::GetCallingBundle,
226                 {
227                     [this](int code) { GetCallingBundleCase1(code); },
228                     [this](int code) { GetCallingBundleCase2(code); },
229                     [this](int code) { GetCallingBundleCase3(code); },
230                 }},
231             {(int)AbilityContextApi::StartAbility_Want_int,
232                 {
233                     [this](int code) { StartAbilityCase1(code); },
234                     [this](int code) { StartAbilityCase2(code); },
235                 }},
236             {(int)AbilityContextApi::TerminateAbility,
237                 {
238                     [this](int code) { TerminateAbilityCase1(code); },
239                 }},
240             {(int)AbilityContextApi::GetElementName,
241                 {
242                     [this](int code) { GetElementNameCase1(code); },
243                     [this](int code) { GetElementNameCase2(code); },
244                     [this](int code) { GetElementNameCase3(code); },
245                 }},
246             {(int)AbilityContextApi::GetHapModuleInfo,
247                 {
248                     [this](int code) { GetHapModuleInfoCase1(code); },
249                     [this](int code) { GetHapModuleInfoCase2(code); },
250                     [this](int code) { GetHapModuleInfoCase3(code); },
251                 }},
252         };
253         mapCase_.insert(testCase.begin(), testCase.end());
254     }
255     void SubscribeEvent();
256     void TestAbility(int apiIndex, int caseIndex, int code);
257     ~MainAbility();
258     std::unordered_map<int, std::vector<std::function<void(int)>>> mapCase_;
259 
260 protected:
261     void Init(const std::shared_ptr<AbilityInfo> &abilityInfo, const std::shared_ptr<OHOSApplication> &application,
262         std::shared_ptr<AbilityHandler> &handler, const sptr<IRemoteObject> &token) override;
263     virtual void OnStart(const Want &want) override;
264     virtual void OnStop() override;
265     virtual void OnActive() override;
266     virtual void OnInactive() override;
267     virtual void OnBackground() override;
268     virtual void OnForeground(const Want &want) override;
269     virtual void OnAbilityResult(int requestCode, int resultCode, const Want &resultData) override;
270     virtual void OnBackPressed() override;
271     virtual void OnNewWant(const Want &want) override;
272     std::shared_ptr<FirstEventSubscriber> subscriber_;
273 };
274 class FirstEventSubscriber : public EventFwk::CommonEventSubscriber {
275 public:
FirstEventSubscriber(const EventFwk::CommonEventSubscribeInfo & sp)276     explicit FirstEventSubscriber(const EventFwk::CommonEventSubscribeInfo &sp) : CommonEventSubscriber(sp)
277     {
278         mapTestFunc_ = {
279             {"Ability", [this](int apiIndex, int caseIndex, int code) { TestAbility(apiIndex, caseIndex, code); }},
280         };
281         mainAbility = nullptr;
282     }
283 
TestAbility(int apiIndex,int caseIndex,int code)284     void TestAbility(int apiIndex, int caseIndex, int code)
285     {
286         mainAbility->TestAbility(apiIndex, caseIndex, code);
287     }
288 
289     virtual void OnReceiveEvent(const EventFwk::CommonEventData &data);
290 
291     MainAbility *mainAbility;
292     std::unordered_map<std::string, std::function<void(int, int, int)>> mapTestFunc_;
~FirstEventSubscriber()293     ~FirstEventSubscriber(){};
294 };
295 }  // namespace AppExecFwk
296 }  // namespace OHOS
297 #endif  // AMS_KIT_SYSTEM_TEST_B_MAIN_ABILITY_H