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