1eace7efcSopenharmony_ci/* 2eace7efcSopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 3eace7efcSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4eace7efcSopenharmony_ci * you may not use this file except in compliance with the License. 5eace7efcSopenharmony_ci * You may obtain a copy of the License at 6eace7efcSopenharmony_ci * 7eace7efcSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8eace7efcSopenharmony_ci * 9eace7efcSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10eace7efcSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11eace7efcSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12eace7efcSopenharmony_ci * See the License for the specific language governing permissions and 13eace7efcSopenharmony_ci * limitations under the License. 14eace7efcSopenharmony_ci */ 15eace7efcSopenharmony_ci 16eace7efcSopenharmony_ci#ifndef OHOS_ABILITY_RUNTIME_APP_PRELOADER_H 17eace7efcSopenharmony_ci#define OHOS_ABILITY_RUNTIME_APP_PRELOADER_H 18eace7efcSopenharmony_ci 19eace7efcSopenharmony_ci#include <string> 20eace7efcSopenharmony_ci 21eace7efcSopenharmony_ci#include "ability_info.h" 22eace7efcSopenharmony_ci#include "app_mgr_constants.h" 23eace7efcSopenharmony_ci#include "remote_client_manager.h" 24eace7efcSopenharmony_ci#include "want.h" 25eace7efcSopenharmony_ci 26eace7efcSopenharmony_cinamespace OHOS { 27eace7efcSopenharmony_cinamespace AppExecFwk { 28eace7efcSopenharmony_cistruct PreloadRequest { 29eace7efcSopenharmony_ci std::shared_ptr<AbilityInfo> abilityInfo = nullptr; 30eace7efcSopenharmony_ci std::shared_ptr<ApplicationInfo> appInfo = nullptr; 31eace7efcSopenharmony_ci std::shared_ptr<AAFwk::Want> want = nullptr; 32eace7efcSopenharmony_ci BundleInfo bundleInfo; 33eace7efcSopenharmony_ci HapModuleInfo hapModuleInfo; 34eace7efcSopenharmony_ci int32_t appIndex = 0; // not used 35eace7efcSopenharmony_ci}; 36eace7efcSopenharmony_ci 37eace7efcSopenharmony_ciclass AppPreloader { 38eace7efcSopenharmony_cipublic: 39eace7efcSopenharmony_ci AppPreloader(std::shared_ptr<RemoteClientManager> remoteClientManager); 40eace7efcSopenharmony_ci ~AppPreloader() = default; 41eace7efcSopenharmony_ci 42eace7efcSopenharmony_ci int32_t GeneratePreloadRequest(const std::string &bundleName, int32_t userId, int32_t appIndex, 43eace7efcSopenharmony_ci PreloadRequest &request); 44eace7efcSopenharmony_ci 45eace7efcSopenharmony_ci bool PreCheck(const std::string &bundleName, PreloadMode mode); 46eace7efcSopenharmony_ci 47eace7efcSopenharmony_ciprivate: 48eace7efcSopenharmony_ci bool GetLaunchWant(const std::string &bundleName, int32_t userId, AAFwk::Want &want); 49eace7efcSopenharmony_ci 50eace7efcSopenharmony_ci bool GetLaunchAbilityInfo(const AAFwk::Want &want, int32_t userId, AbilityInfo &abilityInfo); 51eace7efcSopenharmony_ci 52eace7efcSopenharmony_ci bool GetBundleAndHapInfo(const std::string &bundleName, int32_t userId, 53eace7efcSopenharmony_ci const AbilityInfo &abilityInfo, BundleInfo &bundleInfo, HapModuleInfo &hapModuleInfo); 54eace7efcSopenharmony_ci 55eace7efcSopenharmony_ci bool CheckPreloadConditions(const AbilityInfo &abilityInfo); 56eace7efcSopenharmony_ci 57eace7efcSopenharmony_ci std::shared_ptr<BundleMgrHelper> GetBundleManagerHelper(); 58eace7efcSopenharmony_ci 59eace7efcSopenharmony_ci std::shared_ptr<RemoteClientManager> remoteClientManager_; 60eace7efcSopenharmony_ci}; 61eace7efcSopenharmony_ci} // namespace AppExecFwk 62eace7efcSopenharmony_ci} // namespace OHOS 63eace7efcSopenharmony_ci#endif // OHOS_ABILITY_RUNTIME_APP_PRELOADER_H 64