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