1 /*
2 * Copyright (c) 2022 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 "gtest/gtest.h"
17
18 #define private public
19 #include "core/common/frontend.h"
20 #include "core/common/window.h"
21 #include "core/components/web/resource/web_delegate.h"
22 #include "core/components_ng/base/view_stack_processor.h"
23 #include "core/components_ng/pattern/web/web_pattern.h"
24 #include "core/components_v2/inspector/inspector_constants.h"
25 #include "core/event/touch_event.h"
26 #include "core/pipeline_ng/pipeline_context.h"
27
28 using namespace testing;
29 using namespace testing::ext;
30 using namespace OHOS::NWeb;
31 using namespace OHOS::Ace;
32
33 namespace OHOS::Ace::NG {
34 namespace {
35 #ifdef OHOS_STANDARD_SYSTEM
36 bool g_isEnable = false;
37 float g_alpha = 0;
38 int32_t g_Y = 1;
39 float g_height = 0;
40
41 int32_t g_editStateFlags = 0;
42
43 int32_t EF_CAN_CUT = 2;
44 int32_t EF_CAN_COPY = 4;
45 int32_t EF_CAN_PASTE = 8;
46 int32_t EF_CAN_SELECT_ALL = 16;
47 int32_t CONTRNT_WIDTH_SIZE = 1024;
48 int32_t CONTRNT_HEIGHT_SIZE = 99999;
49
50 std::shared_ptr<NWebTouchHandleState> g_insertHandle = nullptr;
51 std::shared_ptr<NWebTouchHandleState> g_startSelectionHandle = nullptr;
52 std::shared_ptr<NWebTouchHandleState> g_endSelectionHandle = nullptr;
53
54 RefPtr<WebPattern> g_webPattern = nullptr;
55 #endif
56 } // namespace
57
58 class WebPatternTest : public testing::Test {
59 public:
60 static void SetUpTestCase();
61 static void TearDownTestCase();
62 void SetUp() override;
63 void TearDown() override;
64 };
65
SetUpTestCase()66 void WebPatternTest::SetUpTestCase()
67 {
68 #ifdef OHOS_STANDARD_SYSTEM
69 std::string src = "web_test";
70 RefPtr<WebController> controller = AceType::MakeRefPtr<WebController>();
71 auto* stack = ViewStackProcessor::GetInstance();
72 auto nodeId = stack->ClaimNodeId();
73 auto frameNode = FrameNode::GetOrCreateFrameNode(
74 V2::WEB_ETS_TAG, nodeId, [src, controller]() { return AceType::MakeRefPtr<WebPattern>(src, controller); });
75 stack->Push(frameNode);
76
77 g_webPattern = frameNode->GetPattern<WebPattern>();
78 CHECK_NULL_VOID(g_webPattern);
79 g_webPattern->SetWebSrc(src);
80 g_webPattern->SetWebController(controller);
81 #endif
82 }
TearDownTestCase()83 void WebPatternTest::TearDownTestCase() {}
SetUp()84 void WebPatternTest::SetUp() {}
TearDown()85 void WebPatternTest::TearDown() {}
86
87 #ifdef OHOS_STANDARD_SYSTEM
88 class NWebTouchHandleStateMock : public NWebTouchHandleState {
89 public:
GetTouchHandleId() const90 int32_t GetTouchHandleId() const override
91 {
92 return 0;
93 }
94
GetX() const95 int32_t GetX() const override
96 {
97 return 0;
98 }
99
GetY() const100 int32_t GetY() const override
101 {
102 return g_Y;
103 }
104
GetTouchHandleType() const105 TouchHandleType GetTouchHandleType() const override
106 {
107 return TouchHandleType::INSERT_HANDLE;
108 }
109
IsEnable() const110 bool IsEnable() const override
111 {
112 return g_isEnable;
113 }
114
GetAlpha() const115 float GetAlpha() const override
116 {
117 return g_alpha;
118 }
119
GetEdgeHeight() const120 float GetEdgeHeight() const override
121 {
122 return g_height;
123 }
124 };
125
126 class NWebQuickMenuParamsMock : public NWebQuickMenuParams {
127 public:
GetXCoord()128 int32_t GetXCoord() override
129 {
130 return 0;
131 }
132
GetYCoord()133 int32_t GetYCoord() override
134 {
135 return 0;
136 }
137
GetWidth()138 int32_t GetWidth() override
139 {
140 return 0;
141 }
142
GetHeight()143 int32_t GetHeight() override
144 {
145 return 0;
146 }
147
GetEditStateFlags()148 int32_t GetEditStateFlags() override
149 {
150 return g_editStateFlags;
151 }
152
GetTouchHandleState(NWebTouchHandleState::TouchHandleType type)153 std::shared_ptr<NWebTouchHandleState> GetTouchHandleState(NWebTouchHandleState::TouchHandleType type) override
154 {
155 if (type == NWebTouchHandleState::TouchHandleType::INSERT_HANDLE) {
156 return g_insertHandle;
157 } else if (type == NWebTouchHandleState::TouchHandleType::SELECTION_BEGIN_HANDLE) {
158 return g_startSelectionHandle;
159 }
160 return g_endSelectionHandle;
161 }
162 };
163
164 class NWebQuickMenuCallbackMock : public NWebQuickMenuCallback {
165 public:
Continue(int32_t commandId,MenuEventFlags flag)166 void Continue(int32_t commandId, MenuEventFlags flag) {}
167
Cancel()168 void Cancel() {}
169 };
170 #endif
171
172 /**
173 * @tc.name: OnModifyDoneTest001
174 * @tc.desc: Test OnModifyDone.
175 * @tc.type: FUNC
176 */
177 HWTEST_F(WebPatternTest, OnModifyDoneTest001, TestSize.Level1)
178 {
179 #ifdef OHOS_STANDARD_SYSTEM
180 g_webPattern->OnModifyDone();
181 int32_t width = 1;
182 int32_t height = 1;
183 double keyboard = 0;
184 g_webPattern->isFocus_ = false;
185 bool result = g_webPattern->ProcessVirtualKeyBoard(width, height, keyboard);
186 EXPECT_FALSE(result);
187 g_webPattern->isVirtualKeyBoardShow_ = WebPattern::VkState::VK_SHOW;
188 result = g_webPattern->ProcessVirtualKeyBoard(width, height, keyboard);
189 EXPECT_FALSE(result);
190 g_webPattern->isFocus_ = true;
191 result = g_webPattern->ProcessVirtualKeyBoard(width, height, keyboard);
192 EXPECT_FALSE(result);
193 keyboard = 1;
194 result = g_webPattern->ProcessVirtualKeyBoard(width, height, keyboard);
195 EXPECT_TRUE(result);
196 g_webPattern->isVirtualKeyBoardShow_ = WebPattern::VkState::VK_HIDE;
197 result = g_webPattern->ProcessVirtualKeyBoard(width, height, keyboard);
198 EXPECT_TRUE(result);
199 g_webPattern->UpdateWebLayoutSize(width, height, false);
200 TouchEventInfo info("test");
201 info.changedTouches_.clear();
202 g_webPattern->touchEvent_->callback_(info);
203 TouchLocationInfo touch(1);
204 info.changedTouches_.emplace_back(touch);
205 g_webPattern->touchEvent_->callback_(info);
206 info.SetSourceDevice(SourceType::NONE);
207 g_webPattern->touchEvent_->callback_(info);
208 info.SetSourceDevice(SourceType::TOUCH);
209 g_webPattern->touchEvent_->callback_(info);
210 touch.SetTouchType(TouchType::DOWN);
211 info.changedTouches_.clear();
212 info.changedTouches_.emplace_back(touch);
213 g_webPattern->touchEvent_->callback_(info);
214 touch.SetTouchType(TouchType::MOVE);
215 info.changedTouches_.clear();
216 info.changedTouches_.emplace_back(touch);
217 g_webPattern->touchEvent_->callback_(info);
218 touch.SetTouchType(TouchType::UP);
219 info.changedTouches_.clear();
220 info.changedTouches_.emplace_back(touch);
221 g_webPattern->touchEvent_->callback_(info);
222 touch.SetTouchType(TouchType::CANCEL);
223 info.changedTouches_.clear();
224 info.changedTouches_.emplace_back(touch);
225 g_webPattern->touchEvent_->callback_(info);
226 #endif
227 }
228
229 /**
230 * @tc.name: HandleTouchDownTest002
231 * @tc.desc: Test HandleTouchDownTest002.
232 * @tc.type: FUNC
233 */
234 HWTEST_F(WebPatternTest, HandleTouchDownTest002, TestSize.Level1)
235 {
236 #ifdef OHOS_STANDARD_SYSTEM
237 int32_t fingerId = 0;
238 g_webPattern->OnModifyDone();
239 int32_t width = 1;
240 int32_t height = 1;
241 double keyboard = 1;
242 g_webPattern->isFocus_ = true;
243 g_webPattern->isVirtualKeyBoardShow_ = WebPattern::VkState::VK_HIDE;
244 auto drawSize = Size(CONTRNT_WIDTH_SIZE, CONTRNT_HEIGHT_SIZE);
245 g_webPattern->drawSizeCache_ = drawSize;
246 bool result = g_webPattern->ProcessVirtualKeyBoard(width, height, keyboard);
247 EXPECT_TRUE(result);
248 TouchLocationInfo info("webtest", fingerId);
249 TouchEventInfo event("webtest");
250 g_webPattern->HandleTouchUp(event, true);
251 g_webPattern->HandleTouchDown(event, true);
252 g_webPattern->HandleTouchMove(event, true);
253 g_webPattern->isDragging_ = true;
254 g_webPattern->HandleTouchMove(event, true);
255
256 event.AddTouchLocationInfo(std::move(info));
257 g_webPattern->HandleTouchUp(event, true);
258 g_webPattern->HandleTouchDown(event, true);
259 g_webPattern->HandleTouchMove(event, true);
260 g_webPattern->HandleTouchCancel(event);
261 g_webPattern->RequestFullScreen();
262 g_webPattern->ExitFullScreen();
263 g_webPattern->isFullScreen_ = true;
264 g_webPattern->ExitFullScreen();
265 #endif
266 }
267
268 /**
269 * @tc.name: IsTouchHandleValid003
270 * @tc.desc: Test IsTouchHandleValid.
271 * @tc.type: FUNC
272 */
273 HWTEST_F(WebPatternTest, IsTouchHandleValid003, TestSize.Level1)
274 {
275 #ifdef OHOS_STANDARD_SYSTEM
276 std::shared_ptr<OHOS::NWeb::NWebTouchHandleState> handle = nullptr;
277 bool result = g_webPattern->IsTouchHandleValid(handle);
278 EXPECT_FALSE(result);
279 result = g_webPattern->IsTouchHandleShow(handle);
280 EXPECT_FALSE(result);
281 handle = std::make_shared<NWebTouchHandleStateMock>();
282 result = g_webPattern->IsTouchHandleValid(handle);
283 EXPECT_FALSE(result);
284 g_isEnable = true;
285 result = g_webPattern->IsTouchHandleValid(handle);
286 EXPECT_TRUE(result);
287
288 result = g_webPattern->IsTouchHandleShow(handle);
289 EXPECT_FALSE(result);
290 g_alpha = 1;
291 result = g_webPattern->IsTouchHandleShow(handle);
292 EXPECT_FALSE(result);
293 g_Y = 0;
294 g_height = 1;
295 result = g_webPattern->IsTouchHandleShow(handle);
296 EXPECT_FALSE(result);
297 #endif
298 }
299
300 /**
301 * @tc.name: GetTouchHandleOverlayTypeTest004
302 * @tc.desc: Test GetTouchHandleOverlayType.
303 * @tc.type: FUNC
304 */
305
306 HWTEST_F(WebPatternTest, GetTouchHandleOverlayTypeTest004, TestSize.Level1)
307 {
308 #ifdef OHOS_STANDARD_SYSTEM
309 std::shared_ptr<NWebQuickMenuParams> params = std::make_shared<NWebQuickMenuParamsMock>();
310 std::shared_ptr<NWebQuickMenuCallback> callback = std::make_shared<NWebQuickMenuCallbackMock>();
311 bool result = g_webPattern->RunQuickMenu(params, callback);
312 EXPECT_FALSE(result);
313
314 g_insertHandle = std::make_shared<NWebTouchHandleStateMock>();
315 result = g_webPattern->RunQuickMenu(params, callback);
316 EXPECT_FALSE(result);
317
318 g_endSelectionHandle = std::make_shared<NWebTouchHandleStateMock>();
319 result = g_webPattern->RunQuickMenu(params, callback);
320 EXPECT_FALSE(result);
321
322 g_startSelectionHandle = std::make_shared<NWebTouchHandleStateMock>();
323 result = g_webPattern->RunQuickMenu(params, callback);
324 EXPECT_FALSE(result);
325
326 int32_t selectOverlayId = 1;
327 g_webPattern->selectOverlayProxy_ = new SelectOverlayProxy(selectOverlayId);
328 result = g_webPattern->RunQuickMenu(params, callback);
329 EXPECT_FALSE(result);
330 g_webPattern->selectOverlayProxy_->Close();
331 g_webPattern->selectOverlayProxy_ = nullptr;
332
333 g_insertHandle.reset();
334 g_insertHandle = nullptr;
335 result = g_webPattern->RunQuickMenu(params, callback);
336 EXPECT_FALSE(result);
337
338 g_endSelectionHandle.reset();
339 g_endSelectionHandle = nullptr;
340 result = g_webPattern->RunQuickMenu(params, callback);
341 EXPECT_FALSE(result);
342 #endif
343 }
344
345 /**
346 * @tc.name: RegisterSelectOverlayCallbackTest005
347 * @tc.desc: Test RegisterSelectOverlayCallback.
348 * @tc.type: FUNC
349 */
350 HWTEST_F(WebPatternTest, RegisterSelectOverlayCallbackTest005, TestSize.Level1)
351 {
352 #ifdef OHOS_STANDARD_SYSTEM
353 g_webPattern->GetCoordinatePoint();
354 std::shared_ptr<NWebTouchHandleState> touchHandle = std::make_shared<NWebTouchHandleStateMock>();
355 g_webPattern->ComputeTouchHandleRect(touchHandle);
356 g_Y = -1;
357 g_webPattern->ComputeTouchHandleRect(touchHandle);
358
359 std::shared_ptr<NWebQuickMenuParams> params = std::make_shared<NWebQuickMenuParamsMock>();
360 std::shared_ptr<NWebQuickMenuCallback> callback = std::make_shared<NWebQuickMenuCallbackMock>();
361 SelectOverlayInfo selectInfo;
362 g_webPattern->RegisterSelectOverlayCallback(selectInfo, params, callback);
363 g_editStateFlags = EF_CAN_CUT;
364 g_webPattern->RegisterSelectOverlayCallback(selectInfo, params, callback);
365 g_editStateFlags = EF_CAN_COPY;
366 g_webPattern->RegisterSelectOverlayCallback(selectInfo, params, callback);
367 g_editStateFlags = EF_CAN_PASTE;
368 g_webPattern->RegisterSelectOverlayCallback(selectInfo, params, callback);
369 g_editStateFlags = EF_CAN_SELECT_ALL;
370 g_webPattern->RegisterSelectOverlayCallback(selectInfo, params, callback);
371 #endif
372 }
373
374 /**
375 * @tc.name: OnTouchSelectionChangedTest006
376 * @tc.desc: Test OnTouchSelectionChanged.
377 * @tc.type: FUNC
378 */
379 HWTEST_F(WebPatternTest, OnTouchSelectionChangedTest006, TestSize.Level1)
380 {
381 #ifdef OHOS_STANDARD_SYSTEM
382 g_webPattern->OnTouchSelectionChanged(g_insertHandle, g_startSelectionHandle, g_endSelectionHandle);
383 g_endSelectionHandle = std::make_shared<NWebTouchHandleStateMock>();
384 g_webPattern->OnTouchSelectionChanged(g_insertHandle, g_startSelectionHandle, g_endSelectionHandle);
385
386 g_insertHandle = std::make_shared<NWebTouchHandleStateMock>();
387 g_startSelectionHandle.reset();
388 g_startSelectionHandle = nullptr;
389 g_endSelectionHandle.reset();
390 g_endSelectionHandle = nullptr;
391 g_webPattern->OnTouchSelectionChanged(g_insertHandle, g_startSelectionHandle, g_endSelectionHandle);
392 g_webPattern->OnTouchSelectionChanged(g_insertHandle, g_startSelectionHandle, g_endSelectionHandle);
393 g_insertHandle.reset();
394 g_insertHandle = nullptr;
395 g_endSelectionHandle = std::make_shared<NWebTouchHandleStateMock>();
396 g_startSelectionHandle = std::make_shared<NWebTouchHandleStateMock>();
397 g_webPattern->OnTouchSelectionChanged(g_insertHandle, g_startSelectionHandle, g_endSelectionHandle);
398 #endif
399 }
400
401 /**
402 * @tc.name: UpdateTouchHandleForOverlayTest007
403 * @tc.desc: Test UpdateTouchHandleForOverlay.
404 * @tc.type: FUNC
405 */
406 HWTEST_F(WebPatternTest, UpdateTouchHandleForOverlayTest007, TestSize.Level1)
407 {
408 #ifdef OHOS_STANDARD_SYSTEM
409 g_webPattern->insertHandle_ = std::make_shared<NWebTouchHandleStateMock>();
410 g_webPattern->startSelectionHandle_.reset();
411 g_webPattern->endSelectionHandle_.reset();
412 g_webPattern->UpdateTouchHandleForOverlay();
413
414 int32_t selectOverlayId = 1;
415 g_webPattern->selectOverlayProxy_ = new SelectOverlayProxy(selectOverlayId);
416 g_webPattern->UpdateTouchHandleForOverlay();
417 g_webPattern->insertHandle_.reset();
418 g_webPattern->startSelectionHandle_ = std::make_shared<NWebTouchHandleStateMock>();
419 g_webPattern->endSelectionHandle_ = std::make_shared<NWebTouchHandleStateMock>();
420 g_webPattern->UpdateTouchHandleForOverlay();
421
422 g_webPattern->startSelectionHandle_.reset();
423 g_webPattern->endSelectionHandle_.reset();
424 g_webPattern->UpdateTouchHandleForOverlay();
425 g_webPattern->UpdateLocale();
426 #endif
427 }
428
429 /**
430 * @tc.name: OnOverviewUpdateTest008
431 * @tc.desc: Test OnOverviewModeAccessEnabledUpdate.
432 * @tc.type: FUNC
433 */
434 HWTEST_F(WebPatternTest, OnOverviewUpdateTest008, TestSize.Level1)
435 {
436 #ifdef OHOS_STANDARD_SYSTEM
437 g_webPattern->OnModifyDone();
438 int32_t value = 0;
439 float scale = 0;
440 int x = 0;
441 int y = 0;
442 EXPECT_NE(g_webPattern->delegate_, nullptr);
443 g_webPattern->OnPinchSmoothModeEnabledUpdate(true);
444 g_webPattern->OnWebDebuggingAccessEnabledUpdate(true);
445 g_webPattern->OnTextZoomRatioUpdate(value);
446 g_webPattern->OnDatabaseAccessEnabledUpdate(true);
447 g_webPattern->OnFileFromUrlAccessEnabledUpdate(true);
448 g_webPattern->OnOverviewModeAccessEnabledUpdate(true);
449 g_webPattern->OnBackgroundColorUpdate(value);
450 g_webPattern->OnInitialScaleUpdate(scale);
451 g_webPattern->OnMultiWindowAccessEnabledUpdate(true);
452 g_webPattern->HandleDragStart(x, y);
453 g_webPattern->isW3cDragEvent_ = true;
454 DragDropInfo dragDropInfo;
455 bool result = g_webPattern->GenerateDragDropInfo(dragDropInfo);
456 EXPECT_FALSE(result);
457 g_webPattern->delegate_->pixelMap_ = nullptr;
458 result = g_webPattern->GenerateDragDropInfo(dragDropInfo);
459 EXPECT_FALSE(result);
460 RefPtr<WebController> controller = AceType::MakeRefPtr<WebController>();
461 RefPtr<WebPattern> webPattern = AceType::MakeRefPtr<WebPattern>("test", controller);
462 EXPECT_NE(webPattern, nullptr);
463 webPattern->OnPinchSmoothModeEnabledUpdate(true);
464 webPattern->OnWebDebuggingAccessEnabledUpdate(true);
465 webPattern->OnTextZoomRatioUpdate(value);
466 webPattern->OnDatabaseAccessEnabledUpdate(true);
467 webPattern->OnFileFromUrlAccessEnabledUpdate(true);
468 webPattern->OnOverviewModeAccessEnabledUpdate(true);
469 webPattern->OnBackgroundColorUpdate(value);
470 webPattern->OnInitialScaleUpdate(scale);
471 webPattern->OnMultiWindowAccessEnabledUpdate(true);
472 webPattern->isW3cDragEvent_ = false;
473 result = webPattern->GenerateDragDropInfo(dragDropInfo);
474 EXPECT_FALSE(result);
475 g_webPattern->RegistVirtualKeyBoardListener();
476 g_webPattern->needUpdateWeb_ = false;
477 g_webPattern->RegistVirtualKeyBoardListener();
478 g_webPattern->OnQuickMenuDismissed();
479 #endif
480 }
481
482 /**
483 * @tc.name: HandleDoubleClickEventTest009
484 * @tc.desc: Test HandleDoubleClickEvent.
485 * @tc.type: FUNC
486 */
487 HWTEST_F(WebPatternTest, HandleDoubleClickEventTest009, TestSize.Level1)
488 {
489 #ifdef OHOS_STANDARD_SYSTEM
490 MouseInfo info;
491 info.SetButton(MouseButton::LEFT_BUTTON);
492 info.SetAction(MouseAction::NONE);
493 std::queue<MouseClickInfo> empty;
494 swap(empty, g_webPattern->doubleClickQueue_);
495 g_webPattern->HandleDoubleClickEvent(info);
496 g_webPattern->HandleDoubleClickEvent(info);
497 #endif
498 }
499
500 /**
501 * @tc.name: HandleDragUpdateTest010
502 * @tc.desc: Test HandleDragUpdate.
503 * @tc.type: FUNC
504 */
505 HWTEST_F(WebPatternTest, HandleDragUpdateTest010, TestSize.Level1)
506 {
507 #ifdef OHOS_STANDARD_SYSTEM
508 g_webPattern->OnModifyDone();
509 GestureEvent info;
510 int x = 0;
511 int y = 0;
512 g_webPattern->isW3cDragEvent_ = false;
513 g_webPattern->HandleDragCancel();
514 g_webPattern->HandleDragEnd(x, y);
515 g_webPattern->isW3cDragEvent_ = true;
516 g_webPattern->HandleDragCancel();
517 g_webPattern->HandleDragEnd(x, y);
518 g_webPattern->needUpdateWeb_ = false;
519 g_webPattern->RegistVirtualKeyBoardListener();
520
521 RefPtr<WebController> controller = AceType::MakeRefPtr<WebController>();
522 RefPtr<WebPattern> webPattern = AceType::MakeRefPtr<WebPattern>("test", controller);
523 EXPECT_NE(webPattern, nullptr);
524 webPattern->isW3cDragEvent_ = true;
525 webPattern->HandleDragEnd(x, y);
526 g_webPattern->HandleDragCancel();
527 webPattern->isW3cDragEvent_ = false;
528 webPattern->HandleDragEnd(x, y);
529 g_webPattern->HandleDragCancel();
530 #endif
531 }
532
533 /**
534 * @tc.name: OnWindowShowTest011
535 * @tc.desc: Test OnWindowShow.
536 * @tc.type: FUNC
537 */
538 HWTEST_F(WebPatternTest, OnWindowShowTest011, TestSize.Level1)
539 {
540 #ifdef OHOS_STANDARD_SYSTEM
541 g_webPattern->OnModifyDone();
542 g_webPattern->isWindowShow_ = true;
543 g_webPattern->OnWindowShow();
544 g_webPattern->OnWindowHide();
545 g_webPattern->isWindowShow_ = false;
546 g_webPattern->OnWindowHide();
547 g_webPattern->OnWindowShow();
548
549 g_webPattern->isActive_ = true;
550 g_webPattern->OnActive();
551 g_webPattern->OnInActive();
552 g_webPattern->isActive_ = false;
553 g_webPattern->OnInActive();
554 g_webPattern->OnActive();
555
556 g_webPattern->OnVisibleChange(false);
557 g_webPattern->OnVisibleChange(true);
558 #endif
559 }
560 } // namespace OHOS::Ace::NG