1 /* 2 * Copyright (c) 2023 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 OHOS_MOCK_BUNDLE_MANAGER_SERVICE_H 17 #define OHOS_MOCK_BUNDLE_MANAGER_SERVICE_H 18 19 #include "bundle_installer_interface.h" 20 #include "bundle_mgr_interface.h" 21 #include "gmock/gmock.h" 22 #include "iremote_object.h" 23 #include "iremote_stub.h" 24 #include "module_info.h" 25 #include "mock_overlay_manager.h" 26 27 namespace OHOS { 28 namespace { 29 constexpr int32_t BASE_USER_RANGE = 200000; 30 } 31 class MockBundleManagerService : public IRemoteStub<AppExecFwk::IBundleMgr> { 32 public: MockBundleManagerService()33 MockBundleManagerService() {}; ~MockBundleManagerService()34 virtual ~MockBundleManagerService() {}; 35 MOCK_METHOD0(GetBundleInstaller, sptr<AppExecFwk::IBundleInstaller>()); 36 MOCK_METHOD2( 37 GetHapModuleInfo, bool(const AppExecFwk::AbilityInfo &abilityInfo, AppExecFwk::HapModuleInfo &hapModuleInfo)); 38 MOCK_METHOD3(GetHapModuleInfo, 39 bool(const AppExecFwk::AbilityInfo &abilityInfo, int32_t userId, AppExecFwk::HapModuleInfo &hapModuleInfo)); 40 MOCK_METHOD1(GetAppType, std::string(const std::string &bundleName)); 41 MOCK_METHOD3(GetBaseSharedBundleInfos, 42 ErrCode(const std::string &bundleName, std::vector<AppExecFwk::BaseSharedBundleInfo> &baseSharedBundleInfos, 43 AppExecFwk::GetDependentBundleInfoFlag flag)); 44 MOCK_METHOD2(GetBundleInfoForSelf, ErrCode(int32_t flags, AppExecFwk::BundleInfo &bundleInfo)); 45 MOCK_METHOD4(GetBundleInfoV9, ErrCode(const std::string&, int32_t, AppExecFwk::BundleInfo&, int32_t)); 46 MOCK_METHOD4(QueryAbilityInfo, bool(const Want &want, int32_t flags, int32_t userId, 47 AppExecFwk::AbilityInfo &abilityInfo)); 48 MOCK_METHOD5(GetSandboxExtAbilityInfos, ErrCode(const Want &want, int32_t appIndex, int32_t flags, 49 int32_t userId, std::vector<AppExecFwk::ExtensionAbilityInfo> &extensionInfos)); 50 MOCK_METHOD5(GetJsonProfile, ErrCode(AppExecFwk::ProfileType, const std::string&, const std::string&, 51 std::string&, int32_t)); 52 MOCK_METHOD3(QueryExtensionAbilityInfoByUri, bool(const std::string &uri, int32_t userId, 53 AppExecFwk::ExtensionAbilityInfo &extensionAbilityInfo)); 54 MOCK_METHOD4(QueryExtensionAbilityInfos, bool(const Want&, const int32_t&, const int32_t&, 55 std::vector<AppExecFwk::ExtensionAbilityInfo> &extensionInfos)); 56 MOCK_METHOD3(QueryAbilityInfoByUri, bool(const std::string&, int32_t, AppExecFwk::AbilityInfo&)); 57 MOCK_METHOD5(ImplicitQueryInfoByPriority, bool(const Want&, int32_t, int32_t, AppExecFwk::AbilityInfo&, 58 AppExecFwk::ExtensionAbilityInfo&)); 59 GetOverlayManagerProxy()60 sptr<AppExecFwk::IOverlayManager> GetOverlayManagerProxy() 61 { 62 sptr<AppExecFwk::IOverlayManager> overlayModuleProxy = 63 new (std::nothrow) AppExecFwk::OverlayManagerProxy(nullptr); 64 return overlayModuleProxy; 65 } 66 67 bool GetBundleInfo(const std::string &bundleName, const AppExecFwk::BundleFlag flag, 68 AppExecFwk::BundleInfo &bundleInfo, int32_t userId) override 69 { 70 if (bundleName == "test_contextImpl") { 71 bundleInfo.name = "test_contextImpl"; 72 bundleInfo.applicationInfo.name = "test_contextImpl"; 73 AppExecFwk::HapModuleInfo moduleInfo1; 74 moduleInfo1.moduleName = "test_moduleName"; 75 bundleInfo.hapModuleInfos.push_back(moduleInfo1); 76 } 77 return true; 78 } 79 GetApplicationInfo(const std::string &appName, const AppExecFwk::ApplicationFlag flag, const int userId, AppExecFwk::ApplicationInfo &appInfo)80 bool GetApplicationInfo(const std::string &appName, const AppExecFwk::ApplicationFlag flag, const int userId, 81 AppExecFwk::ApplicationInfo &appInfo) 82 { 83 if (appName.empty()) { 84 return false; 85 } 86 appInfo.name = appName; 87 appInfo.bundleName = appName; 88 appInfo.uid = userId * BASE_USER_RANGE; 89 if (appName.compare("com.test.crowdtest") == 0) { 90 appInfo.appDistributionType = "crowdtesting"; 91 appInfo.crowdtestDeadline = 0; 92 } 93 if (appName.compare("com.test.atomicservice") == 0) { 94 appInfo.bundleType = AppExecFwk::BundleType::ATOMIC_SERVICE; 95 } 96 return true; 97 } 98 GetBundleInfos(const AppExecFwk::BundleFlag flag, std::vector<AppExecFwk::BundleInfo> &bundleInfos, int32_t userId = AppExecFwk::Constants::UNSPECIFIED_USERID)99 bool GetBundleInfos(const AppExecFwk::BundleFlag flag, std::vector<AppExecFwk::BundleInfo> &bundleInfos, 100 int32_t userId = AppExecFwk::Constants::UNSPECIFIED_USERID) 101 { 102 OHOS::AppExecFwk::BundleInfo bundleInfo; 103 bundleInfo.name = "com.ix.residentservcie"; 104 bundleInfo.isKeepAlive = true; 105 bundleInfo.applicationInfo.process = "com.ix.residentservcie"; 106 107 OHOS::AppExecFwk::HapModuleInfo hapModuleInfo; 108 hapModuleInfo.isModuleJson = true; 109 hapModuleInfo.mainElementName = "residentServiceAbility"; 110 hapModuleInfo.process = "com.ix.residentservcie"; 111 bundleInfo.hapModuleInfos.emplace_back(hapModuleInfo); 112 113 bundleInfos.emplace_back(bundleInfo); 114 return true; 115 } 116 }; 117 } // namespace OHOS 118 #endif // OHOS_MOCK_BUNDLE_MANAGER_SERVICE_H