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 
GetIsLongPressActived()163     bool GetIsLongPressActived() override
164     {
165         return false;
166     }
167 };
168 
169 class NWebQuickMenuCallbackMock : public NWebQuickMenuCallback {
170 public:
Continue(int32_t commandId,MenuEventFlags flag)171     void Continue(int32_t commandId, MenuEventFlags flag) {}
172 
Cancel()173     void Cancel() {}
174 };
175 #endif
176 
177 /**
178  * @tc.name: OnModifyDoneTest001
179  * @tc.desc: Test OnModifyDone.
180  * @tc.type: FUNC
181  */
182 HWTEST_F(WebPatternTest, OnModifyDoneTest001, TestSize.Level1)
183 {
184 #ifdef OHOS_STANDARD_SYSTEM
185     g_webPattern->OnModifyDone();
186     int32_t width = 1;
187     int32_t height = 1;
188     double keyboard = 0;
189     g_webPattern->isFocus_ = false;
190     bool result = g_webPattern->ProcessVirtualKeyBoard(width, height, keyboard);
191     EXPECT_FALSE(result);
192     g_webPattern->isVirtualKeyBoardShow_ = WebPattern::VkState::VK_SHOW;
193     result = g_webPattern->ProcessVirtualKeyBoard(width, height, keyboard);
194     EXPECT_FALSE(result);
195     g_webPattern->isFocus_ = true;
196     result = g_webPattern->ProcessVirtualKeyBoard(width, height, keyboard);
197     EXPECT_FALSE(result);
198     keyboard = 1;
199     result = g_webPattern->ProcessVirtualKeyBoard(width, height, keyboard);
200     EXPECT_TRUE(result);
201     g_webPattern->isVirtualKeyBoardShow_ = WebPattern::VkState::VK_HIDE;
202     result = g_webPattern->ProcessVirtualKeyBoard(width, height, keyboard);
203     EXPECT_TRUE(result);
204     g_webPattern->UpdateWebLayoutSize(width, height, false);
205     TouchEventInfo info("test");
206     info.changedTouches_.clear();
207     g_webPattern->touchEvent_->callback_(info);
208     TouchLocationInfo touch(1);
209     info.changedTouches_.emplace_back(touch);
210     g_webPattern->touchEvent_->callback_(info);
211     info.SetSourceDevice(SourceType::NONE);
212     g_webPattern->touchEvent_->callback_(info);
213     info.SetSourceDevice(SourceType::TOUCH);
214     g_webPattern->touchEvent_->callback_(info);
215     touch.SetTouchType(TouchType::DOWN);
216     info.changedTouches_.clear();
217     info.changedTouches_.emplace_back(touch);
218     g_webPattern->touchEvent_->callback_(info);
219     touch.SetTouchType(TouchType::MOVE);
220     info.changedTouches_.clear();
221     info.changedTouches_.emplace_back(touch);
222     g_webPattern->touchEvent_->callback_(info);
223     touch.SetTouchType(TouchType::UP);
224     info.changedTouches_.clear();
225     info.changedTouches_.emplace_back(touch);
226     g_webPattern->touchEvent_->callback_(info);
227     touch.SetTouchType(TouchType::CANCEL);
228     info.changedTouches_.clear();
229     info.changedTouches_.emplace_back(touch);
230     g_webPattern->touchEvent_->callback_(info);
231 #endif
232 }
233 
234 /**
235  * @tc.name: HandleTouchDownTest002
236  * @tc.desc: Test HandleTouchDownTest002.
237  * @tc.type: FUNC
238  */
239 HWTEST_F(WebPatternTest, HandleTouchDownTest002, TestSize.Level1)
240 {
241 #ifdef OHOS_STANDARD_SYSTEM
242     int32_t fingerId = 0;
243     g_webPattern->OnModifyDone();
244     int32_t width = 1;
245     int32_t height = 1;
246     double keyboard = 1;
247     g_webPattern->isFocus_ = true;
248     g_webPattern->isVirtualKeyBoardShow_ = WebPattern::VkState::VK_HIDE;
249     auto drawSize = Size(CONTRNT_WIDTH_SIZE, CONTRNT_HEIGHT_SIZE);
250     g_webPattern->drawSizeCache_ = drawSize;
251     bool result = g_webPattern->ProcessVirtualKeyBoard(width, height, keyboard);
252     EXPECT_TRUE(result);
253     TouchLocationInfo info("webtest", fingerId);
254     TouchEventInfo event("webtest");
255     g_webPattern->HandleTouchUp(event, true);
256     g_webPattern->HandleTouchDown(event, true);
257     g_webPattern->HandleTouchMove(event, true);
258     g_webPattern->isDragging_ = true;
259     g_webPattern->HandleTouchMove(event, true);
260 
261     event.AddTouchLocationInfo(std::move(info));
262     g_webPattern->HandleTouchUp(event, true);
263     g_webPattern->HandleTouchDown(event, true);
264     g_webPattern->HandleTouchMove(event, true);
265     g_webPattern->HandleTouchCancel(event);
266     g_webPattern->RequestFullScreen();
267     g_webPattern->ExitFullScreen();
268     g_webPattern->isFullScreen_ = true;
269     g_webPattern->ExitFullScreen();
270 #endif
271 }
272 
273 /**
274  * @tc.name: IsTouchHandleValid003
275  * @tc.desc: Test IsTouchHandleValid.
276  * @tc.type: FUNC
277  */
278 HWTEST_F(WebPatternTest, IsTouchHandleValid003, TestSize.Level1)
279 {
280 #ifdef OHOS_STANDARD_SYSTEM
281     std::shared_ptr<OHOS::NWeb::NWebTouchHandleState> handle = nullptr;
282     bool result = g_webPattern->IsTouchHandleValid(handle);
283     EXPECT_FALSE(result);
284     result = g_webPattern->IsTouchHandleShow(handle);
285     EXPECT_FALSE(result);
286     handle = std::make_shared<NWebTouchHandleStateMock>();
287     result = g_webPattern->IsTouchHandleValid(handle);
288     EXPECT_FALSE(result);
289     g_isEnable = true;
290     result = g_webPattern->IsTouchHandleValid(handle);
291     EXPECT_TRUE(result);
292 
293     result = g_webPattern->IsTouchHandleShow(handle);
294     EXPECT_FALSE(result);
295     g_alpha = 1;
296     result = g_webPattern->IsTouchHandleShow(handle);
297     EXPECT_FALSE(result);
298     g_Y = 0;
299     g_height = 1;
300     result = g_webPattern->IsTouchHandleShow(handle);
301     EXPECT_FALSE(result);
302 #endif
303 }
304 
305 /**
306  * @tc.name: GetTouchHandleOverlayTypeTest004
307  * @tc.desc: Test GetTouchHandleOverlayType.
308  * @tc.type: FUNC
309  */
310 
311 HWTEST_F(WebPatternTest, GetTouchHandleOverlayTypeTest004, TestSize.Level1)
312 {
313 #ifdef OHOS_STANDARD_SYSTEM
314     std::shared_ptr<NWebQuickMenuParams> params = std::make_shared<NWebQuickMenuParamsMock>();
315     std::shared_ptr<NWebQuickMenuCallback> callback = std::make_shared<NWebQuickMenuCallbackMock>();
316     bool result = g_webPattern->RunQuickMenu(params, callback);
317     EXPECT_FALSE(result);
318 
319     g_insertHandle = std::make_shared<NWebTouchHandleStateMock>();
320     result = g_webPattern->RunQuickMenu(params, callback);
321     EXPECT_FALSE(result);
322 
323     g_endSelectionHandle = std::make_shared<NWebTouchHandleStateMock>();
324     result = g_webPattern->RunQuickMenu(params, callback);
325     EXPECT_FALSE(result);
326 
327     g_startSelectionHandle = std::make_shared<NWebTouchHandleStateMock>();
328     result = g_webPattern->RunQuickMenu(params, callback);
329     EXPECT_FALSE(result);
330 
331     int32_t selectOverlayId = 1;
332     g_webPattern->selectOverlayProxy_ = new SelectOverlayProxy(selectOverlayId);
333     result = g_webPattern->RunQuickMenu(params, callback);
334     EXPECT_FALSE(result);
335     g_webPattern->selectOverlayProxy_->Close();
336     g_webPattern->selectOverlayProxy_ = nullptr;
337 
338     g_insertHandle.reset();
339     g_insertHandle = nullptr;
340     result = g_webPattern->RunQuickMenu(params, callback);
341     EXPECT_FALSE(result);
342 
343     g_endSelectionHandle.reset();
344     g_endSelectionHandle = nullptr;
345     result = g_webPattern->RunQuickMenu(params, callback);
346     EXPECT_FALSE(result);
347 #endif
348 }
349 
350 /**
351  * @tc.name: RegisterSelectOverlayCallbackTest005
352  * @tc.desc: Test RegisterSelectOverlayCallback.
353  * @tc.type: FUNC
354  */
355 HWTEST_F(WebPatternTest, RegisterSelectOverlayCallbackTest005, TestSize.Level1)
356 {
357 #ifdef OHOS_STANDARD_SYSTEM
358     g_webPattern->GetCoordinatePoint();
359     std::shared_ptr<NWebTouchHandleState> touchHandle = std::make_shared<NWebTouchHandleStateMock>();
360     g_webPattern->ComputeTouchHandleRect(touchHandle);
361     g_Y = -1;
362     g_webPattern->ComputeTouchHandleRect(touchHandle);
363 
364     std::shared_ptr<NWebQuickMenuParams> params = std::make_shared<NWebQuickMenuParamsMock>();
365     std::shared_ptr<NWebQuickMenuCallback> callback = std::make_shared<NWebQuickMenuCallbackMock>();
366     SelectOverlayInfo selectInfo;
367     g_webPattern->RegisterSelectOverlayCallback(selectInfo, params, callback);
368     g_editStateFlags = EF_CAN_CUT;
369     g_webPattern->RegisterSelectOverlayCallback(selectInfo, params, callback);
370     g_editStateFlags = EF_CAN_COPY;
371     g_webPattern->RegisterSelectOverlayCallback(selectInfo, params, callback);
372     g_editStateFlags = EF_CAN_PASTE;
373     g_webPattern->RegisterSelectOverlayCallback(selectInfo, params, callback);
374     g_editStateFlags = EF_CAN_SELECT_ALL;
375     g_webPattern->RegisterSelectOverlayCallback(selectInfo, params, callback);
376 #endif
377 }
378 
379 /**
380  * @tc.name: OnTouchSelectionChangedTest006
381  * @tc.desc: Test OnTouchSelectionChanged.
382  * @tc.type: FUNC
383  */
384 HWTEST_F(WebPatternTest, OnTouchSelectionChangedTest006, TestSize.Level1)
385 {
386 #ifdef OHOS_STANDARD_SYSTEM
387     g_webPattern->OnTouchSelectionChanged(g_insertHandle, g_startSelectionHandle, g_endSelectionHandle);
388     g_endSelectionHandle = std::make_shared<NWebTouchHandleStateMock>();
389     g_webPattern->OnTouchSelectionChanged(g_insertHandle, g_startSelectionHandle, g_endSelectionHandle);
390 
391     g_insertHandle = std::make_shared<NWebTouchHandleStateMock>();
392     g_startSelectionHandle.reset();
393     g_startSelectionHandle = nullptr;
394     g_endSelectionHandle.reset();
395     g_endSelectionHandle = nullptr;
396     g_webPattern->OnTouchSelectionChanged(g_insertHandle, g_startSelectionHandle, g_endSelectionHandle);
397     g_webPattern->OnTouchSelectionChanged(g_insertHandle, g_startSelectionHandle, g_endSelectionHandle);
398     g_insertHandle.reset();
399     g_insertHandle = nullptr;
400     g_endSelectionHandle = std::make_shared<NWebTouchHandleStateMock>();
401     g_startSelectionHandle = std::make_shared<NWebTouchHandleStateMock>();
402     g_webPattern->OnTouchSelectionChanged(g_insertHandle, g_startSelectionHandle, g_endSelectionHandle);
403 #endif
404 }
405 
406 /**
407  * @tc.name: UpdateTouchHandleForOverlayTest007
408  * @tc.desc: Test UpdateTouchHandleForOverlay.
409  * @tc.type: FUNC
410  */
411 HWTEST_F(WebPatternTest, UpdateTouchHandleForOverlayTest007, TestSize.Level1)
412 {
413 #ifdef OHOS_STANDARD_SYSTEM
414     g_webPattern->insertHandle_ = std::make_shared<NWebTouchHandleStateMock>();
415     g_webPattern->startSelectionHandle_.reset();
416     g_webPattern->endSelectionHandle_.reset();
417     g_webPattern->UpdateTouchHandleForOverlay();
418 
419     int32_t selectOverlayId = 1;
420     g_webPattern->selectOverlayProxy_ = new SelectOverlayProxy(selectOverlayId);
421     g_webPattern->UpdateTouchHandleForOverlay();
422     g_webPattern->insertHandle_.reset();
423     g_webPattern->startSelectionHandle_ = std::make_shared<NWebTouchHandleStateMock>();
424     g_webPattern->endSelectionHandle_ = std::make_shared<NWebTouchHandleStateMock>();
425     g_webPattern->UpdateTouchHandleForOverlay();
426 
427     g_webPattern->startSelectionHandle_.reset();
428     g_webPattern->endSelectionHandle_.reset();
429     g_webPattern->UpdateTouchHandleForOverlay();
430     g_webPattern->UpdateLocale();
431 #endif
432 }
433 
434 /**
435  * @tc.name: OnOverviewUpdateTest008
436  * @tc.desc: Test OnOverviewModeAccessEnabledUpdate.
437  * @tc.type: FUNC
438  */
439 HWTEST_F(WebPatternTest, OnOverviewUpdateTest008, TestSize.Level1)
440 {
441 #ifdef OHOS_STANDARD_SYSTEM
442     g_webPattern->OnModifyDone();
443     int32_t value = 0;
444     float scale = 0;
445     int x = 0;
446     int y = 0;
447     EXPECT_NE(g_webPattern->delegate_, nullptr);
448     g_webPattern->OnPinchSmoothModeEnabledUpdate(true);
449     g_webPattern->OnWebDebuggingAccessEnabledUpdate(true);
450     g_webPattern->OnTextZoomRatioUpdate(value);
451     g_webPattern->OnDatabaseAccessEnabledUpdate(true);
452     g_webPattern->OnFileFromUrlAccessEnabledUpdate(true);
453     g_webPattern->OnOverviewModeAccessEnabledUpdate(true);
454     g_webPattern->OnBackgroundColorUpdate(value);
455     g_webPattern->OnInitialScaleUpdate(scale);
456     g_webPattern->OnMultiWindowAccessEnabledUpdate(true);
457     g_webPattern->HandleDragStart(x, y);
458     g_webPattern->isW3cDragEvent_ = true;
459     DragDropInfo dragDropInfo;
460     bool result = g_webPattern->GenerateDragDropInfo(dragDropInfo);
461     EXPECT_FALSE(result);
462     g_webPattern->delegate_->pixelMap_ = nullptr;
463     result = g_webPattern->GenerateDragDropInfo(dragDropInfo);
464     EXPECT_FALSE(result);
465     RefPtr<WebController> controller = AceType::MakeRefPtr<WebController>();
466     RefPtr<WebPattern> webPattern = AceType::MakeRefPtr<WebPattern>("test", controller);
467     EXPECT_NE(webPattern, nullptr);
468     webPattern->OnPinchSmoothModeEnabledUpdate(true);
469     webPattern->OnWebDebuggingAccessEnabledUpdate(true);
470     webPattern->OnTextZoomRatioUpdate(value);
471     webPattern->OnDatabaseAccessEnabledUpdate(true);
472     webPattern->OnFileFromUrlAccessEnabledUpdate(true);
473     webPattern->OnOverviewModeAccessEnabledUpdate(true);
474     webPattern->OnBackgroundColorUpdate(value);
475     webPattern->OnInitialScaleUpdate(scale);
476     webPattern->OnMultiWindowAccessEnabledUpdate(true);
477     webPattern->isW3cDragEvent_ = false;
478     result = webPattern->GenerateDragDropInfo(dragDropInfo);
479     EXPECT_FALSE(result);
480     g_webPattern->RegistVirtualKeyBoardListener();
481     g_webPattern->needUpdateWeb_ = false;
482     g_webPattern->RegistVirtualKeyBoardListener();
483     g_webPattern->OnQuickMenuDismissed();
484 #endif
485 }
486 
487 /**
488  * @tc.name: HandleDoubleClickEventTest009
489  * @tc.desc: Test HandleDoubleClickEvent.
490  * @tc.type: FUNC
491  */
492 HWTEST_F(WebPatternTest, HandleDoubleClickEventTest009, TestSize.Level1)
493 {
494 #ifdef OHOS_STANDARD_SYSTEM
495     MouseInfo info;
496     info.SetButton(MouseButton::LEFT_BUTTON);
497     info.SetAction(MouseAction::NONE);
498     std::queue<MouseClickInfo> empty;
499     swap(empty, g_webPattern->doubleClickQueue_);
500     g_webPattern->HandleDoubleClickEvent(info);
501     g_webPattern->HandleDoubleClickEvent(info);
502 #endif
503 }
504 
505 /**
506  * @tc.name: HandleDragUpdateTest010
507  * @tc.desc: Test HandleDragUpdate.
508  * @tc.type: FUNC
509  */
510 HWTEST_F(WebPatternTest, HandleDragUpdateTest010, TestSize.Level1)
511 {
512 #ifdef OHOS_STANDARD_SYSTEM
513     g_webPattern->OnModifyDone();
514     GestureEvent info;
515     int x = 0;
516     int y = 0;
517     g_webPattern->isW3cDragEvent_ = false;
518     g_webPattern->HandleDragCancel();
519     g_webPattern->HandleDragEnd(x, y);
520     g_webPattern->isW3cDragEvent_ = true;
521     g_webPattern->HandleDragCancel();
522     g_webPattern->HandleDragEnd(x, y);
523     g_webPattern->needUpdateWeb_ = false;
524     g_webPattern->RegistVirtualKeyBoardListener();
525 
526     RefPtr<WebController> controller = AceType::MakeRefPtr<WebController>();
527     RefPtr<WebPattern> webPattern = AceType::MakeRefPtr<WebPattern>("test", controller);
528     EXPECT_NE(webPattern, nullptr);
529     webPattern->isW3cDragEvent_ = true;
530     webPattern->HandleDragEnd(x, y);
531     g_webPattern->HandleDragCancel();
532     webPattern->isW3cDragEvent_ = false;
533     webPattern->HandleDragEnd(x, y);
534     g_webPattern->HandleDragCancel();
535 #endif
536 }
537 
538 /**
539  * @tc.name: OnWindowShowTest011
540  * @tc.desc: Test OnWindowShow.
541  * @tc.type: FUNC
542  */
543 HWTEST_F(WebPatternTest, OnWindowShowTest011, TestSize.Level1)
544 {
545 #ifdef OHOS_STANDARD_SYSTEM
546     g_webPattern->OnModifyDone();
547     g_webPattern->isWindowShow_ = true;
548     g_webPattern->OnWindowShow();
549     g_webPattern->OnWindowHide();
550     g_webPattern->isWindowShow_ = false;
551     g_webPattern->OnWindowHide();
552     g_webPattern->OnWindowShow();
553 
554     g_webPattern->isActive_ = true;
555     g_webPattern->OnActive();
556     g_webPattern->OnInActive();
557     g_webPattern->isActive_ = false;
558     g_webPattern->OnInActive();
559     g_webPattern->OnActive();
560 
561     g_webPattern->OnVisibleChange(false);
562     g_webPattern->OnVisibleChange(true);
563 #endif
564 }
565 } // namespace OHOS::Ace::NG