1 /*
2  * Copyright (c) 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 "ohos_nweb/bridge/ark_web_handler_impl.h"
17 
18 #include "ohos_nweb/bridge/ark_web_access_request_wrapper.h"
19 #include "ohos_nweb/bridge/ark_web_app_link_callback_wrapper.h"
20 #include "ohos_nweb/bridge/ark_web_console_log_wrapper.h"
21 #include "ohos_nweb/bridge/ark_web_context_menu_callback_wrapper.h"
22 #include "ohos_nweb/bridge/ark_web_context_menu_params_wrapper.h"
23 #include "ohos_nweb/bridge/ark_web_controller_handler_wrapper.h"
24 #include "ohos_nweb/bridge/ark_web_cursor_info_wrapper.h"
25 #include "ohos_nweb/bridge/ark_web_custom_keyboard_handler_wrapper.h"
26 #include "ohos_nweb/bridge/ark_web_data_resubmission_callback_wrapper.h"
27 #include "ohos_nweb/bridge/ark_web_date_time_chooser_callback_wrapper.h"
28 #include "ohos_nweb/bridge/ark_web_date_time_chooser_wrapper.h"
29 #include "ohos_nweb/bridge/ark_web_drag_data_wrapper.h"
30 #include "ohos_nweb/bridge/ark_web_file_selector_params_wrapper.h"
31 #include "ohos_nweb/bridge/ark_web_first_meaningful_paint_details_wrapper.h"
32 #include "ohos_nweb/bridge/ark_web_full_screen_exit_handler_wrapper.h"
33 #include "ohos_nweb/bridge/ark_web_geo_location_callback_wrapper.h"
34 #include "ohos_nweb/bridge/ark_web_image_options_wrapper.h"
35 #include "ohos_nweb/bridge/ark_web_js_all_ssl_error_result_wrapper.h"
36 #include "ohos_nweb/bridge/ark_web_js_dialog_result_wrapper.h"
37 #include "ohos_nweb/bridge/ark_web_js_http_auth_result_wrapper.h"
38 #include "ohos_nweb/bridge/ark_web_js_ssl_error_result_wrapper.h"
39 #include "ohos_nweb/bridge/ark_web_js_ssl_select_cert_result_wrapper.h"
40 #include "ohos_nweb/bridge/ark_web_key_event_wrapper.h"
41 #include "ohos_nweb/bridge/ark_web_largest_contentful_paint_details_wrapper.h"
42 #include "ohos_nweb/bridge/ark_web_load_committed_details_wrapper.h"
43 #include "ohos_nweb/bridge/ark_web_native_embed_data_info_wrapper.h"
44 #include "ohos_nweb/bridge/ark_web_native_embed_touch_event_wrapper.h"
45 #include "ohos_nweb/bridge/ark_web_nweb_wrapper.h"
46 #include "ohos_nweb/bridge/ark_web_quick_menu_callback_wrapper.h"
47 #include "ohos_nweb/bridge/ark_web_quick_menu_params_wrapper.h"
48 #include "ohos_nweb/bridge/ark_web_screen_capture_access_request_wrapper.h"
49 #include "ohos_nweb/bridge/ark_web_select_popup_menu_callback_wrapper.h"
50 #include "ohos_nweb/bridge/ark_web_select_popup_menu_param_wrapper.h"
51 #include "ohos_nweb/bridge/ark_web_string_vector_value_callback_wrapper.h"
52 #include "ohos_nweb/bridge/ark_web_touch_handle_hot_zone_wrapper.h"
53 #include "ohos_nweb/bridge/ark_web_touch_handle_state_wrapper.h"
54 #include "ohos_nweb/bridge/ark_web_url_resource_error_wrapper.h"
55 #include "ohos_nweb/bridge/ark_web_url_resource_request_wrapper.h"
56 #include "ohos_nweb/bridge/ark_web_url_resource_response_wrapper.h"
57 #include "ohos_nweb/bridge/ark_web_view_struct_utils.h"
58 #include "ohos_nweb/ctocpp/ark_web_date_time_suggestion_vector_ctocpp.h"
59 
60 #include "base/bridge/ark_web_bridge_macros.h"
61 
62 namespace OHOS::ArkWeb {
63 
64 using ArkWebSslError = OHOS::NWeb::SslError;
65 using ArkWebCursorType = OHOS::NWeb::CursorType;
66 using ArkWebActivityType = OHOS::NWeb::ActivityType;
67 using ArkWebRenderExitReason = OHOS::NWeb::RenderExitReason;
68 using ArkWebDragOperation = OHOS::NWeb::NWebDragData::DragOperation;
69 using ArkWebRenderProcessNotRespondingReason = OHOS::NWeb::RenderProcessNotRespondingReason;
70 using ArkWebViewportFit = OHOS::NWeb::ViewportFit;
71 using ArkWebFocusSource = OHOS::NWeb::NWebFocusSource;
72 
ArkWebHandlerImpl(std::shared_ptr<OHOS::NWeb::NWebHandler> nweb_handler)73 ArkWebHandlerImpl::ArkWebHandlerImpl(std::shared_ptr<OHOS::NWeb::NWebHandler> nweb_handler)
74     : nweb_handler_(nweb_handler)
75 {}
76 
SetNWeb(ArkWebRefPtr<ArkWebNWeb> nweb)77 void ArkWebHandlerImpl::SetNWeb(ArkWebRefPtr<ArkWebNWeb> nweb)
78 {
79     if (CHECK_REF_PTR_IS_NULL(nweb)) {
80         nweb_handler_->SetNWeb(nullptr);
81         return;
82     }
83 
84     nweb_handler_->SetNWeb(std::make_shared<ArkWebNWebWrapper>(nweb));
85 }
86 
OnFocus()87 bool ArkWebHandlerImpl::OnFocus()
88 {
89     return nweb_handler_->OnFocus();
90 }
91 
OnMessage(const ArkWebString & param)92 void ArkWebHandlerImpl::OnMessage(const ArkWebString& param)
93 {
94     nweb_handler_->OnMessage(ArkWebStringStructToClass(param));
95 }
96 
OnResource(const ArkWebString & url)97 void ArkWebHandlerImpl::OnResource(const ArkWebString& url)
98 {
99     nweb_handler_->OnResource(ArkWebStringStructToClass(url));
100 }
101 
OnPageIcon(const void * data,size_t width,size_t height,int color_type,int alpha_type)102 void ArkWebHandlerImpl::OnPageIcon(const void* data, size_t width, size_t height, int color_type, int alpha_type)
103 {
104     nweb_handler_->OnPageIcon(data, width, height, static_cast<ArkWebImageColorType>(color_type),
105         static_cast<ArkWebImageAlphaType>(alpha_type));
106 }
107 
OnPageTitle(const ArkWebString & title)108 void ArkWebHandlerImpl::OnPageTitle(const ArkWebString& title)
109 {
110     nweb_handler_->OnPageTitle(ArkWebStringStructToClass(title));
111 }
112 
OnProxyDied()113 void ArkWebHandlerImpl::OnProxyDied()
114 {
115     nweb_handler_->OnProxyDied();
116 }
117 
OnHttpError(ArkWebRefPtr<ArkWebUrlResourceRequest> request,ArkWebRefPtr<ArkWebUrlResourceResponse> response)118 void ArkWebHandlerImpl::OnHttpError(
119     ArkWebRefPtr<ArkWebUrlResourceRequest> request, ArkWebRefPtr<ArkWebUrlResourceResponse> response)
120 {
121     std::shared_ptr<OHOS::NWeb::NWebUrlResourceRequest> nweb_request = nullptr;
122     if (!CHECK_REF_PTR_IS_NULL(request)) {
123         nweb_request = std::make_shared<ArkWebUrlResourceRequestWrapper>(request);
124     }
125 
126     std::shared_ptr<OHOS::NWeb::NWebUrlResourceResponse> nweb_response = nullptr;
127     if (!CHECK_REF_PTR_IS_NULL(response)) {
128         nweb_response = std::make_shared<ArkWebUrlResourceResponseWrapper>(response);
129     }
130 
131     nweb_handler_->OnHttpError(nweb_request, nweb_response);
132 }
133 
OnConsoleLog(ArkWebRefPtr<ArkWebConsoleLog> console_log)134 bool ArkWebHandlerImpl::OnConsoleLog(ArkWebRefPtr<ArkWebConsoleLog> console_log)
135 {
136     if (CHECK_REF_PTR_IS_NULL(console_log)) {
137         return nweb_handler_->OnConsoleLog(nullptr);
138     }
139 
140     return nweb_handler_->OnConsoleLog(std::make_shared<ArkWebConsoleLogWrapper>(console_log));
141 }
142 
OnRouterPush(const ArkWebString & param)143 void ArkWebHandlerImpl::OnRouterPush(const ArkWebString& param)
144 {
145     nweb_handler_->OnRouterPush(ArkWebStringStructToClass(param));
146 }
147 
OnPageLoadEnd(int http_status_code,const ArkWebString & url)148 void ArkWebHandlerImpl::OnPageLoadEnd(int http_status_code, const ArkWebString& url)
149 {
150     nweb_handler_->OnPageLoadEnd(http_status_code, ArkWebStringStructToClass(url));
151 }
152 
OnPageLoadBegin(const ArkWebString & url)153 void ArkWebHandlerImpl::OnPageLoadBegin(const ArkWebString& url)
154 {
155     nweb_handler_->OnPageLoadBegin(ArkWebStringStructToClass(url));
156 }
157 
OnPageLoadError(int error_code,const ArkWebString & description,const ArkWebString & url)158 void ArkWebHandlerImpl::OnPageLoadError(int error_code, const ArkWebString& description, const ArkWebString& url)
159 {
160     nweb_handler_->OnPageLoadError(error_code, ArkWebStringStructToClass(description), ArkWebStringStructToClass(url));
161 }
162 
OnDesktopIconUrl(const ArkWebString & icon_url,bool precomposed)163 void ArkWebHandlerImpl::OnDesktopIconUrl(const ArkWebString& icon_url, bool precomposed)
164 {
165     nweb_handler_->OnDesktopIconUrl(ArkWebStringStructToClass(icon_url), precomposed);
166 }
167 
OnLoadingProgress(int new_progress)168 void ArkWebHandlerImpl::OnLoadingProgress(int new_progress)
169 {
170     nweb_handler_->OnLoadingProgress(new_progress);
171 }
172 
OnGeolocationShow(const ArkWebString & origin,ArkWebRefPtr<ArkWebGeoLocationCallback> callback)173 void ArkWebHandlerImpl::OnGeolocationShow(const ArkWebString& origin, ArkWebRefPtr<ArkWebGeoLocationCallback> callback)
174 {
175     if (CHECK_REF_PTR_IS_NULL(callback)) {
176         nweb_handler_->OnGeolocationShow(ArkWebStringStructToClass(origin), nullptr);
177         return;
178     }
179 
180     nweb_handler_->OnGeolocationShow(
181         ArkWebStringStructToClass(origin), std::make_shared<ArkWebGeoLocationCallbackWrapper>(callback));
182 }
183 
OnGeolocationHide()184 void ArkWebHandlerImpl::OnGeolocationHide()
185 {
186     nweb_handler_->OnGeolocationHide();
187 }
188 
OnFileSelectorShow(ArkWebRefPtr<ArkWebStringVectorValueCallback> callback,ArkWebRefPtr<ArkWebFileSelectorParams> params)189 bool ArkWebHandlerImpl::OnFileSelectorShow(
190     ArkWebRefPtr<ArkWebStringVectorValueCallback> callback, ArkWebRefPtr<ArkWebFileSelectorParams> params)
191 {
192     std::shared_ptr<OHOS::NWeb::NWebStringVectorValueCallback> nweb_callback = nullptr;
193     if (!CHECK_REF_PTR_IS_NULL(callback)) {
194         nweb_callback = std::make_shared<ArkWebStringVectorValueCallbackWrapper>(callback);
195     }
196 
197     std::shared_ptr<OHOS::NWeb::NWebFileSelectorParams> nweb_params = nullptr;
198     if (!CHECK_REF_PTR_IS_NULL(params)) {
199         nweb_params = std::make_shared<ArkWebFileSelectorParamsWrapper>(params);
200     }
201 
202     return nweb_handler_->OnFileSelectorShow(nweb_callback, nweb_params);
203 }
204 
OnResourceLoadError(ArkWebRefPtr<ArkWebUrlResourceRequest> request,ArkWebRefPtr<ArkWebUrlResourceError> error)205 void ArkWebHandlerImpl::OnResourceLoadError(
206     ArkWebRefPtr<ArkWebUrlResourceRequest> request, ArkWebRefPtr<ArkWebUrlResourceError> error)
207 {
208     std::shared_ptr<OHOS::NWeb::NWebUrlResourceRequest> nweb_request = nullptr;
209     if (!CHECK_REF_PTR_IS_NULL(request)) {
210         nweb_request = std::make_shared<ArkWebUrlResourceRequestWrapper>(request);
211     }
212 
213     std::shared_ptr<OHOS::NWeb::NWebUrlResourceError> nweb_error = nullptr;
214     if (!CHECK_REF_PTR_IS_NULL(error)) {
215         nweb_error = std::make_shared<ArkWebUrlResourceErrorWrapper>(error);
216     }
217 
218     nweb_handler_->OnResourceLoadError(nweb_request, nweb_error);
219 }
220 
OnPermissionRequest(ArkWebRefPtr<ArkWebAccessRequest> request)221 void ArkWebHandlerImpl::OnPermissionRequest(ArkWebRefPtr<ArkWebAccessRequest> request)
222 {
223     if (CHECK_REF_PTR_IS_NULL(request)) {
224         nweb_handler_->OnPermissionRequest(nullptr);
225         return;
226     }
227 
228     nweb_handler_->OnPermissionRequest(std::make_shared<ArkWebAccessRequestWrapper>(request));
229 }
230 
OnQuickMenuDismissed()231 void ArkWebHandlerImpl::OnQuickMenuDismissed()
232 {
233     nweb_handler_->OnQuickMenuDismissed();
234 }
235 
OnContextMenuDismissed()236 void ArkWebHandlerImpl::OnContextMenuDismissed()
237 {
238     nweb_handler_->OnContextMenuDismissed();
239 }
240 
OnTouchSelectionChanged(ArkWebRefPtr<ArkWebTouchHandleState> insert_handle,ArkWebRefPtr<ArkWebTouchHandleState> start_selection_handle,ArkWebRefPtr<ArkWebTouchHandleState> end_selection_handle)241 void ArkWebHandlerImpl::OnTouchSelectionChanged(ArkWebRefPtr<ArkWebTouchHandleState> insert_handle,
242     ArkWebRefPtr<ArkWebTouchHandleState> start_selection_handle,
243     ArkWebRefPtr<ArkWebTouchHandleState> end_selection_handle)
244 {
245     std::shared_ptr<OHOS::NWeb::NWebTouchHandleState> nweb_insert_handle = nullptr;
246     if (!CHECK_REF_PTR_IS_NULL(insert_handle)) {
247         nweb_insert_handle = std::make_shared<ArkWebTouchHandleStateWrapper>(insert_handle);
248     }
249 
250     std::shared_ptr<OHOS::NWeb::NWebTouchHandleState> nweb_start_selection_handle = nullptr;
251     if (!CHECK_REF_PTR_IS_NULL(start_selection_handle)) {
252         nweb_start_selection_handle = std::make_shared<ArkWebTouchHandleStateWrapper>(start_selection_handle);
253     }
254 
255     std::shared_ptr<OHOS::NWeb::NWebTouchHandleState> nweb_end_selection_handle = nullptr;
256     if (!CHECK_REF_PTR_IS_NULL(end_selection_handle)) {
257         nweb_end_selection_handle = std::make_shared<ArkWebTouchHandleStateWrapper>(end_selection_handle);
258     }
259 
260     nweb_handler_->OnTouchSelectionChanged(nweb_insert_handle, nweb_start_selection_handle, nweb_end_selection_handle);
261 }
262 
OnHandleInterceptRequest(ArkWebRefPtr<ArkWebUrlResourceRequest> request,ArkWebRefPtr<ArkWebUrlResourceResponse> response)263 bool ArkWebHandlerImpl::OnHandleInterceptRequest(
264     ArkWebRefPtr<ArkWebUrlResourceRequest> request, ArkWebRefPtr<ArkWebUrlResourceResponse> response)
265 {
266     std::shared_ptr<OHOS::NWeb::NWebUrlResourceRequest> nweb_request = nullptr;
267     if (!CHECK_REF_PTR_IS_NULL(request)) {
268         nweb_request = std::make_shared<ArkWebUrlResourceRequestWrapper>(request);
269     }
270 
271     std::shared_ptr<OHOS::NWeb::NWebUrlResourceResponse> nweb_reponse = nullptr;
272     if (!CHECK_REF_PTR_IS_NULL(response)) {
273         nweb_reponse = std::make_shared<ArkWebUrlResourceResponseWrapper>(response);
274     }
275 
276     return nweb_handler_->OnHandleInterceptRequest(nweb_request, nweb_reponse);
277 }
278 
OnRefreshAccessedHistory(const ArkWebString & url,bool is_reload)279 void ArkWebHandlerImpl::OnRefreshAccessedHistory(const ArkWebString& url, bool is_reload)
280 {
281     nweb_handler_->OnRefreshAccessedHistory(ArkWebStringStructToClass(url), is_reload);
282 }
283 
OnPermissionRequestCanceled(ArkWebRefPtr<ArkWebAccessRequest> request)284 void ArkWebHandlerImpl::OnPermissionRequestCanceled(ArkWebRefPtr<ArkWebAccessRequest> request)
285 {
286     if (CHECK_REF_PTR_IS_NULL(request)) {
287         nweb_handler_->OnPermissionRequestCanceled(nullptr);
288         return;
289     }
290 
291     nweb_handler_->OnPermissionRequestCanceled(std::make_shared<ArkWebAccessRequestWrapper>(request));
292 }
293 
OnHandleInterceptUrlLoading(ArkWebRefPtr<ArkWebUrlResourceRequest> request)294 bool ArkWebHandlerImpl::OnHandleInterceptUrlLoading(ArkWebRefPtr<ArkWebUrlResourceRequest> request)
295 {
296     if (CHECK_REF_PTR_IS_NULL(request)) {
297         return nweb_handler_->OnHandleInterceptUrlLoading(nullptr);
298     }
299 
300     return nweb_handler_->OnHandleInterceptUrlLoading(std::make_shared<ArkWebUrlResourceRequestWrapper>(request));
301 }
302 
RunQuickMenu(ArkWebRefPtr<ArkWebQuickMenuParams> params,ArkWebRefPtr<ArkWebQuickMenuCallback> callback)303 bool ArkWebHandlerImpl::RunQuickMenu(
304     ArkWebRefPtr<ArkWebQuickMenuParams> params, ArkWebRefPtr<ArkWebQuickMenuCallback> callback)
305 {
306     std::shared_ptr<OHOS::NWeb::NWebQuickMenuParams> nweb_params = nullptr;
307     if (!CHECK_REF_PTR_IS_NULL(params)) {
308         nweb_params = std::make_shared<ArkWebQuickMenuParamsWrapper>(params);
309     }
310 
311     std::shared_ptr<OHOS::NWeb::NWebQuickMenuCallback> nweb_callback = nullptr;
312     if (!CHECK_REF_PTR_IS_NULL(callback)) {
313         nweb_callback = std::make_shared<ArkWebQuickMenuCallbackWrapper>(callback);
314     }
315 
316     return nweb_handler_->RunQuickMenu(nweb_params, nweb_callback);
317 }
318 
RunContextMenu(ArkWebRefPtr<ArkWebContextMenuParams> params,ArkWebRefPtr<ArkWebContextMenuCallback> callback)319 bool ArkWebHandlerImpl::RunContextMenu(
320     ArkWebRefPtr<ArkWebContextMenuParams> params, ArkWebRefPtr<ArkWebContextMenuCallback> callback)
321 {
322     std::shared_ptr<OHOS::NWeb::NWebContextMenuParams> nweb_params = nullptr;
323     if (!CHECK_REF_PTR_IS_NULL(params)) {
324         nweb_params = std::make_shared<ArkWebContextMenuParamsWrapper>(params);
325     }
326 
327     std::shared_ptr<OHOS::NWeb::NWebContextMenuCallback> nweb_callback = nullptr;
328     if (!CHECK_REF_PTR_IS_NULL(callback)) {
329         nweb_callback = std::make_shared<ArkWebContextMenuCallbackWrapper>(callback);
330     }
331 
332     return nweb_handler_->RunContextMenu(nweb_params, nweb_callback);
333 }
334 
UpdateDragCursor(unsigned char op)335 void ArkWebHandlerImpl::UpdateDragCursor(unsigned char op)
336 {
337     nweb_handler_->UpdateDragCursor(static_cast<ArkWebDragOperation>(op));
338 }
339 
FilterScrollEvent(const float x,const float y,const float x_velocity,const float y_velocity)340 bool ArkWebHandlerImpl::FilterScrollEvent(const float x, const float y, const float x_velocity, const float y_velocity)
341 {
342     return nweb_handler_->FilterScrollEvent(x, y, x_velocity, y_velocity);
343 }
344 
VisitedUrlHistory()345 ArkWebStringVector ArkWebHandlerImpl::VisitedUrlHistory()
346 {
347     return ArkWebStringVectorClassToStruct(nweb_handler_->VisitedUrlHistory());
348 }
349 
OnWindowNewByJS(const ArkWebString & target_url,bool is_alert,bool is_user_trigger,ArkWebRefPtr<ArkWebControllerHandler> handler)350 void ArkWebHandlerImpl::OnWindowNewByJS(
351     const ArkWebString& target_url, bool is_alert, bool is_user_trigger, ArkWebRefPtr<ArkWebControllerHandler> handler)
352 {
353     if (CHECK_REF_PTR_IS_NULL(handler)) {
354         nweb_handler_->OnWindowNewByJS(ArkWebStringStructToClass(target_url), is_alert, is_user_trigger, nullptr);
355         return;
356     }
357 
358     nweb_handler_->OnWindowNewByJS(ArkWebStringStructToClass(target_url), is_alert, is_user_trigger,
359         std::make_shared<ArkWebControllerHandlerWrapper>(handler));
360 }
361 
OnWindowExitByJS()362 void ArkWebHandlerImpl::OnWindowExitByJS()
363 {
364     nweb_handler_->OnWindowExitByJS();
365 }
366 
OnAlertDialogByJS(const ArkWebString & url,const ArkWebString & message,ArkWebRefPtr<ArkWebJsDialogResult> result)367 bool ArkWebHandlerImpl::OnAlertDialogByJS(
368     const ArkWebString& url, const ArkWebString& message, ArkWebRefPtr<ArkWebJsDialogResult> result)
369 {
370     if (CHECK_REF_PTR_IS_NULL(result)) {
371         return nweb_handler_->OnAlertDialogByJS(
372             ArkWebStringStructToClass(url), ArkWebStringStructToClass(message), nullptr);
373     }
374 
375     return nweb_handler_->OnAlertDialogByJS(ArkWebStringStructToClass(url), ArkWebStringStructToClass(message),
376         std::make_shared<ArkWebJsDialogResultWrapper>(result));
377 }
378 
OnBeforeUnloadByJS(const ArkWebString & url,const ArkWebString & message,ArkWebRefPtr<ArkWebJsDialogResult> result)379 bool ArkWebHandlerImpl::OnBeforeUnloadByJS(
380     const ArkWebString& url, const ArkWebString& message, ArkWebRefPtr<ArkWebJsDialogResult> result)
381 {
382     if (CHECK_REF_PTR_IS_NULL(result)) {
383         return nweb_handler_->OnBeforeUnloadByJS(
384             ArkWebStringStructToClass(url), ArkWebStringStructToClass(message), nullptr);
385     }
386 
387     return nweb_handler_->OnBeforeUnloadByJS(ArkWebStringStructToClass(url), ArkWebStringStructToClass(message),
388         std::make_shared<ArkWebJsDialogResultWrapper>(result));
389 }
390 
OnPromptDialogByJS(const ArkWebString & url,const ArkWebString & message,const ArkWebString & default_value,ArkWebRefPtr<ArkWebJsDialogResult> result)391 bool ArkWebHandlerImpl::OnPromptDialogByJS(const ArkWebString& url, const ArkWebString& message,
392     const ArkWebString& default_value, ArkWebRefPtr<ArkWebJsDialogResult> result)
393 {
394     if (CHECK_REF_PTR_IS_NULL(result)) {
395         return nweb_handler_->OnPromptDialogByJS(ArkWebStringStructToClass(url), ArkWebStringStructToClass(message),
396             ArkWebStringStructToClass(default_value), nullptr);
397     }
398 
399     return nweb_handler_->OnPromptDialogByJS(ArkWebStringStructToClass(url), ArkWebStringStructToClass(message),
400         ArkWebStringStructToClass(default_value), std::make_shared<ArkWebJsDialogResultWrapper>(result));
401 }
402 
OnConfirmDialogByJS(const ArkWebString & url,const ArkWebString & message,ArkWebRefPtr<ArkWebJsDialogResult> result)403 bool ArkWebHandlerImpl::OnConfirmDialogByJS(
404     const ArkWebString& url, const ArkWebString& message, ArkWebRefPtr<ArkWebJsDialogResult> result)
405 {
406     if (CHECK_REF_PTR_IS_NULL(result)) {
407         return nweb_handler_->OnConfirmDialogByJS(
408             ArkWebStringStructToClass(url), ArkWebStringStructToClass(message), nullptr);
409     }
410 
411     return nweb_handler_->OnConfirmDialogByJS(ArkWebStringStructToClass(url), ArkWebStringStructToClass(message),
412         std::make_shared<ArkWebJsDialogResultWrapper>(result));
413 }
414 
OnHttpAuthRequestByJS(ArkWebRefPtr<ArkWebJsHttpAuthResult> result,const ArkWebString & host,const ArkWebString & realm)415 bool ArkWebHandlerImpl::OnHttpAuthRequestByJS(
416     ArkWebRefPtr<ArkWebJsHttpAuthResult> result, const ArkWebString& host, const ArkWebString& realm)
417 {
418     if (CHECK_REF_PTR_IS_NULL(result)) {
419         return nweb_handler_->OnHttpAuthRequestByJS(
420             nullptr, ArkWebStringStructToClass(host), ArkWebStringStructToClass(realm));
421     }
422 
423     return nweb_handler_->OnHttpAuthRequestByJS(std::make_shared<ArkWebJsHttpAuthResultWrapper>(result),
424         ArkWebStringStructToClass(host), ArkWebStringStructToClass(realm));
425 }
426 
OnSslErrorRequestByJS(ArkWebRefPtr<ArkWebJsSslErrorResult> result,int error)427 bool ArkWebHandlerImpl::OnSslErrorRequestByJS(ArkWebRefPtr<ArkWebJsSslErrorResult> result, int error)
428 {
429     if (CHECK_REF_PTR_IS_NULL(result)) {
430         return nweb_handler_->OnSslErrorRequestByJS(nullptr, static_cast<ArkWebSslError>(error));
431     }
432 
433     return nweb_handler_->OnSslErrorRequestByJS(
434         std::make_shared<ArkWebJsSslErrorResultWrapper>(result), static_cast<ArkWebSslError>(error));
435 }
436 
OnSslSelectCertRequestByJS(ArkWebRefPtr<ArkWebJsSslSelectCertResult> result,const ArkWebString & host,int port,const ArkWebStringVector & key_types,const ArkWebStringVector & issuers)437 bool ArkWebHandlerImpl::OnSslSelectCertRequestByJS(ArkWebRefPtr<ArkWebJsSslSelectCertResult> result,
438     const ArkWebString& host, int port, const ArkWebStringVector& key_types, const ArkWebStringVector& issuers)
439 {
440     if (CHECK_REF_PTR_IS_NULL(result)) {
441         return nweb_handler_->OnSslSelectCertRequestByJS(nullptr, ArkWebStringStructToClass(host), port,
442             ArkWebStringVectorStructToClass(key_types), ArkWebStringVectorStructToClass(issuers));
443     }
444 
445     return nweb_handler_->OnSslSelectCertRequestByJS(std::make_shared<ArkWebJsSslSelectCertResultWrapper>(result),
446         ArkWebStringStructToClass(host), port, ArkWebStringVectorStructToClass(key_types),
447         ArkWebStringVectorStructToClass(issuers));
448 }
449 
OnScroll(double x_offset,double y_offset)450 void ArkWebHandlerImpl::OnScroll(double x_offset, double y_offset)
451 {
452     nweb_handler_->OnScroll(x_offset, y_offset);
453 }
454 
OnOverScroll(float x_offset,float y_offset)455 void ArkWebHandlerImpl::OnOverScroll(float x_offset, float y_offset)
456 {
457     nweb_handler_->OnOverScroll(x_offset, y_offset);
458 }
459 
OnScrollState(bool scroll_state)460 void ArkWebHandlerImpl::OnScrollState(bool scroll_state)
461 {
462     nweb_handler_->OnScrollState(scroll_state);
463 }
464 
OnPageVisible(const ArkWebString & url)465 void ArkWebHandlerImpl::OnPageVisible(const ArkWebString& url)
466 {
467     nweb_handler_->OnPageVisible(ArkWebStringStructToClass(url));
468 }
469 
OnPreKeyEvent(ArkWebRefPtr<ArkWebKeyEvent> event)470 bool ArkWebHandlerImpl::OnPreKeyEvent(ArkWebRefPtr<ArkWebKeyEvent> event)
471 {
472     if (CHECK_REF_PTR_IS_NULL(event)) {
473         return nweb_handler_->OnPreKeyEvent(nullptr);
474     }
475 
476     return nweb_handler_->OnPreKeyEvent(std::make_shared<ArkWebKeyEventWrapper>(event));
477 }
478 
OnScaleChanged(float old_scale_factor,float new_scale_factor)479 void ArkWebHandlerImpl::OnScaleChanged(float old_scale_factor, float new_scale_factor)
480 {
481     nweb_handler_->OnScaleChanged(old_scale_factor, new_scale_factor);
482 }
483 
OnCursorChange(const int32_t & type,ArkWebRefPtr<ArkWebCursorInfo> info)484 bool ArkWebHandlerImpl::OnCursorChange(const int32_t& type, ArkWebRefPtr<ArkWebCursorInfo> info)
485 {
486     if (CHECK_REF_PTR_IS_NULL(info)) {
487         return nweb_handler_->OnCursorChange(static_cast<ArkWebCursorType>(type), nullptr);
488     }
489 
490     return nweb_handler_->OnCursorChange(
491         static_cast<ArkWebCursorType>(type), std::make_shared<ArkWebCursorInfoWrapper>(info));
492 }
493 
OnRenderExited(int reason)494 void ArkWebHandlerImpl::OnRenderExited(int reason)
495 {
496     nweb_handler_->OnRenderExited(static_cast<ArkWebRenderExitReason>(reason));
497 }
498 
OnResizeNotWork()499 void ArkWebHandlerImpl::OnResizeNotWork()
500 {
501     nweb_handler_->OnResizeNotWork();
502 }
503 
OnFullScreenExit()504 void ArkWebHandlerImpl::OnFullScreenExit()
505 {
506     nweb_handler_->OnFullScreenExit();
507 }
508 
OnFullScreenEnter(ArkWebRefPtr<ArkWebFullScreenExitHandler> handler)509 void ArkWebHandlerImpl::OnFullScreenEnter(ArkWebRefPtr<ArkWebFullScreenExitHandler> handler)
510 {
511     if (CHECK_REF_PTR_IS_NULL(handler)) {
512         nweb_handler_->OnFullScreenEnter(nullptr);
513         return;
514     }
515 
516     nweb_handler_->OnFullScreenEnter(std::make_shared<ArkWebFullScreenExitHandlerWrapper>(handler));
517 }
518 
OnFullScreenEnterWithVideoSize(ArkWebRefPtr<ArkWebFullScreenExitHandler> handler,int video_natural_width,int video_natural_height)519 void ArkWebHandlerImpl::OnFullScreenEnterWithVideoSize(
520     ArkWebRefPtr<ArkWebFullScreenExitHandler> handler, int video_natural_width, int video_natural_height)
521 {
522     if (CHECK_REF_PTR_IS_NULL(handler)) {
523         nweb_handler_->OnFullScreenEnterWithVideoSize(nullptr, video_natural_width, video_natural_height);
524         return;
525     }
526 
527     nweb_handler_->OnFullScreenEnterWithVideoSize(
528         std::make_shared<ArkWebFullScreenExitHandlerWrapper>(handler), video_natural_width, video_natural_height);
529 }
530 
OnDragAndDropData(const void * data,size_t len,ArkWebRefPtr<ArkWebImageOptions> opt)531 bool ArkWebHandlerImpl::OnDragAndDropData(const void* data, size_t len, ArkWebRefPtr<ArkWebImageOptions> opt)
532 {
533     if (CHECK_REF_PTR_IS_NULL(opt)) {
534         return nweb_handler_->OnDragAndDropData(data, len, nullptr);
535     }
536 
537     return nweb_handler_->OnDragAndDropData(data, len, std::make_shared<ArkWebImageOptionsWrapper>(opt));
538 }
539 
OnSelectPopupMenu(ArkWebRefPtr<ArkWebSelectPopupMenuParam> params,ArkWebRefPtr<ArkWebSelectPopupMenuCallback> callback)540 void ArkWebHandlerImpl::OnSelectPopupMenu(
541     ArkWebRefPtr<ArkWebSelectPopupMenuParam> params, ArkWebRefPtr<ArkWebSelectPopupMenuCallback> callback)
542 {
543     std::shared_ptr<OHOS::NWeb::NWebSelectPopupMenuParam> nweb_params = nullptr;
544     if (!CHECK_REF_PTR_IS_NULL(params)) {
545         nweb_params = std::make_shared<ArkWebSelectPopupMenuParamWrapper>(params);
546     }
547 
548     std::shared_ptr<OHOS::NWeb::NWebSelectPopupMenuCallback> nweb_callback = nullptr;
549     if (!CHECK_REF_PTR_IS_NULL(callback)) {
550         nweb_callback = std::make_shared<ArkWebSelectPopupMenuCallbackWrapper>(callback);
551     }
552 
553     nweb_handler_->OnSelectPopupMenu(nweb_params, nweb_callback);
554 }
555 
OnDataResubmission(ArkWebRefPtr<ArkWebDataResubmissionCallback> handler)556 void ArkWebHandlerImpl::OnDataResubmission(ArkWebRefPtr<ArkWebDataResubmissionCallback> handler)
557 {
558     if (CHECK_REF_PTR_IS_NULL(handler)) {
559         nweb_handler_->OnDataResubmission(nullptr);
560         return;
561     }
562 
563     nweb_handler_->OnDataResubmission(std::make_shared<ArkWebDataResubmissionCallbackWrapper>(handler));
564 }
565 
OnRootLayerChanged(int width,int height)566 void ArkWebHandlerImpl::OnRootLayerChanged(int width, int height)
567 {
568     nweb_handler_->OnRootLayerChanged(width, height);
569 }
570 
OnAudioStateChanged(bool playing)571 void ArkWebHandlerImpl::OnAudioStateChanged(bool playing)
572 {
573     nweb_handler_->OnAudioStateChanged(playing);
574 }
575 
OnOverScrollFlingEnd()576 void ArkWebHandlerImpl::OnOverScrollFlingEnd()
577 {
578     nweb_handler_->OnOverScrollFlingEnd();
579 }
580 
OnUnProcessedKeyEvent(ArkWebRefPtr<ArkWebKeyEvent> event)581 bool ArkWebHandlerImpl::OnUnProcessedKeyEvent(ArkWebRefPtr<ArkWebKeyEvent> event)
582 {
583     if (CHECK_REF_PTR_IS_NULL(event)) {
584         return nweb_handler_->OnUnProcessedKeyEvent(nullptr);
585     }
586 
587     return nweb_handler_->OnUnProcessedKeyEvent(std::make_shared<ArkWebKeyEventWrapper>(event));
588 }
589 
OnDragAndDropDataUdmf(ArkWebRefPtr<ArkWebDragData> drag_data)590 bool ArkWebHandlerImpl::OnDragAndDropDataUdmf(ArkWebRefPtr<ArkWebDragData> drag_data)
591 {
592     if (CHECK_REF_PTR_IS_NULL(drag_data)) {
593         return nweb_handler_->OnDragAndDropDataUdmf(nullptr);
594     }
595 
596     return nweb_handler_->OnDragAndDropDataUdmf(std::make_shared<ArkWebDragDataWrapper>(drag_data));
597 }
598 
OnFirstContentfulPaint(int64_t navigation_start_tick,int64_t first_contentful_paint_ms)599 void ArkWebHandlerImpl::OnFirstContentfulPaint(int64_t navigation_start_tick, int64_t first_contentful_paint_ms)
600 {
601     nweb_handler_->OnFirstContentfulPaint(navigation_start_tick, first_contentful_paint_ms);
602 }
603 
OnDateTimeChooserPopup(ArkWebRefPtr<ArkWebDateTimeChooser> chooser,const ArkWebDateTimeSuggestionVector & suggestions,ArkWebRefPtr<ArkWebDateTimeChooserCallback> callback)604 void ArkWebHandlerImpl::OnDateTimeChooserPopup(ArkWebRefPtr<ArkWebDateTimeChooser> chooser,
605     const ArkWebDateTimeSuggestionVector& suggestions, ArkWebRefPtr<ArkWebDateTimeChooserCallback> callback)
606 {
607     std::shared_ptr<OHOS::NWeb::NWebDateTimeChooser> nweb_date_time_chooser = nullptr;
608     if (!CHECK_REF_PTR_IS_NULL(chooser)) {
609         nweb_date_time_chooser = std::make_shared<ArkWebDateTimeChooserWrapper>(chooser);
610     }
611 
612     std::shared_ptr<OHOS::NWeb::NWebDateTimeChooserCallback> nweb_date_time_chooser_callback = nullptr;
613     if (!CHECK_REF_PTR_IS_NULL(callback)) {
614         nweb_date_time_chooser_callback = std::make_shared<ArkWebDateTimeChooserCallbackWrapper>(callback);
615     }
616 
617     nweb_handler_->OnDateTimeChooserPopup(nweb_date_time_chooser,
618         ArkWebDateTimeSuggestionVectorStructToClass(suggestions), nweb_date_time_chooser_callback);
619 }
620 
OnDateTimeChooserClose()621 void ArkWebHandlerImpl::OnDateTimeChooserClose()
622 {
623     nweb_handler_->OnDateTimeChooserClose();
624 }
625 
OnScreenCaptureRequest(ArkWebRefPtr<ArkWebScreenCaptureAccessRequest> request)626 void ArkWebHandlerImpl::OnScreenCaptureRequest(ArkWebRefPtr<ArkWebScreenCaptureAccessRequest> request)
627 {
628     if (CHECK_REF_PTR_IS_NULL(request)) {
629         nweb_handler_->OnScreenCaptureRequest(nullptr);
630         return;
631     }
632 
633     nweb_handler_->OnScreenCaptureRequest(std::make_shared<ArkWebScreenCaptureAccessRequestWrapper>(request));
634 }
635 
OnActivityStateChanged(int state,int type)636 void ArkWebHandlerImpl::OnActivityStateChanged(int state, int type)
637 {
638     nweb_handler_->OnActivityStateChanged(state, static_cast<ArkWebActivityType>(type));
639 }
640 
OnGetTouchHandleHotZone(ArkWebRefPtr<ArkWebTouchHandleHotZone> hot_zone)641 void ArkWebHandlerImpl::OnGetTouchHandleHotZone(ArkWebRefPtr<ArkWebTouchHandleHotZone> hot_zone)
642 {
643     if (CHECK_REF_PTR_IS_NULL(hot_zone)) {
644         nweb_handler_->OnGetTouchHandleHotZone(nullptr);
645         return;
646     }
647 
648     nweb_handler_->OnGetTouchHandleHotZone(std::make_shared<ArkWebTouchHandleHotZoneWrapper>(hot_zone));
649 }
650 
OnCompleteSwapWithNewSize()651 void ArkWebHandlerImpl::OnCompleteSwapWithNewSize()
652 {
653     nweb_handler_->OnCompleteSwapWithNewSize();
654 }
655 
OnOverScrollFlingVelocity(float x_velocity,float y_velocity,bool is_fling)656 void ArkWebHandlerImpl::OnOverScrollFlingVelocity(float x_velocity, float y_velocity, bool is_fling)
657 {
658     nweb_handler_->OnOverScrollFlingVelocity(x_velocity, y_velocity, is_fling);
659 }
660 
OnNavigationEntryCommitted(ArkWebRefPtr<ArkWebLoadCommittedDetails> details)661 void ArkWebHandlerImpl::OnNavigationEntryCommitted(ArkWebRefPtr<ArkWebLoadCommittedDetails> details)
662 {
663     if (CHECK_REF_PTR_IS_NULL(details)) {
664         nweb_handler_->OnScreenCaptureRequest(nullptr);
665         return;
666     }
667 
668     nweb_handler_->OnNavigationEntryCommitted(std::make_shared<ArkWebLoadCommittedDetailsWrapper>(details));
669 }
670 
OnNativeEmbedLifecycleChange(ArkWebRefPtr<ArkWebNativeEmbedDataInfo> data_info)671 void ArkWebHandlerImpl::OnNativeEmbedLifecycleChange(ArkWebRefPtr<ArkWebNativeEmbedDataInfo> data_info)
672 {
673     if (CHECK_REF_PTR_IS_NULL(data_info)) {
674         nweb_handler_->OnNativeEmbedLifecycleChange(nullptr);
675         return;
676     }
677 
678     nweb_handler_->OnNativeEmbedLifecycleChange(std::make_shared<ArkWebNativeEmbedDataInfoWrapper>(data_info));
679 }
680 
OnNativeEmbedGestureEvent(ArkWebRefPtr<ArkWebNativeEmbedTouchEvent> touch_event)681 void ArkWebHandlerImpl::OnNativeEmbedGestureEvent(ArkWebRefPtr<ArkWebNativeEmbedTouchEvent> touch_event)
682 {
683     if (CHECK_REF_PTR_IS_NULL(touch_event)) {
684         nweb_handler_->OnNativeEmbedGestureEvent(nullptr);
685         return;
686     }
687 
688     nweb_handler_->OnNativeEmbedGestureEvent(std::make_shared<ArkWebNativeEmbedTouchEventWrapper>(touch_event));
689 }
690 
OnSafeBrowsingCheckResult(int threat_type)691 void ArkWebHandlerImpl::OnSafeBrowsingCheckResult(int threat_type)
692 {
693     nweb_handler_->OnSafeBrowsingCheckResult(threat_type);
694 }
695 
OnFirstMeaningfulPaint(ArkWebRefPtr<ArkWebFirstMeaningfulPaintDetails> details)696 void ArkWebHandlerImpl::OnFirstMeaningfulPaint(ArkWebRefPtr<ArkWebFirstMeaningfulPaintDetails> details)
697 {
698     if (CHECK_REF_PTR_IS_NULL(details)) {
699         return;
700     }
701 
702     nweb_handler_->OnFirstMeaningfulPaint(std::make_shared<ArkWebFirstMeaningfulPaintDetailsWrapper>(details));
703 }
704 
OnLargestContentfulPaint(ArkWebRefPtr<ArkWebLargestContentfulPaintDetails> details)705 void ArkWebHandlerImpl::OnLargestContentfulPaint(ArkWebRefPtr<ArkWebLargestContentfulPaintDetails> details)
706 {
707     if (CHECK_REF_PTR_IS_NULL(details)) {
708         return;
709     }
710 
711     nweb_handler_->OnLargestContentfulPaint(std::make_shared<ArkWebLargestContentfulPaintDetailsWrapper>(details));
712 }
713 
OnIntelligentTrackingPreventionResult(const ArkWebString & website_host,const ArkWebString & tracker_host)714 void ArkWebHandlerImpl::OnIntelligentTrackingPreventionResult(
715     const ArkWebString& website_host, const ArkWebString& tracker_host)
716 {
717     nweb_handler_->OnIntelligentTrackingPreventionResult(
718         ArkWebStringStructToClass(website_host), ArkWebStringStructToClass(tracker_host));
719 }
720 
OnHandleOverrideUrlLoading(ArkWebRefPtr<ArkWebUrlResourceRequest> request)721 bool ArkWebHandlerImpl::OnHandleOverrideUrlLoading(ArkWebRefPtr<ArkWebUrlResourceRequest> request)
722 {
723     if (CHECK_REF_PTR_IS_NULL(request)) {
724         return nweb_handler_->OnHandleOverrideUrlLoading(nullptr);
725     }
726 
727     return nweb_handler_->OnHandleOverrideUrlLoading(std::make_shared<ArkWebUrlResourceRequestWrapper>(request));
728 }
729 
OnAllSslErrorRequestByJS(ArkWebRefPtr<ArkWebJsAllSslErrorResult> result,int error,const ArkWebString & url,const ArkWebString & originalUrl,const ArkWebString & referrer,bool isFatalError,bool isMainFrame)730 bool ArkWebHandlerImpl::OnAllSslErrorRequestByJS(ArkWebRefPtr<ArkWebJsAllSslErrorResult> result, int error,
731     const ArkWebString& url, const ArkWebString& originalUrl, const ArkWebString& referrer, bool isFatalError,
732     bool isMainFrame)
733 {
734     if (CHECK_REF_PTR_IS_NULL(result)) {
735         return nweb_handler_->OnAllSslErrorRequestByJS(nullptr, static_cast<ArkWebSslError>(error),
736             ArkWebStringStructToClass(url), ArkWebStringStructToClass(originalUrl), ArkWebStringStructToClass(referrer),
737             isFatalError, isMainFrame);
738     }
739 
740     return nweb_handler_->OnAllSslErrorRequestByJS(std::make_shared<ArkWebJsAllSslErrorResultWrapper>(result),
741         static_cast<ArkWebSslError>(error), ArkWebStringStructToClass(url), ArkWebStringStructToClass(originalUrl),
742         ArkWebStringStructToClass(referrer), isFatalError, isMainFrame);
743 }
744 
OnTooltip(const ArkWebString & tooltip)745 void ArkWebHandlerImpl::OnTooltip(const ArkWebString& tooltip)
746 {
747     nweb_handler_->OnTooltip(ArkWebStringStructToClass(tooltip));
748 }
749 
ReleaseResizeHold()750 void ArkWebHandlerImpl::ReleaseResizeHold()
751 {
752     nweb_handler_->ReleaseResizeHold();
753 }
754 
GetWordSelection(const ArkWebString & text,int8_t offset)755 ArkWebCharVector ArkWebHandlerImpl::GetWordSelection(const ArkWebString& text, int8_t offset)
756 {
757     if (!nweb_handler_) {
758         return ark_web_char_vector_default;
759     }
760     std::vector<int8_t> vec = nweb_handler_->GetWordSelection(ArkWebStringStructToClass(text), offset);
761     std::vector<char> result(vec.size());
762     for (size_t i = 0; i < vec.size(); i++) {
763         result[i] = vec[i];
764     }
765     ArkWebCharVector ark_result = ArkWebBasicVectorClassToStruct<char, ArkWebCharVector>(result);
766     return ark_result;
767 }
768 
UpdateClippedSelectionBounds(int x,int y,int w,int h)769 void ArkWebHandlerImpl::UpdateClippedSelectionBounds(int x, int y, int w, int h)
770 {
771     nweb_handler_->UpdateClippedSelectionBounds(x, y, w, h);
772 }
773 
OnRenderProcessNotResponding(const ArkWebString & js_stack,int pid,int reason)774 void ArkWebHandlerImpl::OnRenderProcessNotResponding(const ArkWebString& js_stack, int pid, int reason)
775 {
776     nweb_handler_->OnRenderProcessNotResponding(
777         ArkWebStringStructToClass(js_stack), pid, static_cast<ArkWebRenderProcessNotRespondingReason>(reason));
778 }
779 
OnRenderProcessResponding()780 void ArkWebHandlerImpl::OnRenderProcessResponding()
781 {
782     nweb_handler_->OnRenderProcessResponding();
783 }
784 
OnOpenAppLink(const ArkWebString & url,ArkWebRefPtr<ArkWebAppLinkCallback> callback)785 bool ArkWebHandlerImpl::OnOpenAppLink(const ArkWebString& url, ArkWebRefPtr<ArkWebAppLinkCallback> callback)
786 {
787     if (CHECK_REF_PTR_IS_NULL(callback)) {
788         return nweb_handler_->OnOpenAppLink(ArkWebStringStructToClass(url), nullptr);
789     }
790 
791     return nweb_handler_->OnOpenAppLink(
792         ArkWebStringStructToClass(url), std::make_shared<ArkWebAppLinkCallbackWrapper>(callback));
793 }
794 
OnShowAutofillPopup(const float offsetX,const float offsetY,const ArkWebStringVector & menu_items)795 void ArkWebHandlerImpl::OnShowAutofillPopup(
796     const float offsetX, const float offsetY, const ArkWebStringVector& menu_items)
797 {
798     nweb_handler_->OnShowAutofillPopup(offsetX, offsetY, ArkWebStringVectorStructToClass(menu_items));
799 }
800 
OnHideAutofillPopup()801 void ArkWebHandlerImpl::OnHideAutofillPopup()
802 {
803     nweb_handler_->OnHideAutofillPopup();
804 }
805 
OnViewportFitChange(int viewportFit)806 void ArkWebHandlerImpl::OnViewportFitChange(int viewportFit)
807 {
808     nweb_handler_->OnViewportFitChange(static_cast<ArkWebViewportFit>(viewportFit));
809 }
810 
OnFocus(int source)811 bool ArkWebHandlerImpl::OnFocus(int source)
812 {
813     return nweb_handler_->OnFocus(static_cast<ArkWebFocusSource>(source));
814 }
815 
OnOverScroll(float xOffset,float yOffset,float xVelocity,float yVelocity)816 bool ArkWebHandlerImpl::OnOverScroll(float xOffset, float yOffset, float xVelocity, float yVelocity)
817 {
818     return nweb_handler_->OnOverScroll(xOffset, yOffset, xVelocity, yVelocity);
819 }
820 
CreateOverlay(void * data,size_t len,int width,int height,int offset_x,int offset_y,int rect_width,int rect_height,int point_x,int point_y)821 void ArkWebHandlerImpl::CreateOverlay(void* data, size_t len, int width, int height, int offset_x, int offset_y,
822     int rect_width, int rect_height, int point_x, int point_y)
823 {
824     nweb_handler_->CreateOverlay(
825         data, len, width, height, offset_x, offset_y, rect_width, rect_height, point_x, point_y);
826 }
827 
OnOverlayStateChanged(int offset_x,int offset_y,int rect_width,int rect_height)828 void ArkWebHandlerImpl::OnOverlayStateChanged(int offset_x, int offset_y, int rect_width, int rect_height)
829 {
830     nweb_handler_->OnOverlayStateChanged(offset_x, offset_y, rect_width, rect_height);
831 }
832 
OnAdsBlocked(const ArkWebString & url,const ArkWebStringVector & adsBlocked)833 void ArkWebHandlerImpl::OnAdsBlocked(const ArkWebString& url, const ArkWebStringVector& adsBlocked)
834 {
835     nweb_handler_->OnAdsBlocked(ArkWebStringStructToClass(url), ArkWebStringVectorStructToClass(adsBlocked));
836 }
837 
OnInterceptKeyboardAttach(ArkWebRefPtr<ArkWebCustomKeyboardHandler> keyboardHandler,const ArkWebStringMap & attributes,bool & useSystemKeyboard,int32_t & enterKeyType)838 void ArkWebHandlerImpl::OnInterceptKeyboardAttach(ArkWebRefPtr<ArkWebCustomKeyboardHandler> keyboardHandler,
839     const ArkWebStringMap& attributes, bool& useSystemKeyboard, int32_t& enterKeyType)
840 {
841     if (CHECK_REF_PTR_IS_NULL(keyboardHandler)) {
842         return nweb_handler_->OnInterceptKeyboardAttach(
843             nullptr, ArkWebStringMapStructToClass(attributes), useSystemKeyboard, enterKeyType);
844     }
845 
846     nweb_handler_->OnInterceptKeyboardAttach(std::make_shared<ArkWebCustomKeyboardHandlerWrapper>(keyboardHandler),
847         ArkWebStringMapStructToClass(attributes), useSystemKeyboard, enterKeyType);
848 }
849 
OnCustomKeyboardAttach()850 void ArkWebHandlerImpl::OnCustomKeyboardAttach()
851 {
852     nweb_handler_->OnCustomKeyboardAttach();
853 }
854 
OnCustomKeyboardClose()855 void ArkWebHandlerImpl::OnCustomKeyboardClose()
856 {
857     nweb_handler_->OnCustomKeyboardClose();
858 }
859 
KeyboardReDispatch(ArkWebRefPtr<ArkWebKeyEvent> event,bool isUsed)860 void ArkWebHandlerImpl::KeyboardReDispatch(ArkWebRefPtr<ArkWebKeyEvent> event, bool isUsed)
861 {
862     if (CHECK_REF_PTR_IS_NULL(event)) {
863         nweb_handler_->KeyboardReDispatch(nullptr, isUsed);
864         return;
865     }
866 
867     nweb_handler_->KeyboardReDispatch(std::make_shared<ArkWebKeyEventWrapper>(event), isUsed);
868 }
869 
HideHandleAndQuickMenuIfNecessary(bool hide)870 void ArkWebHandlerImpl::HideHandleAndQuickMenuIfNecessary(bool hide)
871 {
872     nweb_handler_->HideHandleAndQuickMenuIfNecessary(hide);
873 }
874 
OnCursorUpdate(double x,double y,double width,double height)875 void ArkWebHandlerImpl::OnCursorUpdate(double x, double y, double width, double height)
876 {
877     nweb_handler_->OnCursorUpdate(x, y, width, height);
878 }
879 
ChangeVisibilityOfQuickMenu()880 void ArkWebHandlerImpl::ChangeVisibilityOfQuickMenu()
881 {
882     nweb_handler_->ChangeVisibilityOfQuickMenu();
883 }
884 
StartVibraFeedback(const ArkWebString & vibratorType)885 void ArkWebHandlerImpl::StartVibraFeedback(const ArkWebString& vibratorType)
886 {
887     nweb_handler_->StartVibraFeedback(ArkWebStringStructToClass(vibratorType));
888 }
889 
OnNativeEmbedVisibilityChange(const ArkWebString & embed_id,bool visibility)890 void ArkWebHandlerImpl::OnNativeEmbedVisibilityChange(const ArkWebString& embed_id, bool visibility)
891 {
892     nweb_handler_->OnNativeEmbedVisibilityChange(ArkWebStringStructToClass(embed_id), visibility);
893 }
894 
CloseImageOverlaySelection()895 bool ArkWebHandlerImpl::CloseImageOverlaySelection()
896 {
897     return nweb_handler_->CloseImageOverlaySelection();
898 }
899 
GetVisibleRectToWeb(int & visibleX,int & visibleY,int & visibleWidth,int & visibleHeight)900 void ArkWebHandlerImpl::GetVisibleRectToWeb(int& visibleX, int& visibleY, int& visibleWidth, int& visibleHeight)
901 {
902     nweb_handler_->GetVisibleRectToWeb(visibleX, visibleY, visibleWidth, visibleHeight);
903 }
904 
OnScrollStart(const float x,const float y)905 void ArkWebHandlerImpl::OnScrollStart(const float x, const float y)
906 {
907     nweb_handler_->OnScrollStart(x, y);
908 }
909 } // namespace OHOS::ArkWeb
910