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