• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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