• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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