diff --git a/services/appmgr/src/app_mgr_service_inner.cpp b/services/appmgr/src/app_mgr_service_inner.cpp index 9a5c544c4563842791c067adc22d06e2fe16bb53..7257fa8c5db535e6acd7de47ad171612d036249f 100644 --- a/services/appmgr/src/app_mgr_service_inner.cpp +++ b/services/appmgr/src/app_mgr_service_inner.cpp @@ -8733,10 +8733,13 @@ int32_t AppMgrServiceInner::GetChildProcessInfo(const std::shared_ptrGetBaseSharedBundleInfos(appRecord->GetBundleName(), info.hspList, - AppExecFwk::GetDependentBundleInfoFlag::GET_ALL_DEPENDENT_BUNDLE_INFO))) { - TAG_LOGE(AAFwkTag::APPMGR, "GetBaseSharedBundleInfos fail"); - return ERR_INVALID_VALUE; + if (childProcessRecord->GetChildProcessType() != CHILD_PROCESS_TYPE_NATIVE && + childProcessRecord->GetChildProcessType() != CHILD_PROCESS_TYPE_NATIVE_ARGS) { + if (IN_PROCESS_CALL(bundleMgrHelper->GetBaseSharedBundleInfos(appRecord->GetBundleName(), info.hspList, + AppExecFwk::GetDependentBundleInfoFlag::GET_ALL_DEPENDENT_BUNDLE_INFO))) { + TAG_LOGE(AAFwkTag::APPMGR, "GetBaseSharedBundleInfos fail"); + return ERR_INVALID_VALUE; + } } if (!isCallFromGetChildrenProcesses) { diff --git a/test/unittest/app_mgr_service_inner_eighth_test/app_mgr_service_inner_eighth_test.cpp b/test/unittest/app_mgr_service_inner_eighth_test/app_mgr_service_inner_eighth_test.cpp index 8289a9341f5a4847f749be18549576d6d2b014bd..53ccee4293d6d2dbd33d67f5912c2e24fa28fd76 100644 --- a/test/unittest/app_mgr_service_inner_eighth_test/app_mgr_service_inner_eighth_test.cpp +++ b/test/unittest/app_mgr_service_inner_eighth_test/app_mgr_service_inner_eighth_test.cpp @@ -1545,6 +1545,7 @@ HWTEST_F(AppMgrServiceInnerEighthTest, GetChildProcessInfo_006, TestSize.Level1) AAFwk::MyStatus::GetInstance().getOsAccountLocalIdFromUid_ = ERR_OK; ChildProcessRequest request; + request.childProcessType = CHILD_PROCESS_TYPE_ARK; std::shared_ptr childProcessRecord = std::make_shared(0, request, nullptr); std::shared_ptr appRecord = std::make_shared(nullptr, 0, ""); @@ -1558,6 +1559,59 @@ HWTEST_F(AppMgrServiceInnerEighthTest, GetChildProcessInfo_006, TestSize.Level1) TAG_LOGI(AAFwkTag::TEST, "GetChildProcessInfo_006 end"); } + +/** + * @tc.name: GetChildProcessInfo_007 + * @tc.desc: test GetChildProcessInfo + * @tc.type: FUNC + */ +HWTEST_F(AppMgrServiceInnerEighthTest, GetChildProcessInfo_007, TestSize.Level1) +{ + TAG_LOGI(AAFwkTag::TEST, "GetChildProcessInfo_007 start"); + auto appMgrServiceInner = std::make_shared(); + AAFwk::MyStatus::GetInstance().getOsAccountLocalIdFromUid_ = ERR_OK; + + ChildProcessRequest request; + request.childProcessType = CHILD_PROCESS_TYPE_NATIVE; + std::shared_ptr childProcessRecord = + std::make_shared(0, request, nullptr); + std::shared_ptr appRecord = std::make_shared(nullptr, 0, ""); + ChildProcessInfo info; + bool isCallFromGetChildren = false; + AAFwk::MyStatus::GetInstance().getBundleManagerHelper_ = std::make_shared(); + AAFwk::MyStatus::GetInstance().getCloneBundleInfo_ = ERR_OK; + AAFwk::MyStatus::GetInstance().getBaseSharedBundleInfos_ = ERR_INVALID_VALUE; + auto ret = appMgrServiceInner->GetChildProcessInfo(childProcessRecord, appRecord, info, isCallFromGetChildren); + EXPECT_EQ(ret, ERR_OK); + TAG_LOGI(AAFwkTag::TEST, "GetChildProcessInfo_007 end"); +} + +/** + * @tc.name: GetChildProcessInfo_008 + * @tc.desc: test GetChildProcessInfo + * @tc.type: FUNC + */ +HWTEST_F(AppMgrServiceInnerEighthTest, GetChildProcessInfo_008, TestSize.Level1) +{ + TAG_LOGI(AAFwkTag::TEST, "GetChildProcessInfo_008 start"); + auto appMgrServiceInner = std::make_shared(); + AAFwk::MyStatus::GetInstance().getOsAccountLocalIdFromUid_ = ERR_OK; + + ChildProcessRequest request; + request.childProcessType = CHILD_PROCESS_TYPE_NATIVE_ARGS; + std::shared_ptr childProcessRecord = + std::make_shared(0, request, nullptr); + std::shared_ptr appRecord = std::make_shared(nullptr, 0, ""); + ChildProcessInfo info; + bool isCallFromGetChildren = false; + AAFwk::MyStatus::GetInstance().getBundleManagerHelper_ = std::make_shared(); + AAFwk::MyStatus::GetInstance().getCloneBundleInfo_ = ERR_OK; + AAFwk::MyStatus::GetInstance().getBaseSharedBundleInfos_ = ERR_INVALID_VALUE; + auto ret = appMgrServiceInner->GetChildProcessInfo(childProcessRecord, appRecord, info, isCallFromGetChildren); + EXPECT_EQ(ret, ERR_OK); + TAG_LOGI(AAFwkTag::TEST, "GetChildProcessInfo_008 end"); +} + /** * @tc.name: AttachChildProcess_001 * @tc.desc: test AttachChildProcess_001