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