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