• 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_SECOND_ABILITY_H
17 #define AMS_KIT_SYSTEM_TEST_A_SECOND_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 SecondEventSubscriber;
28 class SecondAbility : 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 
SecondAbility()116     SecondAbility()
117     {
118         initCaseFirst();
119         initCaseSecond();
120         initCaseThird();
121     }
122 
initCaseFirst()123     void initCaseFirst()
124     {
125         std::unordered_map<int, std::vector<std::function<void(int)>>> first = {
126             {(int)AbilityContextApi::GetApplicationInfo,
127                 {
128                     [this](int code) { GetApplicationInfoCase1(code); },
129                     [this](int code) { GetApplicationInfoCase2(code); },
130                     [this](int code) { GetApplicationInfoCase3(code); },
131                 }},
132             {(int)AbilityContextApi::GetCacheDir,
133                 {
134                     [this](int code) { GetCacheDirCase1(code); },
135                     [this](int code) { GetCacheDirCase2(code); },
136                     [this](int code) { GetCacheDirCase3(code); },
137                 }},
138             {(int)AbilityContextApi::GetCodeCacheDir,
139                 {
140                     [this](int code) { GetCodeCacheDirCase1(code); },
141                     [this](int code) { GetCodeCacheDirCase2(code); },
142                     [this](int code) { GetCodeCacheDirCase3(code); },
143                 }},
144             {(int)AbilityContextApi::GetDatabaseDir,
145                 {
146                     [this](int code) { GetDatabaseDirCase1(code); },
147                     [this](int code) { GetDatabaseDirCase2(code); },
148                     [this](int code) { GetDatabaseDirCase3(code); },
149                 }},
150             {(int)AbilityContextApi::GetDataDir,
151                 {
152                     [this](int code) { GetDataDirCase1(code); },
153                     [this](int code) { GetDataDirCase2(code); },
154                     [this](int code) { GetDataDirCase3(code); },
155                 }},
156         };
157         mapCase_.insert(first.begin(), first.end());
158     }
159 
initCaseSecond()160     void initCaseSecond()
161     {
162         std::unordered_map<int, std::vector<std::function<void(int)>>> second = {
163             {(int)AbilityContextApi::GetDir,
164                 {
165                     [this](int code) { GetDirCase1(code); },
166                     [this](int code) { GetDirCase2(code); },
167                     [this](int code) { GetDirCase3(code); },
168                 }},
169             {(int)AbilityContextApi::GetBundleManager,
170                 {
171                     [this](int code) { GetBundleManagerCase1(code); },
172                 }},
173             {(int)AbilityContextApi::GetBundleCodePath,
174                 {
175                     [this](int code) { GetBundleCodePathCase1(code); },
176                     [this](int code) { GetBundleCodePathCase2(code); },
177                     [this](int code) { GetBundleCodePathCase3(code); },
178                 }},
179             {(int)AbilityContextApi::GetBundleName,
180                 {
181                     [this](int code) { GetBundleNameCase1(code); },
182                     [this](int code) { GetBundleNameCase2(code); },
183                     [this](int code) { GetBundleNameCase3(code); },
184                 }},
185             {(int)AbilityContextApi::GetBundleResourcePath,
186                 {
187                     [this](int code) { GetBundleResourcePathCase1(code); },
188                     [this](int code) { GetBundleResourcePathCase2(code); },
189                     [this](int code) { GetBundleResourcePathCase3(code); },
190                 }},
191             {(int)AbilityContextApi::GetApplicationContext,
192                 {
193                     [this](int code) { GetApplicationContextCase1(code); },
194                 }},
195             {(int)AbilityContextApi::GetCallingAbility,
196                 {
197                     [this](int code) { GetCallingAbilityCase1(code); },
198                     [this](int code) { GetCallingAbilityCase2(code); },
199                     [this](int code) { GetCallingAbilityCase3(code); },
200                 }},
201             {(int)AbilityContextApi::GetContext,
202                 {
203                     [this](int code) { GetContextCase1(code); },
204                 }},
205         };
206         mapCase_.insert(second.begin(), second.end());
207     }
208 
initCaseThird()209     void initCaseThird()
210     {
211         std::unordered_map<int, std::vector<std::function<void(int)>>> third = {
212             {(int)AbilityContextApi::GetAbilityManager,
213                 {
214                     [this](int code) { GetAbilityManagerCase1(code); },
215                 }},
216             {(int)AbilityContextApi::GetProcessInfo,
217                 {
218                     [this](int code) { GetProcessInfoCase1(code); },
219                     [this](int code) { GetProcessInfoCase2(code); },
220                     [this](int code) { GetProcessInfoCase3(code); },
221                 }},
222             {(int)AbilityContextApi::GetAppType,
223                 {
224                     [this](int code) { GetAppTypeCase1(code); },
225                     [this](int code) { GetAppTypeCase2(code); },
226                     [this](int code) { GetAppTypeCase3(code); },
227                 }},
228             {(int)AbilityContextApi::GetCallingBundle,
229                 {
230                     [this](int code) { GetCallingBundleCase1(code); },
231                     [this](int code) { GetCallingBundleCase2(code); },
232                     [this](int code) { GetCallingBundleCase3(code); },
233                 }},
234             {(int)AbilityContextApi::StartAbility_Want_int,
235                 {
236                     [this](int code) { StartAbilityCase1(code); },
237                     [this](int code) { StartAbilityCase2(code); },
238                 }},
239             {(int)AbilityContextApi::TerminateAbility,
240                 {
241                     [this](int code) { TerminateAbilityCase1(code); },
242                 }},
243             {(int)AbilityContextApi::GetElementName,
244                 {
245                     [this](int code) { GetElementNameCase1(code); },
246                     [this](int code) { GetElementNameCase2(code); },
247                     [this](int code) { GetElementNameCase3(code); },
248                 }},
249             {(int)AbilityContextApi::GetHapModuleInfo,
250                 {
251                     [this](int code) { GetHapModuleInfoCase1(code); },
252                     [this](int code) { GetHapModuleInfoCase2(code); },
253                     [this](int code) { GetHapModuleInfoCase3(code); },
254                 }},
255         };
256         mapCase_.insert(third.begin(), third.end());
257     }
258     std::unordered_map<int, std::vector<std::function<void(int)>>> mapCase_;
259     int callingTime = 0;
260     ~SecondAbility();
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<SecondEventSubscriber> subscriber_;
275 };
276 class SecondEventSubscriber : public EventFwk::CommonEventSubscriber {
277 public:
SecondEventSubscriber(const EventFwk::CommonEventSubscribeInfo & sp)278     explicit SecondEventSubscriber(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     SecondAbility *mainAbility;
294     std::unordered_map<std::string, std::function<void(int, int, int)>> mapTestFunc_;
295     ~SecondEventSubscriber() = default;
296 };
297 }  // namespace AppExecFwk
298 }  // namespace OHOS
299 #endif  // AMS_KIT_SYSTEM_TEST_A_MAIN_ABILITY_H