1 /*
2 * Copyright (c) 2021-2022 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 #include "form_dump_mgr.h"
17
18 #include "fms_log_wrapper.h"
19 #include "form_cache_mgr.h"
20
21 namespace OHOS {
22 namespace AppExecFwk {
23 const std::string LINE_SEPARATOR = "\n";
24
FormDumpMgr()25 FormDumpMgr::FormDumpMgr() {}
~FormDumpMgr()26 FormDumpMgr::~FormDumpMgr() {}
27 /**
28 * @brief Dump all of form storage infos.
29 * @param storageInfos Form storage infos
30 * @param formInfos Form storage dump info.
31 */
DumpStorageFormInfos(const std::vector<FormDBInfo> & storageInfos,std::string & formInfos) const32 void FormDumpMgr::DumpStorageFormInfos(const std::vector<FormDBInfo> &storageInfos, std::string &formInfos) const
33 {
34 formInfos += " Total Storage-Form count is " + std::to_string(storageInfos.size()) + "\n" + LINE_SEPARATOR;
35 for (const auto &info : storageInfos) {
36 formInfos += " FormId #" + std::to_string(info.formId) + "\n";
37 formInfos += " formName [" + info.formName + "]\n";
38 formInfos += " userId [" + std::to_string(info.userId) + "]\n";
39 formInfos += " bundleName [" + info.bundleName + "]\n";
40 formInfos += " moduleName [" + info.moduleName + "]\n";
41 formInfos += " abilityName [" + info.abilityName + "]\n";
42 formInfos += " formUserUids [";
43 for (const auto &uId : info.formUserUids) {
44 formInfos += " Uid[" + std::to_string(uId) + "] ";
45 }
46 formInfos += "]\n" + LINE_SEPARATOR;
47 }
48 }
49 /**
50 * @brief Dump all of temporary form infos.
51 * @param formRecordInfos Form record infos.
52 * @param formInfos Form dump infos.
53 */
DumpTemporaryFormInfos(const std::vector<FormRecord> & formRecordInfos,std::string & formInfos) const54 void FormDumpMgr::DumpTemporaryFormInfos(const std::vector<FormRecord> &formRecordInfos, std::string &formInfos) const
55 {
56 formInfos += " Total Temporary-Form count is " + std::to_string(formRecordInfos.size()) + "\n" + LINE_SEPARATOR;
57 for (const auto &info : formRecordInfos) {
58 formInfos += " FormId #" + std::to_string(info.formId) + "\n";
59 formInfos += " formName [" + info.formName + "]\n";
60 formInfos += " userId [" + std::to_string(info.userId) + "]\n";
61 formInfos += " bundleName [" + info.bundleName + "]\n";
62 formInfos += " moduleName [" + info.moduleName + "]\n";
63 formInfos += " abilityName [" + info.abilityName + "]\n";
64 formInfos += " isDynamic [" + std::to_string(info.isDynamic) + "]\n";
65 formInfos += " formUserUids [";
66 for (const auto &uId : info.formUserUids) {
67 formInfos += " Uid[" + std::to_string(uId) + "] ";
68 }
69 formInfos += "]\n" + LINE_SEPARATOR;
70 }
71 }
72
DumpStaticBundleFormInfos(const std::vector<FormInfo> & bundleFormInfos,std::string & formInfos) const73 void FormDumpMgr::DumpStaticBundleFormInfos(const std::vector<FormInfo> &bundleFormInfos, std::string &formInfos) const
74 {
75 formInfos += " These are static-form-infos, it means un-added form's info will also be dumped\n" + LINE_SEPARATOR;
76 for (const auto &info : bundleFormInfos) {
77 formInfos += " bundleName #" + info.bundleName + "\n";
78 formInfos += " moduleName [" + info.moduleName + "]\n";
79 formInfos += " abilityName [" + info.abilityName + "]\n";
80 formInfos += " formName [" + info.name + "]\n";
81 formInfos += " isDynamic [" + std::to_string(info.isDynamic) + "]\n" + LINE_SEPARATOR;
82 }
83 }
84 /**
85 * @brief Dump form infos.
86 * @param formRecordInfos Form record infos.
87 * @param formInfos Form dump infos.
88 */
DumpFormInfos(const std::vector<FormRecord> & formRecordInfos,std::string & formInfos) const89 void FormDumpMgr::DumpFormInfos(const std::vector<FormRecord> &formRecordInfos, std::string &formInfos) const
90 {
91 HILOG_INFO("%{public}s called.", __func__);
92 for (const auto &info : formRecordInfos) {
93 formInfos += " FormId [" + std::to_string(info.formId) + "]\n";
94 formInfos += " formName [" + info.formName + "]\n";
95 formInfos += " bundleName [" + info.bundleName + "]\n";
96 formInfos += " moduleName [" + info.moduleName + "]\n";
97 formInfos += " abilityName [" + info.abilityName + "]\n";
98 formInfos += " isInited [" + std::to_string(info.isInited) + "]\n";
99 formInfos += " needRefresh [" + std::to_string(info.needRefresh) + "]\n";
100 formInfos += " isEnableUpdate [" + std::to_string(info.isEnableUpdate) + "]\n";
101 formInfos += " isCountTimerRefresh [" + std::to_string(info.isCountTimerRefresh) + "]\n";
102 formInfos += " specification [" + std::to_string(info.specification) + "]\n";
103 formInfos += " updateDuration [" + std::to_string(info.updateDuration) + "]\n";
104 formInfos += " updateAtHour [" + std::to_string(info.updateAtHour) + "]\n";
105 formInfos += " updateAtMin [" + std::to_string(info.updateAtMin) + "]\n";
106 formInfos += " formTempFlag [" + std::to_string(info.formTempFlag) + "]\n";
107 formInfos += " formVisibleNotify [" + std::to_string(info.formVisibleNotify) + "]\n";
108 formInfos += " formVisibleNotifyState [" + std::to_string(info.formVisibleNotifyState) + "]\n";
109 formInfos += " userId [" + std::to_string(info.userId) + "]\n";
110 formInfos += " type [" + std::to_string(static_cast<int32_t>(info.type)) + "]\n";
111 formInfos += " isDynamic [" + std::to_string(info.isDynamic) + "]\n";
112
113 if (!info.hapSourceDirs.empty()) {
114 formInfos += " hapSourceDirs [";
115 for (const auto &hapDir : info.hapSourceDirs) {
116 formInfos += " hapSourceDir[" + hapDir + "]";
117 }
118 formInfos += "]\n";
119 }
120
121 if (!info.formUserUids.empty()) {
122 formInfos += " formUserUids [";
123 for (const auto &uId : info.formUserUids) {
124 formInfos += " Uid[" + std::to_string(uId) + "] ";
125 }
126 formInfos += "]\n";
127 }
128
129 AppendBundleFormInfo(info, formInfos);
130 formInfos += LINE_SEPARATOR;
131 }
132
133 HILOG_DEBUG("%{public}s success. Form infos:%{private}s", __func__, formInfos.c_str());
134 }
135 /**
136 * @brief Dump form infos.
137 * @param formRecordInfo Form Host record info.
138 * @param formInfo Form dump info.
139 */
DumpFormHostInfo(const FormHostRecord & formHostRecord,std::string & formInfo) const140 void FormDumpMgr::DumpFormHostInfo(const FormHostRecord &formHostRecord, std::string &formInfo) const
141 {
142 HILOG_INFO("%{public}s called.", __func__);
143 formInfo += " ================FormHostRecord=================\n";
144 formInfo += " callerUid [" + std::to_string(formHostRecord.GetCallerUid()) + "]\n";
145 formInfo += " hostBundleName [" + formHostRecord.GetHostBundleName() + "]\n";
146 HILOG_DEBUG("%{public}s success. Host Form infos:%{private}s", __func__, formInfo.c_str());
147 }
148
149 /**
150 * @brief Dump form infos.
151 * @param formRecordInfo Form record info.
152 * @param formInfo Form dump info.
153 */
DumpFormInfo(const FormRecord & formRecordInfo,std::string & formInfo) const154 void FormDumpMgr::DumpFormInfo(const FormRecord &formRecordInfo, std::string &formInfo) const
155 {
156 HILOG_INFO("%{public}s called.", __func__);
157 formInfo += " ================FormRecord=================\n";
158 formInfo += " FormId [" + std::to_string(formRecordInfo.formId) + "]\n";
159 formInfo += " formName [" + formRecordInfo.formName + "]\n";
160 formInfo += " bundleName [" + formRecordInfo.bundleName + "]\n";
161 formInfo += " moduleName [" + formRecordInfo.moduleName + "]\n";
162 formInfo += " abilityName [" + formRecordInfo.abilityName + "]\n";
163 formInfo += " isInited [" + std::to_string(formRecordInfo.isInited) + "]\n";
164 formInfo += " needRefresh [" + std::to_string(formRecordInfo.needRefresh) + "]\n";
165 formInfo += " isEnableUpdate [" + std::to_string(formRecordInfo.isEnableUpdate) + "]\n";
166 formInfo += " isCountTimerRefresh [" + std::to_string(formRecordInfo.isCountTimerRefresh) + "]\n";
167 formInfo += " specification [" + std::to_string(formRecordInfo.specification) + "]\n";
168 formInfo += " updateDuration [" + std::to_string(formRecordInfo.updateDuration) + "]\n";
169 formInfo += " updateAtHour [" + std::to_string(formRecordInfo.updateAtHour) + "]\n";
170 formInfo += " updateAtMin [" + std::to_string(formRecordInfo.updateAtMin) + "]\n";
171 formInfo += " formTempFlag [" + std::to_string(formRecordInfo.formTempFlag) + "]\n";
172 formInfo += " formVisibleNotify [" + std::to_string(formRecordInfo.formVisibleNotify) + "]\n";
173 formInfo += " formVisibleNotifyState [" + std::to_string(formRecordInfo.formVisibleNotifyState) + "]\n";
174 formInfo += " formSrc [" + formRecordInfo.formSrc + "]\n";
175 formInfo += " designWidth [" + std::to_string(formRecordInfo.formWindow.designWidth) + "]\n";
176 formInfo += " autoDesignWidth [" + std::to_string(formRecordInfo.formWindow.autoDesignWidth) + "]\n";
177 formInfo += " versionCode [" + std::to_string(formRecordInfo.versionCode) + "]\n";
178 formInfo += " versionName [" + formRecordInfo.versionName + "]\n";
179 formInfo += " compatibleVersion [" + std::to_string(formRecordInfo.compatibleVersion) + "]\n";
180 formInfo += " userId [" + std::to_string(formRecordInfo.userId) + "]\n";
181 formInfo += " isDynamic [" + std::to_string(formRecordInfo.isDynamic) + "]\n";
182
183 if (!formRecordInfo.hapSourceDirs.empty()) {
184 formInfo += " hapSourceDirs [";
185 for (const auto &hapDir : formRecordInfo.hapSourceDirs) {
186 formInfo += " hapSourceDir[" + hapDir + "] ";
187 }
188 formInfo += "]\n";
189 }
190
191 if (!formRecordInfo.formUserUids.empty()) {
192 formInfo += " formUserUids [";
193 for (const auto &uId : formRecordInfo.formUserUids) {
194 formInfo += " Uid[" + std::to_string(uId) + "] ";
195 }
196 formInfo += "]\n";
197 }
198
199 AppendBundleFormInfo(formRecordInfo, formInfo);
200 formInfo += LINE_SEPARATOR;
201
202 HILOG_DEBUG("%{public}s success. Form infos:%{private}s", __func__, formInfo.c_str());
203 }
204
AppendBundleFormInfo(const FormRecord & formRecordInfo,std::string & formInfo) const205 void FormDumpMgr::AppendBundleFormInfo(const FormRecord &formRecordInfo, std::string &formInfo) const
206 {
207 FormInfo bundleFormInfo;
208 if (FormInfoMgr::GetInstance().GetFormsInfoByRecord(formRecordInfo, bundleFormInfo) != ERR_OK) {
209 formInfo += " ERROR! Can not get formInfo from BMS! \n";
210 }
211 formInfo += " colorMode [" + std::to_string(static_cast<int32_t>(bundleFormInfo.colorMode)) + "]\n";
212 formInfo += " defaultDimension [" + std::to_string(bundleFormInfo.defaultDimension) + "]\n";
213 if (!bundleFormInfo.supportDimensions.empty()) {
214 formInfo += " supportDimensions [";
215 for (const auto &dimension : bundleFormInfo.supportDimensions) {
216 formInfo += " [" + std::to_string(dimension) + "] ";
217 }
218 formInfo += "]\n";
219 }
220 }
221 } // namespace AppExecFwk
222 } // namespace OHOS
223