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