• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_native_embed_mouse_event_wrapper.h"
46 #include "ohos_nweb/bridge/ark_web_nweb_wrapper.h"
47 #include "ohos_nweb/bridge/ark_web_quick_menu_callback_wrapper.h"
48 #include "ohos_nweb/bridge/ark_web_quick_menu_params_wrapper.h"
49 #include "ohos_nweb/bridge/ark_web_screen_capture_access_request_wrapper.h"
50 #include "ohos_nweb/bridge/ark_web_select_popup_menu_callback_wrapper.h"
51 #include "ohos_nweb/bridge/ark_web_select_popup_menu_param_wrapper.h"
52 #include "ohos_nweb/bridge/ark_web_string_vector_value_callback_wrapper.h"
53 #include "ohos_nweb/bridge/ark_web_touch_handle_hot_zone_wrapper.h"
54 #include "ohos_nweb/bridge/ark_web_touch_handle_state_wrapper.h"
55 #include "ohos_nweb/bridge/ark_web_url_resource_error_wrapper.h"
56 #include "ohos_nweb/bridge/ark_web_url_resource_request_wrapper.h"
57 #include "ohos_nweb/bridge/ark_web_url_resource_response_wrapper.h"
58 #include "ohos_nweb/bridge/ark_web_view_struct_utils.h"
59 #include "ohos_nweb/ctocpp/ark_web_date_time_suggestion_vector_ctocpp.h"
60 
61 #include "base/bridge/ark_web_bridge_macros.h"
62 
63 namespace OHOS::ArkWeb {
64 
65 using ArkWebSslError = OHOS::NWeb::SslError;
66 using ArkWebCursorType = OHOS::NWeb::CursorType;
67 using ArkWebActivityType = OHOS::NWeb::ActivityType;
68 using ArkWebRenderExitReason = OHOS::NWeb::RenderExitReason;
69 using ArkWebDragOperation = OHOS::NWeb::NWebDragData::DragOperation;
70 using ArkWebRenderProcessNotRespondingReason = OHOS::NWeb::RenderProcessNotRespondingReason;
71 using ArkWebViewportFit = OHOS::NWeb::ViewportFit;
72 using ArkWebFocusSource = OHOS::NWeb::NWebFocusSource;
73 
ArkWebHandlerImpl(std::shared_ptr<OHOS::NWeb::NWebHandler> nweb_handler)74 ArkWebHandlerImpl::ArkWebHandlerImpl(std::shared_ptr<OHOS::NWeb::NWebHandler> nweb_handler)
75     : nweb_handler_(nweb_handler)
76 {}
77 
SetNWeb(ArkWebRefPtr<ArkWebNWeb> nweb)78 void ArkWebHandlerImpl::SetNWeb(ArkWebRefPtr<ArkWebNWeb> nweb)
79 {
80     if (CHECK_REF_PTR_IS_NULL(nweb)) {
81         nweb_handler_->SetNWeb(nullptr);
82         return;
83     }
84 
85     nweb_handler_->SetNWeb(std::make_shared<ArkWebNWebWrapper>(nweb));
86 }
87 
OnFocus()88 bool ArkWebHandlerImpl::OnFocus()
89 {
90     return nweb_handler_->OnFocus();
91 }
92 
OnMessage(const ArkWebString & param)93 void ArkWebHandlerImpl::OnMessage(const ArkWebString& param)
94 {
95     nweb_handler_->OnMessage(ArkWebStringStructToClass(param));
96 }
97 
OnResource(const ArkWebString & url)98 void ArkWebHandlerImpl::OnResource(const ArkWebString& url)
99 {
100     nweb_handler_->OnResource(ArkWebStringStructToClass(url));
101 }
102 
OnPageIcon(const void * data,size_t width,size_t height,int color_type,int alpha_type)103 void ArkWebHandlerImpl::OnPageIcon(const void* data, size_t width, size_t height, int color_type, int alpha_type)
104 {
105     nweb_handler_->OnPageIcon(data, width, height, static_cast<ArkWebImageColorType>(color_type),
106         static_cast<ArkWebImageAlphaType>(alpha_type));
107 }
108 
OnPageTitle(const ArkWebString & title)109 void ArkWebHandlerImpl::OnPageTitle(const ArkWebString& title)
110 {
111     nweb_handler_->OnPageTitle(ArkWebStringStructToClass(title));
112 }
113 
OnProxyDied()114 void ArkWebHandlerImpl::OnProxyDied()
115 {
116     nweb_handler_->OnProxyDied();
117 }
118 
OnHttpError(ArkWebRefPtr<ArkWebUrlResourceRequest> request,ArkWebRefPtr<ArkWebUrlResourceResponse> response)119 void ArkWebHandlerImpl::OnHttpError(
120     ArkWebRefPtr<ArkWebUrlResourceRequest> request, ArkWebRefPtr<ArkWebUrlResourceResponse> response)
121 {
122     std::shared_ptr<OHOS::NWeb::NWebUrlResourceRequest> nweb_request = nullptr;
123     if (!CHECK_REF_PTR_IS_NULL(request)) {
124         nweb_request = std::make_shared<ArkWebUrlResourceRequestWrapper>(request);
125     }
126 
127     std::shared_ptr<OHOS::NWeb::NWebUrlResourceResponse> nweb_response = nullptr;
128     if (!CHECK_REF_PTR_IS_NULL(response)) {
129         nweb_response = std::make_shared<ArkWebUrlResourceResponseWrapper>(response);
130     }
131 
132     nweb_handler_->OnHttpError(nweb_request, nweb_response);
133 }
134 
OnConsoleLog(ArkWebRefPtr<ArkWebConsoleLog> console_log)135 bool ArkWebHandlerImpl::OnConsoleLog(ArkWebRefPtr<ArkWebConsoleLog> console_log)
136 {
137     if (CHECK_REF_PTR_IS_NULL(console_log)) {
138         return nweb_handler_->OnConsoleLog(nullptr);
139     }
140 
141     return nweb_handler_->OnConsoleLog(std::make_shared<ArkWebConsoleLogWrapper>(console_log));
142 }
143 
OnRouterPush(const ArkWebString & param)144 void ArkWebHandlerImpl::OnRouterPush(const ArkWebString& param)
145 {
146     nweb_handler_->OnRouterPush(ArkWebStringStructToClass(param));
147 }
148 
OnPageLoadEnd(int http_status_code,const ArkWebString & url)149 void ArkWebHandlerImpl::OnPageLoadEnd(int http_status_code, const ArkWebString& url)
150 {
151     nweb_handler_->OnPageLoadEnd(http_status_code, ArkWebStringStructToClass(url));
152 }
153 
OnPageLoadBegin(const ArkWebString & url)154 void ArkWebHandlerImpl::OnPageLoadBegin(const ArkWebString& url)
155 {
156     nweb_handler_->OnPageLoadBegin(ArkWebStringStructToClass(url));
157 }
158 
OnPageLoadError(int error_code,const ArkWebString & description,const ArkWebString & url)159 void ArkWebHandlerImpl::OnPageLoadError(int error_code, const ArkWebString& description, const ArkWebString& url)
160 {
161     nweb_handler_->OnPageLoadError(error_code, ArkWebStringStructToClass(description), ArkWebStringStructToClass(url));
162 }
163 
OnDesktopIconUrl(const ArkWebString & icon_url,bool precomposed)164 void ArkWebHandlerImpl::OnDesktopIconUrl(const ArkWebString& icon_url, bool precomposed)
165 {
166     nweb_handler_->OnDesktopIconUrl(ArkWebStringStructToClass(icon_url), precomposed);
167 }
168 
OnLoadingProgress(int new_progress)169 void ArkWebHandlerImpl::OnLoadingProgress(int new_progress)
170 {
171     nweb_handler_->OnLoadingProgress(new_progress);
172 }
173 
OnGeolocationShow(const ArkWebString & origin,ArkWebRefPtr<ArkWebGeoLocationCallback> callback)174 void ArkWebHandlerImpl::OnGeolocationShow(const ArkWebString& origin, ArkWebRefPtr<ArkWebGeoLocationCallback> callback)
175 {
176     if (CHECK_REF_PTR_IS_NULL(callback)) {
177         nweb_handler_->OnGeolocationShow(ArkWebStringStructToClass(origin), nullptr);
178         return;
179     }
180 
181     nweb_handler_->OnGeolocationShow(
182         ArkWebStringStructToClass(origin), std::make_shared<ArkWebGeoLocationCallbackWrapper>(callback));
183 }
184 
OnGeolocationHide()185 void ArkWebHandlerImpl::OnGeolocationHide()
186 {
187     nweb_handler_->OnGeolocationHide();
188 }
189 
OnFileSelectorShow(ArkWebRefPtr<ArkWebStringVectorValueCallback> callback,ArkWebRefPtr<ArkWebFileSelectorParams> params)190 bool ArkWebHandlerImpl::OnFileSelectorShow(
191     ArkWebRefPtr<ArkWebStringVectorValueCallback> callback, ArkWebRefPtr<ArkWebFileSelectorParams> params)
192 {
193     std::shared_ptr<OHOS::NWeb::NWebStringVectorValueCallback> nweb_callback = nullptr;
194     if (!CHECK_REF_PTR_IS_NULL(callback)) {
195         nweb_callback = std::make_shared<ArkWebStringVectorValueCallbackWrapper>(callback);
196     }
197 
198     std::shared_ptr<OHOS::NWeb::NWebFileSelectorParams> nweb_params = nullptr;
199     if (!CHECK_REF_PTR_IS_NULL(params)) {
200         nweb_params = std::make_shared<ArkWebFileSelectorParamsWrapper>(params);
201     }
202 
203     return nweb_handler_->OnFileSelectorShow(nweb_callback, nweb_params);
204 }
205 
OnResourceLoadError(ArkWebRefPtr<ArkWebUrlResourceRequest> request,ArkWebRefPtr<ArkWebUrlResourceError> error)206 void ArkWebHandlerImpl::OnResourceLoadError(
207     ArkWebRefPtr<ArkWebUrlResourceRequest> request, ArkWebRefPtr<ArkWebUrlResourceError> error)
208 {
209     std::shared_ptr<OHOS::NWeb::NWebUrlResourceRequest> nweb_request = nullptr;
210     if (!CHECK_REF_PTR_IS_NULL(request)) {
211         nweb_request = std::make_shared<ArkWebUrlResourceRequestWrapper>(request);
212     }
213 
214     std::shared_ptr<OHOS::NWeb::NWebUrlResourceError> nweb_error = nullptr;
215     if (!CHECK_REF_PTR_IS_NULL(error)) {
216         nweb_error = std::make_shared<ArkWebUrlResourceErrorWrapper>(error);
217     }
218 
219     nweb_handler_->OnResourceLoadError(nweb_request, nweb_error);
220 }
221 
OnPermissionRequest(ArkWebRefPtr<ArkWebAccessRequest> request)222 void ArkWebHandlerImpl::OnPermissionRequest(ArkWebRefPtr<ArkWebAccessRequest> request)
223 {
224     if (CHECK_REF_PTR_IS_NULL(request)) {
225         nweb_handler_->OnPermissionRequest(nullptr);
226         return;
227     }
228 
229     nweb_handler_->OnPermissionRequest(std::make_shared<ArkWebAccessRequestWrapper>(request));
230 }
231 
OnQuickMenuDismissed()232 void ArkWebHandlerImpl::OnQuickMenuDismissed()
233 {
234     nweb_handler_->OnQuickMenuDismissed();
235 }
236 
OnContextMenuDismissed()237 void ArkWebHandlerImpl::OnContextMenuDismissed()
238 {
239     nweb_handler_->OnContextMenuDismissed();
240 }
241 
OnTouchSelectionChanged(ArkWebRefPtr<ArkWebTouchHandleState> insert_handle,ArkWebRefPtr<ArkWebTouchHandleState> start_selection_handle,ArkWebRefPtr<ArkWebTouchHandleState> end_selection_handle)242 void ArkWebHandlerImpl::OnTouchSelectionChanged(ArkWebRefPtr<ArkWebTouchHandleState> insert_handle,
243     ArkWebRefPtr<ArkWebTouchHandleState> start_selection_handle,
244     ArkWebRefPtr<ArkWebTouchHandleState> end_selection_handle)
245 {
246     std::shared_ptr<OHOS::NWeb::NWebTouchHandleState> nweb_insert_handle = nullptr;
247     if (!CHECK_REF_PTR_IS_NULL(insert_handle)) {
248         nweb_insert_handle = std::make_shared<ArkWebTouchHandleStateWrapper>(insert_handle);
249     }
250 
251     std::shared_ptr<OHOS::NWeb::NWebTouchHandleState> nweb_start_selection_handle = nullptr;
252     if (!CHECK_REF_PTR_IS_NULL(start_selection_handle)) {
253         nweb_start_selection_handle = std::make_shared<ArkWebTouchHandleStateWrapper>(start_selection_handle);
254     }
255 
256     std::shared_ptr<OHOS::NWeb::NWebTouchHandleState> nweb_end_selection_handle = nullptr;
257     if (!CHECK_REF_PTR_IS_NULL(end_selection_handle)) {
258         nweb_end_selection_handle = std::make_shared<ArkWebTouchHandleStateWrapper>(end_selection_handle);
259     }
260 
261     nweb_handler_->OnTouchSelectionChanged(nweb_insert_handle, nweb_start_selection_handle, nweb_end_selection_handle);
262 }
263 
OnHandleInterceptRequest(ArkWebRefPtr<ArkWebUrlResourceRequest> request,ArkWebRefPtr<ArkWebUrlResourceResponse> response)264 bool ArkWebHandlerImpl::OnHandleInterceptRequest(
265     ArkWebRefPtr<ArkWebUrlResourceRequest> request, ArkWebRefPtr<ArkWebUrlResourceResponse> response)
266 {
267     std::shared_ptr<OHOS::NWeb::NWebUrlResourceRequest> nweb_request = nullptr;
268     if (!CHECK_REF_PTR_IS_NULL(request)) {
269         nweb_request = std::make_shared<ArkWebUrlResourceRequestWrapper>(request);
270     }
271 
272     std::shared_ptr<OHOS::NWeb::NWebUrlResourceResponse> nweb_reponse = nullptr;
273     if (!CHECK_REF_PTR_IS_NULL(response)) {
274         nweb_reponse = std::make_shared<ArkWebUrlResourceResponseWrapper>(response);
275     }
276 
277     return nweb_handler_->OnHandleInterceptRequest(nweb_request, nweb_reponse);
278 }
279 
OnRefreshAccessedHistory(const ArkWebString & url,bool is_reload)280 void ArkWebHandlerImpl::OnRefreshAccessedHistory(const ArkWebString& url, bool is_reload)
281 {
282     nweb_handler_->OnRefreshAccessedHistory(ArkWebStringStructToClass(url), is_reload);
283 }
284 
OnPermissionRequestCanceled(ArkWebRefPtr<ArkWebAccessRequest> request)285 void ArkWebHandlerImpl::OnPermissionRequestCanceled(ArkWebRefPtr<ArkWebAccessRequest> request)
286 {
287     if (CHECK_REF_PTR_IS_NULL(request)) {
288         nweb_handler_->OnPermissionRequestCanceled(nullptr);
289         return;
290     }
291 
292     nweb_handler_->OnPermissionRequestCanceled(std::make_shared<ArkWebAccessRequestWrapper>(request));
293 }
294 
OnHandleInterceptUrlLoading(ArkWebRefPtr<ArkWebUrlResourceRequest> request)295 bool ArkWebHandlerImpl::OnHandleInterceptUrlLoading(ArkWebRefPtr<ArkWebUrlResourceRequest> request)
296 {
297     if (CHECK_REF_PTR_IS_NULL(request)) {
298         return nweb_handler_->OnHandleInterceptUrlLoading(nullptr);
299     }
300 
301     return nweb_handler_->OnHandleInterceptUrlLoading(std::make_shared<ArkWebUrlResourceRequestWrapper>(request));
302 }
303 
RunQuickMenu(ArkWebRefPtr<ArkWebQuickMenuParams> params,ArkWebRefPtr<ArkWebQuickMenuCallback> callback)304 bool ArkWebHandlerImpl::RunQuickMenu(
305     ArkWebRefPtr<ArkWebQuickMenuParams> params, ArkWebRefPtr<ArkWebQuickMenuCallback> callback)
306 {
307     std::shared_ptr<OHOS::NWeb::NWebQuickMenuParams> nweb_params = nullptr;
308     if (!CHECK_REF_PTR_IS_NULL(params)) {
309         nweb_params = std::make_shared<ArkWebQuickMenuParamsWrapper>(params);
310     }
311 
312     std::shared_ptr<OHOS::NWeb::NWebQuickMenuCallback> nweb_callback = nullptr;
313     if (!CHECK_REF_PTR_IS_NULL(callback)) {
314         nweb_callback = std::make_shared<ArkWebQuickMenuCallbackWrapper>(callback);
315     }
316 
317     return nweb_handler_->RunQuickMenu(nweb_params, nweb_callback);
318 }
319 
RunContextMenu(ArkWebRefPtr<ArkWebContextMenuParams> params,ArkWebRefPtr<ArkWebContextMenuCallback> callback)320 bool ArkWebHandlerImpl::RunContextMenu(
321     ArkWebRefPtr<ArkWebContextMenuParams> params, ArkWebRefPtr<ArkWebContextMenuCallback> callback)
322 {
323     std::shared_ptr<OHOS::NWeb::NWebContextMenuParams> nweb_params = nullptr;
324     if (!CHECK_REF_PTR_IS_NULL(params)) {
325         nweb_params = std::make_shared<ArkWebContextMenuParamsWrapper>(params);
326     }
327 
328     std::shared_ptr<OHOS::NWeb::NWebContextMenuCallback> nweb_callback = nullptr;
329     if (!CHECK_REF_PTR_IS_NULL(callback)) {
330         nweb_callback = std::make_shared<ArkWebContextMenuCallbackWrapper>(callback);
331     }
332 
333     return nweb_handler_->RunContextMenu(nweb_params, nweb_callback);
334 }
335 
UpdateDragCursor(unsigned char op)336 void ArkWebHandlerImpl::UpdateDragCursor(unsigned char op)
337 {
338     nweb_handler_->UpdateDragCursor(static_cast<ArkWebDragOperation>(op));
339 }
340 
FilterScrollEvent(const float x,const float y,const float x_velocity,const float y_velocity)341 bool ArkWebHandlerImpl::FilterScrollEvent(const float x, const float y, const float x_velocity, const float y_velocity)
342 {
343     return nweb_handler_->FilterScrollEvent(x, y, x_velocity, y_velocity);
344 }
345 
VisitedUrlHistory()346 ArkWebStringVector ArkWebHandlerImpl::VisitedUrlHistory()
347 {
348     return ArkWebStringVectorClassToStruct(nweb_handler_->VisitedUrlHistory());
349 }
350 
OnWindowNewByJS(const ArkWebString & target_url,bool is_alert,bool is_user_trigger,ArkWebRefPtr<ArkWebControllerHandler> handler)351 void ArkWebHandlerImpl::OnWindowNewByJS(
352     const ArkWebString& target_url, bool is_alert, bool is_user_trigger, ArkWebRefPtr<ArkWebControllerHandler> handler)
353 {
354     if (CHECK_REF_PTR_IS_NULL(handler)) {
355         nweb_handler_->OnWindowNewByJS(ArkWebStringStructToClass(target_url), is_alert, is_user_trigger, nullptr);
356         return;
357     }
358 
359     nweb_handler_->OnWindowNewByJS(ArkWebStringStructToClass(target_url), is_alert, is_user_trigger,
360         std::make_shared<ArkWebControllerHandlerWrapper>(handler));
361 }
362 
OnWindowExitByJS()363 void ArkWebHandlerImpl::OnWindowExitByJS()
364 {
365     nweb_handler_->OnWindowExitByJS();
366 }
367 
OnAlertDialogByJS(const ArkWebString & url,const ArkWebString & message,ArkWebRefPtr<ArkWebJsDialogResult> result)368 bool ArkWebHandlerImpl::OnAlertDialogByJS(
369     const ArkWebString& url, const ArkWebString& message, ArkWebRefPtr<ArkWebJsDialogResult> result)
370 {
371     if (CHECK_REF_PTR_IS_NULL(result)) {
372         return nweb_handler_->OnAlertDialogByJS(
373             ArkWebStringStructToClass(url), ArkWebStringStructToClass(message), nullptr);
374     }
375 
376     return nweb_handler_->OnAlertDialogByJS(ArkWebStringStructToClass(url), ArkWebStringStructToClass(message),
377         std::make_shared<ArkWebJsDialogResultWrapper>(result));
378 }
379 
OnBeforeUnloadByJS(const ArkWebString & url,const ArkWebString & message,ArkWebRefPtr<ArkWebJsDialogResult> result)380 bool ArkWebHandlerImpl::OnBeforeUnloadByJS(
381     const ArkWebString& url, const ArkWebString& message, ArkWebRefPtr<ArkWebJsDialogResult> result)
382 {
383     if (CHECK_REF_PTR_IS_NULL(result)) {
384         return nweb_handler_->OnBeforeUnloadByJS(
385             ArkWebStringStructToClass(url), ArkWebStringStructToClass(message), nullptr);
386     }
387 
388     return nweb_handler_->OnBeforeUnloadByJS(ArkWebStringStructToClass(url), ArkWebStringStructToClass(message),
389         std::make_shared<ArkWebJsDialogResultWrapper>(result));
390 }
391 
OnPromptDialogByJS(const ArkWebString & url,const ArkWebString & message,const ArkWebString & default_value,ArkWebRefPtr<ArkWebJsDialogResult> result)392 bool ArkWebHandlerImpl::OnPromptDialogByJS(const ArkWebString& url, const ArkWebString& message,
393     const ArkWebString& default_value, ArkWebRefPtr<ArkWebJsDialogResult> result)
394 {
395     if (CHECK_REF_PTR_IS_NULL(result)) {
396         return nweb_handler_->OnPromptDialogByJS(ArkWebStringStructToClass(url), ArkWebStringStructToClass(message),
397             ArkWebStringStructToClass(default_value), nullptr);
398     }
399 
400     return nweb_handler_->OnPromptDialogByJS(ArkWebStringStructToClass(url), ArkWebStringStructToClass(message),
401         ArkWebStringStructToClass(default_value), std::make_shared<ArkWebJsDialogResultWrapper>(result));
402 }
403 
OnConfirmDialogByJS(const ArkWebString & url,const ArkWebString & message,ArkWebRefPtr<ArkWebJsDialogResult> result)404 bool ArkWebHandlerImpl::OnConfirmDialogByJS(
405     const ArkWebString& url, const ArkWebString& message, ArkWebRefPtr<ArkWebJsDialogResult> result)
406 {
407     if (CHECK_REF_PTR_IS_NULL(result)) {
408         return nweb_handler_->OnConfirmDialogByJS(
409             ArkWebStringStructToClass(url), ArkWebStringStructToClass(message), nullptr);
410     }
411 
412     return nweb_handler_->OnConfirmDialogByJS(ArkWebStringStructToClass(url), ArkWebStringStructToClass(message),
413         std::make_shared<ArkWebJsDialogResultWrapper>(result));
414 }
415 
OnHttpAuthRequestByJS(ArkWebRefPtr<ArkWebJsHttpAuthResult> result,const ArkWebString & host,const ArkWebString & realm)416 bool ArkWebHandlerImpl::OnHttpAuthRequestByJS(
417     ArkWebRefPtr<ArkWebJsHttpAuthResult> result, const ArkWebString& host, const ArkWebString& realm)
418 {
419     if (CHECK_REF_PTR_IS_NULL(result)) {
420         return nweb_handler_->OnHttpAuthRequestByJS(
421             nullptr, ArkWebStringStructToClass(host), ArkWebStringStructToClass(realm));
422     }
423 
424     return nweb_handler_->OnHttpAuthRequestByJS(std::make_shared<ArkWebJsHttpAuthResultWrapper>(result),
425         ArkWebStringStructToClass(host), ArkWebStringStructToClass(realm));
426 }
427 
OnSslErrorRequestByJS(ArkWebRefPtr<ArkWebJsSslErrorResult> result,int error)428 bool ArkWebHandlerImpl::OnSslErrorRequestByJS(ArkWebRefPtr<ArkWebJsSslErrorResult> result, int error)
429 {
430     if (CHECK_REF_PTR_IS_NULL(result)) {
431         return nweb_handler_->OnSslErrorRequestByJS(nullptr, static_cast<ArkWebSslError>(error));
432     }
433 
434     return nweb_handler_->OnSslErrorRequestByJS(
435         std::make_shared<ArkWebJsSslErrorResultWrapper>(result), static_cast<ArkWebSslError>(error));
436 }
437 
OnSslSelectCertRequestByJS(ArkWebRefPtr<ArkWebJsSslSelectCertResult> result,const ArkWebString & host,int port,const ArkWebStringVector & key_types,const ArkWebStringVector & issuers)438 bool ArkWebHandlerImpl::OnSslSelectCertRequestByJS(ArkWebRefPtr<ArkWebJsSslSelectCertResult> result,
439     const ArkWebString& host, int port, const ArkWebStringVector& key_types, const ArkWebStringVector& issuers)
440 {
441     if (CHECK_REF_PTR_IS_NULL(result)) {
442         return nweb_handler_->OnSslSelectCertRequestByJS(nullptr, ArkWebStringStructToClass(host), port,
443             ArkWebStringVectorStructToClass(key_types), ArkWebStringVectorStructToClass(issuers));
444     }
445 
446     return nweb_handler_->OnSslSelectCertRequestByJS(std::make_shared<ArkWebJsSslSelectCertResultWrapper>(result),
447         ArkWebStringStructToClass(host), port, ArkWebStringVectorStructToClass(key_types),
448         ArkWebStringVectorStructToClass(issuers));
449 }
450 
OnScroll(double x_offset,double y_offset)451 void ArkWebHandlerImpl::OnScroll(double x_offset, double y_offset)
452 {
453     nweb_handler_->OnScroll(x_offset, y_offset);
454 }
455 
OnOverScroll(float x_offset,float y_offset)456 void ArkWebHandlerImpl::OnOverScroll(float x_offset, float y_offset)
457 {
458     nweb_handler_->OnOverScroll(x_offset, y_offset);
459 }
460 
OnScrollState(bool scroll_state)461 void ArkWebHandlerImpl::OnScrollState(bool scroll_state)
462 {
463     nweb_handler_->OnScrollState(scroll_state);
464 }
465 
OnPageVisible(const ArkWebString & url)466 void ArkWebHandlerImpl::OnPageVisible(const ArkWebString& url)
467 {
468     nweb_handler_->OnPageVisible(ArkWebStringStructToClass(url));
469 }
470 
OnPreKeyEvent(ArkWebRefPtr<ArkWebKeyEvent> event)471 bool ArkWebHandlerImpl::OnPreKeyEvent(ArkWebRefPtr<ArkWebKeyEvent> event)
472 {
473     if (CHECK_REF_PTR_IS_NULL(event)) {
474         return nweb_handler_->OnPreKeyEvent(nullptr);
475     }
476 
477     return nweb_handler_->OnPreKeyEvent(std::make_shared<ArkWebKeyEventWrapper>(event));
478 }
479 
OnScaleChanged(float old_scale_factor,float new_scale_factor)480 void ArkWebHandlerImpl::OnScaleChanged(float old_scale_factor, float new_scale_factor)
481 {
482     nweb_handler_->OnScaleChanged(old_scale_factor, new_scale_factor);
483 }
484 
OnCursorChange(const int32_t & type,ArkWebRefPtr<ArkWebCursorInfo> info)485 bool ArkWebHandlerImpl::OnCursorChange(const int32_t& type, ArkWebRefPtr<ArkWebCursorInfo> info)
486 {
487     if (CHECK_REF_PTR_IS_NULL(info)) {
488         return nweb_handler_->OnCursorChange(static_cast<ArkWebCursorType>(type), nullptr);
489     }
490 
491     return nweb_handler_->OnCursorChange(
492         static_cast<ArkWebCursorType>(type), std::make_shared<ArkWebCursorInfoWrapper>(info));
493 }
494 
OnRenderExited(int reason)495 void ArkWebHandlerImpl::OnRenderExited(int reason)
496 {
497     nweb_handler_->OnRenderExited(static_cast<ArkWebRenderExitReason>(reason));
498 }
499 
OnResizeNotWork()500 void ArkWebHandlerImpl::OnResizeNotWork()
501 {
502     nweb_handler_->OnResizeNotWork();
503 }
504 
OnFullScreenExit()505 void ArkWebHandlerImpl::OnFullScreenExit()
506 {
507     nweb_handler_->OnFullScreenExit();
508 }
509 
OnFullScreenEnter(ArkWebRefPtr<ArkWebFullScreenExitHandler> handler)510 void ArkWebHandlerImpl::OnFullScreenEnter(ArkWebRefPtr<ArkWebFullScreenExitHandler> handler)
511 {
512     if (CHECK_REF_PTR_IS_NULL(handler)) {
513         nweb_handler_->OnFullScreenEnter(nullptr);
514         return;
515     }
516 
517     nweb_handler_->OnFullScreenEnter(std::make_shared<ArkWebFullScreenExitHandlerWrapper>(handler));
518 }
519 
OnFullScreenEnterWithVideoSize(ArkWebRefPtr<ArkWebFullScreenExitHandler> handler,int video_natural_width,int video_natural_height)520 void ArkWebHandlerImpl::OnFullScreenEnterWithVideoSize(
521     ArkWebRefPtr<ArkWebFullScreenExitHandler> handler, int video_natural_width, int video_natural_height)
522 {
523     if (CHECK_REF_PTR_IS_NULL(handler)) {
524         nweb_handler_->OnFullScreenEnterWithVideoSize(nullptr, video_natural_width, video_natural_height);
525         return;
526     }
527 
528     nweb_handler_->OnFullScreenEnterWithVideoSize(
529         std::make_shared<ArkWebFullScreenExitHandlerWrapper>(handler), video_natural_width, video_natural_height);
530 }
531 
OnDragAndDropData(const void * data,size_t len,ArkWebRefPtr<ArkWebImageOptions> opt)532 bool ArkWebHandlerImpl::OnDragAndDropData(const void* data, size_t len, ArkWebRefPtr<ArkWebImageOptions> opt)
533 {
534     if (CHECK_REF_PTR_IS_NULL(opt)) {
535         return nweb_handler_->OnDragAndDropData(data, len, nullptr);
536     }
537 
538     return nweb_handler_->OnDragAndDropData(data, len, std::make_shared<ArkWebImageOptionsWrapper>(opt));
539 }
540 
OnSelectPopupMenu(ArkWebRefPtr<ArkWebSelectPopupMenuParam> params,ArkWebRefPtr<ArkWebSelectPopupMenuCallback> callback)541 void ArkWebHandlerImpl::OnSelectPopupMenu(
542     ArkWebRefPtr<ArkWebSelectPopupMenuParam> params, ArkWebRefPtr<ArkWebSelectPopupMenuCallback> callback)
543 {
544     std::shared_ptr<OHOS::NWeb::NWebSelectPopupMenuParam> nweb_params = nullptr;
545     if (!CHECK_REF_PTR_IS_NULL(params)) {
546         nweb_params = std::make_shared<ArkWebSelectPopupMenuParamWrapper>(params);
547     }
548 
549     std::shared_ptr<OHOS::NWeb::NWebSelectPopupMenuCallback> nweb_callback = nullptr;
550     if (!CHECK_REF_PTR_IS_NULL(callback)) {
551         nweb_callback = std::make_shared<ArkWebSelectPopupMenuCallbackWrapper>(callback);
552     }
553 
554     nweb_handler_->OnSelectPopupMenu(nweb_params, nweb_callback);
555 }
556 
OnDataResubmission(ArkWebRefPtr<ArkWebDataResubmissionCallback> handler)557 void ArkWebHandlerImpl::OnDataResubmission(ArkWebRefPtr<ArkWebDataResubmissionCallback> handler)
558 {
559     if (CHECK_REF_PTR_IS_NULL(handler)) {
560         nweb_handler_->OnDataResubmission(nullptr);
561         return;
562     }
563 
564     nweb_handler_->OnDataResubmission(std::make_shared<ArkWebDataResubmissionCallbackWrapper>(handler));
565 }
566 
OnRootLayerChanged(int width,int height)567 void ArkWebHandlerImpl::OnRootLayerChanged(int width, int height)
568 {
569     nweb_handler_->OnRootLayerChanged(width, height);
570 }
571 
OnAudioStateChanged(bool playing)572 void ArkWebHandlerImpl::OnAudioStateChanged(bool playing)
573 {
574     nweb_handler_->OnAudioStateChanged(playing);
575 }
576 
OnOverScrollFlingEnd()577 void ArkWebHandlerImpl::OnOverScrollFlingEnd()
578 {
579     nweb_handler_->OnOverScrollFlingEnd();
580 }
581 
OnUnProcessedKeyEvent(ArkWebRefPtr<ArkWebKeyEvent> event)582 bool ArkWebHandlerImpl::OnUnProcessedKeyEvent(ArkWebRefPtr<ArkWebKeyEvent> event)
583 {
584     if (CHECK_REF_PTR_IS_NULL(event)) {
585         return nweb_handler_->OnUnProcessedKeyEvent(nullptr);
586     }
587 
588     return nweb_handler_->OnUnProcessedKeyEvent(std::make_shared<ArkWebKeyEventWrapper>(event));
589 }
590 
OnDragAndDropDataUdmf(ArkWebRefPtr<ArkWebDragData> drag_data)591 bool ArkWebHandlerImpl::OnDragAndDropDataUdmf(ArkWebRefPtr<ArkWebDragData> drag_data)
592 {
593     if (CHECK_REF_PTR_IS_NULL(drag_data)) {
594         return nweb_handler_->OnDragAndDropDataUdmf(nullptr);
595     }
596 
597     return nweb_handler_->OnDragAndDropDataUdmf(std::make_shared<ArkWebDragDataWrapper>(drag_data));
598 }
599 
OnFirstContentfulPaint(int64_t navigation_start_tick,int64_t first_contentful_paint_ms)600 void ArkWebHandlerImpl::OnFirstContentfulPaint(int64_t navigation_start_tick, int64_t first_contentful_paint_ms)
601 {
602     nweb_handler_->OnFirstContentfulPaint(navigation_start_tick, first_contentful_paint_ms);
603 }
604 
OnDateTimeChooserPopup(ArkWebRefPtr<ArkWebDateTimeChooser> chooser,const ArkWebDateTimeSuggestionVector & suggestions,ArkWebRefPtr<ArkWebDateTimeChooserCallback> callback)605 void ArkWebHandlerImpl::OnDateTimeChooserPopup(ArkWebRefPtr<ArkWebDateTimeChooser> chooser,
606     const ArkWebDateTimeSuggestionVector& suggestions, ArkWebRefPtr<ArkWebDateTimeChooserCallback> callback)
607 {
608     std::shared_ptr<OHOS::NWeb::NWebDateTimeChooser> nweb_date_time_chooser = nullptr;
609     if (!CHECK_REF_PTR_IS_NULL(chooser)) {
610         nweb_date_time_chooser = std::make_shared<ArkWebDateTimeChooserWrapper>(chooser);
611     }
612 
613     std::shared_ptr<OHOS::NWeb::NWebDateTimeChooserCallback> nweb_date_time_chooser_callback = nullptr;
614     if (!CHECK_REF_PTR_IS_NULL(callback)) {
615         nweb_date_time_chooser_callback = std::make_shared<ArkWebDateTimeChooserCallbackWrapper>(callback);
616     }
617 
618     nweb_handler_->OnDateTimeChooserPopup(nweb_date_time_chooser,
619         ArkWebDateTimeSuggestionVectorStructToClass(suggestions), nweb_date_time_chooser_callback);
620 }
621 
OnDateTimeChooserClose()622 void ArkWebHandlerImpl::OnDateTimeChooserClose()
623 {
624     nweb_handler_->OnDateTimeChooserClose();
625 }
626 
OnScreenCaptureRequest(ArkWebRefPtr<ArkWebScreenCaptureAccessRequest> request)627 void ArkWebHandlerImpl::OnScreenCaptureRequest(ArkWebRefPtr<ArkWebScreenCaptureAccessRequest> request)
628 {
629     if (CHECK_REF_PTR_IS_NULL(request)) {
630         nweb_handler_->OnScreenCaptureRequest(nullptr);
631         return;
632     }
633 
634     nweb_handler_->OnScreenCaptureRequest(std::make_shared<ArkWebScreenCaptureAccessRequestWrapper>(request));
635 }
636 
OnActivityStateChanged(int state,int type)637 void ArkWebHandlerImpl::OnActivityStateChanged(int state, int type)
638 {
639     nweb_handler_->OnActivityStateChanged(state, static_cast<ArkWebActivityType>(type));
640 }
641 
OnGetTouchHandleHotZone(ArkWebRefPtr<ArkWebTouchHandleHotZone> hot_zone)642 void ArkWebHandlerImpl::OnGetTouchHandleHotZone(ArkWebRefPtr<ArkWebTouchHandleHotZone> hot_zone)
643 {
644     if (CHECK_REF_PTR_IS_NULL(hot_zone)) {
645         nweb_handler_->OnGetTouchHandleHotZone(nullptr);
646         return;
647     }
648 
649     nweb_handler_->OnGetTouchHandleHotZone(std::make_shared<ArkWebTouchHandleHotZoneWrapper>(hot_zone));
650 }
651 
OnCompleteSwapWithNewSize()652 void ArkWebHandlerImpl::OnCompleteSwapWithNewSize()
653 {
654     nweb_handler_->OnCompleteSwapWithNewSize();
655 }
656 
OnOverScrollFlingVelocity(float x_velocity,float y_velocity,bool is_fling)657 void ArkWebHandlerImpl::OnOverScrollFlingVelocity(float x_velocity, float y_velocity, bool is_fling)
658 {
659     nweb_handler_->OnOverScrollFlingVelocity(x_velocity, y_velocity, is_fling);
660 }
661 
OnNavigationEntryCommitted(ArkWebRefPtr<ArkWebLoadCommittedDetails> details)662 void ArkWebHandlerImpl::OnNavigationEntryCommitted(ArkWebRefPtr<ArkWebLoadCommittedDetails> details)
663 {
664     if (CHECK_REF_PTR_IS_NULL(details)) {
665         nweb_handler_->OnScreenCaptureRequest(nullptr);
666         return;
667     }
668 
669     nweb_handler_->OnNavigationEntryCommitted(std::make_shared<ArkWebLoadCommittedDetailsWrapper>(details));
670 }
671 
OnNativeEmbedLifecycleChange(ArkWebRefPtr<ArkWebNativeEmbedDataInfo> data_info)672 void ArkWebHandlerImpl::OnNativeEmbedLifecycleChange(ArkWebRefPtr<ArkWebNativeEmbedDataInfo> data_info)
673 {
674     if (CHECK_REF_PTR_IS_NULL(data_info)) {
675         nweb_handler_->OnNativeEmbedLifecycleChange(nullptr);
676         return;
677     }
678 
679     nweb_handler_->OnNativeEmbedLifecycleChange(std::make_shared<ArkWebNativeEmbedDataInfoWrapper>(data_info));
680 }
681 
OnNativeEmbedGestureEvent(ArkWebRefPtr<ArkWebNativeEmbedTouchEvent> touch_event)682 void ArkWebHandlerImpl::OnNativeEmbedGestureEvent(ArkWebRefPtr<ArkWebNativeEmbedTouchEvent> touch_event)
683 {
684     if (CHECK_REF_PTR_IS_NULL(touch_event)) {
685         nweb_handler_->OnNativeEmbedGestureEvent(nullptr);
686         return;
687     }
688 
689     nweb_handler_->OnNativeEmbedGestureEvent(std::make_shared<ArkWebNativeEmbedTouchEventWrapper>(touch_event));
690 }
691 
OnSafeBrowsingCheckResult(int threat_type)692 void ArkWebHandlerImpl::OnSafeBrowsingCheckResult(int threat_type)
693 {
694     nweb_handler_->OnSafeBrowsingCheckResult(threat_type);
695 }
696 
OnFirstMeaningfulPaint(ArkWebRefPtr<ArkWebFirstMeaningfulPaintDetails> details)697 void ArkWebHandlerImpl::OnFirstMeaningfulPaint(ArkWebRefPtr<ArkWebFirstMeaningfulPaintDetails> details)
698 {
699     if (CHECK_REF_PTR_IS_NULL(details)) {
700         return;
701     }
702 
703     nweb_handler_->OnFirstMeaningfulPaint(std::make_shared<ArkWebFirstMeaningfulPaintDetailsWrapper>(details));
704 }
705 
OnLargestContentfulPaint(ArkWebRefPtr<ArkWebLargestContentfulPaintDetails> details)706 void ArkWebHandlerImpl::OnLargestContentfulPaint(ArkWebRefPtr<ArkWebLargestContentfulPaintDetails> details)
707 {
708     if (CHECK_REF_PTR_IS_NULL(details)) {
709         return;
710     }
711 
712     nweb_handler_->OnLargestContentfulPaint(std::make_shared<ArkWebLargestContentfulPaintDetailsWrapper>(details));
713 }
714 
OnIntelligentTrackingPreventionResult(const ArkWebString & website_host,const ArkWebString & tracker_host)715 void ArkWebHandlerImpl::OnIntelligentTrackingPreventionResult(
716     const ArkWebString& website_host, const ArkWebString& tracker_host)
717 {
718     nweb_handler_->OnIntelligentTrackingPreventionResult(
719         ArkWebStringStructToClass(website_host), ArkWebStringStructToClass(tracker_host));
720 }
721 
OnHandleOverrideUrlLoading(ArkWebRefPtr<ArkWebUrlResourceRequest> request)722 bool ArkWebHandlerImpl::OnHandleOverrideUrlLoading(ArkWebRefPtr<ArkWebUrlResourceRequest> request)
723 {
724     if (CHECK_REF_PTR_IS_NULL(request)) {
725         return nweb_handler_->OnHandleOverrideUrlLoading(nullptr);
726     }
727 
728     return nweb_handler_->OnHandleOverrideUrlLoading(std::make_shared<ArkWebUrlResourceRequestWrapper>(request));
729 }
730 
OnAllSslErrorRequestByJS(ArkWebRefPtr<ArkWebJsAllSslErrorResult> result,int error,const ArkWebString & url,const ArkWebString & originalUrl,const ArkWebString & referrer,bool isFatalError,bool isMainFrame)731 bool ArkWebHandlerImpl::OnAllSslErrorRequestByJS(ArkWebRefPtr<ArkWebJsAllSslErrorResult> result, int error,
732     const ArkWebString& url, const ArkWebString& originalUrl, const ArkWebString& referrer, bool isFatalError,
733     bool isMainFrame)
734 {
735     if (CHECK_REF_PTR_IS_NULL(result)) {
736         return nweb_handler_->OnAllSslErrorRequestByJS(nullptr, static_cast<ArkWebSslError>(error),
737             ArkWebStringStructToClass(url), ArkWebStringStructToClass(originalUrl), ArkWebStringStructToClass(referrer),
738             isFatalError, isMainFrame);
739     }
740 
741     return nweb_handler_->OnAllSslErrorRequestByJS(std::make_shared<ArkWebJsAllSslErrorResultWrapper>(result),
742         static_cast<ArkWebSslError>(error), ArkWebStringStructToClass(url), ArkWebStringStructToClass(originalUrl),
743         ArkWebStringStructToClass(referrer), isFatalError, isMainFrame);
744 }
745 
OnTooltip(const ArkWebString & tooltip)746 void ArkWebHandlerImpl::OnTooltip(const ArkWebString& tooltip)
747 {
748     nweb_handler_->OnTooltip(ArkWebStringStructToClass(tooltip));
749 }
750 
ReleaseResizeHold()751 void ArkWebHandlerImpl::ReleaseResizeHold()
752 {
753     nweb_handler_->ReleaseResizeHold();
754 }
755 
GetWordSelection(const ArkWebString & text,int8_t offset)756 ArkWebCharVector ArkWebHandlerImpl::GetWordSelection(const ArkWebString& text, int8_t offset)
757 {
758     if (!nweb_handler_) {
759         return ark_web_char_vector_default;
760     }
761     std::vector<int8_t> vec = nweb_handler_->GetWordSelection(ArkWebStringStructToClass(text), offset);
762     std::vector<char> result(vec.size());
763     for (size_t i = 0; i < vec.size(); i++) {
764         result[i] = vec[i];
765     }
766     ArkWebCharVector ark_result = ArkWebBasicVectorClassToStruct<char, ArkWebCharVector>(result);
767     return ark_result;
768 }
769 
UpdateClippedSelectionBounds(int x,int y,int w,int h)770 void ArkWebHandlerImpl::UpdateClippedSelectionBounds(int x, int y, int w, int h)
771 {
772     nweb_handler_->UpdateClippedSelectionBounds(x, y, w, h);
773 }
774 
OnOpenAppLink(const ArkWebString & url,ArkWebRefPtr<ArkWebAppLinkCallback> callback)775 bool ArkWebHandlerImpl::OnOpenAppLink(const ArkWebString& url, ArkWebRefPtr<ArkWebAppLinkCallback> callback)
776 {
777     if (CHECK_REF_PTR_IS_NULL(callback)) {
778         return nweb_handler_->OnOpenAppLink(ArkWebStringStructToClass(url), nullptr);
779     }
780 
781     return nweb_handler_->OnOpenAppLink(
782         ArkWebStringStructToClass(url), std::make_shared<ArkWebAppLinkCallbackWrapper>(callback));
783 }
OnRenderProcessNotResponding(const ArkWebString & js_stack,int pid,int reason)784 void ArkWebHandlerImpl::OnRenderProcessNotResponding(const ArkWebString& js_stack, int pid, int reason)
785 {
786     nweb_handler_->OnRenderProcessNotResponding(
787         ArkWebStringStructToClass(js_stack), pid, static_cast<ArkWebRenderProcessNotRespondingReason>(reason));
788 }
789 
OnRenderProcessResponding()790 void ArkWebHandlerImpl::OnRenderProcessResponding()
791 {
792     nweb_handler_->OnRenderProcessResponding();
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 
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)811 void ArkWebHandlerImpl::CreateOverlay(void* data, size_t len, int width, int height, int offset_x, int offset_y,
812     int rect_width, int rect_height, int point_x, int point_y)
813 {
814     nweb_handler_->CreateOverlay(
815         data, len, width, height, offset_x, offset_y, rect_width, rect_height, point_x, point_y);
816 }
817 
OnOverlayStateChanged(int offset_x,int offset_y,int rect_width,int rect_height)818 void ArkWebHandlerImpl::OnOverlayStateChanged(int offset_x, int offset_y, int rect_width, int rect_height)
819 {
820     nweb_handler_->OnOverlayStateChanged(offset_x, offset_y, rect_width, rect_height);
821 }
822 
OnFocus(int source)823 bool ArkWebHandlerImpl::OnFocus(int source)
824 {
825     return nweb_handler_->OnFocus(static_cast<ArkWebFocusSource>(source));
826 }
827 
OnOverScroll(float xOffset,float yOffset,float xVelocity,float yVelocity)828 bool ArkWebHandlerImpl::OnOverScroll(float xOffset, float yOffset, float xVelocity, float yVelocity)
829 {
830     return nweb_handler_->OnOverScroll(xOffset, yOffset, xVelocity, yVelocity);
831 }
832 
KeyboardReDispatch(ArkWebRefPtr<ArkWebKeyEvent> event,bool isUsed)833 void ArkWebHandlerImpl::KeyboardReDispatch(ArkWebRefPtr<ArkWebKeyEvent> event, bool isUsed)
834 {
835     if (CHECK_REF_PTR_IS_NULL(event)) {
836         nweb_handler_->KeyboardReDispatch(nullptr, isUsed);
837     }
838 
839     nweb_handler_->KeyboardReDispatch(std::make_shared<ArkWebKeyEventWrapper>(event), isUsed);
840 }
841 
OnInterceptKeyboardAttach(ArkWebRefPtr<ArkWebCustomKeyboardHandler> keyboardHandler,const ArkWebStringMap & attributes,bool & useSystemKeyboard,int32_t & enterKeyType)842 void ArkWebHandlerImpl::OnInterceptKeyboardAttach(ArkWebRefPtr<ArkWebCustomKeyboardHandler> keyboardHandler,
843     const ArkWebStringMap& attributes, bool& useSystemKeyboard, int32_t& enterKeyType)
844 {
845     if (CHECK_REF_PTR_IS_NULL(keyboardHandler)) {
846         return nweb_handler_->OnInterceptKeyboardAttach(
847             nullptr, ArkWebStringMapStructToClass(attributes), useSystemKeyboard, enterKeyType);
848     }
849 
850     nweb_handler_->OnInterceptKeyboardAttach(std::make_shared<ArkWebCustomKeyboardHandlerWrapper>(keyboardHandler),
851         ArkWebStringMapStructToClass(attributes), useSystemKeyboard, enterKeyType);
852 }
853 
OnCustomKeyboardAttach()854 void ArkWebHandlerImpl::OnCustomKeyboardAttach()
855 {
856     nweb_handler_->OnCustomKeyboardAttach();
857 }
858 
OnCustomKeyboardClose()859 void ArkWebHandlerImpl::OnCustomKeyboardClose()
860 {
861     nweb_handler_->OnCustomKeyboardClose();
862 }
863 
OnAdsBlocked(const ArkWebString & url,const ArkWebStringVector & adsBlocked)864 void ArkWebHandlerImpl::OnAdsBlocked(const ArkWebString& url, const ArkWebStringVector& adsBlocked)
865 {
866     nweb_handler_->OnAdsBlocked(ArkWebStringStructToClass(url), ArkWebStringVectorStructToClass(adsBlocked));
867 }
868 
OnCursorUpdate(double x,double y,double width,double height)869 void ArkWebHandlerImpl::OnCursorUpdate(double x, double y, double width, double height)
870 {
871     nweb_handler_->OnCursorUpdate(x, y, width, height);
872 }
873 
ReportDynamicFrameLossEvent(const ArkWebString & sceneId,bool isStart)874 void ArkWebHandlerImpl::ReportDynamicFrameLossEvent(const ArkWebString& sceneId, bool isStart)
875 {
876     nweb_handler_->ReportDynamicFrameLossEvent(ArkWebStringStructToClass(sceneId), isStart);
877 }
878 
HideHandleAndQuickMenuIfNecessary(bool hide)879 void ArkWebHandlerImpl::HideHandleAndQuickMenuIfNecessary(bool hide)
880 {
881     nweb_handler_->HideHandleAndQuickMenuIfNecessary(hide);
882 }
883 
ChangeVisibilityOfQuickMenu()884 void ArkWebHandlerImpl::ChangeVisibilityOfQuickMenu()
885 {
886     nweb_handler_->ChangeVisibilityOfQuickMenu();
887 }
888 
StartVibraFeedback(const ArkWebString & vibratorType)889 void ArkWebHandlerImpl::StartVibraFeedback(const ArkWebString& vibratorType)
890 {
891     nweb_handler_->StartVibraFeedback(ArkWebStringStructToClass(vibratorType));
892 }
893 
OnPopupSize(int x,int y,int width,int height)894 void ArkWebHandlerImpl::OnPopupSize(int x, int y, int width, int height)
895 {
896     nweb_handler_->OnPopupSize(x, y, width, height);
897 }
898 
OnPopupShow(bool show)899 void ArkWebHandlerImpl::OnPopupShow(bool show)
900 {
901     nweb_handler_->OnPopupShow(show);
902 }
903 
OnNativeEmbedVisibilityChange(const ArkWebString & embed_id,bool visibility)904 void ArkWebHandlerImpl::OnNativeEmbedVisibilityChange(const ArkWebString& embed_id, bool visibility)
905 {
906     nweb_handler_->OnNativeEmbedVisibilityChange(ArkWebStringStructToClass(embed_id), visibility);
907 }
908 
CloseImageOverlaySelection()909 bool ArkWebHandlerImpl::CloseImageOverlaySelection()
910 {
911     return nweb_handler_->CloseImageOverlaySelection();
912 }
913 
OnSslErrorRequestByJSV2(ArkWebRefPtr<ArkWebJsSslErrorResult> result,int error,const ArkWebStringVector & certChainData)914 bool ArkWebHandlerImpl::OnSslErrorRequestByJSV2(ArkWebRefPtr<ArkWebJsSslErrorResult> result, int error,
915     const ArkWebStringVector& certChainData)
916 {
917     if (CHECK_REF_PTR_IS_NULL(result)) {
918         return nweb_handler_->OnSslErrorRequestByJSV2(nullptr, static_cast<ArkWebSslError>(error),
919             ArkWebStringVectorStructToClass(certChainData));
920     }
921 
922     return nweb_handler_->OnSslErrorRequestByJSV2(
923         std::make_shared<ArkWebJsSslErrorResultWrapper>(result), static_cast<ArkWebSslError>(error),
924             ArkWebStringVectorStructToClass(certChainData));
925 }
926 
OnAccessibilityEvent(int64_t accessibilityId,int32_t eventType)927 void ArkWebHandlerImpl::OnAccessibilityEvent(int64_t accessibilityId, int32_t eventType)
928 {
929     nweb_handler_->OnAccessibilityEvent(accessibilityId, eventType);
930 }
931 
IsCurrentFocus()932 bool ArkWebHandlerImpl::IsCurrentFocus()
933 {
934     return nweb_handler_->IsCurrentFocus();
935 }
936 
GetVisibleRectToWeb(int & visibleX,int & visibleY,int & visibleWidth,int & visibleHeight)937 void ArkWebHandlerImpl::GetVisibleRectToWeb(int& visibleX, int& visibleY, int& visibleWidth, int& visibleHeight)
938 {
939     nweb_handler_->GetVisibleRectToWeb(visibleX, visibleY, visibleWidth, visibleHeight);
940 }
941 
OnScrollStart(const float x,const float y)942 void ArkWebHandlerImpl::OnScrollStart(const float x, const float y)
943 {
944     nweb_handler_->OnScrollStart(x, y);
945 }
946 
OnShowAutofillPopupV2(const float offsetX,const float offsetY,const float height,const float width,const ArkWebStringVector & menu_items)947 void ArkWebHandlerImpl::OnShowAutofillPopupV2(
948     const float offsetX, const float offsetY, const float height, const float width,
949     const ArkWebStringVector& menu_items)
950 {
951     nweb_handler_->OnShowAutofillPopupV2(offsetX, offsetY, height, width, ArkWebStringVectorStructToClass(menu_items));
952 }
953 
RestoreRenderFit()954 void ArkWebHandlerImpl::RestoreRenderFit()
955 {
956     nweb_handler_->RestoreRenderFit();
957 }
958 
OnAccessibilityEventV2(int64_t accessibilityId,int32_t eventType,const ArkWebString & argument)959 void ArkWebHandlerImpl::OnAccessibilityEventV2(int64_t accessibilityId, int32_t eventType, const ArkWebString& argument)
960 {
961     nweb_handler_->OnAccessibilityEventV2(accessibilityId, eventType, ArkWebStringStructToClass(argument));
962 }
963 
OnNestedScroll(float & x,float & y,float & xVelocity,float & yVelocity,bool & isAvailable)964 bool ArkWebHandlerImpl::OnNestedScroll(float& x, float& y, float& xVelocity, float& yVelocity, bool& isAvailable)
965 {
966     return nweb_handler_->OnNestedScroll(x, y, xVelocity, yVelocity, isAvailable);
967 }
968 
EnableSecurityLayer(bool isNeedSecurityLayer)969 void ArkWebHandlerImpl::EnableSecurityLayer(bool isNeedSecurityLayer)
970 {
971     nweb_handler_->EnableSecurityLayer(isNeedSecurityLayer);
972 }
973 
ChangeVisibilityOfQuickMenuV2()974 bool ArkWebHandlerImpl::ChangeVisibilityOfQuickMenuV2()
975 {
976     return nweb_handler_->ChangeVisibilityOfQuickMenuV2();
977 }
978 
OnPip(int status,int delegate_id,int child_id,int frame_routing_id,int width,int height)979 void ArkWebHandlerImpl::OnPip(int status,
980                               int delegate_id,
981                               int child_id,
982                               int frame_routing_id,
983                               int width,
984                               int height)
985 {
986     nweb_handler_->OnPip(status, delegate_id, child_id,
987                          frame_routing_id, width, height);
988 }
989 
OnBeforeUnloadByJSV2(const ArkWebString & url,const ArkWebString & message,bool isReload,ArkWebRefPtr<ArkWebJsDialogResult> result)990 bool ArkWebHandlerImpl::OnBeforeUnloadByJSV2(
991     const ArkWebString& url, const ArkWebString& message, bool isReload, ArkWebRefPtr<ArkWebJsDialogResult> result)
992 {
993     if (CHECK_REF_PTR_IS_NULL(result)) {
994         return nweb_handler_->OnBeforeUnloadByJSV2(
995             ArkWebStringStructToClass(url), ArkWebStringStructToClass(message), isReload, nullptr);
996     }
997 
998     return nweb_handler_->OnBeforeUnloadByJSV2(ArkWebStringStructToClass(url), ArkWebStringStructToClass(message),
999         isReload, std::make_shared<ArkWebJsDialogResultWrapper>(result));
1000 }
1001 
OnNativeEmbedMouseEvent(ArkWebRefPtr<ArkWebNativeEmbedMouseEvent> mouse_event)1002 void ArkWebHandlerImpl::OnNativeEmbedMouseEvent(ArkWebRefPtr<ArkWebNativeEmbedMouseEvent> mouse_event)
1003 {
1004     if (CHECK_REF_PTR_IS_NULL(mouse_event)) {
1005         nweb_handler_->OnNativeEmbedMouseEvent(nullptr);
1006         return;
1007     }
1008 
1009     nweb_handler_->OnNativeEmbedMouseEvent(std::make_shared<ArkWebNativeEmbedMouseEventWrapper>(mouse_event));
1010 }
1011 
OnActivateContentByJS()1012 void ArkWebHandlerImpl::OnActivateContentByJS()
1013 {
1014     nweb_handler_->OnActivateContentByJS();
1015 }
1016 
OnLoadStarted(const ArkWebString & url)1017 void ArkWebHandlerImpl::OnLoadStarted(const ArkWebString& url)
1018 {
1019     nweb_handler_->OnLoadStarted(ArkWebStringStructToClass(url));
1020 }
1021 
OnLoadFinished(const ArkWebString & url)1022 void ArkWebHandlerImpl::OnLoadFinished(const ArkWebString& url)
1023 {
1024     nweb_handler_->OnLoadFinished(ArkWebStringStructToClass(url));
1025 }
1026 
OnAllSslErrorRequestByJSV2(ArkWebRefPtr<ArkWebJsAllSslErrorResult> result,int error,const ArkWebString & url,const ArkWebString & originalUrl,const ArkWebString & referrer,bool isFatalError,bool isMainFrame,const ArkWebStringVector & certChainData)1027 bool ArkWebHandlerImpl::OnAllSslErrorRequestByJSV2(ArkWebRefPtr<ArkWebJsAllSslErrorResult> result, int error,
1028     const ArkWebString& url, const ArkWebString& originalUrl, const ArkWebString& referrer, bool isFatalError,
1029     bool isMainFrame, const ArkWebStringVector& certChainData)
1030 {
1031     if (CHECK_REF_PTR_IS_NULL(result)) {
1032         return nweb_handler_->OnAllSslErrorRequestByJSV2(nullptr, static_cast<ArkWebSslError>(error),
1033             ArkWebStringStructToClass(url), ArkWebStringStructToClass(originalUrl), ArkWebStringStructToClass(referrer),
1034             isFatalError, isMainFrame, ArkWebStringVectorStructToClass(certChainData));
1035     }
1036 
1037     return nweb_handler_->OnAllSslErrorRequestByJSV2(std::make_shared<ArkWebJsAllSslErrorResultWrapper>(result),
1038         static_cast<ArkWebSslError>(error), ArkWebStringStructToClass(url), ArkWebStringStructToClass(originalUrl),
1039         ArkWebStringStructToClass(referrer), isFatalError, isMainFrame, ArkWebStringVectorStructToClass(certChainData));
1040 }
1041 
ShowMagnifier()1042 void ArkWebHandlerImpl::ShowMagnifier()
1043 {
1044     nweb_handler_->ShowMagnifier();
1045 }
1046 
HideMagnifier()1047 void ArkWebHandlerImpl::HideMagnifier()
1048 {
1049     nweb_handler_->HideMagnifier();
1050 }
1051 
OnPageTitleV2(const ArkWebString & title,bool isRealTitle)1052 void ArkWebHandlerImpl::OnPageTitleV2(const ArkWebString& title, bool isRealTitle)
1053 {
1054     nweb_handler_->OnPageTitleV2(ArkWebStringStructToClass(title), isRealTitle);
1055 }
1056 
OnInsertBlanklessFrame(const ArkWebString & pathToFrame)1057 void ArkWebHandlerImpl::OnInsertBlanklessFrame(const ArkWebString& pathToFrame)
1058 {
1059     nweb_handler_->OnInsertBlanklessFrame(ArkWebStringStructToClass(pathToFrame));
1060 }
1061 
OnRemoveBlanklessFrame(int delayTime)1062 void ArkWebHandlerImpl::OnRemoveBlanklessFrame(int delayTime)
1063 {
1064     nweb_handler_->OnRemoveBlanklessFrame(delayTime);
1065 }
1066 
OnHandleOverrideErrorPage(ArkWebRefPtr<ArkWebUrlResourceRequest> request,ArkWebRefPtr<ArkWebUrlResourceError> error)1067 ArkWebString ArkWebHandlerImpl::OnHandleOverrideErrorPage(
1068     ArkWebRefPtr<ArkWebUrlResourceRequest> request,
1069     ArkWebRefPtr<ArkWebUrlResourceError> error)
1070 {
1071     std::shared_ptr<OHOS::NWeb::NWebUrlResourceRequest> nweb_request = nullptr;
1072     if (!CHECK_REF_PTR_IS_NULL(request)) {
1073         nweb_request = std::make_shared<ArkWebUrlResourceRequestWrapper>(request);
1074     }
1075 
1076     std::shared_ptr<OHOS::NWeb::NWebUrlResourceError> nweb_error = nullptr;
1077     if (!CHECK_REF_PTR_IS_NULL(error)) {
1078         nweb_error = std::make_shared<ArkWebUrlResourceErrorWrapper>(error);
1079     }
1080 
1081     return ArkWebStringClassToStruct(nweb_handler_->OnHandleOverrideErrorPage(nweb_request, nweb_error));
1082 }
1083 
OnPdfScrollAtBottom(const ArkWebString & url)1084 void ArkWebHandlerImpl::OnPdfScrollAtBottom(const ArkWebString& url)
1085 {
1086     nweb_handler_->OnPdfScrollAtBottom(ArkWebStringStructToClass(url));
1087 }
1088 
OnPdfLoadEvent(int32_t result,const ArkWebString & url)1089 void ArkWebHandlerImpl::OnPdfLoadEvent(int32_t result, const ArkWebString& url)
1090 {
1091     nweb_handler_->OnPdfLoadEvent(result, ArkWebStringStructToClass(url));
1092 }
1093 
OnTakeFocus(ArkWebRefPtr<ArkWebKeyEvent> event)1094 void ArkWebHandlerImpl::OnTakeFocus(ArkWebRefPtr<ArkWebKeyEvent> event)
1095 {
1096     if (CHECK_REF_PTR_IS_NULL(event)) {
1097         nweb_handler_->OnTakeFocus(nullptr);
1098         return;
1099     }
1100 
1101     nweb_handler_->OnTakeFocus(std::make_shared<ArkWebKeyEventWrapper>(event));
1102 }
1103 } // namespace OHOS::ArkWeb
1104