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