1600cc4afSopenharmony_ci/*
2600cc4afSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
3600cc4afSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4600cc4afSopenharmony_ci * you may not use this file except in compliance with the License.
5600cc4afSopenharmony_ci * You may obtain a copy of the License at
6600cc4afSopenharmony_ci *
7600cc4afSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8600cc4afSopenharmony_ci *
9600cc4afSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10600cc4afSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11600cc4afSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12600cc4afSopenharmony_ci * See the License for the specific language governing permissions and
13600cc4afSopenharmony_ci * limitations under the License.
14600cc4afSopenharmony_ci */
15600cc4afSopenharmony_ci
16600cc4afSopenharmony_ci#include "hidump_helper.h"
17600cc4afSopenharmony_ci
18600cc4afSopenharmony_cinamespace OHOS {
19600cc4afSopenharmony_cinamespace AppExecFwk {
20600cc4afSopenharmony_cinamespace {
21600cc4afSopenharmony_ciconstexpr int8_t MIN_ARGS_SIZE = 1;
22600cc4afSopenharmony_ciconstexpr int8_t MAX_ARGS_SIZE = 2;
23600cc4afSopenharmony_ciconstexpr int8_t FIRST_PARAM = 0;
24600cc4afSopenharmony_ciconstexpr int8_t SECOND_PARAM = 1;
25600cc4afSopenharmony_ciconstexpr const char* ARGS_HELP = "-h";
26600cc4afSopenharmony_ciconstexpr const char* ARGS_ABILITY = "-ability";
27600cc4afSopenharmony_ciconstexpr const char* ARGS_ABILITY_LIST = "-ability-list";
28600cc4afSopenharmony_ciconstexpr const char* ARGS_BUNDLE = "-bundle";
29600cc4afSopenharmony_ciconstexpr const char* ARGS_BUNDLE_LIST = "-bundle-list";
30600cc4afSopenharmony_ciconstexpr const char* ARGS_DEVICEID = "-device";
31600cc4afSopenharmony_ciconstexpr const char* ILLEGAL_INFOMATION = "The arguments are illegal and you can enter '-h' for help.\n";
32600cc4afSopenharmony_ciconstexpr const char* NO_INFOMATION = "no such infomation\n";
33600cc4afSopenharmony_ci
34600cc4afSopenharmony_ciconst std::unordered_map<std::string, HidumpFlag> ARGS_MAP = {
35600cc4afSopenharmony_ci    { ARGS_HELP, HidumpFlag::GET_HELP },
36600cc4afSopenharmony_ci    { ARGS_ABILITY, HidumpFlag::GET_ABILITY },
37600cc4afSopenharmony_ci    { ARGS_ABILITY_LIST, HidumpFlag::GET_ABILITY_LIST },
38600cc4afSopenharmony_ci    { ARGS_BUNDLE, HidumpFlag::GET_BUNDLE },
39600cc4afSopenharmony_ci    { ARGS_BUNDLE_LIST, HidumpFlag::GET_BUNDLE_LIST },
40600cc4afSopenharmony_ci    { ARGS_DEVICEID, HidumpFlag::GET_DEVICEID },
41600cc4afSopenharmony_ci};
42600cc4afSopenharmony_ci}
43600cc4afSopenharmony_ci
44600cc4afSopenharmony_ciHidumpHelper::HidumpHelper(const std::weak_ptr<BundleDataMgr> &dataMgr)
45600cc4afSopenharmony_ci    : dataMgr_(dataMgr) {}
46600cc4afSopenharmony_ci
47600cc4afSopenharmony_cibool HidumpHelper::Dump(const std::vector<std::string>& args, std::string &result)
48600cc4afSopenharmony_ci{
49600cc4afSopenharmony_ci    result.clear();
50600cc4afSopenharmony_ci    ErrCode errCode = ERR_OK;
51600cc4afSopenharmony_ci    int32_t argsSize = static_cast<int32_t>(args.size());
52600cc4afSopenharmony_ci    switch (argsSize) {
53600cc4afSopenharmony_ci        case MIN_ARGS_SIZE: {
54600cc4afSopenharmony_ci            errCode = ProcessOneParam(args[FIRST_PARAM], result);
55600cc4afSopenharmony_ci            break;
56600cc4afSopenharmony_ci        }
57600cc4afSopenharmony_ci        case MAX_ARGS_SIZE: {
58600cc4afSopenharmony_ci            errCode = ProcessTwoParam(args[FIRST_PARAM], args[SECOND_PARAM], result);
59600cc4afSopenharmony_ci            break;
60600cc4afSopenharmony_ci        }
61600cc4afSopenharmony_ci        default: {
62600cc4afSopenharmony_ci            errCode = ERR_APPEXECFWK_HIDUMP_INVALID_ARGS;
63600cc4afSopenharmony_ci            break;
64600cc4afSopenharmony_ci        }
65600cc4afSopenharmony_ci    }
66600cc4afSopenharmony_ci
67600cc4afSopenharmony_ci    bool ret = false;
68600cc4afSopenharmony_ci    switch (errCode) {
69600cc4afSopenharmony_ci        case ERR_OK: {
70600cc4afSopenharmony_ci            ret = true;
71600cc4afSopenharmony_ci            break;
72600cc4afSopenharmony_ci        }
73600cc4afSopenharmony_ci        case ERR_APPEXECFWK_HIDUMP_INVALID_ARGS: {
74600cc4afSopenharmony_ci            ShowIllealInfomation(result);
75600cc4afSopenharmony_ci            ret = true;
76600cc4afSopenharmony_ci            break;
77600cc4afSopenharmony_ci        }
78600cc4afSopenharmony_ci        case ERR_APPEXECFWK_HIDUMP_UNKONW: {
79600cc4afSopenharmony_ci            result.append(NO_INFOMATION);
80600cc4afSopenharmony_ci            ret = true;
81600cc4afSopenharmony_ci            break;
82600cc4afSopenharmony_ci        }
83600cc4afSopenharmony_ci        case ERR_APPEXECFWK_HIDUMP_SERVICE_ERROR: {
84600cc4afSopenharmony_ci            ret = false;
85600cc4afSopenharmony_ci            break;
86600cc4afSopenharmony_ci        }
87600cc4afSopenharmony_ci        default: {
88600cc4afSopenharmony_ci            break;
89600cc4afSopenharmony_ci        }
90600cc4afSopenharmony_ci    }
91600cc4afSopenharmony_ci
92600cc4afSopenharmony_ci    return ret;
93600cc4afSopenharmony_ci}
94600cc4afSopenharmony_ci
95600cc4afSopenharmony_ciErrCode HidumpHelper::ProcessOneParam(const std::string& args, std::string &result)
96600cc4afSopenharmony_ci{
97600cc4afSopenharmony_ci    HidumpParam hidumpParam;
98600cc4afSopenharmony_ci    auto operatorIter = ARGS_MAP.find(args);
99600cc4afSopenharmony_ci    if (operatorIter != ARGS_MAP.end()) {
100600cc4afSopenharmony_ci        hidumpParam.hidumpFlag = operatorIter->second;
101600cc4afSopenharmony_ci    }
102600cc4afSopenharmony_ci
103600cc4afSopenharmony_ci    if (hidumpParam.hidumpFlag == HidumpFlag::GET_HELP) {
104600cc4afSopenharmony_ci        ShowHelp(result);
105600cc4afSopenharmony_ci        return ERR_OK;
106600cc4afSopenharmony_ci    }
107600cc4afSopenharmony_ci
108600cc4afSopenharmony_ci    return ProcessDump(hidumpParam, result);
109600cc4afSopenharmony_ci}
110600cc4afSopenharmony_ci
111600cc4afSopenharmony_ciErrCode HidumpHelper::ProcessTwoParam(
112600cc4afSopenharmony_ci    const std::string& firstParam, const std::string& secondParam, std::string &result)
113600cc4afSopenharmony_ci{
114600cc4afSopenharmony_ci    HidumpParam hidumpParam;
115600cc4afSopenharmony_ci    hidumpParam.args = secondParam;
116600cc4afSopenharmony_ci    auto operatorIter = ARGS_MAP.find(firstParam);
117600cc4afSopenharmony_ci    if (operatorIter != ARGS_MAP.end()) {
118600cc4afSopenharmony_ci        hidumpParam.hidumpFlag = operatorIter->second;
119600cc4afSopenharmony_ci    }
120600cc4afSopenharmony_ci
121600cc4afSopenharmony_ci    switch (hidumpParam.hidumpFlag) {
122600cc4afSopenharmony_ci        case HidumpFlag::GET_ABILITY: {
123600cc4afSopenharmony_ci            hidumpParam.hidumpFlag = HidumpFlag::GET_ABILITY_BY_NAME;
124600cc4afSopenharmony_ci            break;
125600cc4afSopenharmony_ci        }
126600cc4afSopenharmony_ci        case HidumpFlag::GET_BUNDLE: {
127600cc4afSopenharmony_ci            hidumpParam.hidumpFlag = HidumpFlag::GET_BUNDLE_BY_NAME;
128600cc4afSopenharmony_ci            break;
129600cc4afSopenharmony_ci        }
130600cc4afSopenharmony_ci        default: {
131600cc4afSopenharmony_ci            break;
132600cc4afSopenharmony_ci        }
133600cc4afSopenharmony_ci    }
134600cc4afSopenharmony_ci
135600cc4afSopenharmony_ci    return ProcessDump(hidumpParam, result);
136600cc4afSopenharmony_ci}
137600cc4afSopenharmony_ci
138600cc4afSopenharmony_ciErrCode HidumpHelper::ProcessDump(const HidumpParam& hidumpParam, std::string &result)
139600cc4afSopenharmony_ci{
140600cc4afSopenharmony_ci    result.clear();
141600cc4afSopenharmony_ci    ErrCode errCode = ERR_APPEXECFWK_HIDUMP_ERROR;
142600cc4afSopenharmony_ci    switch (hidumpParam.hidumpFlag) {
143600cc4afSopenharmony_ci        case HidumpFlag::GET_ABILITY: {
144600cc4afSopenharmony_ci            errCode = GetAllAbilityInfo(result);
145600cc4afSopenharmony_ci            break;
146600cc4afSopenharmony_ci        }
147600cc4afSopenharmony_ci        case HidumpFlag::GET_ABILITY_LIST: {
148600cc4afSopenharmony_ci            errCode = GetAllAbilityNameList(result);
149600cc4afSopenharmony_ci            break;
150600cc4afSopenharmony_ci        }
151600cc4afSopenharmony_ci        case HidumpFlag::GET_ABILITY_BY_NAME: {
152600cc4afSopenharmony_ci            errCode = GetAbilityInfoByName(hidumpParam.args, result);
153600cc4afSopenharmony_ci            break;
154600cc4afSopenharmony_ci        }
155600cc4afSopenharmony_ci        case HidumpFlag::GET_BUNDLE: {
156600cc4afSopenharmony_ci            errCode = GetAllBundleInfo(result);
157600cc4afSopenharmony_ci            break;
158600cc4afSopenharmony_ci        }
159600cc4afSopenharmony_ci        case HidumpFlag::GET_BUNDLE_LIST: {
160600cc4afSopenharmony_ci            errCode = GetAllBundleNameList(result);
161600cc4afSopenharmony_ci            break;
162600cc4afSopenharmony_ci        }
163600cc4afSopenharmony_ci        case HidumpFlag::GET_BUNDLE_BY_NAME: {
164600cc4afSopenharmony_ci            errCode = GetBundleInfoByName(hidumpParam.args, result);
165600cc4afSopenharmony_ci            break;
166600cc4afSopenharmony_ci        }
167600cc4afSopenharmony_ci        case HidumpFlag::GET_DEVICEID: {
168600cc4afSopenharmony_ci            errCode = GetAllDeviced(result);
169600cc4afSopenharmony_ci            break;
170600cc4afSopenharmony_ci        }
171600cc4afSopenharmony_ci        default: {
172600cc4afSopenharmony_ci            errCode = ERR_APPEXECFWK_HIDUMP_INVALID_ARGS;
173600cc4afSopenharmony_ci            break;
174600cc4afSopenharmony_ci        }
175600cc4afSopenharmony_ci    }
176600cc4afSopenharmony_ci
177600cc4afSopenharmony_ci    return errCode;
178600cc4afSopenharmony_ci}
179600cc4afSopenharmony_ci
180600cc4afSopenharmony_ciErrCode HidumpHelper::GetAllAbilityInfo(std::string &result)
181600cc4afSopenharmony_ci{
182600cc4afSopenharmony_ci    auto shareDataMgr = dataMgr_.lock();
183600cc4afSopenharmony_ci    if (shareDataMgr == nullptr) {
184600cc4afSopenharmony_ci        return ERR_APPEXECFWK_HIDUMP_SERVICE_ERROR;
185600cc4afSopenharmony_ci    }
186600cc4afSopenharmony_ci
187600cc4afSopenharmony_ci    std::vector<BundleInfo> bundleInfos;
188600cc4afSopenharmony_ci    if (!shareDataMgr->GetBundleInfos(static_cast<int32_t>(
189600cc4afSopenharmony_ci        BundleFlag::GET_BUNDLE_WITH_ABILITIES |
190600cc4afSopenharmony_ci        BundleFlag::GET_BUNDLE_WITH_EXTENSION_INFO |
191600cc4afSopenharmony_ci        BundleFlag::GET_BUNDLE_WITH_HASH_VALUE),
192600cc4afSopenharmony_ci        bundleInfos, Constants::ANY_USERID)) {
193600cc4afSopenharmony_ci        APP_LOGE("get bundleInfos failed");
194600cc4afSopenharmony_ci        return ERR_APPEXECFWK_HIDUMP_ERROR;
195600cc4afSopenharmony_ci    }
196600cc4afSopenharmony_ci
197600cc4afSopenharmony_ci    for (auto &bundleInfo : bundleInfos) {
198600cc4afSopenharmony_ci        for (auto &abilityInfo :  bundleInfo.abilityInfos) {
199600cc4afSopenharmony_ci            result.append(abilityInfo.name);
200600cc4afSopenharmony_ci            result.append(":\n");
201600cc4afSopenharmony_ci            nlohmann::json jsonObject = abilityInfo;
202600cc4afSopenharmony_ci            result.append(jsonObject.dump(Constants::DUMP_INDENT));
203600cc4afSopenharmony_ci            result.append("\n");
204600cc4afSopenharmony_ci        }
205600cc4afSopenharmony_ci    }
206600cc4afSopenharmony_ci
207600cc4afSopenharmony_ci    APP_LOGD("get all ability info success");
208600cc4afSopenharmony_ci    return ERR_OK;
209600cc4afSopenharmony_ci}
210600cc4afSopenharmony_ci
211600cc4afSopenharmony_ciErrCode HidumpHelper::GetAllAbilityNameList(std::string &result)
212600cc4afSopenharmony_ci{
213600cc4afSopenharmony_ci    auto shareDataMgr = dataMgr_.lock();
214600cc4afSopenharmony_ci    if (shareDataMgr == nullptr) {
215600cc4afSopenharmony_ci        return ERR_APPEXECFWK_HIDUMP_SERVICE_ERROR;
216600cc4afSopenharmony_ci    }
217600cc4afSopenharmony_ci
218600cc4afSopenharmony_ci    std::vector<BundleInfo> bundleInfos;
219600cc4afSopenharmony_ci    if (!shareDataMgr->GetBundleInfos(static_cast<int32_t>(
220600cc4afSopenharmony_ci        BundleFlag::GET_BUNDLE_WITH_ABILITIES |
221600cc4afSopenharmony_ci        BundleFlag::GET_BUNDLE_WITH_EXTENSION_INFO |
222600cc4afSopenharmony_ci        BundleFlag::GET_BUNDLE_WITH_HASH_VALUE),
223600cc4afSopenharmony_ci        bundleInfos, Constants::ANY_USERID)) {
224600cc4afSopenharmony_ci        APP_LOGE("get bundleInfos failed");
225600cc4afSopenharmony_ci        return ERR_APPEXECFWK_HIDUMP_ERROR;
226600cc4afSopenharmony_ci    }
227600cc4afSopenharmony_ci
228600cc4afSopenharmony_ci    for (const auto &bundleInfo : bundleInfos) {
229600cc4afSopenharmony_ci        for (auto abilityInfo :  bundleInfo.abilityInfos) {
230600cc4afSopenharmony_ci            result.append(abilityInfo.name);
231600cc4afSopenharmony_ci            result.append("\n");
232600cc4afSopenharmony_ci        }
233600cc4afSopenharmony_ci    }
234600cc4afSopenharmony_ci
235600cc4afSopenharmony_ci    APP_LOGD("get all ability list info success");
236600cc4afSopenharmony_ci    return ERR_OK;
237600cc4afSopenharmony_ci}
238600cc4afSopenharmony_ci
239600cc4afSopenharmony_ciErrCode HidumpHelper::GetAbilityInfoByName(const std::string &name, std::string &result)
240600cc4afSopenharmony_ci{
241600cc4afSopenharmony_ci    auto shareDataMgr = dataMgr_.lock();
242600cc4afSopenharmony_ci    if (shareDataMgr == nullptr) {
243600cc4afSopenharmony_ci        return ERR_APPEXECFWK_HIDUMP_SERVICE_ERROR;
244600cc4afSopenharmony_ci    }
245600cc4afSopenharmony_ci
246600cc4afSopenharmony_ci    std::vector<BundleInfo> bundleInfos;
247600cc4afSopenharmony_ci    if (!shareDataMgr->GetBundleInfos(static_cast<int32_t>(
248600cc4afSopenharmony_ci        BundleFlag::GET_BUNDLE_WITH_ABILITIES |
249600cc4afSopenharmony_ci        BundleFlag::GET_BUNDLE_WITH_EXTENSION_INFO |
250600cc4afSopenharmony_ci        BundleFlag::GET_BUNDLE_WITH_HASH_VALUE),
251600cc4afSopenharmony_ci        bundleInfos, Constants::ANY_USERID)) {
252600cc4afSopenharmony_ci        APP_LOGE("get bundleInfos failed");
253600cc4afSopenharmony_ci        return ERR_APPEXECFWK_HIDUMP_ERROR;
254600cc4afSopenharmony_ci    }
255600cc4afSopenharmony_ci
256600cc4afSopenharmony_ci    nlohmann::json jsonObject;
257600cc4afSopenharmony_ci    for (const auto &bundleInfo : bundleInfos) {
258600cc4afSopenharmony_ci        for (auto abilityInfo :  bundleInfo.abilityInfos) {
259600cc4afSopenharmony_ci            if (abilityInfo.name == name) {
260600cc4afSopenharmony_ci                jsonObject[abilityInfo.bundleName][abilityInfo.moduleName] = abilityInfo;
261600cc4afSopenharmony_ci            }
262600cc4afSopenharmony_ci        }
263600cc4afSopenharmony_ci    }
264600cc4afSopenharmony_ci
265600cc4afSopenharmony_ci    if (jsonObject.is_discarded() || jsonObject.empty()) {
266600cc4afSopenharmony_ci        APP_LOGE("get ability by abilityName failed");
267600cc4afSopenharmony_ci        return ERR_APPEXECFWK_HIDUMP_ERROR;
268600cc4afSopenharmony_ci    }
269600cc4afSopenharmony_ci
270600cc4afSopenharmony_ci    result.append(jsonObject.dump(Constants::DUMP_INDENT));
271600cc4afSopenharmony_ci    result.append("\n");
272600cc4afSopenharmony_ci    return ERR_OK;
273600cc4afSopenharmony_ci}
274600cc4afSopenharmony_ci
275600cc4afSopenharmony_ciErrCode HidumpHelper::GetAllBundleInfo(std::string &result)
276600cc4afSopenharmony_ci{
277600cc4afSopenharmony_ci    auto shareDataMgr = dataMgr_.lock();
278600cc4afSopenharmony_ci    if (shareDataMgr == nullptr) {
279600cc4afSopenharmony_ci        return ERR_APPEXECFWK_HIDUMP_SERVICE_ERROR;
280600cc4afSopenharmony_ci    }
281600cc4afSopenharmony_ci
282600cc4afSopenharmony_ci    std::vector<BundleInfo> bundleInfos;
283600cc4afSopenharmony_ci    if (!shareDataMgr->GetBundleInfos(static_cast<int32_t>(
284600cc4afSopenharmony_ci        BundleFlag::GET_BUNDLE_WITH_ABILITIES |
285600cc4afSopenharmony_ci        BundleFlag::GET_BUNDLE_WITH_EXTENSION_INFO |
286600cc4afSopenharmony_ci        BundleFlag::GET_BUNDLE_WITH_HASH_VALUE),
287600cc4afSopenharmony_ci        bundleInfos, Constants::ANY_USERID)) {
288600cc4afSopenharmony_ci        APP_LOGE("get bundleInfos failed");
289600cc4afSopenharmony_ci        return false;
290600cc4afSopenharmony_ci    }
291600cc4afSopenharmony_ci
292600cc4afSopenharmony_ci    for (auto &info : bundleInfos) {
293600cc4afSopenharmony_ci        result.append(info.name);
294600cc4afSopenharmony_ci        result.append(":\n");
295600cc4afSopenharmony_ci        nlohmann::json jsonObject = info;
296600cc4afSopenharmony_ci        jsonObject["hapModuleInfos"] = info.hapModuleInfos;
297600cc4afSopenharmony_ci        result.append(jsonObject.dump(Constants::DUMP_INDENT));
298600cc4afSopenharmony_ci        result.append("\n");
299600cc4afSopenharmony_ci    }
300600cc4afSopenharmony_ci    APP_LOGD("get all bundle info success");
301600cc4afSopenharmony_ci    return ERR_OK;
302600cc4afSopenharmony_ci}
303600cc4afSopenharmony_ci
304600cc4afSopenharmony_ciErrCode HidumpHelper::GetAllBundleNameList(std::string &result)
305600cc4afSopenharmony_ci{
306600cc4afSopenharmony_ci    auto shareDataMgr = dataMgr_.lock();
307600cc4afSopenharmony_ci    if (shareDataMgr == nullptr) {
308600cc4afSopenharmony_ci        APP_LOGE("shareDataMgr is nullptr");
309600cc4afSopenharmony_ci        return ERR_APPEXECFWK_HIDUMP_SERVICE_ERROR;
310600cc4afSopenharmony_ci    }
311600cc4afSopenharmony_ci
312600cc4afSopenharmony_ci    std::vector<std::string> bundleNames;
313600cc4afSopenharmony_ci    if (!shareDataMgr->GetBundleList(bundleNames, Constants::ANY_USERID)) {
314600cc4afSopenharmony_ci        APP_LOGE("get bundle list failed");
315600cc4afSopenharmony_ci        return ERR_APPEXECFWK_HIDUMP_ERROR;
316600cc4afSopenharmony_ci    }
317600cc4afSopenharmony_ci
318600cc4afSopenharmony_ci    for (auto &name : bundleNames) {
319600cc4afSopenharmony_ci        result.append(name);
320600cc4afSopenharmony_ci        result.append("\n");
321600cc4afSopenharmony_ci    }
322600cc4afSopenharmony_ci
323600cc4afSopenharmony_ci    return ERR_OK;
324600cc4afSopenharmony_ci}
325600cc4afSopenharmony_ci
326600cc4afSopenharmony_ciErrCode HidumpHelper::GetBundleInfoByName(const std::string &name, std::string &result)
327600cc4afSopenharmony_ci{
328600cc4afSopenharmony_ci    APP_LOGD("hidump bundle info begin");
329600cc4afSopenharmony_ci    auto shareDataMgr = dataMgr_.lock();
330600cc4afSopenharmony_ci    if (shareDataMgr == nullptr) {
331600cc4afSopenharmony_ci        return ERR_APPEXECFWK_HIDUMP_SERVICE_ERROR;
332600cc4afSopenharmony_ci    }
333600cc4afSopenharmony_ci
334600cc4afSopenharmony_ci    BundleInfo bundleInfo;
335600cc4afSopenharmony_ci    if (!shareDataMgr->GetBundleInfo(name,
336600cc4afSopenharmony_ci        BundleFlag::GET_BUNDLE_WITH_ABILITIES |
337600cc4afSopenharmony_ci        BundleFlag::GET_BUNDLE_WITH_REQUESTED_PERMISSION |
338600cc4afSopenharmony_ci        BundleFlag::GET_BUNDLE_WITH_EXTENSION_INFO |
339600cc4afSopenharmony_ci        BundleFlag::GET_BUNDLE_WITH_HASH_VALUE, bundleInfo, Constants::ANY_USERID)) {
340600cc4afSopenharmony_ci        APP_LOGE("get bundleInfo(%{public}s) failed", name.c_str());
341600cc4afSopenharmony_ci        return ERR_APPEXECFWK_HIDUMP_ERROR;
342600cc4afSopenharmony_ci    }
343600cc4afSopenharmony_ci
344600cc4afSopenharmony_ci    result.append(name);
345600cc4afSopenharmony_ci    result.append(":\n");
346600cc4afSopenharmony_ci    nlohmann::json jsonObject = bundleInfo;
347600cc4afSopenharmony_ci    jsonObject["hapModuleInfos"] = bundleInfo.hapModuleInfos;
348600cc4afSopenharmony_ci    result.append(jsonObject.dump(Constants::DUMP_INDENT));
349600cc4afSopenharmony_ci    result.append("\n");
350600cc4afSopenharmony_ci    APP_LOGD("get %{public}s bundle info success", name.c_str());
351600cc4afSopenharmony_ci    return ERR_OK;
352600cc4afSopenharmony_ci}
353600cc4afSopenharmony_ci
354600cc4afSopenharmony_ciErrCode HidumpHelper::GetAllDeviced(std::string &result)
355600cc4afSopenharmony_ci{
356600cc4afSopenharmony_ci    result = "This command is deprecated. Please use `hidumper -s 4802 -a -getTrustlist` instead.";
357600cc4afSopenharmony_ci    return ERR_OK;
358600cc4afSopenharmony_ci}
359600cc4afSopenharmony_ci
360600cc4afSopenharmony_civoid HidumpHelper::ShowHelp(std::string &result)
361600cc4afSopenharmony_ci{
362600cc4afSopenharmony_ci    result.append("Usage:dump  <command> [options]\n")
363600cc4afSopenharmony_ci    .append("Description:\n")
364600cc4afSopenharmony_ci    .append("-ability          ")
365600cc4afSopenharmony_ci    .append("dump all ability infomation in the system\n")
366600cc4afSopenharmony_ci    .append("-ability    [abilityName]\n")
367600cc4afSopenharmony_ci    .append("                  dump ability list information of the specified name in the system\n")
368600cc4afSopenharmony_ci    .append("-ability-list     ")
369600cc4afSopenharmony_ci    .append("dump list of all ability names in the system\n")
370600cc4afSopenharmony_ci    .append("-bundle           ")
371600cc4afSopenharmony_ci    .append("dump all bundle infomation in the system\n")
372600cc4afSopenharmony_ci    .append("-bundle     [bundleName]\n")
373600cc4afSopenharmony_ci    .append("                  dump bundle list information of the specified name in the system\n")
374600cc4afSopenharmony_ci    .append("-bundle-list      ")
375600cc4afSopenharmony_ci    .append("dump list of all bundle names in the system\n")
376600cc4afSopenharmony_ci    .append("-device           ")
377600cc4afSopenharmony_ci    .append("dump the list of devices involved in the ability infomation in the system\n");
378600cc4afSopenharmony_ci}
379600cc4afSopenharmony_ci
380600cc4afSopenharmony_civoid HidumpHelper::ShowIllealInfomation(std::string &result)
381600cc4afSopenharmony_ci{
382600cc4afSopenharmony_ci    result.append(ILLEGAL_INFOMATION);
383600cc4afSopenharmony_ci}
384600cc4afSopenharmony_ci}  // namespace AppExecFwk
385600cc4afSopenharmony_ci}  // namespace OHOS
386