• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023-2024 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 "core/components_ng/pattern/web/web_model_ng.h"
17 
18 #include "base/utils/utils.h"
19 #include "core/components_ng/base/node_flag.h"
20 #include "core/components_ng/base/view_abstract.h"
21 #include "core/components_ng/base/view_abstract_model_ng.h"
22 #include "core/components_ng/base/view_stack_processor.h"
23 #include "core/components_ng/pattern/web/web_event_hub.h"
24 #if !defined(ANDROID_PLATFORM) && !defined(IOS_PLATFORM)
25 #include "core/components_ng/pattern/web/web_pattern.h"
26 #else
27 #include "core/components_ng/pattern/web/cross_platform/web_pattern.h"
28 #endif
29 #include "core/components_v2/inspector/inspector_constants.h"
30 #include "core/pipeline_ng/pipeline_context.h"
31 #if !defined(ANDROID_PLATFORM) && !defined(IOS_PLATFORM)
32 #include "nweb_helper.h"
33 #endif
34 
35 namespace OHOS::Ace::NG {
Create(const std::string & src,const RefPtr<WebController> & webController,RenderMode renderMode,bool incognitoMode,const std::string & sharedRenderProcessToken)36 void WebModelNG::Create(const std::string& src, const RefPtr<WebController>& webController, RenderMode renderMode,
37     bool incognitoMode, const std::string& sharedRenderProcessToken)
38 {
39     auto* stack = ViewStackProcessor::GetInstance();
40     auto nodeId = stack->ClaimNodeId();
41     ACE_LAYOUT_SCOPED_TRACE("Create[%s][self:%d]", V2::WEB_ETS_TAG, nodeId);
42     auto frameNode = FrameNode::GetOrCreateFrameNode(
43         V2::WEB_ETS_TAG, nodeId, [src, webController, renderMode, incognitoMode, sharedRenderProcessToken]() {
44             return AceType::MakeRefPtr<WebPattern>(
45                 src, webController, renderMode, incognitoMode, sharedRenderProcessToken);
46         });
47     frameNode->AddFlag(NodeFlag::WEB_TAG);
48     stack->Push(frameNode);
49 
50     auto webPattern = frameNode->GetPattern<WebPattern>();
51     CHECK_NULL_VOID(webPattern);
52     webPattern->SetNestedScrollExt(NestedScrollOptionsExt({
53             .scrollUp = NestedScrollMode::SELF_FIRST,
54             .scrollDown = NestedScrollMode::SELF_FIRST,
55             .scrollLeft = NestedScrollMode::SELF_FIRST,
56             .scrollRight = NestedScrollMode::SELF_FIRST,
57         }));
58     webPattern->SetWebSrc(src);
59     webPattern->SetWebController(webController);
60     webPattern->SetRenderMode(renderMode);
61     webPattern->SetIncognitoMode(incognitoMode);
62     webPattern->SetSharedRenderProcessToken(sharedRenderProcessToken);
63 }
64 
Create(const std::string & src,std::function<void (int32_t)> && setWebIdCallback,std::function<void (const std::string &)> && setHapPathCallback,int32_t parentWebId,bool popup,RenderMode renderMode,bool incognitoMode,const std::string & sharedRenderProcessToken)65 void WebModelNG::Create(const std::string& src, std::function<void(int32_t)>&& setWebIdCallback,
66     std::function<void(const std::string&)>&& setHapPathCallback, int32_t parentWebId, bool popup,
67     RenderMode renderMode, bool incognitoMode, const std::string& sharedRenderProcessToken)
68 {
69     auto* stack = ViewStackProcessor::GetInstance();
70     auto nodeId = stack->ClaimNodeId();
71     auto frameNode = FrameNode::GetOrCreateFrameNode(
72         V2::WEB_ETS_TAG, nodeId, [src, setWebIdCallback, renderMode, incognitoMode, sharedRenderProcessToken]() {
73             return AceType::MakeRefPtr<WebPattern>(
74                 src, std::move(setWebIdCallback), renderMode, incognitoMode, sharedRenderProcessToken);
75         });
76     frameNode->AddFlag(NodeFlag::WEB_TAG);
77     stack->Push(frameNode);
78     auto webPattern = frameNode->GetPattern<WebPattern>();
79     CHECK_NULL_VOID(webPattern);
80     webPattern->SetNestedScrollExt(NestedScrollOptionsExt({
81             .scrollUp = NestedScrollMode::SELF_FIRST,
82             .scrollDown = NestedScrollMode::SELF_FIRST,
83             .scrollLeft = NestedScrollMode::SELF_FIRST,
84             .scrollRight = NestedScrollMode::SELF_FIRST,
85         }));
86     webPattern->SetWebSrc(src);
87     webPattern->SetPopup(popup);
88     webPattern->SetSetWebIdCallback(std::move(setWebIdCallback));
89     webPattern->SetSetHapPathCallback(std::move(setHapPathCallback));
90     webPattern->SetParentNWebId(parentWebId);
91     webPattern->SetRenderMode(renderMode);
92     webPattern->SetIncognitoMode(incognitoMode);
93     webPattern->SetSharedRenderProcessToken(sharedRenderProcessToken);
94 }
95 
SetCustomScheme(const std::string & cmdLine)96 void WebModelNG::SetCustomScheme(const std::string& cmdLine)
97 {
98     if (!cmdLine.empty()) {
99         auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
100         CHECK_NULL_VOID(webPattern);
101         webPattern->SetCustomScheme(cmdLine);
102     }
103 }
104 
SetOnCommonDialog(std::function<bool (const BaseEventInfo * info)> && jsCallback,int dialogEventType)105 void WebModelNG::SetOnCommonDialog(std::function<bool(const BaseEventInfo* info)>&& jsCallback, int dialogEventType)
106 {
107     auto func = jsCallback;
108     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
109         CHECK_NULL_RETURN(info, false);
110         return func(info.get());
111     };
112     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
113     CHECK_NULL_VOID(webEventHub);
114     webEventHub->SetOnCommonDialogEvent(std::move(uiCallback), static_cast<DialogEventType>(dialogEventType));
115 }
116 
SetOnConsoleLog(std::function<bool (const BaseEventInfo * info)> && jsCallback)117 void WebModelNG::SetOnConsoleLog(std::function<bool(const BaseEventInfo* info)>&& jsCallback)
118 {
119     auto func = jsCallback;
120     auto onConsole = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
121         auto context = PipelineBase::GetCurrentContextSafely();
122         CHECK_NULL_RETURN(context, false);
123         bool result = false;
124         context->PostSyncEvent([func, info, &result]() { result = func(info.get()); }, "ArkUIWebConsoleLogCallback");
125         return result;
126     };
127     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
128     CHECK_NULL_VOID(webEventHub);
129     webEventHub->SetOnConsoleEvent(std::move(onConsole));
130 }
131 
SetOnPageStart(std::function<void (const BaseEventInfo * info)> && jsCallback)132 void WebModelNG::SetOnPageStart(std::function<void(const BaseEventInfo* info)>&& jsCallback)
133 {
134     auto func = jsCallback;
135     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
136         CHECK_NULL_VOID(info);
137         func(info.get());
138     };
139     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
140     CHECK_NULL_VOID(webEventHub);
141     webEventHub->SetOnPageStartedEvent(std::move(uiCallback));
142 }
143 
SetOnPageFinish(std::function<void (const BaseEventInfo * info)> && jsCallback)144 void WebModelNG::SetOnPageFinish(std::function<void(const BaseEventInfo* info)>&& jsCallback)
145 {
146     auto func = jsCallback;
147     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
148         CHECK_NULL_VOID(info);
149         func(info.get());
150     };
151     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
152     CHECK_NULL_VOID(webEventHub);
153     webEventHub->SetOnPageFinishedEvent(std::move(uiCallback));
154 }
155 
SetOnProgressChange(std::function<void (const BaseEventInfo * info)> && jsCallback)156 void WebModelNG::SetOnProgressChange(std::function<void(const BaseEventInfo* info)>&& jsCallback)
157 {
158     auto func = jsCallback;
159     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
160         CHECK_NULL_VOID(info);
161         func(info.get());
162     };
163     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
164     CHECK_NULL_VOID(webEventHub);
165     webEventHub->SetOnProgressChangeEvent(std::move(uiCallback));
166 }
167 
SetOnTitleReceive(std::function<void (const BaseEventInfo * info)> && jsCallback)168 void WebModelNG::SetOnTitleReceive(std::function<void(const BaseEventInfo* info)>&& jsCallback)
169 {
170     auto func = jsCallback;
171     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
172         CHECK_NULL_VOID(info);
173         func(info.get());
174     };
175     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
176     CHECK_NULL_VOID(webEventHub);
177     webEventHub->SetOnTitleReceiveEvent(std::move(uiCallback));
178 }
179 
SetOnFullScreenExit(std::function<void (const BaseEventInfo * info)> && jsCallback)180 void WebModelNG::SetOnFullScreenExit(std::function<void(const BaseEventInfo* info)>&& jsCallback)
181 {
182     auto func = jsCallback;
183     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
184         CHECK_NULL_VOID(info);
185         func(info.get());
186     };
187     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
188     CHECK_NULL_VOID(webEventHub);
189     webEventHub->SetOnFullScreenExitEvent(std::move(uiCallback));
190 }
191 
SetOnFullScreenEnter(std::function<void (const BaseEventInfo * info)> && jsCallback)192 void WebModelNG::SetOnFullScreenEnter(std::function<void(const BaseEventInfo* info)>&& jsCallback)
193 {
194     auto func = jsCallback;
195     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
196         CHECK_NULL_VOID(info);
197         func(info.get());
198     };
199     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
200     CHECK_NULL_VOID(webEventHub);
201     webEventHub->SetOnFullScreenEnterEvent(std::move(uiCallback));
202 }
203 
SetOnGeolocationHide(std::function<void (const BaseEventInfo * info)> && jsCallback)204 void WebModelNG::SetOnGeolocationHide(std::function<void(const BaseEventInfo* info)>&& jsCallback)
205 {
206     auto func = jsCallback;
207     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
208         CHECK_NULL_VOID(info);
209         func(info.get());
210     };
211     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
212     CHECK_NULL_VOID(webEventHub);
213     webEventHub->SetOnGeolocationHideEvent(std::move(uiCallback));
214 }
215 
SetOnGeolocationShow(std::function<void (const BaseEventInfo * info)> && jsCallback)216 void WebModelNG::SetOnGeolocationShow(std::function<void(const BaseEventInfo* info)>&& jsCallback)
217 {
218     auto func = jsCallback;
219     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
220         CHECK_NULL_VOID(info);
221         func(info.get());
222     };
223     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
224     CHECK_NULL_VOID(webEventHub);
225     webEventHub->SetOnGeolocationShowEvent(std::move(uiCallback));
226 }
227 
SetOnRequestFocus(std::function<void (const BaseEventInfo * info)> && jsCallback)228 void WebModelNG::SetOnRequestFocus(std::function<void(const BaseEventInfo* info)>&& jsCallback)
229 {
230     auto func = jsCallback;
231     WeakPtr<NG::FrameNode> weak = AceType::WeakClaim(NG::ViewStackProcessor::GetInstance()->GetMainFrameNode());
232 
233     auto uiCallback = [func, weak](const std::shared_ptr<BaseEventInfo>& info) {
234         auto frameNode = weak.Upgrade();
235         int32_t instanceId = INSTANCE_ID_UNDEFINED;
236         if (frameNode) {
237             instanceId = frameNode->GetInstanceId();
238         } else {
239             instanceId = Container::CurrentIdSafely();
240         }
241         ContainerScope scope(instanceId);
242         auto context = PipelineBase::GetCurrentContext();
243         CHECK_NULL_VOID(context);
244         context->PostAsyncEvent([info, func]() { func(info.get()); }, "ArkUIWebRequestFocusCallback");
245     };
246     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
247     CHECK_NULL_VOID(webEventHub);
248     webEventHub->SetOnRequestFocusEvent(std::move(uiCallback));
249 }
250 
SetOnDownloadStart(std::function<void (const BaseEventInfo * info)> && jsCallback)251 void WebModelNG::SetOnDownloadStart(std::function<void(const BaseEventInfo* info)>&& jsCallback)
252 {
253     auto func = jsCallback;
254     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
255         CHECK_NULL_VOID(info);
256         func(info.get());
257     };
258     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
259     CHECK_NULL_VOID(webEventHub);
260     webEventHub->SetOnDownloadStartEvent(std::move(uiCallback));
261 }
262 
SetOnHttpAuthRequest(std::function<bool (const BaseEventInfo * info)> && jsCallback)263 void WebModelNG::SetOnHttpAuthRequest(std::function<bool(const BaseEventInfo* info)>&& jsCallback)
264 {
265     auto func = jsCallback;
266     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
267         CHECK_NULL_RETURN(info, false);
268         return func(info.get());
269     };
270     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
271     CHECK_NULL_VOID(webEventHub);
272     webEventHub->SetOnHttpAuthRequestEvent(std::move(uiCallback));
273 }
274 
SetOnSslErrorRequest(std::function<bool (const BaseEventInfo * info)> && jsCallback)275 void WebModelNG::SetOnSslErrorRequest(std::function<bool(const BaseEventInfo* info)>&& jsCallback)
276 {
277     auto func = jsCallback;
278     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
279         CHECK_NULL_RETURN(info, false);
280         return func(info.get());
281     };
282     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
283     CHECK_NULL_VOID(webEventHub);
284     webEventHub->SetOnSslErrorRequestEvent(std::move(uiCallback));
285 }
286 
SetOnAllSslErrorRequest(std::function<bool (const BaseEventInfo * info)> && jsCallback)287 void WebModelNG::SetOnAllSslErrorRequest(std::function<bool(const BaseEventInfo* info)>&& jsCallback)
288 {
289     auto func = jsCallback;
290     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
291         CHECK_NULL_RETURN(info, false);
292         return func(info.get());
293     };
294     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
295     CHECK_NULL_VOID(webEventHub);
296     webEventHub->SetOnAllSslErrorRequestEvent(std::move(uiCallback));
297 }
298 
SetOnSslSelectCertRequest(std::function<bool (const BaseEventInfo * info)> && jsCallback)299 void WebModelNG::SetOnSslSelectCertRequest(std::function<bool(const BaseEventInfo* info)>&& jsCallback)
300 {
301     auto func = jsCallback;
302     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
303         CHECK_NULL_RETURN(info, false);
304         return func(info.get());
305     };
306     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
307     CHECK_NULL_VOID(webEventHub);
308     webEventHub->SetOnSslSelectCertRequestEvent(std::move(uiCallback));
309 }
310 
SetMediaPlayGestureAccess(bool isNeedGestureAccess)311 void WebModelNG::SetMediaPlayGestureAccess(bool isNeedGestureAccess)
312 {
313     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
314     CHECK_NULL_VOID(webPattern);
315     webPattern->UpdateMediaPlayGestureAccess(isNeedGestureAccess);
316 }
317 
SetOnKeyEvent(std::function<void (KeyEventInfo & keyEventInfo)> && jsCallback)318 void WebModelNG::SetOnKeyEvent(std::function<void(KeyEventInfo& keyEventInfo)>&& jsCallback)
319 {
320     auto func = jsCallback;
321     WeakPtr<NG::FrameNode> weak = AceType::WeakClaim(NG::ViewStackProcessor::GetInstance()->GetMainFrameNode());
322     auto uiCallback = [func, weak](KeyEventInfo& keyEventInfo) {
323         auto frameNode = weak.Upgrade();
324         int32_t instanceId = INSTANCE_ID_UNDEFINED;
325         if (frameNode) {
326             instanceId = frameNode->GetInstanceId();
327         } else {
328             instanceId = Container::CurrentIdSafely();
329         }
330         ContainerScope scope(instanceId);
331         auto context = PipelineBase::GetCurrentContext();
332         CHECK_NULL_VOID(context);
333         context->PostSyncEvent([&keyEventInfo, func]() { func(keyEventInfo); }, "ArkUIWebKeyEventCallback");
334     };
335     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
336     CHECK_NULL_VOID(webEventHub);
337     webEventHub->SetOnKeyEvent(std::move(uiCallback));
338 }
339 
SetOnErrorReceive(std::function<void (const BaseEventInfo * info)> && jsCallback)340 void WebModelNG::SetOnErrorReceive(std::function<void(const BaseEventInfo* info)>&& jsCallback)
341 {
342     auto func = jsCallback;
343     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
344         CHECK_NULL_VOID(info);
345         func(info.get());
346     };
347     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
348     CHECK_NULL_VOID(webEventHub);
349     webEventHub->SetOnErrorReceiveEvent(std::move(uiCallback));
350 }
351 
SetOnHttpErrorReceive(std::function<void (const BaseEventInfo * info)> && jsCallback)352 void WebModelNG::SetOnHttpErrorReceive(std::function<void(const BaseEventInfo* info)>&& jsCallback)
353 {
354     auto func = jsCallback;
355     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
356         CHECK_NULL_VOID(info);
357         func(info.get());
358     };
359     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
360     CHECK_NULL_VOID(webEventHub);
361     webEventHub->SetOnHttpErrorReceiveEvent(std::move(uiCallback));
362 }
363 
SetOnUrlLoadIntercept(std::function<bool (const BaseEventInfo * info)> && jsCallback)364 void WebModelNG::SetOnUrlLoadIntercept(std::function<bool(const BaseEventInfo* info)>&& jsCallback)
365 {
366     auto func = jsCallback;
367     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
368         CHECK_NULL_RETURN(info, false);
369         return func(info.get());
370     };
371     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
372     CHECK_NULL_VOID(webEventHub);
373     webEventHub->SetOnUrlLoadInterceptEvent(std::move(uiCallback));
374 }
375 
SetOnLoadIntercept(std::function<bool (const BaseEventInfo * info)> && jsCallback)376 void WebModelNG::SetOnLoadIntercept(std::function<bool(const BaseEventInfo* info)>&& jsCallback)
377 {
378     auto func = jsCallback;
379     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
380         CHECK_NULL_RETURN(info, false);
381         return func(info.get());
382     };
383     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
384     CHECK_NULL_VOID(webEventHub);
385     webEventHub->SetOnLoadInterceptEvent(std::move(uiCallback));
386 }
387 
SetOnOverrideUrlLoading(std::function<bool (const BaseEventInfo * info)> && jsCallback)388 void WebModelNG::SetOnOverrideUrlLoading(std::function<bool(const BaseEventInfo* info)>&& jsCallback)
389 {
390     auto func = jsCallback;
391     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
392         CHECK_NULL_RETURN(info, false);
393         return func(info.get());
394     };
395     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
396     CHECK_NULL_VOID(webEventHub);
397     webEventHub->SetOnOverrideUrlLoadingEvent(std::move(uiCallback));
398 }
399 
SetOnInterceptRequest(std::function<RefPtr<WebResponse> (const BaseEventInfo * info)> && jsCallback)400 void WebModelNG::SetOnInterceptRequest(std::function<RefPtr<WebResponse>(const BaseEventInfo* info)>&& jsCallback)
401 {
402     auto func = jsCallback;
403     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> RefPtr<WebResponse> {
404         CHECK_NULL_RETURN(info, nullptr);
405         return func(info.get());
406     };
407     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
408     CHECK_NULL_VOID(webEventHub);
409     webEventHub->SetOnInterceptRequestEvent(std::move(uiCallback));
410 }
411 
SetOnOverrideErrorPage(std::function<std::string (const BaseEventInfo * info)> && jsCallback)412 void WebModelNG::SetOnOverrideErrorPage(std::function<std::string(const BaseEventInfo* info)>&& jsCallback)
413 {
414     auto func = jsCallback;
415     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> std::string {
416         CHECK_NULL_RETURN(info, "");
417         return func(info.get());
418     };
419     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
420     CHECK_NULL_VOID(webEventHub);
421     webEventHub->SetOnOverrideErrorPageEvent(std::move(uiCallback));
422 }
423 
SetOnFileSelectorShow(std::function<bool (const BaseEventInfo * info)> && jsCallback)424 void WebModelNG::SetOnFileSelectorShow(std::function<bool(const BaseEventInfo* info)>&& jsCallback)
425 {
426     auto func = jsCallback;
427     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
428         CHECK_NULL_RETURN(info, false);
429         return func(info.get());
430     };
431     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
432     CHECK_NULL_VOID(webEventHub);
433     webEventHub->SetOnFileSelectorShowEvent(std::move(uiCallback));
434 }
435 
SetOnContextMenuShow(std::function<bool (const BaseEventInfo * info)> && jsCallback)436 void WebModelNG::SetOnContextMenuShow(std::function<bool(const BaseEventInfo* info)>&& jsCallback)
437 {
438     auto func = jsCallback;
439     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
440         CHECK_NULL_RETURN(info, false);
441         return func(info.get());
442     };
443     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
444     CHECK_NULL_VOID(webEventHub);
445     webEventHub->SetOnContextMenuShowEvent(std::move(uiCallback));
446 }
447 
SetNewDragStyle(bool isNewDragStyle)448 void WebModelNG::SetNewDragStyle(bool isNewDragStyle)
449 {
450     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
451     CHECK_NULL_VOID(webPattern);
452     webPattern->SetNewDragStyle(isNewDragStyle);
453 }
454 
SetPreviewSelectionMenu(const std::shared_ptr<WebPreviewSelectionMenuParam> & param)455 void WebModelNG::SetPreviewSelectionMenu(const std::shared_ptr<WebPreviewSelectionMenuParam>& param)
456 {
457     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
458     CHECK_NULL_VOID(webPattern);
459     webPattern->SetPreviewSelectionMenu(param);
460 }
461 
SetOnContextMenuHide(std::function<void (const BaseEventInfo * info)> && jsCallback)462 void WebModelNG::SetOnContextMenuHide(std::function<void(const BaseEventInfo* info)>&& jsCallback)
463 {
464     auto func = jsCallback;
465     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
466         CHECK_NULL_VOID(info);
467         func(info.get());
468     };
469     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
470     CHECK_NULL_VOID(webEventHub);
471     webEventHub->SetOnContextMenuHideEvent(std::move(uiCallback));
472 }
473 
SetJsEnabled(bool isJsEnabled)474 void WebModelNG::SetJsEnabled(bool isJsEnabled)
475 {
476     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
477     CHECK_NULL_VOID(webPattern);
478     webPattern->UpdateJsEnabled(isJsEnabled);
479 }
480 
SetTextZoomRatio(int32_t textZoomRatioNum)481 void WebModelNG::SetTextZoomRatio(int32_t textZoomRatioNum)
482 {
483     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
484     CHECK_NULL_VOID(webPattern);
485     webPattern->UpdateTextZoomRatio(textZoomRatioNum);
486 }
487 
SetFileAccessEnabled(bool isFileAccessEnabled)488 void WebModelNG::SetFileAccessEnabled(bool isFileAccessEnabled)
489 {
490     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
491     CHECK_NULL_VOID(webPattern);
492     webPattern->UpdateFileAccessEnabled(isFileAccessEnabled);
493 }
494 
SetOnLineImageAccessEnabled(bool isOnLineImageAccessEnabled)495 void WebModelNG::SetOnLineImageAccessEnabled(bool isOnLineImageAccessEnabled)
496 {
497     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
498     CHECK_NULL_VOID(webPattern);
499     webPattern->UpdateOnLineImageAccessEnabled(isOnLineImageAccessEnabled);
500 }
501 
SetDomStorageAccessEnabled(bool isDomStorageAccessEnabled)502 void WebModelNG::SetDomStorageAccessEnabled(bool isDomStorageAccessEnabled)
503 {
504     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
505     CHECK_NULL_VOID(webPattern);
506     webPattern->UpdateDomStorageAccessEnabled(isDomStorageAccessEnabled);
507 }
508 
SetImageAccessEnabled(bool isImageAccessEnabled)509 void WebModelNG::SetImageAccessEnabled(bool isImageAccessEnabled)
510 {
511     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
512     CHECK_NULL_VOID(webPattern);
513     webPattern->UpdateImageAccessEnabled(isImageAccessEnabled);
514 }
515 
SetMixedMode(MixedModeContent mixedContentMode)516 void WebModelNG::SetMixedMode(MixedModeContent mixedContentMode)
517 {
518     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
519     CHECK_NULL_VOID(webPattern);
520     webPattern->UpdateMixedMode(mixedContentMode);
521 }
522 
SetZoomAccessEnabled(bool isZoomAccessEnabled)523 void WebModelNG::SetZoomAccessEnabled(bool isZoomAccessEnabled)
524 {
525     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
526     CHECK_NULL_VOID(webPattern);
527     webPattern->UpdateZoomAccessEnabled(isZoomAccessEnabled);
528 }
529 
SetGeolocationAccessEnabled(bool isGeolocationAccessEnabled)530 void WebModelNG::SetGeolocationAccessEnabled(bool isGeolocationAccessEnabled)
531 {
532     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
533     CHECK_NULL_VOID(webPattern);
534     webPattern->UpdateGeolocationAccessEnabled(isGeolocationAccessEnabled);
535 }
536 
SetJsProxyCallback(std::function<void ()> && jsProxyCallback)537 void WebModelNG::SetJsProxyCallback(std::function<void()>&& jsProxyCallback)
538 {
539     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
540     CHECK_NULL_VOID(webPattern);
541     webPattern->SetJsProxyCallback(std::move(jsProxyCallback));
542 }
543 
SetUserAgent(const std::string & userAgent)544 void WebModelNG::SetUserAgent(const std::string& userAgent)
545 {
546     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
547     CHECK_NULL_VOID(webPattern);
548     webPattern->UpdateUserAgent(userAgent);
549 }
550 
SetRenderExitedId(std::function<void (const BaseEventInfo * info)> && jsCallback)551 void WebModelNG::SetRenderExitedId(std::function<void(const BaseEventInfo* info)>&& jsCallback)
552 {
553     auto func = jsCallback;
554     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
555         CHECK_NULL_VOID(info);
556         func(info.get());
557     };
558     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
559     CHECK_NULL_VOID(webEventHub);
560     webEventHub->SetOnRenderExitedEvent(std::move(uiCallback));
561 }
562 
SetRefreshAccessedHistoryId(std::function<void (const BaseEventInfo * info)> && jsCallback)563 void WebModelNG::SetRefreshAccessedHistoryId(std::function<void(const BaseEventInfo* info)>&& jsCallback)
564 {
565     auto func = jsCallback;
566     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
567         CHECK_NULL_VOID(info);
568         func(info.get());
569     };
570     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
571     CHECK_NULL_VOID(webEventHub);
572     webEventHub->SetOnRefreshAccessedHistoryEvent(std::move(uiCallback));
573 }
574 
SetCacheMode(WebCacheMode cacheMode)575 void WebModelNG::SetCacheMode(WebCacheMode cacheMode)
576 {
577     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
578     CHECK_NULL_VOID(webPattern);
579     webPattern->UpdateCacheMode(cacheMode);
580 }
581 
SetOverScrollMode(OverScrollMode mode)582 void WebModelNG::SetOverScrollMode(OverScrollMode mode)
583 {
584     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
585     CHECK_NULL_VOID(webPattern);
586     webPattern->UpdateOverScrollMode(mode);
587 }
588 
SetBlurOnKeyboardHideMode(BlurOnKeyboardHideMode mode)589 void WebModelNG::SetBlurOnKeyboardHideMode(BlurOnKeyboardHideMode mode)
590 {
591     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
592     CHECK_NULL_VOID(webPattern);
593     webPattern->UpdateBlurOnKeyboardHideMode(mode);
594 }
595 
SetCopyOptionMode(CopyOptions mode)596 void WebModelNG::SetCopyOptionMode(CopyOptions mode)
597 {
598     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
599     CHECK_NULL_VOID(webPattern);
600     webPattern->UpdateCopyOptionMode(static_cast<int32_t>(mode));
601 }
602 
SetOverviewModeAccessEnabled(bool isOverviewModeAccessEnabled)603 void WebModelNG::SetOverviewModeAccessEnabled(bool isOverviewModeAccessEnabled)
604 {
605     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
606     CHECK_NULL_VOID(webPattern);
607     webPattern->UpdateOverviewModeAccessEnabled(isOverviewModeAccessEnabled);
608 }
609 
SetFileFromUrlAccessEnabled(bool isFileFromUrlAccessEnabled)610 void WebModelNG::SetFileFromUrlAccessEnabled(bool isFileFromUrlAccessEnabled)
611 {
612     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
613     CHECK_NULL_VOID(webPattern);
614     webPattern->UpdateFileFromUrlAccessEnabled(isFileFromUrlAccessEnabled);
615 }
616 
SetDatabaseAccessEnabled(bool isDatabaseAccessEnabled)617 void WebModelNG::SetDatabaseAccessEnabled(bool isDatabaseAccessEnabled)
618 {
619     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
620     CHECK_NULL_VOID(webPattern);
621     webPattern->UpdateDatabaseAccessEnabled(isDatabaseAccessEnabled);
622 }
623 
SetWebDebuggingAccessEnabled(bool isWebDebuggingAccessEnabled)624 void WebModelNG::SetWebDebuggingAccessEnabled(bool isWebDebuggingAccessEnabled)
625 {
626     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
627     CHECK_NULL_VOID(webPattern);
628     webPattern->UpdateWebDebuggingAccessEnabledAndPort(
629         std::make_tuple(isWebDebuggingAccessEnabled, 0));
630 }
631 
SetWebDebuggingAccessEnabledAndPort(bool isWebDebuggingAccessEnabled,int32_t webDebuggingPort)632 void WebModelNG::SetWebDebuggingAccessEnabledAndPort(
633     bool isWebDebuggingAccessEnabled, int32_t webDebuggingPort)
634 {
635     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
636     CHECK_NULL_VOID(webPattern);
637     webPattern->UpdateWebDebuggingAccessEnabledAndPort(
638         std::make_tuple(isWebDebuggingAccessEnabled, webDebuggingPort));
639 }
640 
SetOnMouseEvent(std::function<void (MouseInfo & info)> && jsCallback)641 void WebModelNG::SetOnMouseEvent(std::function<void(MouseInfo& info)>&& jsCallback)
642 {
643     auto func = jsCallback;
644     WeakPtr<NG::FrameNode> weak = AceType::WeakClaim(NG::ViewStackProcessor::GetInstance()->GetMainFrameNode());
645     auto uiCallback = [func, weak](MouseInfo& info) {
646         auto frameNode = weak.Upgrade();
647         int32_t instanceId = INSTANCE_ID_UNDEFINED;
648         if (frameNode) {
649             instanceId = frameNode->GetInstanceId();
650         } else {
651             instanceId = Container::CurrentIdSafely();
652         }
653         ContainerScope scope(instanceId);
654         auto context = PipelineBase::GetCurrentContext();
655         CHECK_NULL_VOID(context);
656         context->PostSyncEvent([&info, func]() { func(info); }, "ArkUIWebMouseEventCallback");
657     };
658     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
659     CHECK_NULL_VOID(webEventHub);
660     webEventHub->SetOnMouseEvent(std::move(uiCallback));
661 }
662 
SetResourceLoadId(std::function<void (const BaseEventInfo * info)> && jsCallback)663 void WebModelNG::SetResourceLoadId(std::function<void(const BaseEventInfo* info)>&& jsCallback)
664 {
665     auto func = jsCallback;
666     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
667         CHECK_NULL_VOID(info);
668         func(info.get());
669     };
670     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
671     CHECK_NULL_VOID(webEventHub);
672     webEventHub->SetOnResourceLoadEvent(std::move(uiCallback));
673 }
674 
SetScaleChangeId(std::function<void (const BaseEventInfo * info)> && jsCallback)675 void WebModelNG::SetScaleChangeId(std::function<void(const BaseEventInfo* info)>&& jsCallback)
676 {
677     auto func = jsCallback;
678     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
679         CHECK_NULL_VOID(info);
680         func(info.get());
681     };
682     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
683     CHECK_NULL_VOID(webEventHub);
684     webEventHub->SetOnScaleChangeEvent(std::move(uiCallback));
685 }
686 
SetScrollId(std::function<void (const BaseEventInfo * info)> && jsCallback)687 void WebModelNG::SetScrollId(std::function<void(const BaseEventInfo* info)>&& jsCallback)
688 {
689     auto func = jsCallback;
690     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
691         CHECK_NULL_VOID(info);
692         func(info.get());
693     };
694     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
695     CHECK_NULL_VOID(webEventHub);
696     webEventHub->SetOnScrollEvent(std::move(uiCallback));
697 }
698 
SetPermissionRequestEventId(std::function<void (const BaseEventInfo * info)> && jsCallback)699 void WebModelNG::SetPermissionRequestEventId(std::function<void(const BaseEventInfo* info)>&& jsCallback)
700 {
701     auto func = jsCallback;
702     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
703         CHECK_NULL_VOID(info);
704         func(info.get());
705     };
706     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
707     CHECK_NULL_VOID(webEventHub);
708     webEventHub->SetOnPermissionRequestEvent(std::move(uiCallback));
709 }
710 
SetScreenCaptureRequestEventId(std::function<void (const BaseEventInfo * info)> && jsCallback)711 void WebModelNG::SetScreenCaptureRequestEventId(std::function<void(const BaseEventInfo* info)>&& jsCallback)
712 {
713     auto func = jsCallback;
714     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) { func(info.get()); };
715     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
716     CHECK_NULL_VOID(webEventHub);
717     webEventHub->SetOnScreenCaptureRequestEvent(std::move(uiCallback));
718 }
719 
GetDefaultBackgroundColor()720 Color WebModelNG::GetDefaultBackgroundColor()
721 {
722     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
723     CHECK_NULL_RETURN(webPattern, Color::WHITE);
724     return webPattern->GetDefaultBackgroundColor();
725 }
726 
SetBackgroundColor(Color backgroundColor)727 void WebModelNG::SetBackgroundColor(Color backgroundColor)
728 {
729     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
730     CHECK_NULL_VOID(webPattern);
731     webPattern->UpdateBackgroundColor(backgroundColor.GetValue());
732 }
733 
SetDefaultBackgroundColor()734 void WebModelNG::SetDefaultBackgroundColor()
735 {
736     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
737     CHECK_NULL_VOID(webPattern);
738     webPattern->SetDefaultBackgroundColor();
739 }
740 
InitialScale(float scale)741 void WebModelNG::InitialScale(float scale)
742 {
743     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
744     CHECK_NULL_VOID(webPattern);
745     webPattern->UpdateInitialScale(scale);
746 }
747 
SetSearchResultReceiveEventId(std::function<void (const BaseEventInfo * info)> && jsCallback)748 void WebModelNG::SetSearchResultReceiveEventId(std::function<void(const BaseEventInfo* info)>&& jsCallback)
749 {
750     auto func = jsCallback;
751     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
752         CHECK_NULL_VOID(info);
753         func(info.get());
754     };
755     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
756     CHECK_NULL_VOID(webEventHub);
757     webEventHub->SetOnSearchResultReceiveEvent(std::move(uiCallback));
758 }
759 
SetOnDragStart(std::function<NG::DragDropBaseInfo (const RefPtr<OHOS::Ace::DragEvent> & info,const std::string & extraParams)> && onDragStart)760 void WebModelNG::SetOnDragStart(
761     std::function<NG::DragDropBaseInfo(const RefPtr<OHOS::Ace::DragEvent>& info, const std::string& extraParams)>&&
762         onDragStart)
763 {
764     auto dragStart = [dragStartFunc = std::move(onDragStart)](
765                          const RefPtr<OHOS::Ace::DragEvent>& event, const std::string& extraParams) -> DragDropInfo {
766         auto dragInfo = dragStartFunc(event, extraParams);
767         DragDropInfo info;
768         info.extraInfo = dragInfo.extraInfo;
769         info.pixelMap = dragInfo.pixelMap;
770         info.customNode = AceType::DynamicCast<UINode>(dragInfo.node);
771         return info;
772     };
773     ViewAbstract::SetOnDragStart(std::move(dragStart));
774 }
775 
SetOnDragEnter(std::function<void (const RefPtr<OHOS::Ace::DragEvent> &,const std::string &)> && onDragEnter)776 void WebModelNG::SetOnDragEnter(
777     std::function<void(const RefPtr<OHOS::Ace::DragEvent>&, const std::string&)>&& onDragEnter)
778 {
779     ViewAbstract::SetOnDragEnter(std::move(onDragEnter));
780 }
781 
SetOnDragMove(std::function<void (const RefPtr<OHOS::Ace::DragEvent> & info,const std::string & extraParams)> && onDragMoveId)782 void WebModelNG::SetOnDragMove(
783     std::function<void(const RefPtr<OHOS::Ace::DragEvent>& info, const std::string& extraParams)>&& onDragMoveId)
784 {
785     ViewAbstract::SetOnDragMove(std::move(onDragMoveId));
786 }
787 
SetOnDragLeave(std::function<void (const RefPtr<OHOS::Ace::DragEvent> &,const std::string &)> && onDragLeave)788 void WebModelNG::SetOnDragLeave(
789     std::function<void(const RefPtr<OHOS::Ace::DragEvent>&, const std::string&)>&& onDragLeave)
790 {
791     ViewAbstract::SetOnDragLeave(std::move(onDragLeave));
792 }
793 
SetOnDrop(std::function<void (const RefPtr<OHOS::Ace::DragEvent> &,const std::string &)> && onDropId)794 void WebModelNG::SetOnDrop(std::function<void(const RefPtr<OHOS::Ace::DragEvent>&, const std::string&)>&& onDropId)
795 {
796     ViewAbstract::SetOnDrop(std::move(onDropId));
797 }
798 
SetPinchSmoothModeEnabled(bool isPinchSmoothModeEnabled)799 void WebModelNG::SetPinchSmoothModeEnabled(bool isPinchSmoothModeEnabled)
800 {
801     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
802     CHECK_NULL_VOID(webPattern);
803     webPattern->UpdatePinchSmoothModeEnabled(isPinchSmoothModeEnabled);
804 }
805 
SetWindowNewEvent(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && jsCallback)806 void WebModelNG::SetWindowNewEvent(std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& jsCallback)
807 {
808     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
809     CHECK_NULL_VOID(webEventHub);
810     webEventHub->SetOnWindowNewEvent(std::move(jsCallback));
811 }
812 
SetActivateContentEventId(std::function<void (const BaseEventInfo * info)> && jsCallback)813 void WebModelNG::SetActivateContentEventId(std::function<void(const BaseEventInfo* info)>&& jsCallback)
814 {
815     auto func = jsCallback;
816     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
817         CHECK_NULL_VOID(info);
818         func(info.get());
819     };
820     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
821     CHECK_NULL_VOID(webEventHub);
822     webEventHub->SetOnActivateContentEvent(std::move(uiCallback));
823 }
824 
SetWindowExitEventId(std::function<void (const BaseEventInfo * info)> && jsCallback)825 void WebModelNG::SetWindowExitEventId(std::function<void(const BaseEventInfo* info)>&& jsCallback)
826 {
827     auto func = jsCallback;
828     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
829         CHECK_NULL_VOID(info);
830         func(info.get());
831     };
832     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
833     CHECK_NULL_VOID(webEventHub);
834     webEventHub->SetOnWindowExitEvent(std::move(uiCallback));
835 }
836 
SetMultiWindowAccessEnabled(bool isMultiWindowAccessEnable)837 void WebModelNG::SetMultiWindowAccessEnabled(bool isMultiWindowAccessEnable)
838 {
839     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
840     CHECK_NULL_VOID(webPattern);
841     webPattern->UpdateMultiWindowAccessEnabled(isMultiWindowAccessEnable);
842 }
843 
SetAllowWindowOpenMethod(bool isAllowWindowOpenMethod)844 void WebModelNG::SetAllowWindowOpenMethod(bool isAllowWindowOpenMethod)
845 {
846     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
847     CHECK_NULL_VOID(webPattern);
848     webPattern->UpdateAllowWindowOpenMethod(isAllowWindowOpenMethod);
849 }
850 
SetWebCursiveFont(const std::string & cursiveFontFamily)851 void WebModelNG::SetWebCursiveFont(const std::string& cursiveFontFamily)
852 {
853     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
854     CHECK_NULL_VOID(webPattern);
855     webPattern->UpdateWebCursiveFont(cursiveFontFamily);
856 }
857 
SetWebFantasyFont(const std::string & fantasyFontFamily)858 void WebModelNG::SetWebFantasyFont(const std::string& fantasyFontFamily)
859 {
860     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
861     CHECK_NULL_VOID(webPattern);
862     webPattern->UpdateWebFantasyFont(fantasyFontFamily);
863 }
864 
SetWebFixedFont(const std::string & fixedFontFamily)865 void WebModelNG::SetWebFixedFont(const std::string& fixedFontFamily)
866 {
867     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
868     CHECK_NULL_VOID(webPattern);
869     webPattern->UpdateWebFixedFont(fixedFontFamily);
870 }
871 
SetWebSansSerifFont(const std::string & sansSerifFontFamily)872 void WebModelNG::SetWebSansSerifFont(const std::string& sansSerifFontFamily)
873 {
874     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
875     CHECK_NULL_VOID(webPattern);
876     webPattern->UpdateWebSansSerifFont(sansSerifFontFamily);
877 }
878 
SetWebSerifFont(const std::string & serifFontFamily)879 void WebModelNG::SetWebSerifFont(const std::string& serifFontFamily)
880 {
881     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
882     CHECK_NULL_VOID(webPattern);
883     webPattern->UpdateWebSerifFont(serifFontFamily);
884 }
885 
SetWebStandardFont(const std::string & standardFontFamily)886 void WebModelNG::SetWebStandardFont(const std::string& standardFontFamily)
887 {
888     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
889     CHECK_NULL_VOID(webPattern);
890     webPattern->UpdateWebStandardFont(standardFontFamily);
891 }
892 
SetDefaultFixedFontSize(int32_t defaultFixedFontSize)893 void WebModelNG::SetDefaultFixedFontSize(int32_t defaultFixedFontSize)
894 {
895     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
896     CHECK_NULL_VOID(webPattern);
897     webPattern->UpdateDefaultFixedFontSize(defaultFixedFontSize);
898 }
899 
SetDefaultFontSize(int32_t defaultFontSize)900 void WebModelNG::SetDefaultFontSize(int32_t defaultFontSize)
901 {
902     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
903     CHECK_NULL_VOID(webPattern);
904     webPattern->UpdateDefaultFontSize(defaultFontSize);
905 }
906 
SetDefaultTextEncodingFormat(const std::string & textEncodingFormat)907 void WebModelNG::SetDefaultTextEncodingFormat(const std::string& textEncodingFormat)
908 {
909     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
910     CHECK_NULL_VOID(webPattern);
911     webPattern->UpdateDefaultTextEncodingFormat(textEncodingFormat);
912 }
913 
SetMinFontSize(int32_t minFontSize)914 void WebModelNG::SetMinFontSize(int32_t minFontSize)
915 {
916     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
917     CHECK_NULL_VOID(webPattern);
918     webPattern->UpdateMinFontSize(minFontSize);
919 }
920 
SetMinLogicalFontSize(int32_t minLogicalFontSize)921 void WebModelNG::SetMinLogicalFontSize(int32_t minLogicalFontSize)
922 {
923     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
924     CHECK_NULL_VOID(webPattern);
925     webPattern->UpdateMinLogicalFontSize(minLogicalFontSize);
926 }
927 
SetBlockNetwork(bool isNetworkBlocked)928 void WebModelNG::SetBlockNetwork(bool isNetworkBlocked)
929 {
930     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
931     CHECK_NULL_VOID(webPattern);
932     webPattern->UpdateBlockNetwork(isNetworkBlocked);
933 }
934 
SetPageVisibleId(OnWebAsyncFunc && pageVisibleId)935 void WebModelNG::SetPageVisibleId(OnWebAsyncFunc&& pageVisibleId)
936 {
937     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
938     CHECK_NULL_VOID(webEventHub);
939     webEventHub->SetOnPageVisibleEvent(std::move(pageVisibleId));
940 }
941 
SetOnInterceptKeyEventCallback(std::function<bool (KeyEventInfo & keyEventInfo)> && keyEventInfo)942 void WebModelNG::SetOnInterceptKeyEventCallback(std::function<bool(KeyEventInfo& keyEventInfo)>&& keyEventInfo)
943 {
944     auto func = keyEventInfo;
945     WeakPtr<NG::FrameNode> weak = AceType::WeakClaim(NG::ViewStackProcessor::GetInstance()->GetMainFrameNode());
946     auto onConsole = [func, weak](KeyEventInfo& keyEventInfo) -> bool {
947         auto frameNode = weak.Upgrade();
948         int32_t instanceId = INSTANCE_ID_UNDEFINED;
949         if (frameNode) {
950             instanceId = frameNode->GetInstanceId();
951         } else {
952             instanceId = Container::CurrentIdSafely();
953         }
954         ContainerScope scope(instanceId);
955         auto context = PipelineBase::GetCurrentContext();
956         bool result = false;
957         CHECK_NULL_RETURN(context, result);
958         context->PostSyncEvent(
959             [func, &keyEventInfo, &result]() { result = func(keyEventInfo); }, "ArkUIWebInterceptKeyEventCallback");
960         return result;
961     };
962     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
963     CHECK_NULL_VOID(webEventHub);
964     webEventHub->SetOnPreKeyEvent(std::move(onConsole));
965 }
966 
SetOnDataResubmitted(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && dataResubmittedId)967 void WebModelNG::SetOnDataResubmitted(
968     std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& dataResubmittedId)
969 {
970     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
971     CHECK_NULL_VOID(webEventHub);
972     webEventHub->SetOnDataResubmittedEvent(std::move(dataResubmittedId));
973 }
974 
SetDataResubmittedId(OnWebAsyncFunc && dataResubmittedId)975 void WebModelNG::SetDataResubmittedId(OnWebAsyncFunc&& dataResubmittedId)
976 {
977     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
978     CHECK_NULL_VOID(webEventHub);
979     webEventHub->SetOnDataResubmittedEvent(std::move(dataResubmittedId));
980 }
981 
SetFaviconReceivedId(OnWebAsyncFunc && faviconReceivedId)982 void WebModelNG::SetFaviconReceivedId(OnWebAsyncFunc&& faviconReceivedId)
983 {
984     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
985     CHECK_NULL_VOID(webEventHub);
986     webEventHub->SetOnFaviconReceivedEvent(std::move(faviconReceivedId));
987 }
988 
SetAudioStateChangedId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && audioStateChanged)989 void WebModelNG::SetAudioStateChangedId(
990     std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& audioStateChanged)
991 {
992     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
993     CHECK_NULL_VOID(webEventHub);
994     webEventHub->SetOnAudioStateChangedEvent(std::move(audioStateChanged));
995 }
996 
SetFirstContentfulPaintId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && firstContentfulPaintId)997 void WebModelNG::SetFirstContentfulPaintId(
998     std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& firstContentfulPaintId)
999 {
1000     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1001     CHECK_NULL_VOID(webEventHub);
1002     webEventHub->SetOnFirstContentfulPaintEvent(std::move(firstContentfulPaintId));
1003 }
1004 
SetFirstMeaningfulPaintId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && firstMeaningfulPaintId)1005 void WebModelNG::SetFirstMeaningfulPaintId(
1006     std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& firstMeaningfulPaintId)
1007 {
1008     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1009     CHECK_NULL_VOID(webEventHub);
1010     webEventHub->SetOnFirstMeaningfulPaintEvent(std::move(firstMeaningfulPaintId));
1011 }
1012 
SetLargestContentfulPaintId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && largestContentfulPaintId)1013 void WebModelNG::SetLargestContentfulPaintId(
1014     std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& largestContentfulPaintId)
1015 {
1016     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1017     CHECK_NULL_VOID(webEventHub);
1018     webEventHub->SetOnLargestContentfulPaintEvent(std::move(largestContentfulPaintId));
1019 }
1020 
SetNavigationEntryCommittedId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && navigationEntryCommittedId)1021 void WebModelNG::SetNavigationEntryCommittedId(
1022     std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& navigationEntryCommittedId)
1023 {
1024     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1025     CHECK_NULL_VOID(webEventHub);
1026     webEventHub->SetOnNavigationEntryCommittedEvent(std::move(navigationEntryCommittedId));
1027 }
1028 
SetTouchIconUrlId(OnWebAsyncFunc && touchIconUrlId)1029 void WebModelNG::SetTouchIconUrlId(OnWebAsyncFunc&& touchIconUrlId)
1030 {
1031     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1032     CHECK_NULL_VOID(webEventHub);
1033     webEventHub->SetOnTouchIconUrlEvent(std::move(touchIconUrlId));
1034 }
1035 
SetSafeBrowsingCheckResultId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && safeBrowsingCheckResultId)1036 void WebModelNG::SetSafeBrowsingCheckResultId(
1037     std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& safeBrowsingCheckResultId)
1038 {
1039     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1040     CHECK_NULL_VOID(webEventHub);
1041     webEventHub->SetOnSafeBrowsingCheckResultEvent(std::move(safeBrowsingCheckResultId));
1042 }
1043 
SetIntelligentTrackingPreventionResultId(std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && intelligentTrackingPreventionResultId)1044 void WebModelNG::SetIntelligentTrackingPreventionResultId(
1045     std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&&
1046         intelligentTrackingPreventionResultId)
1047 {
1048     auto webEventHub = ViewStackProcessor::GetInstance()->
1049         GetMainFrameNodeEventHub<WebEventHub>();
1050     CHECK_NULL_VOID(webEventHub);
1051     webEventHub->SetOnIntelligentTrackingPreventionResultEvent(
1052         std::move(intelligentTrackingPreventionResultId));
1053 }
1054 
SetDarkMode(WebDarkMode mode)1055 void WebModelNG::SetDarkMode(WebDarkMode mode)
1056 {
1057     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1058     CHECK_NULL_VOID(webPattern);
1059     webPattern->UpdateDarkMode(mode);
1060 }
1061 
SetForceDarkAccess(bool access)1062 void WebModelNG::SetForceDarkAccess(bool access)
1063 {
1064     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1065     CHECK_NULL_VOID(webPattern);
1066     webPattern->UpdateForceDarkAccess(access);
1067 }
1068 
SetHorizontalScrollBarAccessEnabled(bool isHorizontalScrollBarAccessEnabled)1069 void WebModelNG::SetHorizontalScrollBarAccessEnabled(bool isHorizontalScrollBarAccessEnabled)
1070 {
1071     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1072     CHECK_NULL_VOID(webPattern);
1073     webPattern->UpdateHorizontalScrollBarAccessEnabled(isHorizontalScrollBarAccessEnabled);
1074 }
1075 
SetVerticalScrollBarAccessEnabled(bool isVerticalScrollBarAccessEnabled)1076 void WebModelNG::SetVerticalScrollBarAccessEnabled(bool isVerticalScrollBarAccessEnabled)
1077 {
1078     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1079     CHECK_NULL_VOID(webPattern);
1080     webPattern->UpdateVerticalScrollBarAccessEnabled(isVerticalScrollBarAccessEnabled);
1081 }
1082 
SetNativeEmbedModeEnabled(bool isEmbedModeEnabled)1083 void WebModelNG::SetNativeEmbedModeEnabled(bool isEmbedModeEnabled)
1084 {
1085     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1086     CHECK_NULL_VOID(webPattern);
1087     webPattern->UpdateNativeEmbedModeEnabled(isEmbedModeEnabled);
1088 }
1089 
SetIntrinsicSizeEnabled(bool isIntrinsicSizeEnabled)1090 void WebModelNG::SetIntrinsicSizeEnabled(bool isIntrinsicSizeEnabled)
1091 {
1092     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1093     CHECK_NULL_VOID(webPattern);
1094     webPattern->UpdateIntrinsicSizeEnabled(isIntrinsicSizeEnabled);
1095 }
1096 
SetCssDisplayChangeEnabled(bool isCssDisplayChangeEnabled)1097 void WebModelNG::SetCssDisplayChangeEnabled(bool isCssDisplayChangeEnabled)
1098 {
1099     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1100     CHECK_NULL_VOID(webPattern);
1101     webPattern->UpdateCssDisplayChangeEnabled(isCssDisplayChangeEnabled);
1102 }
1103 
RegisterNativeEmbedRule(const std::string & tag,const std::string & type)1104 void WebModelNG::RegisterNativeEmbedRule(const std::string& tag, const std::string& type)
1105 {
1106     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1107     CHECK_NULL_VOID(webPattern);
1108     webPattern->UpdateNativeEmbedRuleTag(tag);
1109     webPattern->UpdateNativeEmbedRuleType(type);
1110 }
1111 
SetOnControllerAttached(std::function<void ()> && callback)1112 void WebModelNG::SetOnControllerAttached(std::function<void()>&& callback)
1113 {
1114     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1115     CHECK_NULL_VOID(webPattern);
1116     webPattern->SetOnControllerAttachedCallback(std::move(callback));
1117 }
1118 
NotifyPopupWindowResult(int32_t webId,bool result)1119 void WebModelNG::NotifyPopupWindowResult(int32_t webId, bool result)
1120 {
1121 #if !defined(IOS_PLATFORM) && !defined(ANDROID_PLATFORM)
1122     if (webId != -1) {
1123         std::shared_ptr<OHOS::NWeb::NWeb> nweb = OHOS::NWeb::NWebHelper::Instance().GetNWeb(webId);
1124         if (nweb) {
1125             nweb->NotifyPopupWindowResult(result);
1126         } else {
1127             TAG_LOGE(AceLogTag::ACE_WEB, "NotifyPopupWindowResult not found nweb %{public}d", webId);
1128         }
1129     }
1130 #endif
1131 }
1132 
SetAudioResumeInterval(int32_t resumeInterval)1133 void WebModelNG::SetAudioResumeInterval(int32_t resumeInterval)
1134 {
1135     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1136     CHECK_NULL_VOID(webPattern);
1137     webPattern->UpdateAudioResumeInterval(resumeInterval);
1138 }
SetAudioExclusive(bool audioExclusive)1139 void WebModelNG::SetAudioExclusive(bool audioExclusive)
1140 {
1141     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1142     CHECK_NULL_VOID(webPattern);
1143     webPattern->UpdateAudioExclusive(audioExclusive);
1144 }
1145 
SetAudioSessionType(WebAudioSessionType audioSessionType)1146 void WebModelNG::SetAudioSessionType(WebAudioSessionType audioSessionType)
1147 {
1148     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1149     CHECK_NULL_VOID(webPattern);
1150     webPattern->UpdateAudioSessionType(audioSessionType);
1151 }
SetOverScrollId(std::function<void (const BaseEventInfo * info)> && jsCallback)1152 void WebModelNG::SetOverScrollId(std::function<void(const BaseEventInfo* info)>&& jsCallback)
1153 {
1154     auto func = jsCallback;
1155     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) { func(info.get()); };
1156     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1157     CHECK_NULL_VOID(webEventHub);
1158     webEventHub->SetOnOverScrollEvent(std::move(uiCallback));
1159 }
1160 
SetNativeEmbedLifecycleChangeId(std::function<void (const BaseEventInfo * info)> && jsCallback)1161 void WebModelNG::SetNativeEmbedLifecycleChangeId(std::function<void(const BaseEventInfo* info)>&& jsCallback)
1162 {
1163     auto func = jsCallback;
1164     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) { func(info.get()); };
1165     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1166     CHECK_NULL_VOID(webEventHub);
1167     webEventHub->SetOnNativeEmbedLifecycleChangeEvent(std::move(uiCallback));
1168 }
1169 
SetNativeEmbedVisibilityChangeId(std::function<void (const BaseEventInfo * info)> && jsCallback)1170 void WebModelNG::SetNativeEmbedVisibilityChangeId(std::function<void(const BaseEventInfo* info)>&& jsCallback)
1171 {
1172     auto func = jsCallback;
1173     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) { func(info.get()); };
1174     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1175     CHECK_NULL_VOID(webEventHub);
1176     webEventHub->SetOnNativeEmbedVisibilityChangeEvent(std::move(uiCallback));
1177 }
1178 
SetNativeEmbedGestureEventId(std::function<void (const BaseEventInfo * info)> && jsCallback)1179 void WebModelNG::SetNativeEmbedGestureEventId(std::function<void(const BaseEventInfo* info)>&& jsCallback)
1180 {
1181     auto func = jsCallback;
1182     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) { func(info.get()); };
1183     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1184     CHECK_NULL_VOID(webEventHub);
1185     webEventHub->SetOnNativeEmbedGestureEvent(std::move(uiCallback));
1186 }
1187 
SetNativeEmbedMouseEventId(std::function<void (const BaseEventInfo * info)> && jsCallback)1188 void WebModelNG::SetNativeEmbedMouseEventId(std::function<void(const BaseEventInfo* info)>&& jsCallback)
1189 {
1190     auto func = jsCallback;
1191     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) { func(info.get()); };
1192     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1193     CHECK_NULL_VOID(webEventHub);
1194     webEventHub->SetOnNativeEmbedMouseEvent(std::move(uiCallback));
1195 }
1196 
SetLayoutMode(WebLayoutMode mode)1197 void WebModelNG::SetLayoutMode(WebLayoutMode mode)
1198 {
1199     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1200     CHECK_NULL_VOID(webPattern);
1201     webPattern->SetLayoutMode(mode);
1202 }
1203 
SetNestedScroll(const NestedScrollOptions & nestedOpt)1204 void WebModelNG::SetNestedScroll(const NestedScrollOptions& nestedOpt)
1205 {
1206     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1207     CHECK_NULL_VOID(webPattern);
1208     webPattern->SetNestedScroll(nestedOpt);
1209 }
1210 
SetNestedScrollExt(const NestedScrollOptionsExt & nestedOpt)1211 void WebModelNG::SetNestedScrollExt(const NestedScrollOptionsExt& nestedOpt)
1212 {
1213     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1214     CHECK_NULL_VOID(webPattern);
1215     webPattern->SetNestedScrollExt(nestedOpt);
1216 }
1217 
SetMetaViewport(bool enabled)1218 void WebModelNG::SetMetaViewport(bool enabled)
1219 {
1220     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1221     CHECK_NULL_VOID(webPattern);
1222     webPattern->UpdateMetaViewport(enabled);
1223 }
1224 
JavaScriptOnDocumentStart(const ScriptItems & scriptItems)1225 void WebModelNG::JavaScriptOnDocumentStart(const ScriptItems& scriptItems)
1226 {
1227     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1228     CHECK_NULL_VOID(webPattern);
1229     webPattern->JavaScriptOnDocumentStart(scriptItems);
1230 }
1231 
JavaScriptOnDocumentStartByOrder(const ScriptItems & scriptItems,const ScriptItemsByOrder & scriptItemsByOrder)1232 void WebModelNG::JavaScriptOnDocumentStartByOrder(const ScriptItems& scriptItems,
1233     const ScriptItemsByOrder& scriptItemsByOrder)
1234 {
1235     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1236     CHECK_NULL_VOID(webPattern);
1237     webPattern->JavaScriptOnDocumentStartByOrder(scriptItems, scriptItemsByOrder);
1238 }
1239 
JavaScriptOnDocumentEndByOrder(const ScriptItems & scriptItems,const ScriptItemsByOrder & scriptItemsByOrder)1240 void WebModelNG::JavaScriptOnDocumentEndByOrder(const ScriptItems& scriptItems,
1241     const ScriptItemsByOrder& scriptItemsByOrder)
1242 {
1243     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1244     CHECK_NULL_VOID(webPattern);
1245     webPattern->JavaScriptOnDocumentEndByOrder(scriptItems, scriptItemsByOrder);
1246 }
1247 
JavaScriptOnHeadReadyByOrder(const ScriptItems & scriptItems,const ScriptItemsByOrder & scriptItemsByOrder)1248 void WebModelNG::JavaScriptOnHeadReadyByOrder(const ScriptItems& scriptItems,
1249     const ScriptItemsByOrder& scriptItemsByOrder)
1250 {
1251     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1252     CHECK_NULL_VOID(webPattern);
1253     webPattern->JavaScriptOnHeadReadyByOrder(scriptItems, scriptItemsByOrder);
1254 }
1255 
JavaScriptOnDocumentEnd(const ScriptItems & scriptItems)1256 void WebModelNG::JavaScriptOnDocumentEnd(const ScriptItems& scriptItems)
1257 {
1258     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1259     CHECK_NULL_VOID(webPattern);
1260     webPattern->JavaScriptOnDocumentEnd(scriptItems);
1261 }
1262 
SetDefaultFileSelectorShow(std::function<void (const std::shared_ptr<BaseEventInfo> &)> && jsCallback)1263 void WebModelNG::SetDefaultFileSelectorShow(std::function<void(const std::shared_ptr<BaseEventInfo>&)>&& jsCallback)
1264 {
1265     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1266     CHECK_NULL_VOID(webPattern);
1267     webPattern->SetDefaultFileSelectorShowCallback(std::move(jsCallback));
1268 }
1269 
SetPermissionClipboard(std::function<void (const std::shared_ptr<BaseEventInfo> &)> && jsCallback)1270 void WebModelNG::SetPermissionClipboard(std::function<void(const std::shared_ptr<BaseEventInfo>&)>&& jsCallback)
1271 {
1272     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1273     CHECK_NULL_VOID(webPattern);
1274 
1275     webPattern->SetPermissionClipboardCallback(std::move(jsCallback));
1276 }
1277 
SetOpenAppLinkFunction(std::function<void (const std::shared_ptr<BaseEventInfo> &)> && jsCallback)1278 void WebModelNG::SetOpenAppLinkFunction(std::function<void(const std::shared_ptr<BaseEventInfo>&)>&& jsCallback)
1279 {
1280     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1281     CHECK_NULL_VOID(webPattern);
1282 
1283     webPattern->SetOnOpenAppLinkCallback(std::move(jsCallback));
1284 }
1285 
SetWebDetachFunction(std::function<void (int32_t)> && jsCallback)1286 void WebModelNG::SetWebDetachFunction(std::function<void(int32_t)>&& jsCallback)
1287 {
1288     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1289     CHECK_NULL_VOID(webPattern);
1290 
1291     webPattern->SetSetWebDetachCallback(std::move(jsCallback));
1292 }
1293 
SetFaviconFunction(std::function<void (const std::shared_ptr<BaseEventInfo> &)> && jsCallback)1294 void WebModelNG::SetFaviconFunction(std::function<void(const std::shared_ptr<BaseEventInfo>&)>&& jsCallback)
1295 {
1296     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1297     CHECK_NULL_VOID(webPattern);
1298 
1299     webPattern->SetFaviconFunction(std::move(jsCallback));
1300 }
1301 
SetTextAutosizing(bool isTextAutosizing)1302 void WebModelNG::SetTextAutosizing(bool isTextAutosizing)
1303 {
1304     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1305     CHECK_NULL_VOID(webPattern);
1306     webPattern->UpdateTextAutosizing(isTextAutosizing);
1307 }
1308 
SetNativeVideoPlayerConfig(bool enable,bool shouldOverlay)1309 void WebModelNG::SetNativeVideoPlayerConfig(bool enable, bool shouldOverlay)
1310 {
1311     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1312     CHECK_NULL_VOID(webPattern);
1313 
1314     webPattern->UpdateNativeVideoPlayerConfig(std::make_tuple(enable, shouldOverlay));
1315 }
1316 
SetRenderProcessNotRespondingId(std::function<void (const BaseEventInfo * info)> && jsCallback)1317 void WebModelNG::SetRenderProcessNotRespondingId(std::function<void(const BaseEventInfo* info)>&& jsCallback)
1318 {
1319     auto func = jsCallback;
1320     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) { func(info.get()); };
1321     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1322     CHECK_NULL_VOID(webEventHub);
1323     webEventHub->SetOnRenderProcessNotRespondingEvent(std::move(uiCallback));
1324 }
1325 
SetRenderProcessRespondingId(std::function<void (const BaseEventInfo * info)> && jsCallback)1326 void WebModelNG::SetRenderProcessRespondingId(std::function<void(const BaseEventInfo* info)>&& jsCallback)
1327 {
1328     auto func = jsCallback;
1329     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) { func(info.get()); };
1330     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1331     CHECK_NULL_VOID(webEventHub);
1332     webEventHub->SetOnRenderProcessRespondingEvent(std::move(uiCallback));
1333 }
1334 
SetViewportFitChangedId(std::function<void (const BaseEventInfo * info)> && jsCallback)1335 void WebModelNG::SetViewportFitChangedId(std::function<void(const BaseEventInfo* info)>&& jsCallback)
1336 {
1337     auto func = jsCallback;
1338     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) { func(info.get()); };
1339     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1340     CHECK_NULL_VOID(webEventHub);
1341     webEventHub->SetOnViewportFitChangedEvent(std::move(uiCallback));
1342 }
1343 
SetSelectionMenuOptions(const WebMenuOptionsParam & webMenuOption)1344 void WebModelNG::SetSelectionMenuOptions(const WebMenuOptionsParam& webMenuOption)
1345 {
1346     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1347     CHECK_NULL_VOID(webPattern);
1348     webPattern->UpdateSelectionMenuOptions(std::move(webMenuOption));
1349 }
1350 
SetEditMenuOptions(const NG::OnCreateMenuCallback && onCreateMenuCallback,const NG::OnMenuItemClickCallback && onMenuItemClick,const NG::OnPrepareMenuCallback && onPrepareMenuCallback)1351 void WebModelNG::SetEditMenuOptions(const NG::OnCreateMenuCallback&& onCreateMenuCallback,
1352     const NG::OnMenuItemClickCallback&& onMenuItemClick, const NG::OnPrepareMenuCallback&& onPrepareMenuCallback)
1353 {
1354     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1355     CHECK_NULL_VOID(webPattern);
1356     webPattern->UpdateEditMenuOptions(
1357         std::move(onCreateMenuCallback), std::move(onMenuItemClick), std::move(onPrepareMenuCallback));
1358 }
1359 
SetAdsBlockedEventId(std::function<void (const BaseEventInfo * info)> && jsCallback)1360 void WebModelNG::SetAdsBlockedEventId(std::function<void(const BaseEventInfo* info)>&& jsCallback)
1361 {
1362     auto func = jsCallback;
1363     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) { func(info.get()); };
1364     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1365     CHECK_NULL_VOID(webEventHub);
1366     webEventHub->SetOnAdsBlockedEvent(std::move(uiCallback));
1367 }
1368 
SetOnInterceptKeyboardAttach(std::function<WebKeyboardOption (const BaseEventInfo * info)> && jsCallback)1369 void WebModelNG::SetOnInterceptKeyboardAttach(std::function<WebKeyboardOption(const BaseEventInfo* info)>&& jsCallback)
1370 {
1371     auto func = jsCallback;
1372     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> WebKeyboardOption {
1373         return func(info.get());
1374     };
1375     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1376     CHECK_NULL_VOID(webEventHub);
1377     webEventHub->SetOnInterceptKeyboardAttachEvent(std::move(uiCallback));
1378 }
1379 
SetUpdateInstanceIdCallback(std::function<void (int32_t)> && callback)1380 void WebModelNG::SetUpdateInstanceIdCallback(std::function<void(int32_t)>&& callback)
1381 {
1382     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1383     CHECK_NULL_VOID(webPattern);
1384 
1385     webPattern->SetUpdateInstanceIdCallback(std::move(callback));
1386 }
1387 
SetOverlayScrollbarEnabled(bool isEnabled)1388 void WebModelNG::SetOverlayScrollbarEnabled(bool isEnabled)
1389 {
1390     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1391     CHECK_NULL_VOID(webPattern);
1392     webPattern->UpdateOverlayScrollbarEnabled(isEnabled);
1393 }
1394 
SetKeyboardAvoidMode(const WebKeyboardAvoidMode & mode)1395 void WebModelNG::SetKeyboardAvoidMode(const WebKeyboardAvoidMode& mode)
1396 {
1397     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1398     CHECK_NULL_VOID(webPattern);
1399     webPattern->UpdateKeyboardAvoidMode(mode);
1400 }
1401 
SetEnabledHapticFeedback(bool isEnabled)1402 void WebModelNG::SetEnabledHapticFeedback(bool isEnabled)
1403 {
1404     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1405     CHECK_NULL_VOID(webPattern);
1406     webPattern->UpdateEnabledHapticFeedback(isEnabled);
1407 }
1408 
SetOptimizeParserBudgetEnabled(bool enable)1409 void WebModelNG::SetOptimizeParserBudgetEnabled(bool enable)
1410 {
1411     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1412     CHECK_NULL_VOID(webPattern);
1413     webPattern->UpdateOptimizeParserBudgetEnabled(enable);
1414 }
1415 
SetEnableFollowSystemFontWeight(bool enableFollowSystemFontWeight)1416 void WebModelNG::SetEnableFollowSystemFontWeight(bool enableFollowSystemFontWeight)
1417 {
1418     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1419     CHECK_NULL_VOID(webPattern);
1420     webPattern->UpdateEnableFollowSystemFontWeight(enableFollowSystemFontWeight);
1421 }
1422 
SetWebMediaAVSessionEnabled(bool isEnabled)1423 void WebModelNG::SetWebMediaAVSessionEnabled(bool isEnabled)
1424 {
1425     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1426     CHECK_NULL_VOID(webPattern);
1427     webPattern->UpdateWebMediaAVSessionEnabled(isEnabled);
1428 }
1429 
SetEnableDataDetector(bool isEnabled)1430 void WebModelNG::SetEnableDataDetector(bool isEnabled)
1431 {
1432     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1433     CHECK_NULL_VOID(webPattern);
1434     webPattern->UpdateEnableDataDetector(isEnabled);
1435 }
1436 
SetDataDetectorConfig(const TextDetectConfig & config)1437 void WebModelNG::SetDataDetectorConfig(const TextDetectConfig& config)
1438 {
1439     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1440     CHECK_NULL_VOID(webPattern);
1441     webPattern->UpdateDataDetectorConfig(config);
1442 }
1443 
SetJsEnabled(FrameNode * frameNode,bool isJsEnabled)1444 void WebModelNG::SetJsEnabled(FrameNode* frameNode, bool isJsEnabled)
1445 {
1446     CHECK_NULL_VOID(frameNode);
1447     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1448     CHECK_NULL_VOID(webPattern);
1449     webPattern->UpdateJsEnabled(isJsEnabled);
1450 }
1451 
SetFileAccessEnabled(FrameNode * frameNode,bool isFileAccessEnabled)1452 void WebModelNG::SetFileAccessEnabled(FrameNode* frameNode, bool isFileAccessEnabled)
1453 {
1454     CHECK_NULL_VOID(frameNode);
1455     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1456     CHECK_NULL_VOID(webPattern);
1457     webPattern->UpdateFileAccessEnabled(isFileAccessEnabled);
1458 }
1459 
SetDomStorageAccessEnabled(FrameNode * frameNode,bool isDomStorageAccessEnabled)1460 void WebModelNG::SetDomStorageAccessEnabled(FrameNode* frameNode, bool isDomStorageAccessEnabled)
1461 {
1462     CHECK_NULL_VOID(frameNode);
1463     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1464     CHECK_NULL_VOID(webPattern);
1465     webPattern->UpdateDomStorageAccessEnabled(isDomStorageAccessEnabled);
1466 }
1467 
SetMixedMode(FrameNode * frameNode,MixedModeContent mixedContentMode)1468 void WebModelNG::SetMixedMode(FrameNode* frameNode, MixedModeContent mixedContentMode)
1469 {
1470     CHECK_NULL_VOID(frameNode);
1471     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1472     CHECK_NULL_VOID(webPattern);
1473     webPattern->UpdateMixedMode(mixedContentMode);
1474 }
1475 
SetZoomAccessEnabled(FrameNode * frameNode,bool isZoomAccessEnabled)1476 void WebModelNG::SetZoomAccessEnabled(FrameNode* frameNode, bool isZoomAccessEnabled)
1477 {
1478     CHECK_NULL_VOID(frameNode);
1479     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1480     CHECK_NULL_VOID(webPattern);
1481     webPattern->UpdateZoomAccessEnabled(isZoomAccessEnabled);
1482 }
1483 
SetCacheMode(FrameNode * frameNode,WebCacheMode cacheMode)1484 void WebModelNG::SetCacheMode(FrameNode* frameNode, WebCacheMode cacheMode)
1485 {
1486     CHECK_NULL_VOID(frameNode);
1487     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1488     CHECK_NULL_VOID(webPattern);
1489     webPattern->UpdateCacheMode(cacheMode);
1490 }
1491 
SetDarkMode(FrameNode * frameNode,WebDarkMode mode)1492 void WebModelNG::SetDarkMode(FrameNode* frameNode, WebDarkMode mode)
1493 {
1494     CHECK_NULL_VOID(frameNode);
1495     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1496     CHECK_NULL_VOID(webPattern);
1497     webPattern->UpdateDarkMode(mode);
1498 }
1499 
SetMultiWindowAccessEnabled(FrameNode * frameNode,bool isMultiWindowAccessEnable)1500 void WebModelNG::SetMultiWindowAccessEnabled(FrameNode* frameNode, bool isMultiWindowAccessEnable)
1501 {
1502     CHECK_NULL_VOID(frameNode);
1503     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1504     CHECK_NULL_VOID(webPattern);
1505     webPattern->UpdateMultiWindowAccessEnabled(isMultiWindowAccessEnable);
1506 }
1507 
SetAllowWindowOpenMethod(FrameNode * frameNode,bool isAllowWindowOpenMethod)1508 void WebModelNG::SetAllowWindowOpenMethod(FrameNode* frameNode, bool isAllowWindowOpenMethod)
1509 {
1510     CHECK_NULL_VOID(frameNode);
1511     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1512     CHECK_NULL_VOID(webPattern);
1513     webPattern->UpdateAllowWindowOpenMethod(isAllowWindowOpenMethod);
1514 }
1515 
SetOnLoadStarted(std::function<void (const BaseEventInfo * info)> && jsCallback)1516 void WebModelNG::SetOnLoadStarted(std::function<void(const BaseEventInfo* info)>&& jsCallback)
1517 {
1518     auto func = jsCallback;
1519     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
1520         CHECK_NULL_VOID(info);
1521         func(info.get());
1522     };
1523     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1524     CHECK_NULL_VOID(webEventHub);
1525     webEventHub->SetOnLoadStartedEvent(std::move(uiCallback));
1526 }
1527 
SetOnLoadFinished(std::function<void (const BaseEventInfo * info)> && jsCallback)1528 void WebModelNG::SetOnLoadFinished(std::function<void(const BaseEventInfo* info)>&& jsCallback)
1529 {
1530     auto func = jsCallback;
1531     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
1532         CHECK_NULL_VOID(info);
1533         func(info.get());
1534     };
1535     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1536     CHECK_NULL_VOID(webEventHub);
1537     webEventHub->SetOnLoadFinishedEvent(std::move(uiCallback));
1538 }
1539 
SetOnScroll(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)1540 void WebModelNG::SetOnScroll(FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
1541 {
1542     auto func = jsCallback;
1543     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
1544         CHECK_NULL_VOID(info);
1545         func(info.get());
1546     };
1547     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1548     CHECK_NULL_VOID(webEventHub);
1549     webEventHub->SetOnScrollEvent(std::move(uiCallback));
1550 }
1551 
SetOnOverScroll(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)1552 void WebModelNG::SetOnOverScroll(FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
1553 {
1554     auto func = jsCallback;
1555     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) { func(info.get()); };
1556     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1557     CHECK_NULL_VOID(webEventHub);
1558     webEventHub->SetOnOverScrollEvent(std::move(uiCallback));
1559 }
1560 
SetOnScaleChange(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)1561 void WebModelNG::SetOnScaleChange(FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
1562 {
1563     auto func = jsCallback;
1564     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
1565         CHECK_NULL_VOID(info);
1566         func(info.get());
1567     };
1568     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1569     CHECK_NULL_VOID(webEventHub);
1570     webEventHub->SetOnScaleChangeEvent(std::move(uiCallback));
1571 }
1572 
SetOnRequestFocus(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)1573 void WebModelNG::SetOnRequestFocus(FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
1574 {
1575     auto func = jsCallback;
1576     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
1577         CHECK_NULL_VOID(info);
1578         func(info.get());
1579     };
1580     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1581     CHECK_NULL_VOID(webEventHub);
1582     webEventHub->SetOnRequestFocusEvent(std::move(uiCallback));
1583 }
1584 
SetOnContextMenuHide(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)1585 void WebModelNG::SetOnContextMenuHide(FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
1586 {
1587     auto func = jsCallback;
1588     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
1589         CHECK_NULL_VOID(info);
1590         func(info.get());
1591     };
1592     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1593     CHECK_NULL_VOID(webEventHub);
1594     webEventHub->SetOnContextMenuHideEvent(std::move(uiCallback));
1595 }
1596 
SetKeyboardAvoidMode(FrameNode * frameNode,const WebKeyboardAvoidMode & mode)1597 void WebModelNG::SetKeyboardAvoidMode(FrameNode* frameNode, const WebKeyboardAvoidMode& mode)
1598 {
1599     CHECK_NULL_VOID(frameNode);
1600     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1601     CHECK_NULL_VOID(webPattern);
1602     webPattern->UpdateKeyboardAvoidMode(mode);
1603 }
1604 
SetOnControllerAttached(FrameNode * frameNode,std::function<void ()> && callback)1605 void WebModelNG::SetOnControllerAttached(FrameNode* frameNode, std::function<void()>&& callback)
1606 {
1607     CHECK_NULL_VOID(frameNode);
1608     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1609     CHECK_NULL_VOID(webPattern);
1610     webPattern->SetOnControllerAttachedCallback(std::move(callback));
1611 }
1612 
SetVerticalScrollBarAccessEnabled(FrameNode * frameNode,bool isVerticalScrollBarAccessEnabled)1613 void WebModelNG::SetVerticalScrollBarAccessEnabled(FrameNode* frameNode, bool isVerticalScrollBarAccessEnabled)
1614 {
1615     CHECK_NULL_VOID(frameNode);
1616     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1617     CHECK_NULL_VOID(webPattern);
1618     webPattern->UpdateVerticalScrollBarAccessEnabled(isVerticalScrollBarAccessEnabled);
1619 }
1620 
SetHorizontalScrollBarAccessEnabled(FrameNode * frameNode,bool isHorizontalScrollBarAccessEnabled)1621 void WebModelNG::SetHorizontalScrollBarAccessEnabled(FrameNode* frameNode, bool isHorizontalScrollBarAccessEnabled)
1622 {
1623     CHECK_NULL_VOID(frameNode);
1624     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1625     CHECK_NULL_VOID(webPattern);
1626     webPattern->UpdateHorizontalScrollBarAccessEnabled(isHorizontalScrollBarAccessEnabled);
1627 }
1628 
SetTextZoomRatio(FrameNode * frameNode,int32_t textZoomRatioNum)1629 void WebModelNG::SetTextZoomRatio(FrameNode* frameNode, int32_t textZoomRatioNum)
1630 {
1631     CHECK_NULL_VOID(frameNode);
1632     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1633     CHECK_NULL_VOID(webPattern);
1634     webPattern->UpdateTextZoomRatio(textZoomRatioNum);
1635 }
1636 
InitialScale(FrameNode * frameNode,float scale)1637 void WebModelNG::InitialScale(FrameNode* frameNode, float scale)
1638 {
1639     CHECK_NULL_VOID(frameNode);
1640     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1641     CHECK_NULL_VOID(webPattern);
1642     webPattern->UpdateInitialScale(scale);
1643 }
1644 
SetGeolocationAccessEnabled(FrameNode * frameNode,bool isGeolocationAccessEnabled)1645 void WebModelNG::SetGeolocationAccessEnabled(FrameNode* frameNode, bool isGeolocationAccessEnabled)
1646 {
1647     CHECK_NULL_VOID(frameNode);
1648     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1649     CHECK_NULL_VOID(webPattern);
1650     webPattern->UpdateGeolocationAccessEnabled(isGeolocationAccessEnabled);
1651 }
1652 
SetDatabaseAccessEnabled(FrameNode * frameNode,bool isDatabaseAccessEnabled)1653 void WebModelNG::SetDatabaseAccessEnabled(FrameNode* frameNode, bool isDatabaseAccessEnabled)
1654 {
1655     CHECK_NULL_VOID(frameNode);
1656     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1657     CHECK_NULL_VOID(webPattern);
1658     webPattern->UpdateDatabaseAccessEnabled(isDatabaseAccessEnabled);
1659 }
1660 
SetOnGeolocationShow(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)1661 void WebModelNG::SetOnGeolocationShow(FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
1662 {
1663     CHECK_NULL_VOID(frameNode);
1664     auto func = jsCallback;
1665     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
1666         CHECK_NULL_VOID(info);
1667         func(info.get());
1668     };
1669     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1670     CHECK_NULL_VOID(webEventHub);
1671     webEventHub->SetOnGeolocationShowEvent(std::move(uiCallback));
1672 }
1673 
SetOverviewModeAccessEnabled(FrameNode * frameNode,bool isOverviewModeAccessEnabled)1674 void WebModelNG::SetOverviewModeAccessEnabled(FrameNode* frameNode, bool isOverviewModeAccessEnabled)
1675 {
1676     CHECK_NULL_VOID(frameNode);
1677     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1678     CHECK_NULL_VOID(webPattern);
1679     webPattern->UpdateOverviewModeAccessEnabled(isOverviewModeAccessEnabled);
1680 }
1681 
SetForceDarkAccess(FrameNode * frameNode,bool isForceDarkAccess)1682 void WebModelNG::SetForceDarkAccess(FrameNode* frameNode, bool isForceDarkAccess)
1683 {
1684     CHECK_NULL_VOID(frameNode);
1685     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1686     CHECK_NULL_VOID(webPattern);
1687     webPattern->UpdateForceDarkAccess(isForceDarkAccess);
1688 }
1689 
SetPinchSmoothModeEnabled(FrameNode * frameNode,bool isPinchSmoothModeEnabled)1690 void WebModelNG::SetPinchSmoothModeEnabled(FrameNode* frameNode, bool isPinchSmoothModeEnabled)
1691 {
1692     CHECK_NULL_VOID(frameNode);
1693     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1694     CHECK_NULL_VOID(webPattern);
1695     webPattern->UpdatePinchSmoothModeEnabled(isPinchSmoothModeEnabled);
1696 }
1697 
SetMetaViewport(FrameNode * frameNode,bool isMetaViewport)1698 void WebModelNG::SetMetaViewport(FrameNode* frameNode, bool isMetaViewport)
1699 {
1700     CHECK_NULL_VOID(frameNode);
1701     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1702     CHECK_NULL_VOID(webPattern);
1703     webPattern->UpdateMetaViewport(isMetaViewport);
1704 }
1705 
SetEnableFollowSystemFontWeight(FrameNode * frameNode,bool isEnableFollowSystemFontWeight)1706 void WebModelNG::SetEnableFollowSystemFontWeight(FrameNode* frameNode, bool isEnableFollowSystemFontWeight)
1707 {
1708     CHECK_NULL_VOID(frameNode);
1709     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1710     CHECK_NULL_VOID(webPattern);
1711     webPattern->UpdateEnableFollowSystemFontWeight(isEnableFollowSystemFontWeight);
1712 }
1713 
SetNativeEmbedModeEnabled(FrameNode * frameNode,bool isNativeEmbedModeEnabled)1714 void WebModelNG::SetNativeEmbedModeEnabled(FrameNode* frameNode, bool isNativeEmbedModeEnabled)
1715 {
1716     CHECK_NULL_VOID(frameNode);
1717     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1718     CHECK_NULL_VOID(webPattern);
1719     webPattern->UpdateNativeEmbedModeEnabled(isNativeEmbedModeEnabled);
1720 }
1721 
SetMinFontSize(FrameNode * frameNode,int32_t minFontSize)1722 void WebModelNG::SetMinFontSize(FrameNode* frameNode, int32_t minFontSize)
1723 {
1724     CHECK_NULL_VOID(frameNode);
1725     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1726     CHECK_NULL_VOID(webPattern);
1727     webPattern->UpdateMinFontSize(minFontSize);
1728 }
1729 
SetDefaultFontSize(FrameNode * frameNode,int32_t defaultFontSize)1730 void WebModelNG::SetDefaultFontSize(FrameNode* frameNode, int32_t defaultFontSize)
1731 {
1732     CHECK_NULL_VOID(frameNode);
1733     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1734     CHECK_NULL_VOID(webPattern);
1735     webPattern->UpdateDefaultFontSize(defaultFontSize);
1736 }
1737 
SetDefaultFixedFontSize(FrameNode * frameNode,int32_t defaultFixedFontSize)1738 void WebModelNG::SetDefaultFixedFontSize(FrameNode* frameNode, int32_t defaultFixedFontSize)
1739 {
1740     CHECK_NULL_VOID(frameNode);
1741     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1742     CHECK_NULL_VOID(webPattern);
1743     webPattern->UpdateDefaultFixedFontSize(defaultFixedFontSize);
1744 }
1745 
SetMinLogicalFontSize(FrameNode * frameNode,int32_t minLogicalFontSize)1746 void WebModelNG::SetMinLogicalFontSize(FrameNode* frameNode, int32_t minLogicalFontSize)
1747 {
1748     CHECK_NULL_VOID(frameNode);
1749     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1750     CHECK_NULL_VOID(webPattern);
1751     webPattern->UpdateMinLogicalFontSize(minLogicalFontSize);
1752 }
1753 
SetWebStandardFont(FrameNode * frameNode,const std::string & standardFontFamily)1754 void WebModelNG::SetWebStandardFont(FrameNode* frameNode, const std::string& standardFontFamily)
1755 {
1756     CHECK_NULL_VOID(frameNode);
1757     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1758     CHECK_NULL_VOID(webPattern);
1759     webPattern->UpdateWebStandardFont(standardFontFamily);
1760 }
1761 
SetWebSerifFont(FrameNode * frameNode,const std::string & serifFontFamily)1762 void WebModelNG::SetWebSerifFont(FrameNode* frameNode, const std::string& serifFontFamily)
1763 {
1764     CHECK_NULL_VOID(frameNode);
1765     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1766     CHECK_NULL_VOID(webPattern);
1767     webPattern->UpdateWebSerifFont(serifFontFamily);
1768 }
1769 
SetWebSansSerifFont(FrameNode * frameNode,const std::string & sansSerifFontFamily)1770 void WebModelNG::SetWebSansSerifFont(FrameNode* frameNode, const std::string& sansSerifFontFamily)
1771 {
1772     CHECK_NULL_VOID(frameNode);
1773     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1774     CHECK_NULL_VOID(webPattern);
1775     webPattern->UpdateWebSansSerifFont(sansSerifFontFamily);
1776 }
1777 
SetWebFixedFont(FrameNode * frameNode,const std::string & fixedFontFamily)1778 void WebModelNG::SetWebFixedFont(FrameNode* frameNode, const std::string& fixedFontFamily)
1779 {
1780     CHECK_NULL_VOID(frameNode);
1781     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1782     CHECK_NULL_VOID(webPattern);
1783     webPattern->UpdateWebFixedFont(fixedFontFamily);
1784 }
1785 
SetWebFantasyFont(FrameNode * frameNode,const std::string & fixedFontFamily)1786 void WebModelNG::SetWebFantasyFont(FrameNode* frameNode, const std::string& fixedFontFamily)
1787 {
1788     CHECK_NULL_VOID(frameNode);
1789     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1790     CHECK_NULL_VOID(webPattern);
1791     webPattern->UpdateWebFantasyFont(fixedFontFamily);
1792 }
1793 
SetWebCursiveFont(FrameNode * frameNode,const std::string & cursiveFontFamily)1794 void WebModelNG::SetWebCursiveFont(FrameNode* frameNode, const std::string& cursiveFontFamily)
1795 {
1796     CHECK_NULL_VOID(frameNode);
1797     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1798     CHECK_NULL_VOID(webPattern);
1799     webPattern->UpdateWebCursiveFont(cursiveFontFamily);
1800 }
1801 
SetLayoutMode(FrameNode * frameNode,WebLayoutMode mode)1802 void WebModelNG::SetLayoutMode(FrameNode* frameNode, WebLayoutMode mode)
1803 {
1804     CHECK_NULL_VOID(frameNode);
1805     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1806     CHECK_NULL_VOID(webPattern);
1807     webPattern->SetLayoutMode(mode);
1808 }
1809 
SetNativeEmbedLifecycleChangeId(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)1810 void WebModelNG::SetNativeEmbedLifecycleChangeId(
1811     FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
1812 {
1813     auto func = jsCallback;
1814     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) { func(info.get()); };
1815     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1816     CHECK_NULL_VOID(webEventHub);
1817     webEventHub->SetOnNativeEmbedLifecycleChangeEvent(std::move(uiCallback));
1818 }
1819 
SetNativeEmbedGestureEventId(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)1820 void WebModelNG::SetNativeEmbedGestureEventId(
1821     FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
1822 {
1823     auto func = jsCallback;
1824     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) { func(info.get()); };
1825     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1826     CHECK_NULL_VOID(webEventHub);
1827     webEventHub->SetOnNativeEmbedGestureEvent(std::move(uiCallback));
1828 }
1829 
RegisterNativeEmbedRule(FrameNode * frameNode,const std::string & tag,const std::string & type)1830 void WebModelNG::RegisterNativeEmbedRule(FrameNode* frameNode, const std::string& tag, const std::string& type)
1831 {
1832     CHECK_NULL_VOID(frameNode);
1833     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1834     CHECK_NULL_VOID(webPattern);
1835     webPattern->UpdateNativeEmbedRuleTag(tag);
1836     webPattern->UpdateNativeEmbedRuleType(type);
1837 }
1838 
SetIntrinsicSizeEnabled(FrameNode * frameNode,bool isIntrinsicSizeEnabled)1839 void WebModelNG::SetIntrinsicSizeEnabled(FrameNode* frameNode, bool isIntrinsicSizeEnabled)
1840 {
1841     CHECK_NULL_VOID(frameNode);
1842     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1843     CHECK_NULL_VOID(webPattern);
1844     webPattern->UpdateIntrinsicSizeEnabled(isIntrinsicSizeEnabled);
1845 }
1846 
SetFirstContentfulPaintId(FrameNode * frameNode,std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && firstContentfulPaintId)1847 void WebModelNG::SetFirstContentfulPaintId(
1848     FrameNode* frameNode, std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& firstContentfulPaintId)
1849 {
1850     CHECK_NULL_VOID(frameNode);
1851     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1852     CHECK_NULL_VOID(webEventHub);
1853     webEventHub->SetOnFirstContentfulPaintEvent(std::move(firstContentfulPaintId));
1854 }
1855 
SetAudioStateChangedId(FrameNode * frameNode,std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && audioStateChanged)1856 void WebModelNG::SetAudioStateChangedId(
1857     FrameNode* frameNode, std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& audioStateChanged)
1858 {
1859     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1860     CHECK_NULL_VOID(webEventHub);
1861     webEventHub->SetOnAudioStateChangedEvent(std::move(audioStateChanged));
1862 }
1863 
SetOnFullScreenExit(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)1864 void WebModelNG::SetOnFullScreenExit(FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
1865 {
1866     CHECK_NULL_VOID(frameNode);
1867     auto func = jsCallback;
1868     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
1869         CHECK_NULL_VOID(info);
1870         func(info.get());
1871     };
1872     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1873     CHECK_NULL_VOID(webEventHub);
1874     webEventHub->SetOnFullScreenExitEvent(std::move(uiCallback));
1875 }
1876 
SetImageAccessEnabled(FrameNode * frameNode,bool isImageAccessEnabled)1877 void WebModelNG::SetImageAccessEnabled(FrameNode* frameNode, bool isImageAccessEnabled)
1878 {
1879     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1880     CHECK_NULL_VOID(webPattern);
1881     webPattern->UpdateImageAccessEnabled(isImageAccessEnabled);
1882 }
1883 
SetOnLineImageAccessEnabled(FrameNode * frameNode,bool isOnLineImageAccessEnabled)1884 void WebModelNG::SetOnLineImageAccessEnabled(FrameNode* frameNode, bool isOnLineImageAccessEnabled)
1885 {
1886     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1887     CHECK_NULL_VOID(webPattern);
1888     webPattern->UpdateOnLineImageAccessEnabled(isOnLineImageAccessEnabled);
1889 }
1890 
SetMediaPlayGestureAccess(FrameNode * frameNode,bool isNeedGestureAccess)1891 void WebModelNG::SetMediaPlayGestureAccess(FrameNode* frameNode, bool isNeedGestureAccess)
1892 {
1893     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1894     CHECK_NULL_VOID(webPattern);
1895     webPattern->UpdateMediaPlayGestureAccess(isNeedGestureAccess);
1896 }
1897 
SetAudioResumeInterval(FrameNode * frameNode,int32_t resumeInterval)1898 void WebModelNG::SetAudioResumeInterval(FrameNode* frameNode, int32_t resumeInterval)
1899 {
1900     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1901     CHECK_NULL_VOID(webPattern);
1902     webPattern->UpdateAudioResumeInterval(resumeInterval);
1903 }
1904 
SetAudioExclusive(FrameNode * frameNode,bool audioExclusive)1905 void WebModelNG::SetAudioExclusive(FrameNode* frameNode, bool audioExclusive)
1906 {
1907     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1908     CHECK_NULL_VOID(webPattern);
1909     webPattern->UpdateAudioExclusive(audioExclusive);
1910 }
1911 
SetOnPageFinish(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)1912 void WebModelNG::SetOnPageFinish(FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
1913 {
1914     CHECK_NULL_VOID(frameNode);
1915     auto func = jsCallback;
1916     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
1917         CHECK_NULL_VOID(info);
1918         func(info.get());
1919     };
1920     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1921     CHECK_NULL_VOID(webEventHub);
1922     webEventHub->SetOnPageFinishedEvent(std::move(uiCallback));
1923 }
1924 
SetOnPageStart(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)1925 void WebModelNG::SetOnPageStart(FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
1926 {
1927     CHECK_NULL_VOID(frameNode);
1928     auto func = jsCallback;
1929     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
1930         CHECK_NULL_VOID(info);
1931         func(info.get());
1932     };
1933     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1934     CHECK_NULL_VOID(webEventHub);
1935     webEventHub->SetOnPageStartedEvent(std::move(uiCallback));
1936 }
1937 
SetOnProgressChange(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)1938 void WebModelNG::SetOnProgressChange(FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
1939 {
1940     CHECK_NULL_VOID(frameNode);
1941     auto func = jsCallback;
1942     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
1943         CHECK_NULL_VOID(info);
1944         func(info.get());
1945     };
1946     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1947     CHECK_NULL_VOID(webEventHub);
1948     webEventHub->SetOnProgressChangeEvent(std::move(uiCallback));
1949 }
1950 
SetOnTitleReceive(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)1951 void WebModelNG::SetOnTitleReceive(FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
1952 {
1953     CHECK_NULL_VOID(frameNode);
1954     auto func = jsCallback;
1955     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
1956         CHECK_NULL_VOID(info);
1957         func(info.get());
1958     };
1959     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1960     CHECK_NULL_VOID(webEventHub);
1961     webEventHub->SetOnTitleReceiveEvent(std::move(uiCallback));
1962 }
1963 
SetOnDownloadStart(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)1964 void WebModelNG::SetOnDownloadStart(FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
1965 {
1966     CHECK_NULL_VOID(frameNode);
1967     auto func = jsCallback;
1968     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
1969         CHECK_NULL_VOID(info);
1970         func(info.get());
1971     };
1972     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
1973     CHECK_NULL_VOID(webEventHub);
1974     webEventHub->SetOnDownloadStartEvent(std::move(uiCallback));
1975 }
1976 
JavaScriptOnDocumentStart(FrameNode * frameNode,const ScriptItems & scriptItems)1977 void WebModelNG::JavaScriptOnDocumentStart(FrameNode* frameNode, const ScriptItems& scriptItems)
1978 {
1979     CHECK_NULL_VOID(frameNode);
1980     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1981     CHECK_NULL_VOID(webPattern);
1982     webPattern->JavaScriptOnDocumentStart(scriptItems);
1983 }
1984 
JavaScriptOnDocumentEnd(FrameNode * frameNode,const ScriptItems & scriptItems)1985 void WebModelNG::JavaScriptOnDocumentEnd(FrameNode* frameNode, const ScriptItems& scriptItems)
1986 {
1987     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1988     CHECK_NULL_VOID(webPattern);
1989     webPattern->JavaScriptOnDocumentEnd(scriptItems);
1990 }
1991 
SetCopyOptionMode(FrameNode * frameNode,CopyOptions mode)1992 void WebModelNG::SetCopyOptionMode(FrameNode* frameNode, CopyOptions mode)
1993 {
1994     CHECK_NULL_VOID(frameNode);
1995     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
1996     CHECK_NULL_VOID(webPattern);
1997     webPattern->UpdateCopyOptionMode(static_cast<int32_t>(mode));
1998 }
1999 
SetRenderProcessNotRespondingId(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)2000 void WebModelNG::SetRenderProcessNotRespondingId(
2001     FrameNode* frameNode,  std::function<void(const BaseEventInfo* info)>&& jsCallback)
2002 {
2003     CHECK_NULL_VOID(frameNode);
2004     auto func = jsCallback;
2005     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) { func(info.get()); };
2006     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2007     CHECK_NULL_VOID(webEventHub);
2008     webEventHub->SetOnRenderProcessNotRespondingEvent(std::move(uiCallback));
2009 }
2010 
SetOnPageVisible(FrameNode * frameNode,OnWebAsyncFunc && pageVisibleId)2011 void WebModelNG::SetOnPageVisible(FrameNode* frameNode, OnWebAsyncFunc&& pageVisibleId)
2012 {
2013     CHECK_NULL_VOID(frameNode);
2014     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2015     CHECK_NULL_VOID(webEventHub);
2016     webEventHub->SetOnPageVisibleEvent(std::move(pageVisibleId));
2017 }
2018 
SetOnRenderExited(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)2019 void WebModelNG::SetOnRenderExited(FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
2020 {
2021     CHECK_NULL_VOID(frameNode);
2022     auto func = jsCallback;
2023     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
2024         CHECK_NULL_VOID(info);
2025         func(info.get());
2026     };
2027     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2028     CHECK_NULL_VOID(webEventHub);
2029     webEventHub->SetOnRenderExitedEvent(std::move(uiCallback));
2030 }
2031 
SetBlockNetwork(FrameNode * frameNode,bool isNetworkBlocked)2032 void WebModelNG::SetBlockNetwork(FrameNode* frameNode, bool isNetworkBlocked)
2033 {
2034     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
2035     CHECK_NULL_VOID(webPattern);
2036     webPattern->UpdateBlockNetwork(isNetworkBlocked);
2037 }
2038 
SetOnResourceLoad(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)2039 void WebModelNG::SetOnResourceLoad(FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
2040 {
2041     CHECK_NULL_VOID(frameNode);
2042     auto func = jsCallback;
2043     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
2044         CHECK_NULL_VOID(info);
2045         func(info.get());
2046     };
2047     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2048     CHECK_NULL_VOID(webEventHub);
2049     webEventHub->SetOnResourceLoadEvent(std::move(uiCallback));
2050 }
2051 
SetOnRefreshAccessedHistory(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)2052 void WebModelNG::SetOnRefreshAccessedHistory(
2053     FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
2054 {
2055     CHECK_NULL_VOID(frameNode);
2056     auto func = jsCallback;
2057     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
2058         CHECK_NULL_VOID(info);
2059         func(info.get());
2060     };
2061     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2062     CHECK_NULL_VOID(webEventHub);
2063     webEventHub->SetOnRefreshAccessedHistoryEvent(std::move(uiCallback));
2064 }
2065 
SetBypassVsyncCondition(WebBypassVsyncCondition condition)2066 void WebModelNG::SetBypassVsyncCondition(WebBypassVsyncCondition condition)
2067 {
2068     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
2069     CHECK_NULL_VOID(webPattern);
2070     TAG_LOGI(AceLogTag::ACE_WEB, "WebModelNG::SetBypassVsyncCondition condition:%{public}d", condition);
2071     webPattern->UpdateBypassVsyncCondition(condition);
2072 }
2073 
SetOnNavigationEntryCommitted(FrameNode * frameNode,std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && navigationEntryCommitted)2074 void WebModelNG::SetOnNavigationEntryCommitted(
2075     FrameNode* frameNode, std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& navigationEntryCommitted)
2076 {
2077     CHECK_NULL_VOID(frameNode);
2078     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2079     CHECK_NULL_VOID(webEventHub);
2080     webEventHub->SetOnNavigationEntryCommittedEvent(std::move(navigationEntryCommitted));
2081 }
2082 
SetOnSearchResultReceive(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)2083 void WebModelNG::SetOnSearchResultReceive(
2084     FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
2085 {
2086     CHECK_NULL_VOID(frameNode);
2087     auto func = jsCallback;
2088     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
2089         CHECK_NULL_VOID(info);
2090         func(info.get());
2091     };
2092     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2093     CHECK_NULL_VOID(webEventHub);
2094     webEventHub->SetOnSearchResultReceiveEvent(std::move(uiCallback));
2095 }
2096 
SetOverScrollMode(FrameNode * frameNode,OverScrollMode mode)2097 void WebModelNG::SetOverScrollMode(FrameNode* frameNode, OverScrollMode mode)
2098 {
2099     CHECK_NULL_VOID(frameNode);
2100     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
2101     CHECK_NULL_VOID(webPattern);
2102     webPattern->UpdateOverScrollMode(mode);
2103 }
SetOnTouchIconUrlReceived(FrameNode * frameNode,OnWebAsyncFunc && touchIconUrlId)2104 void WebModelNG::SetOnTouchIconUrlReceived(FrameNode* frameNode, OnWebAsyncFunc&& touchIconUrlId)
2105 {
2106     CHECK_NULL_VOID(frameNode);
2107     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2108     CHECK_NULL_VOID(webEventHub);
2109     webEventHub->SetOnTouchIconUrlEvent(std::move(touchIconUrlId));
2110 }
2111 
SetOnRenderProcessResponding(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)2112 void WebModelNG::SetOnRenderProcessResponding(
2113     FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
2114 {
2115     CHECK_NULL_VOID(frameNode);
2116     auto func = jsCallback;
2117     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
2118         CHECK_NULL_VOID(info);
2119         func(info.get());
2120     };
2121     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2122     CHECK_NULL_VOID(webEventHub);
2123     webEventHub->SetOnRenderProcessRespondingEvent(std::move(uiCallback));
2124 }
2125 
SetPermissionRequestEventId(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)2126 void WebModelNG::SetPermissionRequestEventId(
2127     FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
2128 {
2129     auto func = jsCallback;
2130     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
2131         CHECK_NULL_VOID(info);
2132         func(info.get());
2133     };
2134     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2135     CHECK_NULL_VOID(webEventHub);
2136     webEventHub->SetOnPermissionRequestEvent(std::move(uiCallback));
2137 }
2138 
SetScreenCaptureRequestEventId(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)2139 void WebModelNG::SetScreenCaptureRequestEventId(
2140     FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
2141 {
2142     auto func = jsCallback;
2143     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) { func(info.get()); };
2144     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2145     CHECK_NULL_VOID(webEventHub);
2146     webEventHub->SetOnScreenCaptureRequestEvent(std::move(uiCallback));
2147 }
2148 
SetWindowNewEvent(FrameNode * frameNode,std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && jsCallback)2149 void WebModelNG::SetWindowNewEvent(
2150     FrameNode* frameNode, std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& jsCallback)
2151 {
2152     CHECK_NULL_VOID(frameNode);
2153     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2154     CHECK_NULL_VOID(webEventHub);
2155     webEventHub->SetOnWindowNewEvent(std::move(jsCallback));
2156 }
2157 
SetOnFullScreenEnter(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)2158 void WebModelNG::SetOnFullScreenEnter(FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
2159 {
2160     CHECK_NULL_VOID(frameNode);
2161     auto func = jsCallback;
2162     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
2163         CHECK_NULL_VOID(info);
2164         func(info.get());
2165     };
2166     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2167     CHECK_NULL_VOID(webEventHub);
2168     webEventHub->SetOnFullScreenEnterEvent(std::move(uiCallback));
2169 }
2170 
SetWindowExitEventId(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)2171 void WebModelNG::SetWindowExitEventId(FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
2172 {
2173     CHECK_NULL_VOID(frameNode);
2174     auto func = jsCallback;
2175     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
2176         CHECK_NULL_VOID(info);
2177         func(info.get());
2178     };
2179     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2180     CHECK_NULL_VOID(webEventHub);
2181     webEventHub->SetOnWindowExitEvent(std::move(uiCallback));
2182 }
2183 
SetOnAlert(FrameNode * frameNode,std::function<bool (const BaseEventInfo * info)> && jsCallback,int dialogEventType)2184 void WebModelNG::SetOnAlert(
2185     FrameNode* frameNode, std::function<bool(const BaseEventInfo* info)>&& jsCallback, int dialogEventType)
2186 {
2187     CHECK_NULL_VOID(frameNode);
2188     auto func = jsCallback;
2189     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
2190         CHECK_NULL_RETURN(info, false);
2191         return func(info.get());
2192     };
2193     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2194     CHECK_NULL_VOID(webEventHub);
2195     webEventHub->SetOnCommonDialogEvent(std::move(uiCallback), static_cast<DialogEventType>(dialogEventType));
2196 }
2197 
SetOnConfirm(FrameNode * frameNode,std::function<bool (const BaseEventInfo * info)> && jsCallback,int dialogEventType)2198 void WebModelNG::SetOnConfirm(
2199     FrameNode* frameNode, std::function<bool(const BaseEventInfo* info)>&& jsCallback, int dialogEventType)
2200 {
2201     CHECK_NULL_VOID(frameNode);
2202     auto func = jsCallback;
2203     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
2204         CHECK_NULL_RETURN(info, false);
2205         return func(info.get());
2206     };
2207     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2208     CHECK_NULL_VOID(webEventHub);
2209     webEventHub->SetOnCommonDialogEvent(std::move(uiCallback), static_cast<DialogEventType>(dialogEventType));
2210 }
2211 
SetOnPrompt(FrameNode * frameNode,std::function<bool (const BaseEventInfo * info)> && jsCallback,int dialogEventType)2212 void WebModelNG::SetOnPrompt(
2213     FrameNode* frameNode, std::function<bool(const BaseEventInfo* info)>&& jsCallback, int dialogEventType)
2214 {
2215     CHECK_NULL_VOID(frameNode);
2216     auto func = jsCallback;
2217     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
2218         CHECK_NULL_RETURN(info, false);
2219         return func(info.get());
2220     };
2221     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2222     CHECK_NULL_VOID(webEventHub);
2223     webEventHub->SetOnCommonDialogEvent(std::move(uiCallback), static_cast<DialogEventType>(dialogEventType));
2224 }
2225 
SetOnShowFileSelector(FrameNode * frameNode,std::function<bool (const BaseEventInfo * info)> && jsCallback)2226 void WebModelNG::SetOnShowFileSelector(
2227     FrameNode* frameNode, std::function<bool(const BaseEventInfo* info)>&& jsCallback)
2228 {
2229     CHECK_NULL_VOID(frameNode);
2230     auto func = jsCallback;
2231     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
2232         CHECK_NULL_RETURN(info, false);
2233         return func(info.get());
2234     };
2235     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2236     CHECK_NULL_VOID(webEventHub);
2237     webEventHub->SetOnFileSelectorShowEvent(std::move(uiCallback));
2238 }
2239 
SetOnContextMenuShow(FrameNode * frameNode,std::function<bool (const BaseEventInfo * info)> && jsCallback)2240 void WebModelNG::SetOnContextMenuShow(FrameNode* frameNode, std::function<bool(const BaseEventInfo* info)>&& jsCallback)
2241 {
2242     CHECK_NULL_VOID(frameNode);
2243     auto func = jsCallback;
2244     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
2245         CHECK_NULL_RETURN(info, false);
2246         return func(info.get());
2247     };
2248     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2249     CHECK_NULL_VOID(webEventHub);
2250     webEventHub->SetOnContextMenuShowEvent(std::move(uiCallback));
2251 }
2252 
SetOnSafeBrowsingCheckResult(FrameNode * frameNode,std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && safeBrowsingCheckResult)2253 void WebModelNG::SetOnSafeBrowsingCheckResult(
2254     FrameNode* frameNode, std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& safeBrowsingCheckResult)
2255 {
2256     CHECK_NULL_VOID(frameNode);
2257     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2258     CHECK_NULL_VOID(webEventHub);
2259     webEventHub->SetOnSafeBrowsingCheckResultEvent(std::move(safeBrowsingCheckResult));
2260 }
2261 
SetNestedScrollExt(FrameNode * frameNode,const NestedScrollOptionsExt & nestedOpt)2262 void WebModelNG::SetNestedScrollExt(FrameNode* frameNode, const NestedScrollOptionsExt& nestedOpt)
2263 {
2264     CHECK_NULL_VOID(frameNode);
2265     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
2266     CHECK_NULL_VOID(webPattern);
2267     webPattern->SetNestedScrollExt(nestedOpt);
2268 }
2269 
SetOnInterceptKeyEvent(FrameNode * frameNode,std::function<bool (KeyEventInfo & keyEventInfo)> && keyEventInfo)2270 void WebModelNG::SetOnInterceptKeyEvent(
2271     FrameNode* frameNode, std::function<bool(KeyEventInfo& keyEventInfo)>&& keyEventInfo)
2272 {
2273     CHECK_NULL_VOID(frameNode);
2274     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2275     CHECK_NULL_VOID(webEventHub);
2276     webEventHub->SetOnPreKeyEvent(std::move(keyEventInfo));
2277 }
2278 
SetOnErrorReceive(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)2279 void WebModelNG::SetOnErrorReceive(FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
2280 {
2281     CHECK_NULL_VOID(frameNode);
2282     auto func = jsCallback;
2283     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
2284         CHECK_NULL_VOID(info);
2285         func(info.get());
2286     };
2287     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2288     CHECK_NULL_VOID(webEventHub);
2289     webEventHub->SetOnErrorReceiveEvent(std::move(uiCallback));
2290 }
2291 
SetOnLoadIntercept(FrameNode * frameNode,std::function<bool (const BaseEventInfo * info)> && jsCallback)2292 void WebModelNG::SetOnLoadIntercept(FrameNode* frameNode, std::function<bool(const BaseEventInfo* info)>&& jsCallback)
2293 {
2294     CHECK_NULL_VOID(frameNode);
2295     auto func = jsCallback;
2296     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
2297         CHECK_NULL_RETURN(info, false);
2298         return func(info.get());
2299     };
2300     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2301     CHECK_NULL_VOID(webEventHub);
2302     webEventHub->SetOnLoadInterceptEvent(std::move(uiCallback));
2303 }
2304 
SetOnHttpErrorReceive(FrameNode * frameNode,std::function<void (const BaseEventInfo * info)> && jsCallback)2305 void WebModelNG::SetOnHttpErrorReceive(
2306     FrameNode* frameNode, std::function<void(const BaseEventInfo* info)>&& jsCallback)
2307 {
2308     CHECK_NULL_VOID(frameNode);
2309     auto func = jsCallback;
2310     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
2311         CHECK_NULL_VOID(info);
2312         func(info.get());
2313     };
2314     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2315     CHECK_NULL_VOID(webEventHub);
2316     webEventHub->SetOnHttpErrorReceiveEvent(std::move(uiCallback));
2317 }
2318 
SetOnOverrideUrlLoading(FrameNode * frameNode,std::function<bool (const BaseEventInfo * info)> && jsCallback)2319 void WebModelNG::SetOnOverrideUrlLoading(
2320     FrameNode* frameNode, std::function<bool(const BaseEventInfo* info)>&& jsCallback)
2321 {
2322     CHECK_NULL_VOID(frameNode);
2323     auto func = jsCallback;
2324     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
2325         CHECK_NULL_RETURN(info, false);
2326         return func(info.get());
2327     };
2328     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2329     CHECK_NULL_VOID(webEventHub);
2330     webEventHub->SetOnOverrideUrlLoadingEvent(std::move(uiCallback));
2331 }
2332 
SetOnHttpAuthRequest(FrameNode * frameNode,std::function<bool (const BaseEventInfo * info)> && jsCallback)2333 void WebModelNG::SetOnHttpAuthRequest(FrameNode* frameNode, std::function<bool(const BaseEventInfo* info)>&& jsCallback)
2334 {
2335     CHECK_NULL_VOID(frameNode);
2336     auto func = jsCallback;
2337     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
2338         CHECK_NULL_RETURN(info, false);
2339         return func(info.get());
2340     };
2341     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2342     CHECK_NULL_VOID(webEventHub);
2343     webEventHub->SetOnHttpAuthRequestEvent(std::move(uiCallback));
2344 }
2345 
SetOnConsole(FrameNode * frameNode,std::function<bool (const BaseEventInfo * info)> && jsCallback)2346 void WebModelNG::SetOnConsole(FrameNode* frameNode, std::function<bool(const BaseEventInfo* info)>&& jsCallback)
2347 {
2348     CHECK_NULL_VOID(frameNode);
2349     auto func = jsCallback;
2350     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
2351         CHECK_NULL_RETURN(info, false);
2352         return func(info.get());
2353     };
2354     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2355     CHECK_NULL_VOID(webEventHub);
2356     webEventHub->SetOnConsoleEvent(std::move(uiCallback));
2357 }
2358 
SetOnSslErrorEvent(FrameNode * frameNode,std::function<bool (const BaseEventInfo * info)> && jsCallback)2359 void WebModelNG::SetOnSslErrorEvent(FrameNode* frameNode, std::function<bool(const BaseEventInfo* info)>&& jsCallback)
2360 {
2361     CHECK_NULL_VOID(frameNode);
2362     auto func = jsCallback;
2363     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
2364         CHECK_NULL_RETURN(info, false);
2365         return func(info.get());
2366     };
2367     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2368     CHECK_NULL_VOID(webEventHub);
2369     webEventHub->SetOnAllSslErrorRequestEvent(std::move(uiCallback));
2370 }
2371 
SetOnDataResubmitted(FrameNode * frameNode,std::function<void (const std::shared_ptr<BaseEventInfo> & info)> && dataResubmittedId)2372 void WebModelNG::SetOnDataResubmitted(
2373     FrameNode* frameNode, std::function<void(const std::shared_ptr<BaseEventInfo>& info)>&& dataResubmittedId)
2374 {
2375     CHECK_NULL_VOID(frameNode);
2376     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2377     CHECK_NULL_VOID(webEventHub);
2378     webEventHub->SetOnDataResubmittedEvent(std::move(dataResubmittedId));
2379 }
2380 
SetGestureFocusMode(GestureFocusMode mode)2381 void WebModelNG::SetGestureFocusMode(GestureFocusMode mode)
2382 {
2383     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
2384     CHECK_NULL_VOID(webPattern);
2385     webPattern->UpdateGestureFocusMode(mode);
2386 }
2387 
SetGestureFocusMode(FrameNode * frameNode,GestureFocusMode mode)2388 void WebModelNG::SetGestureFocusMode(FrameNode* frameNode, GestureFocusMode mode)
2389 {
2390     CHECK_NULL_VOID(frameNode);
2391     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
2392     CHECK_NULL_VOID(webPattern);
2393     webPattern->UpdateGestureFocusMode(mode);
2394 }
2395 
SetOnSslErrorRequest(FrameNode * frameNode,std::function<bool (const BaseEventInfo * info)> && jsCallback)2396 void WebModelNG::SetOnSslErrorRequest(FrameNode* frameNode, std::function<bool(const BaseEventInfo* info)>&& jsCallback)
2397 {
2398     CHECK_NULL_VOID(frameNode);
2399     auto func = jsCallback;
2400     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
2401         CHECK_NULL_RETURN(info, false);
2402         return func(info.get());
2403     };
2404     auto webEventHub = frameNode->GetEventHub<WebEventHub>();
2405     CHECK_NULL_VOID(webEventHub);
2406     webEventHub->SetOnSslErrorRequestEvent(std::move(uiCallback));
2407 }
2408 
SetOnClientAuthenticationRequest(FrameNode * frameNode,std::function<bool (const BaseEventInfo * info)> && jsCallback)2409 void WebModelNG::SetOnClientAuthenticationRequest(
2410     FrameNode* frameNode, std::function<bool(const BaseEventInfo* info)>&& jsCallback)
2411 {
2412     CHECK_NULL_VOID(frameNode);
2413     auto func = jsCallback;
2414     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
2415         CHECK_NULL_RETURN(info, false);
2416         return func(info.get());
2417     };
2418     auto webEventHub = frameNode->GetEventHub<WebEventHub>();
2419     CHECK_NULL_VOID(webEventHub);
2420     webEventHub->SetOnSslSelectCertRequestEvent(std::move(uiCallback));
2421 }
2422 
SetOnInterceptRequest(FrameNode * frameNode,std::function<RefPtr<WebResponse> (const BaseEventInfo * info)> && jsCallback)2423 void WebModelNG::SetOnInterceptRequest(
2424     FrameNode* frameNode, std::function<RefPtr<WebResponse>(const BaseEventInfo* info)>&& jsCallback)
2425 {
2426     CHECK_NULL_VOID(frameNode);
2427     auto func = jsCallback;
2428     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> RefPtr<WebResponse> {
2429         CHECK_NULL_RETURN(info, nullptr);
2430         return func(info.get());
2431     };
2432     auto webEventHub = frameNode->GetEventHub<WebEventHub>();
2433     CHECK_NULL_VOID(webEventHub);
2434     webEventHub->SetOnInterceptRequestEvent(std::move(uiCallback));
2435 }
2436 
SetFaviconReceivedId(FrameNode * frameNode,OnWebAsyncFunc && faviconReceivedId)2437 void WebModelNG::SetFaviconReceivedId(FrameNode* frameNode, OnWebAsyncFunc&& faviconReceivedId)
2438 {
2439     CHECK_NULL_VOID(frameNode);
2440     auto webEventHub = frameNode->GetEventHub<WebEventHub>();
2441     CHECK_NULL_VOID(webEventHub);
2442     webEventHub->SetOnFaviconReceivedEvent(std::move(faviconReceivedId));
2443 }
2444 
SetOnBeforeUnload(FrameNode * frameNode,std::function<bool (const BaseEventInfo * info)> && jsCallback,int dialogEventType)2445 void WebModelNG::SetOnBeforeUnload(
2446     FrameNode* frameNode, std::function<bool(const BaseEventInfo* info)>&& jsCallback, int dialogEventType)
2447 {
2448     CHECK_NULL_VOID(frameNode);
2449     auto func = jsCallback;
2450     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) -> bool {
2451         CHECK_NULL_RETURN(info, false);
2452         return func(info.get());
2453     };
2454     auto webEventHub = frameNode->GetEventHub<WebEventHub>();
2455     CHECK_NULL_VOID(webEventHub);
2456     webEventHub->SetOnCommonDialogEvent(std::move(uiCallback), static_cast<DialogEventType>(dialogEventType));
2457 }
2458 
SetOnPdfScrollAtBottom(std::function<void (const BaseEventInfo * info)> && jsCallback)2459 void WebModelNG::SetOnPdfScrollAtBottom(std::function<void(const BaseEventInfo* info)>&& jsCallback)
2460 {
2461     auto func = jsCallback;
2462     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
2463         CHECK_NULL_VOID(info);
2464         func(info.get());
2465     };
2466     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2467     CHECK_NULL_VOID(webEventHub);
2468     webEventHub->SetOnPdfScrollAtBottomEvent(std::move(uiCallback));
2469 }
2470 
SetOnPdfLoadEvent(std::function<void (const BaseEventInfo * info)> && jsCallback)2471 void WebModelNG::SetOnPdfLoadEvent(std::function<void(const BaseEventInfo* info)>&& jsCallback)
2472 {
2473     auto func = jsCallback;
2474     auto uiCallback = [func](const std::shared_ptr<BaseEventInfo>& info) {
2475         CHECK_NULL_VOID(info);
2476         func(info.get());
2477     };
2478     auto webEventHub = ViewStackProcessor::GetInstance()->GetMainFrameNodeEventHub<WebEventHub>();
2479     CHECK_NULL_VOID(webEventHub);
2480     webEventHub->SetOnPdfLoadEvent(std::move(uiCallback));
2481 }
2482 
SetJavaScriptProxy(FrameNode * frameNode,std::function<void ()> && jsProxyCallback)2483 void WebModelNG::SetJavaScriptProxy(FrameNode* frameNode, std::function<void()>&& jsProxyCallback)
2484 {
2485     auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern<WebPattern>();
2486     CHECK_NULL_VOID(webPattern);
2487     webPattern->SetJsProxyCallback(std::move(jsProxyCallback));
2488 }
2489 } // namespace OHOS::Ace::NG
2490