1 /*
2 * Copyright (c) 2022-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 #include "bundle_manager_adapter.h"
16 #include "account_log_wrapper.h"
17
18 namespace OHOS {
19 namespace AccountSA {
20 namespace {
21 const std::string STRING_BUNDLE_NAME_NOT_INSTALLED = "com.example.not_installed";
22 const std::string STRING_OWNER = "com.example.owner";
23 const std::string STRING_NORMAL_BUNDLENAME = "com.example.normal.bundle";
24 const std::string STRING_BUNDLEINFO_WITH_NO_VALID_EXTENSION = "com.bundleInfo.noExtension";
25 const std::string STRING_BUNDLEINFO_WITH_NO_VALID_TYPE_EXTENSION = "com.bundleInfo.noValidTypeExtension";
26 const std::string STRING_BUNDLEINFO_WITH_MULTIPLE_VALID_EXTENSION = "com.bundleInfo.noExtension";
27 const std::string STRING_ABILITY_NAME = "com.example.owner.MainAbility";
28 const std::string STRING_ABILITY_NAME_TWO = "com.example.owner.MainAbility2";
29 const std::string STRING_ABILITY_NAME_WITH_NO_INFO = "com.example.owner.MainAbilityWithNoInfo";
30 const std::string STRING_ABILITY_NAME_WITH_CONNECT_FAILED = "com.example.MainAbilityWithConnectFailed";
31 const std::string STRING_ABILITY_NAME_WITH_NO_PROXY = "com.example.MainAbilityWithNoProxy";
32 } // namespace
33
GetInstance()34 BundleManagerAdapter *BundleManagerAdapter::GetInstance()
35 {
36 static BundleManagerAdapter *instance = new (std::nothrow) BundleManagerAdapter();
37 return instance;
38 }
39
BundleManagerAdapter()40 BundleManagerAdapter::BundleManagerAdapter()
41 {
42 ACCOUNT_LOGI("create BundleManagerAdapter mock");
43 }
44
~BundleManagerAdapter()45 BundleManagerAdapter::~BundleManagerAdapter()
46 {
47 ACCOUNT_LOGI("destroy BundleManagerAdapter mock");
48 }
49
CreateNewUser(int32_t userId,const std::vector<std::string> & disallowedHapList)50 ErrCode BundleManagerAdapter::CreateNewUser(int32_t userId, const std::vector<std::string> &disallowedHapList)
51 {
52 ACCOUNT_LOGI("CreateNewUser mock");
53 return ERR_OK;
54 }
55
RemoveUser(int32_t userId)56 ErrCode BundleManagerAdapter::RemoveUser(int32_t userId)
57 {
58 ACCOUNT_LOGI("RemoveUser mock");
59 return ERR_OK;
60 }
61
GetNameForUid(const int uid,std::string & bundleName)62 ErrCode BundleManagerAdapter::GetNameForUid(const int uid, std::string &bundleName)
63 {
64 ACCOUNT_LOGI("mock enter, uid = %{public}d", uid);
65 bundleName = STRING_OWNER;
66 ACCOUNT_LOGI("mock bundleName = %{public}s", bundleName.c_str());
67 return ERR_OK;
68 }
69
GetBundleInfo(const std::string & bundleName,const AppExecFwk::BundleFlag flag,AppExecFwk::BundleInfo & bundleInfo,int32_t userId)70 bool BundleManagerAdapter::GetBundleInfo(const std::string &bundleName, const AppExecFwk::BundleFlag flag,
71 AppExecFwk::BundleInfo &bundleInfo, int32_t userId)
72 {
73 ACCOUNT_LOGI("mock enter, bundleName = %{public}s", bundleName.c_str());
74 if (bundleName == STRING_BUNDLE_NAME_NOT_INSTALLED) {
75 return false;
76 }
77 if (bundleName == STRING_NORMAL_BUNDLENAME) {
78 AppExecFwk::ExtensionAbilityInfo extensionInfo;
79 extensionInfo.name = STRING_ABILITY_NAME;
80 extensionInfo.type = AppExecFwk::ExtensionAbilityType::APP_ACCOUNT_AUTHORIZATION;
81 bundleInfo.extensionInfos.emplace_back(extensionInfo);
82 return true;
83 }
84 if (bundleName == STRING_BUNDLEINFO_WITH_NO_VALID_EXTENSION) {
85 return true;
86 }
87 if (bundleName == STRING_BUNDLEINFO_WITH_NO_VALID_TYPE_EXTENSION) {
88 AppExecFwk::ExtensionAbilityInfo extensionInfo;
89 extensionInfo.name = STRING_ABILITY_NAME;
90 bundleInfo.extensionInfos.emplace_back(extensionInfo);
91 return true;
92 }
93 if (bundleName == STRING_BUNDLEINFO_WITH_MULTIPLE_VALID_EXTENSION) {
94 AppExecFwk::ExtensionAbilityInfo extensionInfo1;
95 extensionInfo1.name = STRING_ABILITY_NAME;
96 extensionInfo1.type = AppExecFwk::ExtensionAbilityType::APP_ACCOUNT_AUTHORIZATION;
97 bundleInfo.extensionInfos.emplace_back(extensionInfo1);
98 AppExecFwk::ExtensionAbilityInfo extensionInfo2;
99 extensionInfo2.name = STRING_ABILITY_NAME_TWO;
100 extensionInfo2.type = AppExecFwk::ExtensionAbilityType::APP_ACCOUNT_AUTHORIZATION;
101 bundleInfo.extensionInfos.emplace_back(extensionInfo2);
102 return true;
103 }
104 return true;
105 }
106
QueryAbilityInfos(const AAFwk::Want & want,int32_t flags,int32_t userId,std::vector<AppExecFwk::AbilityInfo> & abilityInfos)107 bool BundleManagerAdapter::QueryAbilityInfos(const AAFwk::Want &want, int32_t flags, int32_t userId,
108 std::vector<AppExecFwk::AbilityInfo> &abilityInfos)
109 {
110 ACCOUNT_LOGI("mock enter, userId = %{public}d", userId);
111 return false;
112 }
113
QueryExtensionAbilityInfos(const AAFwk::Want & want,const int32_t & flag,const int32_t & userId,std::vector<AppExecFwk::ExtensionAbilityInfo> & extensionInfos)114 bool BundleManagerAdapter::QueryExtensionAbilityInfos(const AAFwk::Want &want, const int32_t &flag,
115 const int32_t &userId, std::vector<AppExecFwk::ExtensionAbilityInfo> &extensionInfos)
116 {
117 ACCOUNT_LOGI("mock enter, userId = %{public}d", userId);
118 return false;
119 }
120
QueryExtensionAbilityInfos(const AAFwk::Want & want,const AppExecFwk::ExtensionAbilityType & extensionType,const int32_t & flag,const int32_t & userId,std::vector<AppExecFwk::ExtensionAbilityInfo> & extensionInfos)121 bool BundleManagerAdapter::QueryExtensionAbilityInfos(
122 const AAFwk::Want &want, const AppExecFwk::ExtensionAbilityType &extensionType,
123 const int32_t &flag, const int32_t &userId, std::vector<AppExecFwk::ExtensionAbilityInfo> &extensionInfos)
124 {
125 ACCOUNT_LOGI("mock enter, userId = %{public}d", userId);
126 AppExecFwk::ElementName element = want.GetElement();
127 std::string abilityName = element.GetAbilityName();
128 ACCOUNT_LOGI("mock enter, abilityName = %{public}s", abilityName.c_str());
129 if ((abilityName == STRING_ABILITY_NAME) || (abilityName == STRING_ABILITY_NAME_WITH_CONNECT_FAILED) ||
130 (abilityName == STRING_ABILITY_NAME_WITH_NO_PROXY)) {
131 AppExecFwk::ExtensionAbilityInfo extensionInfo;
132 extensionInfo.name = abilityName;
133 extensionInfo.type = AppExecFwk::ExtensionAbilityType::APP_ACCOUNT_AUTHORIZATION;
134 extensionInfos.emplace_back(extensionInfo);
135 return true;
136 }
137 if (abilityName == STRING_ABILITY_NAME_WITH_NO_INFO) {
138 return true;
139 }
140 return false;
141 }
142
GetUidByBundleName(const std::string & bundleName,const int userId)143 int BundleManagerAdapter::GetUidByBundleName(const std::string &bundleName, const int userId)
144 {
145 ACCOUNT_LOGI("mock enter, bundleName = %{public}s, userId = %{public}d.", bundleName.c_str(), userId);
146 return -1;
147 }
148 } // namespace AccountSA
149 } // namespace OHOS