• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <thread>
17 #include <chrono>
18 #include "gtest/gtest.h"
19 #include "test/mock/interfaces/mock_uicontent.h"
20 #include "ui_content.h"
21 
22 #define private public
23 #include "interfaces/inner_api/form_render/include/form_renderer.h"
24 #include "interfaces/inner_api/form_render/include/form_renderer_delegate_impl.h"
25 #include "interfaces/inner_api/form_render/include/form_renderer_group.h"
26 #include "interfaces/inner_api/ace/serialized_gesture.h"
27 #include "test/mock/core/pipeline/mock_pipeline_context.h"
28 
29 using namespace testing;
30 using namespace testing::ext;
31 
32 namespace OHOS::Ace {
33 namespace {
34 constexpr char FORM_RENDERER_ALLOW_UPDATE[] = "allowUpdate";
35 constexpr char FORM_RENDERER_COMP_ID[] = "ohos.extra.param.key.form_comp_id";
36 constexpr char FORM_WIDTH_KEY[] = "ohos.extra.param.key.form_width";
37 constexpr char FORM_HEIGHT_KEY[] = "ohos.extra.param.key.form_height";
38 constexpr char FORM_RENDERER_PROCESS_ON_ADD_SURFACE[] = "ohos.extra.param.key.process_on_add_surface";
39 constexpr char FORM_RENDER_STATE[] = "ohos.extra.param.key.form_render_state";
40 constexpr const char* FORM_STATUS_DATA = "form_status_data";
41 const std::string FORM_COMPONENT_ID_1 = "111111";
42 const std::string FORM_COMPONENT_ID_2 = "222222";
43 const std::string FORM_COMPONENT_ID_3 = "333333";
44 const std::string CHECK_KEY = "CHECK_KEY";
45 constexpr double FORM_WIDTH = 100.0f;
46 constexpr double FORM_HEIGHT = 100.0f;
47 constexpr double FORM_WIDTH_2 = 200.0f;
48 constexpr double FORM_HEIGHT_2 = 200.0f;
49 } // namespace
50 class FormRenderTest : public testing::Test {
51 public:
SetUpTestCase()52     static void SetUpTestCase()
53     {
54         NG::MockPipelineContext::SetUp();
55     }
56 
TearDownTestCase()57     static void TearDownTestCase()
58     {
59         NG::MockPipelineContext::TearDown();
60     }
61 };
62 
63 /**
64  * @tc.name: FormRenderTest001
65  * @tc.desc: test AddForm -> UpdateForm -> ReloadForm -> DeleteForm(comp_id) -> DeleteForm
66  * @tc.type: FUNC
67  */
68 HWTEST_F(FormRenderTest, FormRenderTest001, TestSize.Level1)
69 {
70     /**
71      * @tc.steps: step1. create formRenderGroup and prepare want
72      * @tc.expected: step1. formRenderGroup is created successfully
73      */
74     std::weak_ptr<OHOS::AppExecFwk::EventHandler> emptyHandler;
75     auto formRendererGroup = FormRendererGroup::Create(nullptr, nullptr, emptyHandler);
76     EXPECT_TRUE(formRendererGroup);
77     bool isEmpty = formRendererGroup->IsFormRequestsEmpty();
78     EXPECT_TRUE(isEmpty);
79     OHOS::AAFwk::Want want;
80     want.SetParam(FORM_WIDTH_KEY, FORM_WIDTH);
81     want.SetParam(FORM_HEIGHT_KEY, FORM_HEIGHT);
82     want.SetParam(FORM_RENDERER_COMP_ID, FORM_COMPONENT_ID_1);
83     want.SetParam(FORM_RENDERER_ALLOW_UPDATE, true);
84     want.SetParam(FORM_RENDER_STATE, true);
85     OHOS::AppExecFwk::FormJsInfo formJsInfo;
86 
87     /**
88      * @tc.steps: step2. call AddForm
89      * @tc.expected: step2. formRenderer is created successfully and added to the formRendererGroup
90      */
91     // formRenderer->uiContent_ is null, so formRenderer->AddForm will not be called
92     formRendererGroup->AddForm(want, formJsInfo);
93     EXPECT_TRUE(formRendererGroup->formRenderer_ != nullptr);
94     isEmpty = formRendererGroup->IsFormRequestsEmpty();
95     formRendererGroup->UpdateConfiguration(nullptr);
96     EXPECT_FALSE(isEmpty);
97 
98 
99     /**
100      * @tc.steps: step3. call formRenderer's AddForm
101      * @tc.expected: step3. uiContent's relevant methods are called & formRenderer's property are set
102      */
103     auto formRenderer = formRendererGroup->formRenderer_;
104     EXPECT_TRUE(formRenderer);
105     formRenderer->uiContent_ = UIContent::Create(nullptr, nullptr);
106     EXPECT_TRUE(formRenderer->uiContent_);
107     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), SetFormWidth(FORM_WIDTH)).WillOnce(Return());
108     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), SetFormHeight(FORM_HEIGHT)).WillOnce(Return());
109     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), UpdateFormSharedImage(_)).WillOnce(Return());
110     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), UpdateFormData(_)).WillOnce(Return());
111 
112     EXPECT_CALL(*((MockUIContent *)(formRenderer->uiContent_.get())),
113         PreInitializeForm(An<OHOS::Rosen::Window *>(), "", _)).WillOnce(Return());
114     EXPECT_CALL(*((MockUIContent *)(formRenderer->uiContent_.get())), RunFormPage()).Times(Exactly(1));
115 
116     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), SetActionEventHandler(_)).WillOnce(Return());
117     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), SetErrorEventHandler(_)).WillOnce(Return());
118     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), GetFormRootNode()).Times(Exactly(2));
119     // call AddForm manually
120     formRenderer->AddForm(want, formJsInfo);
121     EXPECT_EQ(formRenderer->allowUpdate_, true);
122     EXPECT_EQ(formRenderer->width_, FORM_WIDTH);
123     EXPECT_EQ(formRenderer->height_, FORM_HEIGHT);
124 
125     /**
126      * @tc.steps: step4. add another formRenderer
127      * @tc.expected: step4. the formRenderer is created successfully and added to the formRendererGroup
128      */
129     OHOS::AAFwk::Want want2;
130     want2.SetParam(FORM_WIDTH_KEY, FORM_WIDTH);
131     want2.SetParam(FORM_HEIGHT_KEY, FORM_HEIGHT);
132     want2.SetParam(FORM_RENDERER_COMP_ID, FORM_COMPONENT_ID_2);
133     want2.SetParam(FORM_RENDERER_ALLOW_UPDATE, true);
134     want2.SetParam(FORM_RENDER_STATE, true);
135     formRendererGroup->AddForm(want2, formJsInfo);
136     auto formRenderer2 = formRendererGroup->formRenderer_;
137     formRenderer2->OnActionEvent("");
138     formRenderer2->OnError("", "");
139     formRenderer2->OnSurfaceChange(0.0f, 0.0f);
140 
141     /**
142      * @tc.steps: step5. call formRenderer's UpdateForm
143      * @tc.expected: step5. uiContent's relevant methods are called
144      */
145     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), UpdateFormSharedImage(_)).WillOnce(Return());
146     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), UpdateFormData(_)).WillOnce(Return());
147     formRendererGroup->UpdateForm(formJsInfo);
148 
149     /**
150      * @tc.steps: step6. call formRenderer's ReloadForm
151      * @tc.expected: step6. uiContent's relevant methods are called
152      */
153     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), ReloadForm(_)).WillOnce(Return());
154     formRendererGroup->ReloadForm(formJsInfo);
155 
156     /**
157      * @tc.steps: step7. delete formRenderer whose compId not exists
158      * @tc.expected: step7. delete fail
159      */
160     formRendererGroup->DeleteForm(FORM_COMPONENT_ID_3);
161 
162     /**
163      * @tc.steps: step8. delete formRenderer whose compId exists
164      * @tc.expected: step8. delete successfully
165      */
166     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), Destroy()).WillOnce(Return());
167     // delete formRenderer that compId exists
168     formRendererGroup->DeleteForm(FORM_COMPONENT_ID_1);
169 
170     /**
171      * @tc.steps: step9. delete all formRenderers
172      * @tc.expected: step9. delete successfully
173      */
174     formRendererGroup->DeleteForm();
175 }
176 
177 /**
178  * @tc.name: FormRenderTest002
179  * @tc.desc: delegate & dispatcher is not null
180  * @tc.type: FUNC
181  */
182 HWTEST_F(FormRenderTest, FormRenderTest002, TestSize.Level1)
183 {
184     /**
185      * @tc.steps: step1. create formRenderGroup and add new formRenderer with delegate & dispatcher
186      * @tc.expected: step1. formRenderGroup is created successfully and the formRenderer is added to the
187      * formRendererGroup
188      */
189     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("formRenderTest002");
190     ASSERT_TRUE(eventRunner);
191     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
192     auto formRendererGroup = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
193     EXPECT_TRUE(formRendererGroup);
194     OHOS::AAFwk::Want want;
195     want.SetParam(FORM_RENDERER_COMP_ID, FORM_COMPONENT_ID_1);
196     want.SetParam(FORM_RENDERER_ALLOW_UPDATE, false);
197     want.SetParam(FORM_RENDER_STATE, true);
198     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
199     want.SetParam(FORM_RENDERER_PROCESS_ON_ADD_SURFACE, renderDelegate->AsObject());
200     OHOS::AppExecFwk::FormJsInfo formJsInfo;
201     formRendererGroup->AddForm(want, formJsInfo);
202     auto formRenderer = formRendererGroup->formRenderer_;;
203     EXPECT_TRUE(formRenderer);
204     formRenderer->uiContent_ = UIContent::Create(nullptr, nullptr);
205     EXPECT_TRUE(formRenderer->uiContent_);
206 
207     /**
208      * @tc.steps: step2. register callback for rendererDelegate
209      */
210     std::string onSurfaceCreateKey;
211     auto onSurfaceCreate = [&onSurfaceCreateKey](const std::shared_ptr<Rosen::RSSurfaceNode>& /* surfaceNode */,
212                                const OHOS::AppExecFwk::FormJsInfo& /* info */,
__anon01b166fb0202(const std::shared_ptr<Rosen::RSSurfaceNode>& , const OHOS::AppExecFwk::FormJsInfo& , const AAFwk::Want& ) 213                                const AAFwk::Want& /* want */) { onSurfaceCreateKey = CHECK_KEY; };
214     renderDelegate->SetSurfaceCreateEventHandler(std::move(onSurfaceCreate));
215 
216     std::string onActionEventKey;
__anon01b166fb0302(const std::string& ) 217     auto onAction = [&onActionEventKey](const std::string& /* action */) { onActionEventKey = CHECK_KEY; };
218     renderDelegate->SetActionEventHandler(std::move(onAction));
219 
220     std::string onErrorEventKey;
221     auto onError = [&onErrorEventKey](
__anon01b166fb0402( const std::string& , const std::string& ) 222                        const std::string& /* code */, const std::string& /* msg */) { onErrorEventKey = CHECK_KEY; };
223     renderDelegate->SetErrorEventHandler(std::move(onError));
224 
225     std::string onSurfaceChangeEventKey;
226     auto onSurfaceChange = [&onSurfaceChangeEventKey](float /* width */,
__anon01b166fb0502(float , float , float ) 227                         float /* height */, float /* borderWidth */) { onSurfaceChangeEventKey = CHECK_KEY; };
228     renderDelegate->SetSurfaceChangeEventHandler(std::move(onSurfaceChange));
229 
230     /**
231      * @tc.steps: step3. call formRenderer's AddForm
232      * @tc.expected: step3. onSurfaceCreate has been called
233      */
234     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), SetFormWidth(_)).WillOnce(Return());
235     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), SetFormHeight(_)).WillOnce(Return());
236     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), UpdateFormSharedImage(_)).WillOnce(Return());
237     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), UpdateFormData(_)).WillOnce(Return());
238 
239     EXPECT_CALL(*((MockUIContent *)(formRenderer->uiContent_.get())),
240         PreInitializeForm(An<OHOS::Rosen::Window *>(), "", _)).WillOnce(Return());
241     EXPECT_CALL(*((MockUIContent *)(formRenderer->uiContent_.get())), RunFormPage()).Times(Exactly(1));
242 
243     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), SetActionEventHandler(_)).WillOnce(Return());
244     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), SetErrorEventHandler(_)).WillOnce(Return());
245     std::string surfaceNodeName = "ArkTSCardNode";
246     struct Rosen::RSSurfaceNodeConfig surfaceNodeConfig = { .SurfaceNodeName = surfaceNodeName };
247     std::shared_ptr<Rosen::RSSurfaceNode> rsNode = OHOS::Rosen::RSSurfaceNode::Create(surfaceNodeConfig, true);
248     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), GetFormRootNode())
249         .WillOnce(Return(rsNode))
250         .WillOnce(Return(rsNode))
251         .WillOnce(Return(rsNode));
252     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), Foreground()).WillOnce(Return());
253     formRenderer->AddForm(want, formJsInfo);
254     EXPECT_EQ(onSurfaceCreateKey, CHECK_KEY);
255 
256     /**
257      * @tc.steps: step4. call formRenderer's OnActionEvent & OnErrorEvent
258      * @tc.expected: step4. onAction & onError have been called
259      */
260     formRenderer->OnActionEvent("");
261     EXPECT_EQ(onActionEventKey, CHECK_KEY);
262     formRenderer->OnError("", "");
263     EXPECT_EQ(onErrorEventKey, CHECK_KEY);
264 
265     /**
266      * @tc.steps: step5. Test surface change
267      * @tc.expected: step5. onSurfaceChange & uiContent.OnFormSurfaceChange has been called
268      */
269     auto formRendererDispatcher = formRenderer->formRendererDispatcherImpl_;
270     EXPECT_TRUE(formRendererDispatcher);
271     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), SetFormWidth(FORM_WIDTH_2)).WillOnce(Return());
272     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), SetFormHeight(FORM_HEIGHT_2)).WillOnce(Return());
273     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), OnFormSurfaceChange(FORM_WIDTH_2, FORM_HEIGHT_2,
274         _, _)).WillOnce(Return());
275     formRendererDispatcher->DispatchSurfaceChangeEvent(FORM_WIDTH_2, FORM_HEIGHT_2);
276     std::this_thread::sleep_for(std::chrono::seconds(1));
277     EXPECT_EQ(onSurfaceChangeEventKey, CHECK_KEY);
278     // formRenderer is null
279     formRendererDispatcher->formRenderer_.reset();
280     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), SetFormWidth(FORM_WIDTH_2)).WillOnce(Return());
281     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), SetFormHeight(FORM_HEIGHT_2)).WillOnce(Return());
282     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), OnFormSurfaceChange(FORM_WIDTH_2, FORM_HEIGHT_2,
283         _, _)).WillOnce(Return());
284     onSurfaceChangeEventKey = "";
285     formRendererDispatcher->DispatchSurfaceChangeEvent(FORM_WIDTH_2, FORM_HEIGHT_2);
286     std::this_thread::sleep_for(std::chrono::seconds(1));
287     EXPECT_NE(onSurfaceChangeEventKey, CHECK_KEY);
288 
289     /**
290      * @tc.steps: step6. Test pointer event
291      * @tc.expected: step4. uiContent.ProcessPointerEvent has been called
292      */
293     std::shared_ptr<OHOS::MMI::PointerEvent> event;
294     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), ProcessPointerEvent(event))
295         .WillOnce(Return(true));
296     SerializedGesture serializedGesture;
297     formRendererDispatcher->DispatchPointerEvent(event, serializedGesture);
298     std::this_thread::sleep_for(std::chrono::seconds(1));
299 }
300 
301 /**
302  * @tc.name: FormRenderTest003
303  * @tc.type: FUNC
304  * Function: OnActionEvent,SetActionEventHandler
305  **@tc.desc: 1. system running normally
306  *           2. test FormRendererDelegateImpl
307  */
308 HWTEST_F(FormRenderTest, FormRenderTest003, TestSize.Level1)
309 {
310     std::string action = "action";
__anon01b166fb0602(const std::string&) 311     auto fun = [](const std::string&) {};
312     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
313     renderDelegate->SetActionEventHandler(nullptr);
314     EXPECT_EQ(renderDelegate->OnActionEvent(action), ERR_INVALID_DATA);
315     renderDelegate->SetActionEventHandler(fun);
316     EXPECT_EQ(renderDelegate->OnActionEvent(action), ERR_OK);
317 }
318 
319 /**
320  * @tc.name: FormRenderTest004
321  * @tc.type: FUNC
322  * Function: OnError,SetErrorEventHandler
323  **@tc.desc: 1. system running normally
324  *           2. test FormRendererDelegateImpl
325  */
326 HWTEST_F(FormRenderTest, FormRenderTest004, TestSize.Level1)
327 {
328     std::string code = "code";
329     std::string msg = "msg";
__anon01b166fb0702(const std::string&, const std::string&) 330     auto fun = [](const std::string&, const std::string&) {};
331     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
332     renderDelegate->SetErrorEventHandler(nullptr);
333     EXPECT_EQ(renderDelegate->OnError(code, msg), ERR_INVALID_DATA);
334     renderDelegate->SetErrorEventHandler(fun);
335     EXPECT_EQ(renderDelegate->OnError(code, msg), ERR_OK);
336 }
337 
338 /**
339  * @tc.name: FormRenderTest005
340  * @tc.type: FUNC
341  * Function: OnSurfaceChange,SetSurfaceChangeEventHandler
342  **@tc.desc: 1. system running normally
343  *           2. test FormRendererDelegateImpl
344  */
345 HWTEST_F(FormRenderTest, FormRenderTest005, TestSize.Level1)
346 {
347     float width = 1.1;
348     float height = 2.2;
__anon01b166fb0802(float, float, float) 349     auto fun = [](float, float, float) {};
350     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
351     renderDelegate->SetSurfaceChangeEventHandler(nullptr);
352     EXPECT_EQ(renderDelegate->OnSurfaceChange(width, height), ERR_INVALID_DATA);
353     renderDelegate->SetSurfaceChangeEventHandler(fun);
354     EXPECT_EQ(renderDelegate->OnSurfaceChange(width, height), ERR_OK);
355 }
356 
357 /**
358  * @tc.name: FormRenderTest006
359  * @tc.type: FUNC
360  * Function: OnSurfaceDetach,SetSurfaceDetachEventHandler
361  **@tc.desc: 1. system running normally
362  *           2. test FormRendererDelegateImpl
363  */
364 HWTEST_F(FormRenderTest, FormRenderTest006, TestSize.Level1)
365 {
366     uint64_t surfaceId = 1;
__anon01b166fb0902() 367     auto fun = []() {};
368     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
369     renderDelegate->SetSurfaceDetachEventHandler(nullptr);
370     EXPECT_EQ(renderDelegate->OnSurfaceDetach(surfaceId), ERR_INVALID_DATA);
371     renderDelegate->SetSurfaceDetachEventHandler(fun);
372     EXPECT_EQ(renderDelegate->OnSurfaceDetach(surfaceId), ERR_OK);
373 }
374 
375 /**
376  * @tc.name: FormRenderTest007
377  * @tc.type: FUNC
378  * Function: OnFormLinkInfoUpdate,SetFormLinkInfoUpdateHandler
379  **@tc.desc: 1. system running normally
380  *           2. test FormRendererDelegateImpl
381  */
382 HWTEST_F(FormRenderTest, FormRenderTest007, TestSize.Level1)
383 {
384     std::vector<std::string> formLinkInfos;
__anon01b166fb0a02(const std::vector<std::string>&) 385     auto fun = [](const std::vector<std::string>&) {};
386     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
387     renderDelegate->SetFormLinkInfoUpdateHandler(nullptr);
388     EXPECT_EQ(renderDelegate->OnFormLinkInfoUpdate(formLinkInfos), ERR_INVALID_DATA);
389     renderDelegate->SetFormLinkInfoUpdateHandler(fun);
390     EXPECT_EQ(renderDelegate->OnFormLinkInfoUpdate(formLinkInfos), ERR_OK);
391 }
392 
393 /**
394  * @tc.name: FormRenderTest008
395  * @tc.type: FUNC
396  * Function: OnGetRectRelativeToWindow,SetGetRectRelativeToWindowHandler
397  **@tc.desc: 1. system running normally
398  *           2. test FormRendererDelegateImpl
399  */
400 HWTEST_F(FormRenderTest, FormRenderTest008, TestSize.Level1)
401 {
402     AccessibilityParentRectInfo parentRectInfo;
403     parentRectInfo.top = 50;
404     parentRectInfo.left = 50;
__anon01b166fb0b02(AccessibilityParentRectInfo&) 405     auto fun = [](AccessibilityParentRectInfo&) {};
406     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
407     renderDelegate->SetGetRectRelativeToWindowHandler(nullptr);
408     EXPECT_EQ(renderDelegate->OnGetRectRelativeToWindow(parentRectInfo), ERR_INVALID_DATA);
409     renderDelegate->SetGetRectRelativeToWindowHandler(fun);
410     EXPECT_EQ(renderDelegate->OnGetRectRelativeToWindow(parentRectInfo), ERR_OK);
411 }
412 
413 /**
414  * @tc.name: FormRenderTest010
415  * @tc.desc: test RunFormPage
416  * @tc.type: FUNC
417  */
418 HWTEST_F(FormRenderTest, FormRenderTest010, TestSize.Level1)
419 {
420     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("formRenderTest010");
421     ASSERT_TRUE(eventRunner);
422     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
423     auto formRendererGroup = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
424     EXPECT_TRUE(formRendererGroup);
425     OHOS::AAFwk::Want want;
426     want.SetParam(FORM_RENDERER_COMP_ID, FORM_COMPONENT_ID_1);
427     want.SetParam(FORM_RENDERER_ALLOW_UPDATE, false);
428     want.SetParam(FORM_RENDER_STATE, true);
429     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
430     want.SetParam(FORM_RENDERER_PROCESS_ON_ADD_SURFACE, renderDelegate->AsObject());
431     OHOS::AppExecFwk::FormJsInfo formJsInfo;
432     formRendererGroup->AddForm(want, formJsInfo);
433     auto formRenderer = formRendererGroup->formRenderer_;;
434     EXPECT_TRUE(formRenderer);
435     formRenderer->RunFormPage(want, formJsInfo);
436     formRenderer->uiContent_ = UIContent::Create(nullptr, nullptr);
437     EXPECT_TRUE(formRenderer->uiContent_);
438     formRenderer->RunFormPage(want, formJsInfo);
439     want.SetParam(FORM_STATUS_DATA, true);
440     formRenderer->RunFormPage(want, formJsInfo);
441 }
442 
443 /**
444  * @tc.name: FormRenderTest011
445  * @tc.desc: test OnFormLinkInfoUpdate
446  * @tc.type: FUNC
447  */
448 HWTEST_F(FormRenderTest, FormRenderTest011, TestSize.Level1)
449 {
450     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("formRenderTest011");
451     ASSERT_TRUE(eventRunner);
452     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
453     auto formRendererGroup = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
454     EXPECT_TRUE(formRendererGroup);
455     OHOS::AAFwk::Want want;
456     want.SetParam(FORM_RENDERER_COMP_ID, FORM_COMPONENT_ID_1);
457     want.SetParam(FORM_RENDERER_ALLOW_UPDATE, false);
458     want.SetParam(FORM_RENDER_STATE, true);
459     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
460     want.SetParam(FORM_RENDERER_PROCESS_ON_ADD_SURFACE, renderDelegate->AsObject());
461     OHOS::AppExecFwk::FormJsInfo formJsInfo;
462     formRendererGroup->AddForm(want, formJsInfo);
463     auto formRenderer = formRendererGroup->formRenderer_;
464     EXPECT_TRUE(formRenderer);
465     formRenderer->uiContent_ = UIContent::Create(nullptr, nullptr);
466     EXPECT_TRUE(formRenderer->uiContent_);
467     std::vector<std::string> cachedInfos = formRenderer->cachedInfos_;
468     formRenderer->OnFormLinkInfoUpdate(cachedInfos);
469     formRenderer->formRendererDelegate_ = renderDelegate;
470     EXPECT_TRUE(formRenderer->formRendererDelegate_);
471     formRenderer->OnFormLinkInfoUpdate(cachedInfos);
472 }
473 
474 /**
475  * @tc.name: FormRenderTest012
476  * @tc.desc: test ResetRenderDelegate
477  * @tc.type: FUNC
478  */
479 HWTEST_F(FormRenderTest, FormRenderTest012, TestSize.Level1)
480 {
481     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("formRenderTest012");
482     ASSERT_TRUE(eventRunner);
483     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
484     auto formRendererGroup = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
485     EXPECT_TRUE(formRendererGroup);
486     OHOS::AAFwk::Want want;
487     want.SetParam(FORM_RENDERER_COMP_ID, FORM_COMPONENT_ID_1);
488     want.SetParam(FORM_RENDERER_ALLOW_UPDATE, false);
489     want.SetParam(FORM_RENDER_STATE, true);
490     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
491     want.SetParam(FORM_RENDERER_PROCESS_ON_ADD_SURFACE, renderDelegate->AsObject());
492     OHOS::AppExecFwk::FormJsInfo formJsInfo;
493     formRendererGroup->AddForm(want, formJsInfo);
494     auto formRenderer = formRendererGroup->formRenderer_;
495     EXPECT_TRUE(formRenderer);
496     formRenderer->uiContent_ = UIContent::Create(nullptr, nullptr);
497     EXPECT_TRUE(formRenderer->uiContent_);
498     formRenderer->ResetRenderDelegate();
499 }
500 
501 /**
502  * @tc.name: FormRenderTest013
503  * @tc.desc: test UpdateConfiguration
504  * @tc.type: FUNC
505  */
506 HWTEST_F(FormRenderTest, FormRenderTest013, TestSize.Level1)
507 {
508     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("formRenderTest013");
509     ASSERT_TRUE(eventRunner);
510     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
511     auto formRendererGroup = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
512     EXPECT_TRUE(formRendererGroup);
513     OHOS::AAFwk::Want want;
514     want.SetParam(FORM_RENDERER_COMP_ID, FORM_COMPONENT_ID_1);
515     want.SetParam(FORM_RENDERER_ALLOW_UPDATE, false);
516     want.SetParam(FORM_RENDER_STATE, true);
517     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
518     want.SetParam(FORM_RENDERER_PROCESS_ON_ADD_SURFACE, renderDelegate->AsObject());
519     OHOS::AppExecFwk::FormJsInfo formJsInfo;
520     formRendererGroup->AddForm(want, formJsInfo);
521     auto formRenderer = formRendererGroup->formRenderer_;
522     EXPECT_TRUE(formRenderer);
523     formRenderer->uiContent_ = UIContent::Create(nullptr, nullptr);
524     EXPECT_TRUE(formRenderer->uiContent_);
525     formRenderer->UpdateConfiguration(nullptr);
526 }
527 
528 /**
529  * @tc.name: FormRenderTest014
530  * @tc.desc: test OnRemoteDied
531  * @tc.type: FUNC
532  */
533 HWTEST_F(FormRenderTest, FormRenderTest014, TestSize.Level1)
534 {
535     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("formRenderTest014");
536     ASSERT_TRUE(eventRunner);
537     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
538     auto formRendererGroup = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
539     EXPECT_TRUE(formRendererGroup);
540     OHOS::AAFwk::Want want;
541     want.SetParam(FORM_RENDERER_COMP_ID, FORM_COMPONENT_ID_1);
542     want.SetParam(FORM_RENDERER_ALLOW_UPDATE, false);
543     want.SetParam(FORM_RENDER_STATE, true);
544     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
545     want.SetParam(FORM_RENDERER_PROCESS_ON_ADD_SURFACE, renderDelegate->AsObject());
546     OHOS::AppExecFwk::FormJsInfo formJsInfo;
547     formRendererGroup->AddForm(want, formJsInfo);
548     auto formRenderer = formRendererGroup->formRenderer_;
549     EXPECT_TRUE(formRenderer);
550     formRenderer->uiContent_ = UIContent::Create(nullptr, nullptr);
551     EXPECT_TRUE(formRenderer->uiContent_);
__anon01b166fb0c02()552     FormRenderDelegateRecipient::RemoteDiedHandler handler = [](){};
553     auto formRenderDelegateRecipient = new FormRenderDelegateRecipient(handler);
554     formRenderDelegateRecipient->OnRemoteDied(nullptr);
555     formRenderDelegateRecipient->OnRemoteDied(renderDelegate->AsObject());
556 }
557 
558 /**
559  * @tc.name: FormRenderTest015
560  * @tc.desc: test GetRectRelativeToWindow
561  * @tc.type: FUNC
562  */
563 HWTEST_F(FormRenderTest, FormRenderTest015, TestSize.Level1)
564 {
565     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("formRenderTest015");
566     ASSERT_TRUE(eventRunner);
567     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
568     auto formRendererGroup = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
569     EXPECT_TRUE(formRendererGroup);
570     OHOS::AAFwk::Want want;
571     want.SetParam(FORM_RENDERER_COMP_ID, FORM_COMPONENT_ID_1);
572     want.SetParam(FORM_RENDERER_ALLOW_UPDATE, false);
573     want.SetParam(FORM_RENDER_STATE, true);
574     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
575     want.SetParam(FORM_RENDERER_PROCESS_ON_ADD_SURFACE, renderDelegate->AsObject());
576     OHOS::AppExecFwk::FormJsInfo formJsInfo;
577     formRendererGroup->AddForm(want, formJsInfo);
578     auto formRenderer = formRendererGroup->formRenderer_;
579     EXPECT_TRUE(formRenderer);
580     formRenderer->uiContent_ = UIContent::Create(nullptr, nullptr);
581     EXPECT_TRUE(formRenderer->uiContent_);
582     AccessibilityParentRectInfo parentRectInfo;
583     parentRectInfo.top = 0;
584     parentRectInfo.left = 0;
585     formRenderer->GetRectRelativeToWindow(parentRectInfo);
586     formRenderer->formRendererDelegate_ = renderDelegate;
587     EXPECT_TRUE(formRenderer->formRendererDelegate_);
588     formRenderer->GetRectRelativeToWindow(parentRectInfo);
589 }
590 
591 /**
592  * @tc.name: FormRenderTest016
593  * @tc.desc: test RecycleForm
594  * @tc.type: FUNC
595  */
596 HWTEST_F(FormRenderTest, FormRenderTest016, TestSize.Level1)
597 {
598     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("formRenderTest016");
599     ASSERT_TRUE(eventRunner);
600     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
601     auto formRendererGroup = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
602     EXPECT_TRUE(formRendererGroup);
603     OHOS::AAFwk::Want want;
604     want.SetParam(FORM_RENDERER_COMP_ID, FORM_COMPONENT_ID_1);
605     want.SetParam(FORM_RENDERER_ALLOW_UPDATE, false);
606     want.SetParam(FORM_RENDER_STATE, true);
607     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
608     want.SetParam(FORM_RENDERER_PROCESS_ON_ADD_SURFACE, renderDelegate->AsObject());
609     OHOS::AppExecFwk::FormJsInfo formJsInfo;
610     formRendererGroup->AddForm(want, formJsInfo);
611     auto formRenderer = formRendererGroup->formRenderer_;
612     EXPECT_TRUE(formRenderer);
613     std::string statusData;
614     formRenderer->RecycleForm(statusData);
615     formRenderer->uiContent_ = UIContent::Create(nullptr, nullptr);
616     EXPECT_TRUE(formRenderer->uiContent_);
617     formRenderer->RecycleForm(statusData);
618 }
619 
620 /**
621  * @tc.name: FormRenderTest017
622  * @tc.desc: test RecoverForm
623  * @tc.type: FUNC
624  */
625 HWTEST_F(FormRenderTest, FormRenderTest017, TestSize.Level1)
626 {
627     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("formRenderTest017");
628     ASSERT_TRUE(eventRunner);
629     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
630     auto formRendererGroup = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
631     EXPECT_TRUE(formRendererGroup);
632     OHOS::AAFwk::Want want;
633     want.SetParam(FORM_RENDERER_COMP_ID, FORM_COMPONENT_ID_1);
634     want.SetParam(FORM_RENDERER_ALLOW_UPDATE, false);
635     want.SetParam(FORM_RENDER_STATE, true);
636     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
637     want.SetParam(FORM_RENDERER_PROCESS_ON_ADD_SURFACE, renderDelegate->AsObject());
638     OHOS::AppExecFwk::FormJsInfo formJsInfo;
639     formRendererGroup->AddForm(want, formJsInfo);
640     auto formRenderer = formRendererGroup->formRenderer_;
641     EXPECT_TRUE(formRenderer);
642     const std::string statusData = "";
643     formRenderer->RecoverForm(statusData);
644     formRenderer->uiContent_ = UIContent::Create(nullptr, nullptr);
645     EXPECT_TRUE(formRenderer->uiContent_);
646     formRenderer->RecoverForm(statusData);
647 }
648 
649 /**
650  * @tc.name: FormRenderTest018
651  * @tc.desc: test PreInitAddForm
652  * @tc.type: FUNC
653  */
654 HWTEST_F(FormRenderTest, FormRenderTest018, TestSize.Level1)
655 {
656     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("formRenderTest018");
657     ASSERT_TRUE(eventRunner);
658     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
659     auto formRendererGroup = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
660     EXPECT_TRUE(formRendererGroup);
661     OHOS::AAFwk::Want want;
662     want.SetParam(FORM_RENDERER_COMP_ID, FORM_COMPONENT_ID_1);
663     want.SetParam(FORM_RENDERER_ALLOW_UPDATE, false);
664     want.SetParam(FORM_RENDER_STATE, true);
665     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
666     want.SetParam(FORM_RENDERER_PROCESS_ON_ADD_SURFACE, renderDelegate->AsObject());
667     OHOS::AppExecFwk::FormJsInfo formJsInfo;
668     formRendererGroup->AddForm(want, formJsInfo);
669     auto formRenderer = formRendererGroup->formRenderer_;
670     EXPECT_TRUE(formRenderer);
671     formRenderer->PreInitAddForm(want, formJsInfo);
672     std::string url = "";
673     formRenderer->ReloadForm(url);
674     formRenderer->UpdateForm(formJsInfo);
675     formRenderer->uiContent_ = UIContent::Create(nullptr, nullptr);
676     EXPECT_TRUE(formRenderer->uiContent_);
677     formRenderer->PreInitAddForm(want, formJsInfo);
678 }
679 
680 /**
681  * @tc.name: FormRenderTest019
682  * @tc.desc: test AttachForm
683  * @tc.type: FUNC
684  */
685 HWTEST_F(FormRenderTest, FormRenderTest019, TestSize.Level1)
686 {
687     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("formRenderTest019");
688     ASSERT_TRUE(eventRunner);
689     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
690     auto formRendererGroup = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
691     EXPECT_TRUE(formRendererGroup);
692     OHOS::AAFwk::Want want;
693     want.SetParam(FORM_RENDERER_COMP_ID, FORM_COMPONENT_ID_1);
694     want.SetParam(FORM_RENDERER_ALLOW_UPDATE, false);
695     want.SetParam(FORM_RENDER_STATE, true);
696     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
697     want.SetParam(FORM_RENDERER_PROCESS_ON_ADD_SURFACE, renderDelegate->AsObject());
698     OHOS::AppExecFwk::FormJsInfo formJsInfo;
699     formRendererGroup->AddForm(want, formJsInfo);
700     auto formRenderer = formRendererGroup->formRenderer_;
701     EXPECT_TRUE(formRenderer);
702     formRenderer->AttachForm(want, formJsInfo);
703     formRenderer->uiContent_ = UIContent::Create(nullptr, nullptr);
704     EXPECT_TRUE(formRenderer->uiContent_);
705     formRenderer->AttachForm(want, formJsInfo);
706 }
707 
708 /**
709  * @tc.name: FormRenderTest020
710  * @tc.desc: test AttachUIContent
711  * @tc.type: FUNC
712  */
713 HWTEST_F(FormRenderTest, FormRenderTest020, TestSize.Level1)
714 {
715     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("formRenderTest020");
716     ASSERT_TRUE(eventRunner);
717     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
718     auto formRendererGroup = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
719     EXPECT_TRUE(formRendererGroup);
720     OHOS::AAFwk::Want want;
721     want.SetParam(FORM_RENDERER_COMP_ID, FORM_COMPONENT_ID_1);
722     want.SetParam(FORM_RENDERER_ALLOW_UPDATE, false);
723     want.SetParam(FORM_RENDER_STATE, true);
724     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
725     want.SetParam(FORM_RENDERER_PROCESS_ON_ADD_SURFACE, renderDelegate->AsObject());
726     OHOS::AppExecFwk::FormJsInfo formJsInfo;
727     formRendererGroup->AddForm(want, formJsInfo);
728     auto formRenderer = formRendererGroup->formRenderer_;
729     EXPECT_TRUE(formRenderer);
730     formRenderer->uiContent_ = UIContent::Create(nullptr, nullptr);
731     EXPECT_TRUE(formRenderer->uiContent_);
732     std::string surfaceNodeName = "ArkTSCardNode";
733     struct Rosen::RSSurfaceNodeConfig surfaceNodeConfig = { .SurfaceNodeName = surfaceNodeName };
734     std::shared_ptr<Rosen::RSSurfaceNode> rsNode = OHOS::Rosen::RSSurfaceNode::Create(surfaceNodeConfig, true);
735     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), GetFormRootNode()).WillOnce(Return(rsNode));
736     formRenderer->AttachUIContent(want, formJsInfo);
737 }
738 
739 /**
740  * @tc.name: FormRenderTest021
741  * @tc.desc: test OnSurfaceReuse
742  * @tc.type: FUNC
743  */
744 HWTEST_F(FormRenderTest, FormRenderTest021, TestSize.Level1)
745 {
746     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("formRenderTest021");
747     ASSERT_TRUE(eventRunner);
748     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
749     auto formRendererGroup = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
750     EXPECT_TRUE(formRendererGroup);
751     OHOS::AAFwk::Want want;
752     want.SetParam(FORM_RENDERER_COMP_ID, FORM_COMPONENT_ID_1);
753     want.SetParam(FORM_RENDERER_ALLOW_UPDATE, false);
754     want.SetParam(FORM_RENDER_STATE, true);
755     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
756     want.SetParam(FORM_RENDERER_PROCESS_ON_ADD_SURFACE, renderDelegate->AsObject());
757     OHOS::AppExecFwk::FormJsInfo formJsInfo;
758     formRendererGroup->AddForm(want, formJsInfo);
759     auto formRenderer = formRendererGroup->formRenderer_;
760     EXPECT_TRUE(formRenderer);
761     formRenderer->uiContent_ = UIContent::Create(nullptr, nullptr);
762     EXPECT_TRUE(formRenderer->uiContent_);
763     formRenderer->formRendererDispatcherImpl_ =
764         new FormRendererDispatcherImpl(formRenderer->uiContent_, nullptr, eventHandler);
765     formRenderer->formRendererDelegate_ = renderDelegate;
766     formRenderer->OnSurfaceReuse(formJsInfo);
767     std::string surfaceNodeName = "ArkTSCardNode";
768     struct Rosen::RSSurfaceNodeConfig surfaceNodeConfig = { .SurfaceNodeName = surfaceNodeName };
769     std::shared_ptr<Rosen::RSSurfaceNode> rsNode = OHOS::Rosen::RSSurfaceNode::Create(surfaceNodeConfig, true);
770     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), GetFormRootNode()).Times(Exactly(2))
771         .WillOnce(Return(rsNode));
772     formRenderer->OnSurfaceReuse(formJsInfo);
773 }
774 
775 /**
776  * @tc.name: FormRenderTest022
777  * @tc.desc: test OnSurfaceDetach
778  * @tc.type: FUNC
779  */
780 HWTEST_F(FormRenderTest, FormRenderTest022, TestSize.Level1)
781 {
782     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("formRenderTest022");
783     ASSERT_TRUE(eventRunner);
784     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
785     auto formRendererGroup = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
786     EXPECT_TRUE(formRendererGroup);
787     OHOS::AAFwk::Want want;
788     want.SetParam(FORM_RENDERER_COMP_ID, FORM_COMPONENT_ID_1);
789     want.SetParam(FORM_RENDERER_ALLOW_UPDATE, false);
790     want.SetParam(FORM_RENDER_STATE, true);
791     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
792     want.SetParam(FORM_RENDERER_PROCESS_ON_ADD_SURFACE, renderDelegate->AsObject());
793     OHOS::AppExecFwk::FormJsInfo formJsInfo;
794     formRendererGroup->AddForm(want, formJsInfo);
795     auto formRenderer = formRendererGroup->formRenderer_;
796     EXPECT_TRUE(formRenderer);
797     formRenderer->uiContent_ = UIContent::Create(nullptr, nullptr);
798     EXPECT_TRUE(formRenderer->uiContent_);
799     formRenderer->formRendererDelegate_ = renderDelegate;
800     formRenderer->OnSurfaceDetach();
801     std::string surfaceNodeName = "ArkTSCardNode";
802     struct Rosen::RSSurfaceNodeConfig surfaceNodeConfig = { .SurfaceNodeName = surfaceNodeName };
803     std::shared_ptr<Rosen::RSSurfaceNode> rsNode = OHOS::Rosen::RSSurfaceNode::Create(surfaceNodeConfig, true);
804     EXPECT_CALL(*((MockUIContent*)(formRenderer->uiContent_.get())), GetFormRootNode()).Times(Exactly(2)).
805         WillOnce(Return(rsNode));
806     formRenderer->OnSurfaceDetach();
807 }
808 
809 /**
810 * @tc.name: FormRenderTest023
811 * @tc.desc: test SetVisibleChange
812 * @tc.type: FUNC
813 */
814 HWTEST_F(FormRenderTest, FormRenderTest023, TestSize.Level1)
815 {
816     auto eventRunner = OHOS::AppExecFwk::EventRunner::Create("formRenderTest023");
817     ASSERT_TRUE(eventRunner);
818     auto eventHandler = std::make_shared<OHOS::AppExecFwk::EventHandler>(eventRunner);
819     auto formRendererGroup = FormRendererGroup::Create(nullptr, nullptr, eventHandler);
820     EXPECT_TRUE(formRendererGroup);
821     OHOS::AAFwk::Want want;
822     want.SetParam(FORM_RENDERER_COMP_ID, FORM_COMPONENT_ID_1);
823     want.SetParam(FORM_RENDERER_ALLOW_UPDATE, false);
824     want.SetParam(FORM_RENDER_STATE, true);
825     sptr<FormRendererDelegateImpl> renderDelegate = new FormRendererDelegateImpl();
826     want.SetParam(FORM_RENDERER_PROCESS_ON_ADD_SURFACE, renderDelegate->AsObject());
827     OHOS::AppExecFwk::FormJsInfo formJsInfo;
828     formRendererGroup->AddForm(want, formJsInfo);
829     auto formRenderer = formRendererGroup->formRenderer_;
830     EXPECT_TRUE(formRenderer);
831     formRenderer->SetVisibleChange(true);
832     formRenderer->uiContent_ = UIContent::Create(nullptr, nullptr);
833     EXPECT_TRUE(formRenderer->uiContent_);
834     formRenderer->SetVisibleChange(true);
835 }
836 
837 } // namespace OHOS::Ace
838