diff --git a/interfaces/inner_api/form_render/src/form_renderer.cpp b/interfaces/inner_api/form_render/src/form_renderer.cpp index 59ec646db06d963de83717ea497e4fa28b159a1e..f3c42a388d72f6f81a3ea20bff5f0d956d6b56b3 100644 --- a/interfaces/inner_api/form_render/src/form_renderer.cpp +++ b/interfaces/inner_api/form_render/src/form_renderer.cpp @@ -349,7 +349,14 @@ void FormRenderer::OnSurfaceCreate(const OHOS::AppExecFwk::FormJsInfo& formJsInf isRecoverFormToHandleClickEvent); auto rsSurfaceNode = uiContent_->GetFormRootNode(); HILOG_INFO("Form OnSurfaceCreate!"); - int32_t ret = formRendererDelegate_->OnSurfaceCreate(rsSurfaceNode, formJsInfo, newWant); + + int32_t ret = ERR_OK; + if (formJsInfo.uiSyntax == OHOS::AppExecFwk::FormType::ETS) { + OHOS::AppExecFwk::FormJsInfo newFormJsInfo = formJsInfo.CopyFormJsInfoWithoutFormData(); + ret = formRendererDelegate_->OnSurfaceCreate(rsSurfaceNode, newFormJsInfo, newWant); + } else { + ret = formRendererDelegate_->OnSurfaceCreate(rsSurfaceNode, formJsInfo, newWant); + } if (ret == ERR_OK) { FormRenderEventReport::StopTimer(formJsInfo.formId); } @@ -373,7 +380,13 @@ void FormRenderer::OnSurfaceReuse(const OHOS::AppExecFwk::FormJsInfo& formJsInfo OHOS::AAFwk::Want newWant; newWant.SetParam(FORM_RENDERER_DISPATCHER, formRendererDispatcherImpl_->AsObject()); HILOG_INFO("Form OnSurfaceReuse."); - int32_t ret = formRendererDelegate_->OnSurfaceReuse(rsSurfaceNode->GetId(), formJsInfo, newWant); + int32_t ret = ERR_OK; + if (formJsInfo.uiSyntax == OHOS::AppExecFwk::FormType::ETS) { + OHOS::AppExecFwk::FormJsInfo newFormJsInfo = formJsInfo.CopyFormJsInfoWithoutFormData(); + ret = formRendererDelegate_->OnSurfaceReuse(rsSurfaceNode->GetId(), newFormJsInfo, newWant); + } else { + ret = formRendererDelegate_->OnSurfaceReuse(rsSurfaceNode->GetId(), formJsInfo, newWant); + } formRendererDelegate_->OnFormLinkInfoUpdate(cachedInfos_); if (ret == ERR_OK) { FormRenderEventReport::StopTimer(formJsInfo.formId); diff --git a/test/unittest/interfaces/form_render/form_render_test.cpp b/test/unittest/interfaces/form_render/form_render_test.cpp index 9d5928ca6f244c692f0670f50fe2c48aabecc2a0..06d8ba0f38aa3c3b25e779d9a0ebb271b07cf8d7 100644 --- a/test/unittest/interfaces/form_render/form_render_test.cpp +++ b/test/unittest/interfaces/form_render/form_render_test.cpp @@ -810,4 +810,36 @@ HWTEST_F(FormRenderTest, FormRenderTest032, TestSize.Level1) FormRenderEventReport::waitSurfaceNodeTimerMap_.end()); } +HWTEST_F(FormRenderTest, FormRenderTest033, TestSize.Level1) +{ + auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("FormRenderTest033"); + ASSERT_TRUE(eventRunner); + auto eventHandler = std::make_shared(eventRunner); + auto formRendererGroup = FormRendererGroup::Create(nullptr, nullptr, eventHandler); + EXPECT_TRUE(formRendererGroup); + OHOS::AAFwk::Want want; + want.SetParam(FORM_RENDERER_COMP_ID, FORM_COMPONENT_ID_1); + want.SetParam(FORM_RENDERER_ALLOW_UPDATE, false); + want.SetParam(FORM_RENDER_STATE, true); + sptr renderDelegate = new FormRendererDelegateImpl(); + want.SetParam(FORM_RENDERER_PROCESS_ON_ADD_SURFACE, renderDelegate->AsObject()); + OHOS::AppExecFwk::FormJsInfo formJsInfo; + formRendererGroup->AddForm(want, formJsInfo); + auto formRenderer = formRendererGroup->formRenderer_;; + EXPECT_TRUE(formRenderer); + formRenderer->uiContent_ = UIContent::Create(nullptr, nullptr); + EXPECT_TRUE(formRenderer->uiContent_); + + OHOS::AppExecFwk::FormJsInfo newFormJsInfo; + auto onSurfaceCreate = [&newFormJsInfo](const std::shared_ptr& /* surfaceNode */, + const OHOS::AppExecFwk::FormJsInfo& info, + const AAFwk::Want& /* want */) { newFormJsInfo = info; }; + renderDelegate->SetSurfaceCreateEventHandler(std::move(onSurfaceCreate)); + + formJsInfo.uiSyntax = OHOS::AppExecFwk::FormType::ETS; + formJsInfo.formData = "testData"; + formJsInfo.formId = 10; + formRenderer->OnSurfaceCreate(formJsInfo, false); + EXPECT_EQ(newFormJsInfo.formData, ""); +} } // namespace OHOS::Ace \ No newline at end of file