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