diff --git a/interfaces/inner_api/app_manager/src/appmgr/app_mgr_client.cpp b/interfaces/inner_api/app_manager/src/appmgr/app_mgr_client.cpp index 0217067a36..15b71426fc 100644 --- a/interfaces/inner_api/app_manager/src/appmgr/app_mgr_client.cpp +++ b/interfaces/inner_api/app_manager/src/appmgr/app_mgr_client.cpp @@ -592,7 +592,8 @@ int AppMgrClient::PreStartNWebSpawnProcess() int AppMgrClient::StartRenderProcess(const std::string &renderParam, int32_t ipcFd, int32_t sharedFd, - int32_t crashFd, pid_t &renderPid) { + int32_t crashFd, pid_t &renderPid) +{ sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service != nullptr) { return service->StartRenderProcess(renderParam, ipcFd, sharedFd, crashFd, diff --git a/interfaces/inner_api/app_manager/src/appmgr/app_mgr_proxy.cpp b/interfaces/inner_api/app_manager/src/appmgr/app_mgr_proxy.cpp index 6e1f53a2e1..32fcf92f74 100644 --- a/interfaces/inner_api/app_manager/src/appmgr/app_mgr_proxy.cpp +++ b/interfaces/inner_api/app_manager/src/appmgr/app_mgr_proxy.cpp @@ -627,7 +627,8 @@ int AppMgrProxy::PreStartNWebSpawnProcess() int AppMgrProxy::StartRenderProcess(const std::string &renderParam, int32_t ipcFd, int32_t sharedFd, - int32_t crashFd, pid_t &renderPid) { + int32_t crashFd, pid_t &renderPid) +{ if (renderParam.empty() || ipcFd <= 0 || sharedFd <= 0 || crashFd <= 0) { HILOG_ERROR("Invalid params, renderParam:%{private}s, ipcFd:%{public}d, " "sharedFd:%{public}d, crashFd:%{public}d", diff --git a/interfaces/inner_api/app_manager/src/appmgr/render_scheduler_proxy.cpp b/interfaces/inner_api/app_manager/src/appmgr/render_scheduler_proxy.cpp index 6cf2ae86c7..e7fc307983 100644 --- a/interfaces/inner_api/app_manager/src/appmgr/render_scheduler_proxy.cpp +++ b/interfaces/inner_api/app_manager/src/appmgr/render_scheduler_proxy.cpp @@ -35,7 +35,8 @@ bool RenderSchedulerProxy::WriteInterfaceToken(MessageParcel &data) } void RenderSchedulerProxy::NotifyBrowserFd(int32_t ipcFd, int32_t sharedFd, - int32_t crashFd) { + int32_t crashFd) +{ HILOG_DEBUG("NotifyBrowserFd start"); MessageParcel data; MessageParcel reply; diff --git a/test/fuzztest/startrenderprocess_fuzzer/startrenderprocess_fuzzer.cpp b/test/fuzztest/startrenderprocess_fuzzer/startrenderprocess_fuzzer.cpp index f313f4fb1c..e12f51cb1d 100644 --- a/test/fuzztest/startrenderprocess_fuzzer/startrenderprocess_fuzzer.cpp +++ b/test/fuzztest/startrenderprocess_fuzzer/startrenderprocess_fuzzer.cpp @@ -48,7 +48,7 @@ bool DoSomethingInterestingWithMyAPI(const char* data, size_t size) if (appMgrClient->StartRenderProcess(renderParam, ipcFd, sharedFd, crashFd, renderPid) != 0) { - return false; + return false; } return true; diff --git a/test/mock/frameworks_kits_appkit_test/include/mock_app_mgr_service.h b/test/mock/frameworks_kits_appkit_test/include/mock_app_mgr_service.h index e344674f5c..67aae4ce85 100644 --- a/test/mock/frameworks_kits_appkit_test/include/mock_app_mgr_service.h +++ b/test/mock/frameworks_kits_appkit_test/include/mock_app_mgr_service.h @@ -50,7 +50,7 @@ public: MOCK_METHOD0(BlockAppService, int()); #endif MOCK_METHOD0(PreStartNWebSpawnProcess, int()); - MOCK_METHOD4(StartRenderProcess, + MOCK_METHOD5(StartRenderProcess, int(const std::string &renderParam, int32_t ipcFd, int32_t sharedFd, int32_t crashFd, pid_t &renderPid)); MOCK_METHOD1(AttachRenderProcess, void(const sptr& renderScheduler)); diff --git a/test/mock/services_appmgr_test/include/mock_app_mgr_service.h b/test/mock/services_appmgr_test/include/mock_app_mgr_service.h index e0b1d55bf0..fbf51604e2 100644 --- a/test/mock/services_appmgr_test/include/mock_app_mgr_service.h +++ b/test/mock/services_appmgr_test/include/mock_app_mgr_service.h @@ -50,7 +50,7 @@ public: MOCK_METHOD1(StartupResidentProcess, void(const std::vector& bundleInfos)); MOCK_METHOD1(AddAbilityStageDone, void(const int32_t recordId)); MOCK_METHOD0(PreStartNWebSpawnProcess, int()); - MOCK_METHOD4(StartRenderProcess, int(const std::string&, int32_t, int32_t, pid_t&)); + MOCK_METHOD5(StartRenderProcess, int(const std::string&, int32_t, int32_t, int32_t, pid_t&)); MOCK_METHOD1(AttachRenderProcess, void(const sptr& renderScheduler)); MOCK_METHOD2(GetRenderProcessTerminationStatus, int(pid_t renderPid, int& status)); MOCK_METHOD2(RegisterApplicationStateObserver, int32_t(const sptr& observer, diff --git a/test/moduletest/mock/include/mock_render_scheduler.h b/test/moduletest/mock/include/mock_render_scheduler.h index ee53cbb2f8..3624e4ae88 100644 --- a/test/moduletest/mock/include/mock_render_scheduler.h +++ b/test/moduletest/mock/include/mock_render_scheduler.h @@ -26,7 +26,7 @@ public: MockRenderScheduler() = default; virtual ~MockRenderScheduler() = default; - MOCK_METHOD2(NotifyBrowserFd, + MOCK_METHOD3(NotifyBrowserFd, void(int32_t ipcFd, int32_t sharedFd, int32_t crashFd)); MOCK_METHOD0(AsObject, sptr()); }; diff --git a/test/unittest/app_mgr_client_test/app_mgr_client_test.cpp b/test/unittest/app_mgr_client_test/app_mgr_client_test.cpp index 9f0ac82fa6..44d5abfcc3 100644 --- a/test/unittest/app_mgr_client_test/app_mgr_client_test.cpp +++ b/test/unittest/app_mgr_client_test/app_mgr_client_test.cpp @@ -480,7 +480,7 @@ HWTEST_F(AppMgrClientTest, AppMgrClient_StartRenderProcess_001, TestSize.Level0) auto result = appMgrClient->ConnectAppMgrService(); EXPECT_EQ(result, AppMgrResultCode::RESULT_OK); - int ret = appMgrClient->StartRenderProcess(renderParam, INIT_VALUE, ERROR_PID, renderPid); + int ret = appMgrClient->StartRenderProcess(renderParam, INIT_VALUE, ERROR_PID, INIT_VALUE, renderPid); EXPECT_EQ(ret, ERROR_STATE); } diff --git a/test/unittest/app_mgr_service_inner_test/app_mgr_service_inner_test.cpp b/test/unittest/app_mgr_service_inner_test/app_mgr_service_inner_test.cpp index 54a0efc517..34b24dfb1e 100644 --- a/test/unittest/app_mgr_service_inner_test/app_mgr_service_inner_test.cpp +++ b/test/unittest/app_mgr_service_inner_test/app_mgr_service_inner_test.cpp @@ -2797,40 +2797,73 @@ HWTEST_F(AppMgrServiceInnerTest, StartRenderProcess_001, TestSize.Level0) pid_t hostPid1 = 1; std::string renderParam = "test_renderParam"; pid_t renderPid = 0; - int ret = appMgrServiceInner->StartRenderProcess(hostPid, "", 0, 0, renderPid); + int ret = appMgrServiceInner->StartRenderProcess(hostPid, "", 0, 0, 0, renderPid); EXPECT_EQ(ret, ERR_INVALID_VALUE); - ret = appMgrServiceInner->StartRenderProcess(hostPid, "", 0, 1, renderPid); + ret = appMgrServiceInner->StartRenderProcess(hostPid, "", 0, 0, 1, renderPid); EXPECT_EQ(ret, ERR_INVALID_VALUE); - ret = appMgrServiceInner->StartRenderProcess(hostPid, "", 1, 0, renderPid); + ret = appMgrServiceInner->StartRenderProcess(hostPid, "", 0, 1, 0, renderPid); EXPECT_EQ(ret, ERR_INVALID_VALUE); - ret = appMgrServiceInner->StartRenderProcess(hostPid, "", 1, 1, renderPid); + ret = appMgrServiceInner->StartRenderProcess(hostPid, "", 0, 1, 1, renderPid); EXPECT_EQ(ret, ERR_INVALID_VALUE); - ret = appMgrServiceInner->StartRenderProcess(hostPid, renderParam, 0, 0, renderPid); + ret = appMgrServiceInner->StartRenderProcess(hostPid, "", 1, 0, 0, renderPid); EXPECT_EQ(ret, ERR_INVALID_VALUE); - ret = appMgrServiceInner->StartRenderProcess(hostPid, renderParam, 0, 1, renderPid); + ret = appMgrServiceInner->StartRenderProcess(hostPid, "", 1, 0, 1, renderPid); EXPECT_EQ(ret, ERR_INVALID_VALUE); - ret = appMgrServiceInner->StartRenderProcess(hostPid, renderParam, 1, 0, renderPid); + ret = appMgrServiceInner->StartRenderProcess(hostPid, "", 1, 1, 0, renderPid); EXPECT_EQ(ret, ERR_INVALID_VALUE); - ret = appMgrServiceInner->StartRenderProcess(hostPid, renderParam, 1, 1, renderPid); + ret = appMgrServiceInner->StartRenderProcess(hostPid, "", 1, 1, 1, renderPid); EXPECT_EQ(ret, ERR_INVALID_VALUE); - ret = appMgrServiceInner->StartRenderProcess(hostPid1, "", 0, 0, renderPid); + ret = appMgrServiceInner->StartRenderProcess(hostPid, renderParam, 0, 0, 0, renderPid); EXPECT_EQ(ret, ERR_INVALID_VALUE); - ret = appMgrServiceInner->StartRenderProcess(hostPid1, "", 0, 1, renderPid); + ret = appMgrServiceInner->StartRenderProcess(hostPid, renderParam, 0, 0, 1, renderPid); EXPECT_EQ(ret, ERR_INVALID_VALUE); - ret = appMgrServiceInner->StartRenderProcess(hostPid1, "", 1, 0, renderPid); + ret = appMgrServiceInner->StartRenderProcess(hostPid, renderParam, 0, 1, 0, renderPid); EXPECT_EQ(ret, ERR_INVALID_VALUE); - ret = appMgrServiceInner->StartRenderProcess(hostPid1, "", 1, 1, renderPid); + ret = appMgrServiceInner->StartRenderProcess(hostPid, renderParam, 0, 1, 1, renderPid); EXPECT_EQ(ret, ERR_INVALID_VALUE); - ret = appMgrServiceInner->StartRenderProcess(hostPid1, renderParam, 0, 0, renderPid); + ret = appMgrServiceInner->StartRenderProcess(hostPid, renderParam, 1, 0, 0, renderPid); EXPECT_EQ(ret, ERR_INVALID_VALUE); - ret = appMgrServiceInner->StartRenderProcess(hostPid1, renderParam, 0, 1, renderPid); + ret = appMgrServiceInner->StartRenderProcess(hostPid, renderParam, 1, 0, 1, renderPid); EXPECT_EQ(ret, ERR_INVALID_VALUE); - ret = appMgrServiceInner->StartRenderProcess(hostPid1, renderParam, 1, 0, renderPid); + ret = appMgrServiceInner->StartRenderProcess(hostPid, renderParam, 1, 1, 0, renderPid); + EXPECT_EQ(ret, ERR_INVALID_VALUE); + ret = appMgrServiceInner->StartRenderProcess(hostPid, renderParam, 1, 1, 1, renderPid); + EXPECT_EQ(ret, ERR_INVALID_VALUE); + ret = appMgrServiceInner->StartRenderProcess(hostPid1, "", 0, 0, 0, renderPid); + EXPECT_EQ(ret, ERR_INVALID_VALUE); + ret = appMgrServiceInner->StartRenderProcess(hostPid1, "", 0, 0, 1, renderPid); + EXPECT_EQ(ret, ERR_INVALID_VALUE); + ret = appMgrServiceInner->StartRenderProcess(hostPid1, "", 0, 1, 0, renderPid); + EXPECT_EQ(ret, ERR_INVALID_VALUE); + ret = appMgrServiceInner->StartRenderProcess(hostPid1, "", 0, 1, 1, renderPid); + EXPECT_EQ(ret, ERR_INVALID_VALUE); + ret = appMgrServiceInner->StartRenderProcess(hostPid1, "", 1, 0, 0, renderPid); + EXPECT_EQ(ret, ERR_INVALID_VALUE); + ret = appMgrServiceInner->StartRenderProcess(hostPid1, "", 1, 0, 1, renderPid); + EXPECT_EQ(ret, ERR_INVALID_VALUE); + ret = appMgrServiceInner->StartRenderProcess(hostPid1, "", 1, 1, 0, renderPid); + EXPECT_EQ(ret, ERR_INVALID_VALUE); + ret = appMgrServiceInner->StartRenderProcess(hostPid1, "", 1, 1, 1, renderPid); + EXPECT_EQ(ret, ERR_INVALID_VALUE); + ret = appMgrServiceInner->StartRenderProcess(hostPid1, renderParam, 0, 0, 0, renderPid); + EXPECT_EQ(ret, ERR_INVALID_VALUE); + ret = appMgrServiceInner->StartRenderProcess(hostPid1, renderParam, 0, 0, 1, renderPid); + EXPECT_EQ(ret, ERR_INVALID_VALUE); + ret = appMgrServiceInner->StartRenderProcess(hostPid1, renderParam, 0, 1, 0, renderPid); EXPECT_EQ(ret, ERR_INVALID_VALUE); - ret = appMgrServiceInner->StartRenderProcess(hostPid1, renderParam, 1, 1, renderPid); + ret = appMgrServiceInner->StartRenderProcess(hostPid1, renderParam, 0, 1, 1, renderPid); EXPECT_EQ(ret, ERR_INVALID_VALUE); + ret = appMgrServiceInner->StartRenderProcess(hostPid1, renderParam, 1, 0, 0, renderPid); + EXPECT_EQ(ret, ERR_INVALID_VALUE); + ret = appMgrServiceInner->StartRenderProcess(hostPid1, renderParam, 1, 0, 1, renderPid); + EXPECT_EQ(ret, ERR_INVALID_VALUE); + ret = appMgrServiceInner->StartRenderProcess(hostPid1, renderParam, 1, 1, 0, renderPid); + EXPECT_EQ(ret, ERR_INVALID_VALUE); + + ret = appMgrServiceInner->StartRenderProcess(hostPid1, renderParam, 1, 1, 1, renderPid); + EXPECT_EQ(ret, ERR_INVALID_VALUE); HILOG_INFO("StartRenderProcess_001 end"); } @@ -2893,7 +2926,7 @@ HWTEST_F(AppMgrServiceInnerTest, AttachRenderProcess_001, TestSize.Level0) sptr mockRenderScheduler = new (std::nothrow) MockRenderScheduler(); EXPECT_CALL(*mockRenderScheduler, AsObject()).Times(1); - EXPECT_CALL(*mockRenderScheduler, NotifyBrowserFd(1, 1)).Times(1); + EXPECT_CALL(*mockRenderScheduler, NotifyBrowserFd(1, 1, 1)).Times(1); appMgrServiceInner->AttachRenderProcess(pid, mockRenderScheduler); BundleInfo bundleInfo; diff --git a/test/unittest/app_mgr_service_test/app_mgr_service_test.cpp b/test/unittest/app_mgr_service_test/app_mgr_service_test.cpp index c0e33b12d2..312b1a4d3c 100644 --- a/test/unittest/app_mgr_service_test/app_mgr_service_test.cpp +++ b/test/unittest/app_mgr_service_test/app_mgr_service_test.cpp @@ -722,6 +722,7 @@ HWTEST_F(AppMgrServiceTest, StartRenderProcess_002, TestSize.Level0) int32_t ipcFd = 1; int32_t sharedFd = 1; pid_t renderPid = 1; + int32_t crashFd = 1; appMgrService->SetInnerService(std::make_shared()); appMgrService->handler_ = std::make_shared(runner_, appMgrService->appMgrServiceInner_); int32_t res = appMgrService->StartRenderProcess(renderParam, ipcFd, sharedFd, crashFd, renderPid);