10826e83eSopenharmony_ci/* 20826e83eSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 30826e83eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 40826e83eSopenharmony_ci * you may not use this file except in compliance with the License. 50826e83eSopenharmony_ci * You may obtain a copy of the License at 60826e83eSopenharmony_ci * 70826e83eSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 80826e83eSopenharmony_ci * 90826e83eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 100826e83eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 110826e83eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 120826e83eSopenharmony_ci * See the License for the specific language governing permissions and 130826e83eSopenharmony_ci * limitations under the License. 140826e83eSopenharmony_ci */ 150826e83eSopenharmony_ci 160826e83eSopenharmony_ci#ifndef NWEB_HANDLER_H 170826e83eSopenharmony_ci#define NWEB_HANDLER_H 180826e83eSopenharmony_ci 190826e83eSopenharmony_ci#include <memory> 200826e83eSopenharmony_ci#include <string> 210826e83eSopenharmony_ci#include <vector> 220826e83eSopenharmony_ci 230826e83eSopenharmony_ci#include "nweb.h" 240826e83eSopenharmony_ci#include "nweb_access_request.h" 250826e83eSopenharmony_ci#include "nweb_app_link_callback.h" 260826e83eSopenharmony_ci#include "nweb_console_log.h" 270826e83eSopenharmony_ci#include "nweb_context_menu_params.h" 280826e83eSopenharmony_ci#include "nweb_controller_handler.h" 290826e83eSopenharmony_ci#include "nweb_custom_keyboard_handler.h" 300826e83eSopenharmony_ci#include "nweb_data_resubmission_callback.h" 310826e83eSopenharmony_ci#include "nweb_date_time_chooser.h" 320826e83eSopenharmony_ci#include "nweb_drag_data.h" 330826e83eSopenharmony_ci#include "nweb_file_selector_params.h" 340826e83eSopenharmony_ci#include "nweb_first_meaningful_paint_details.h" 350826e83eSopenharmony_ci#include "nweb_full_screen_exit_handler.h" 360826e83eSopenharmony_ci#include "nweb_geolocation_callback_interface.h" 370826e83eSopenharmony_ci#include "nweb_gesture_event_result.h" 380826e83eSopenharmony_ci#include "nweb_js_dialog_result.h" 390826e83eSopenharmony_ci#include "nweb_js_http_auth_result.h" 400826e83eSopenharmony_ci#include "nweb_js_ssl_error_result.h" 410826e83eSopenharmony_ci#include "nweb_js_ssl_select_cert_result.h" 420826e83eSopenharmony_ci#include "nweb_key_event.h" 430826e83eSopenharmony_ci#include "nweb_largest_contentful_paint_details.h" 440826e83eSopenharmony_ci#include "nweb_load_committed_details.h" 450826e83eSopenharmony_ci#include "nweb_select_popup_menu.h" 460826e83eSopenharmony_ci#include "nweb_touch_handle_state.h" 470826e83eSopenharmony_ci#include "nweb_url_resource_error.h" 480826e83eSopenharmony_ci#include "nweb_url_resource_request.h" 490826e83eSopenharmony_ci#include "nweb_url_resource_response.h" 500826e83eSopenharmony_ci 510826e83eSopenharmony_cinamespace OHOS::NWeb { 520826e83eSopenharmony_ci 530826e83eSopenharmony_cienum class RenderExitReason { 540826e83eSopenharmony_ci // Render process non-zero exit status 550826e83eSopenharmony_ci PROCESS_ABNORMAL_TERMINATION, 560826e83eSopenharmony_ci 570826e83eSopenharmony_ci // SIGKILL or task manager kill 580826e83eSopenharmony_ci PROCESS_WAS_KILLED, 590826e83eSopenharmony_ci 600826e83eSopenharmony_ci // Segmentation fault 610826e83eSopenharmony_ci PROCESS_CRASHED, 620826e83eSopenharmony_ci 630826e83eSopenharmony_ci // Out of memory 640826e83eSopenharmony_ci PROCESS_OOM, 650826e83eSopenharmony_ci 660826e83eSopenharmony_ci // Unknown reason 670826e83eSopenharmony_ci PROCESS_EXIT_UNKNOWN, 680826e83eSopenharmony_ci}; 690826e83eSopenharmony_ci 700826e83eSopenharmony_cienum class RenderProcessNotRespondingReason { 710826e83eSopenharmony_ci // Input ack from Render process timeout 720826e83eSopenharmony_ci INPUT_TIMEOUT, 730826e83eSopenharmony_ci 740826e83eSopenharmony_ci // navigation commit ack from Render process timeout 750826e83eSopenharmony_ci NAVIGATION_COMMIT_TIMEOUT, 760826e83eSopenharmony_ci}; 770826e83eSopenharmony_ci 780826e83eSopenharmony_cienum class ViewportFit { 790826e83eSopenharmony_ci // No effect - the whole web page is viewable(default) 800826e83eSopenharmony_ci AUTO, 810826e83eSopenharmony_ci 820826e83eSopenharmony_ci // The initial layout viewport and the visual viewport are set to the 830826e83eSopenharmony_ci // largest rectangle which is inscribed in the display of the device. 840826e83eSopenharmony_ci CONTAIN, 850826e83eSopenharmony_ci 860826e83eSopenharmony_ci // The initial layout viewport and the visual viewport are set to the 870826e83eSopenharmony_ci // circumscribed rectangle of the physical screen of the device. 880826e83eSopenharmony_ci COVER, 890826e83eSopenharmony_ci}; 900826e83eSopenharmony_ci 910826e83eSopenharmony_ciclass NWebImageOptions { 920826e83eSopenharmony_cipublic: 930826e83eSopenharmony_ci virtual ~NWebImageOptions() = default; 940826e83eSopenharmony_ci 950826e83eSopenharmony_ci virtual ImageColorType GetColorType() = 0; 960826e83eSopenharmony_ci virtual ImageAlphaType GetAlphaType() = 0; 970826e83eSopenharmony_ci virtual size_t GetWidth() = 0; 980826e83eSopenharmony_ci virtual size_t GetHeight() = 0; 990826e83eSopenharmony_ci}; 1000826e83eSopenharmony_ci 1010826e83eSopenharmony_cienum class SslError { 1020826e83eSopenharmony_ci // General error 1030826e83eSopenharmony_ci INVALID, 1040826e83eSopenharmony_ci 1050826e83eSopenharmony_ci // Hostname mismatch 1060826e83eSopenharmony_ci HOSTMISMATCH, 1070826e83eSopenharmony_ci 1080826e83eSopenharmony_ci // The certificate date is invalid 1090826e83eSopenharmony_ci DATEINVALID, 1100826e83eSopenharmony_ci 1110826e83eSopenharmony_ci // The certificate authority is not trusted 1120826e83eSopenharmony_ci UNTRUSTED, 1130826e83eSopenharmony_ci}; 1140826e83eSopenharmony_ci 1150826e83eSopenharmony_ci// Cursor type values. 1160826e83eSopenharmony_cienum class CursorType : int32_t { 1170826e83eSopenharmony_ci CT_POINTER = 0, 1180826e83eSopenharmony_ci CT_CROSS, 1190826e83eSopenharmony_ci CT_HAND, 1200826e83eSopenharmony_ci CT_IBEAM, 1210826e83eSopenharmony_ci CT_WAIT, 1220826e83eSopenharmony_ci CT_HELP, 1230826e83eSopenharmony_ci CT_EASTRESIZE, 1240826e83eSopenharmony_ci CT_NORTHRESIZE, 1250826e83eSopenharmony_ci CT_NORTHEASTRESIZE, 1260826e83eSopenharmony_ci CT_NORTHWESTRESIZE, 1270826e83eSopenharmony_ci CT_SOUTHRESIZE, 1280826e83eSopenharmony_ci CT_SOUTHEASTRESIZE, 1290826e83eSopenharmony_ci CT_SOUTHWESTRESIZE, 1300826e83eSopenharmony_ci CT_WESTRESIZE, 1310826e83eSopenharmony_ci CT_NORTHSOUTHRESIZE, 1320826e83eSopenharmony_ci CT_EASTWESTRESIZE, 1330826e83eSopenharmony_ci CT_NORTHEASTSOUTHWESTRESIZE, 1340826e83eSopenharmony_ci CT_NORTHWESTSOUTHEASTRESIZE, 1350826e83eSopenharmony_ci CT_COLUMNRESIZE, 1360826e83eSopenharmony_ci CT_ROWRESIZE, 1370826e83eSopenharmony_ci CT_MIDDLEPANNING, 1380826e83eSopenharmony_ci CT_EASTPANNING, 1390826e83eSopenharmony_ci CT_NORTHPANNING, 1400826e83eSopenharmony_ci CT_NORTHEASTPANNING, 1410826e83eSopenharmony_ci CT_NORTHWESTPANNING, 1420826e83eSopenharmony_ci CT_SOUTHPANNING, 1430826e83eSopenharmony_ci CT_SOUTHEASTPANNING, 1440826e83eSopenharmony_ci CT_SOUTHWESTPANNING, 1450826e83eSopenharmony_ci CT_WESTPANNING, 1460826e83eSopenharmony_ci CT_MOVE, 1470826e83eSopenharmony_ci CT_VERTICALTEXT, 1480826e83eSopenharmony_ci CT_CELL, 1490826e83eSopenharmony_ci CT_CONTEXTMENU, 1500826e83eSopenharmony_ci CT_ALIAS, 1510826e83eSopenharmony_ci CT_PROGRESS, 1520826e83eSopenharmony_ci CT_NODROP, 1530826e83eSopenharmony_ci CT_COPY, 1540826e83eSopenharmony_ci CT_NONE, 1550826e83eSopenharmony_ci CT_NOTALLOWED, 1560826e83eSopenharmony_ci CT_ZOOMIN, 1570826e83eSopenharmony_ci CT_ZOOMOUT, 1580826e83eSopenharmony_ci CT_GRAB, 1590826e83eSopenharmony_ci CT_GRABBING, 1600826e83eSopenharmony_ci CT_MIDDLE_PANNING_VERTICAL, 1610826e83eSopenharmony_ci CT_MIDDLE_PANNING_HORIZONTAL, 1620826e83eSopenharmony_ci CT_CUSTOM, 1630826e83eSopenharmony_ci CT_DND_NONE, 1640826e83eSopenharmony_ci CT_DND_MOVE, 1650826e83eSopenharmony_ci CT_DND_COPY, 1660826e83eSopenharmony_ci CT_DND_LINK, 1670826e83eSopenharmony_ci CT_MAX_VALUE, 1680826e83eSopenharmony_ci}; 1690826e83eSopenharmony_ci 1700826e83eSopenharmony_ciclass NWebCursorInfo { 1710826e83eSopenharmony_cipublic: 1720826e83eSopenharmony_ci virtual ~NWebCursorInfo() = default; 1730826e83eSopenharmony_ci 1740826e83eSopenharmony_ci virtual int32_t GetX() = 0; 1750826e83eSopenharmony_ci virtual int32_t GetY() = 0; 1760826e83eSopenharmony_ci virtual uint8_t* GetBuff() = 0; 1770826e83eSopenharmony_ci virtual float GetScale() = 0; 1780826e83eSopenharmony_ci virtual int32_t GetWidth() = 0; 1790826e83eSopenharmony_ci virtual int32_t GetHeight() = 0; 1800826e83eSopenharmony_ci}; 1810826e83eSopenharmony_ci 1820826e83eSopenharmony_ciclass NWebTouchHandleHotZone { 1830826e83eSopenharmony_cipublic: 1840826e83eSopenharmony_ci virtual ~NWebTouchHandleHotZone() = default; 1850826e83eSopenharmony_ci 1860826e83eSopenharmony_ci virtual void SetWidth(double width) = 0; 1870826e83eSopenharmony_ci virtual void SetHeight(double height) = 0; 1880826e83eSopenharmony_ci}; 1890826e83eSopenharmony_ci 1900826e83eSopenharmony_cienum class MediaPlayingState { 1910826e83eSopenharmony_ci // Media is playing 1920826e83eSopenharmony_ci PLAYING, 1930826e83eSopenharmony_ci 1940826e83eSopenharmony_ci // Media playing is paused 1950826e83eSopenharmony_ci PAUSED, 1960826e83eSopenharmony_ci 1970826e83eSopenharmony_ci // Media playing is end 1980826e83eSopenharmony_ci END_OF_STREAM, 1990826e83eSopenharmony_ci}; 2000826e83eSopenharmony_ci 2010826e83eSopenharmony_cienum class FormState { 2020826e83eSopenharmony_ci kHadInteraction, 2030826e83eSopenharmony_ci kNoInteraction, 2040826e83eSopenharmony_ci}; 2050826e83eSopenharmony_ci 2060826e83eSopenharmony_cienum class ActivityType { 2070826e83eSopenharmony_ci VIDEO = 0, 2080826e83eSopenharmony_ci AUDIO, 2090826e83eSopenharmony_ci FORM, 2100826e83eSopenharmony_ci}; 2110826e83eSopenharmony_ci 2120826e83eSopenharmony_cienum class NativeEmbedStatus { 2130826e83eSopenharmony_ci CREATE, 2140826e83eSopenharmony_ci UPDATE, 2150826e83eSopenharmony_ci DESTROY, 2160826e83eSopenharmony_ci ENTER_BFCACHE, 2170826e83eSopenharmony_ci LEAVE_BFCACHE, 2180826e83eSopenharmony_ci VISIBLE, 2190826e83eSopenharmony_ci HIDDEN, 2200826e83eSopenharmony_ci}; 2210826e83eSopenharmony_ci 2220826e83eSopenharmony_cienum class NWebFocusSource { 2230826e83eSopenharmony_ci FOCUS_SOURCE_DEFAULT = -1, 2240826e83eSopenharmony_ci FOCUS_SOURCE_NAVIGATION = 0, 2250826e83eSopenharmony_ci FOCUS_SOURCE_SYSTEM, 2260826e83eSopenharmony_ci}; 2270826e83eSopenharmony_ci 2280826e83eSopenharmony_ciclass NWebNativeEmbedInfo { 2290826e83eSopenharmony_cipublic: 2300826e83eSopenharmony_ci virtual ~NWebNativeEmbedInfo() = default; 2310826e83eSopenharmony_ci 2320826e83eSopenharmony_ci virtual int32_t GetWidth() = 0; 2330826e83eSopenharmony_ci 2340826e83eSopenharmony_ci virtual int32_t GetHeight() = 0; 2350826e83eSopenharmony_ci 2360826e83eSopenharmony_ci virtual std::string GetId() = 0; 2370826e83eSopenharmony_ci 2380826e83eSopenharmony_ci virtual std::string GetSrc() = 0; 2390826e83eSopenharmony_ci 2400826e83eSopenharmony_ci virtual std::string GetUrl() = 0; 2410826e83eSopenharmony_ci 2420826e83eSopenharmony_ci virtual std::string GetType() = 0; 2430826e83eSopenharmony_ci 2440826e83eSopenharmony_ci virtual std::string GetTag() = 0; 2450826e83eSopenharmony_ci 2460826e83eSopenharmony_ci virtual std::map<std::string, std::string> GetParams() = 0; 2470826e83eSopenharmony_ci 2480826e83eSopenharmony_ci virtual int32_t GetX() = 0; 2490826e83eSopenharmony_ci 2500826e83eSopenharmony_ci virtual int32_t GetY() = 0; 2510826e83eSopenharmony_ci}; 2520826e83eSopenharmony_ci 2530826e83eSopenharmony_ciclass NWebNativeEmbedDataInfo { 2540826e83eSopenharmony_cipublic: 2550826e83eSopenharmony_ci virtual ~NWebNativeEmbedDataInfo() = default; 2560826e83eSopenharmony_ci 2570826e83eSopenharmony_ci virtual NativeEmbedStatus GetStatus() = 0; 2580826e83eSopenharmony_ci 2590826e83eSopenharmony_ci virtual std::string GetEmbedId() = 0; 2600826e83eSopenharmony_ci 2610826e83eSopenharmony_ci virtual std::string GetSurfaceId() = 0; 2620826e83eSopenharmony_ci 2630826e83eSopenharmony_ci virtual std::shared_ptr<NWebNativeEmbedInfo> GetNativeEmbedInfo() = 0; 2640826e83eSopenharmony_ci}; 2650826e83eSopenharmony_ci 2660826e83eSopenharmony_cienum class TouchType : size_t { 2670826e83eSopenharmony_ci DOWN = 0, 2680826e83eSopenharmony_ci UP, 2690826e83eSopenharmony_ci MOVE, 2700826e83eSopenharmony_ci CANCEL, 2710826e83eSopenharmony_ci}; 2720826e83eSopenharmony_ci 2730826e83eSopenharmony_ciclass NWebNativeEmbedTouchEvent { 2740826e83eSopenharmony_cipublic: 2750826e83eSopenharmony_ci virtual ~NWebNativeEmbedTouchEvent() = default; 2760826e83eSopenharmony_ci 2770826e83eSopenharmony_ci virtual float GetX() = 0; 2780826e83eSopenharmony_ci 2790826e83eSopenharmony_ci virtual float GetY() = 0; 2800826e83eSopenharmony_ci 2810826e83eSopenharmony_ci virtual int32_t GetId() = 0; 2820826e83eSopenharmony_ci 2830826e83eSopenharmony_ci virtual TouchType GetType() = 0; 2840826e83eSopenharmony_ci 2850826e83eSopenharmony_ci virtual float GetOffsetX() = 0; 2860826e83eSopenharmony_ci 2870826e83eSopenharmony_ci virtual float GetOffsetY() = 0; 2880826e83eSopenharmony_ci 2890826e83eSopenharmony_ci virtual float GetScreenX() = 0; 2900826e83eSopenharmony_ci 2910826e83eSopenharmony_ci virtual float GetScreenY() = 0; 2920826e83eSopenharmony_ci 2930826e83eSopenharmony_ci virtual std::string GetEmbedId() = 0; 2940826e83eSopenharmony_ci 2950826e83eSopenharmony_ci virtual std::shared_ptr<NWebGestureEventResult> GetResult() = 0; 2960826e83eSopenharmony_ci}; 2970826e83eSopenharmony_ci 2980826e83eSopenharmony_ciclass OHOS_NWEB_EXPORT NWebHandler { 2990826e83eSopenharmony_cipublic: 3000826e83eSopenharmony_ci NWebHandler() = default; 3010826e83eSopenharmony_ci 3020826e83eSopenharmony_ci virtual ~NWebHandler() = default; 3030826e83eSopenharmony_ci 3040826e83eSopenharmony_ci virtual void SetNWeb(std::shared_ptr<NWeb> nweb) {} 3050826e83eSopenharmony_ci 3060826e83eSopenharmony_ci virtual void OnProxyDied() {} 3070826e83eSopenharmony_ci 3080826e83eSopenharmony_ci virtual void OnRouterPush(const std::string& param) {} 3090826e83eSopenharmony_ci 3100826e83eSopenharmony_ci virtual void OnMessage(const std::string& param) {} 3110826e83eSopenharmony_ci 3120826e83eSopenharmony_ci /** 3130826e83eSopenharmony_ci * @brief Notify the SDK that a web site has finished loading. This method is 3140826e83eSopenharmony_ci * called only for main frame. 3150826e83eSopenharmony_ci * 3160826e83eSopenharmony_ci * @param httpStatusCode The status code for the http request. 3170826e83eSopenharmony_ci * @param url The url of the web site. 3180826e83eSopenharmony_ci */ 3190826e83eSopenharmony_ci virtual void OnPageLoadEnd(int httpStatusCode, const std::string& url) {} 3200826e83eSopenharmony_ci 3210826e83eSopenharmony_ci /** 3220826e83eSopenharmony_ci * @brief Notify the SDK that a web site has started loading. This method is 3230826e83eSopenharmony_ci * called once for each main frame load. 3240826e83eSopenharmony_ci * 3250826e83eSopenharmony_ci * @param url The url to be loaded. 3260826e83eSopenharmony_ci */ 3270826e83eSopenharmony_ci virtual void OnPageLoadBegin(const std::string& url) {} 3280826e83eSopenharmony_ci 3290826e83eSopenharmony_ci /** 3300826e83eSopenharmony_ci * @brief Report a load error to the SDK. 3310826e83eSopenharmony_ci * 3320826e83eSopenharmony_ci * @param errorCode The error code. 3330826e83eSopenharmony_ci * @param description The error description. 3340826e83eSopenharmony_ci * @param failingUrl The failed url. 3350826e83eSopenharmony_ci */ 3360826e83eSopenharmony_ci virtual void OnPageLoadError(int errorCode, const std::string& description, const std::string& failingUrl) {} 3370826e83eSopenharmony_ci 3380826e83eSopenharmony_ci /** 3390826e83eSopenharmony_ci * @brief Give the SDK a chance to decide whether to continue loading the 3400826e83eSopenharmony_ci * url. 3410826e83eSopenharmony_ci * 3420826e83eSopenharmony_ci * @param url The url to be loaded. 3430826e83eSopenharmony_ci * @return true to cancel the loading, false to continue the loading. 3440826e83eSopenharmony_ci */ 3450826e83eSopenharmony_ci virtual bool OnHandleInterceptUrlLoading(std::shared_ptr<OHOS::NWeb::NWebUrlResourceRequest> request) 3460826e83eSopenharmony_ci { 3470826e83eSopenharmony_ci return false; 3480826e83eSopenharmony_ci } 3490826e83eSopenharmony_ci 3500826e83eSopenharmony_ci /** 3510826e83eSopenharmony_ci * @brief Notify the SDK that the nweb will load the resource specified by 3520826e83eSopenharmony_ci * the given url. 3530826e83eSopenharmony_ci * 3540826e83eSopenharmony_ci * @param url The url of the resource. 3550826e83eSopenharmony_ci */ 3560826e83eSopenharmony_ci virtual void OnResource(const std::string& url) {} 3570826e83eSopenharmony_ci 3580826e83eSopenharmony_ci /** 3590826e83eSopenharmony_ci * @brief Notify the SDK of the changed document title. 3600826e83eSopenharmony_ci * 3610826e83eSopenharmony_ci * @param title The document title. 3620826e83eSopenharmony_ci */ 3630826e83eSopenharmony_ci virtual void OnPageTitle(const std::string& title) {} 3640826e83eSopenharmony_ci 3650826e83eSopenharmony_ci /** 3660826e83eSopenharmony_ci * @brief Notify the SDK the current progress of loading a web site. 3670826e83eSopenharmony_ci * 3680826e83eSopenharmony_ci * @param newProgress Loading progress, an integer between 0 and 100. 3690826e83eSopenharmony_ci */ 3700826e83eSopenharmony_ci virtual void OnLoadingProgress(int newProgress) {} 3710826e83eSopenharmony_ci 3720826e83eSopenharmony_ci /** 3730826e83eSopenharmony_ci * @brief Request display and focus for a new nweb. 3740826e83eSopenharmony_ci * 3750826e83eSopenharmony_ci * @return Return true if request focus success, false if request focus fail. 3760826e83eSopenharmony_ci */ 3770826e83eSopenharmony_ci virtual bool OnFocus() 3780826e83eSopenharmony_ci { 3790826e83eSopenharmony_ci return false; 3800826e83eSopenharmony_ci } 3810826e83eSopenharmony_ci 3820826e83eSopenharmony_ci /** 3830826e83eSopenharmony_ci * @brief Obtains a list of all visited history items, used for link coloring 3840826e83eSopenharmony_ci * 3850826e83eSopenharmony_ci * @retval visited history 3860826e83eSopenharmony_ci */ 3870826e83eSopenharmony_ci virtual std::vector<std::string> VisitedUrlHistory() 3880826e83eSopenharmony_ci { 3890826e83eSopenharmony_ci return std::vector<std::string>(); 3900826e83eSopenharmony_ci } 3910826e83eSopenharmony_ci 3920826e83eSopenharmony_ci /** 3930826e83eSopenharmony_ci * @brief Notify the host application of a resource request and allow the 3940826e83eSopenharmony_ci * application to return the data. 3950826e83eSopenharmony_ci * 3960826e83eSopenharmony_ci * @param request request information 3970826e83eSopenharmony_ci * @param response response information 3980826e83eSopenharmony_ci * 3990826e83eSopenharmony_ci * @retval true if handle success, otherwise false. 4000826e83eSopenharmony_ci */ 4010826e83eSopenharmony_ci virtual bool OnHandleInterceptRequest( 4020826e83eSopenharmony_ci std::shared_ptr<NWebUrlResourceRequest> request, std::shared_ptr<NWebUrlResourceResponse> response) 4030826e83eSopenharmony_ci { 4040826e83eSopenharmony_ci return false; 4050826e83eSopenharmony_ci } 4060826e83eSopenharmony_ci 4070826e83eSopenharmony_ci /** 4080826e83eSopenharmony_ci * @brief Report web resource loading error to the SDK. These errors usually 4090826e83eSopenharmony_ci * indicate inability to connect to the server. 4100826e83eSopenharmony_ci * 4110826e83eSopenharmony_ci * @param request The request information. 4120826e83eSopenharmony_ci * @param error The error information. 4130826e83eSopenharmony_ci */ 4140826e83eSopenharmony_ci virtual void OnResourceLoadError( 4150826e83eSopenharmony_ci std::shared_ptr<NWebUrlResourceRequest> request, std::shared_ptr<NWebUrlResourceError> error) 4160826e83eSopenharmony_ci {} 4170826e83eSopenharmony_ci 4180826e83eSopenharmony_ci /** 4190826e83eSopenharmony_ci * @brief Notify the SDK that an HTTP error has been received from the server 4200826e83eSopenharmony_ci * while loading a resource. 4210826e83eSopenharmony_ci * 4220826e83eSopenharmony_ci * @param request The request information. 4230826e83eSopenharmony_ci * @param errorResponse The error occurred. 4240826e83eSopenharmony_ci */ 4250826e83eSopenharmony_ci virtual void OnHttpError( 4260826e83eSopenharmony_ci std::shared_ptr<NWebUrlResourceRequest> request, std::shared_ptr<NWebUrlResourceResponse> errorResponse) 4270826e83eSopenharmony_ci {} 4280826e83eSopenharmony_ci 4290826e83eSopenharmony_ci /** 4300826e83eSopenharmony_ci * @brief Notify the SDK of a new favicon for the current web site. 4310826e83eSopenharmony_ci * 4320826e83eSopenharmony_ci * @param data The raw image data for the icon. 4330826e83eSopenharmony_ci * @param width The width of the icon in pixel. 4340826e83eSopenharmony_ci * @param height The height of the icon in pixel. 4350826e83eSopenharmony_ci * @param color_type The color data encoding type. 4360826e83eSopenharmony_ci * @param alpha_type The alpha value of any pixel. 4370826e83eSopenharmony_ci */ 4380826e83eSopenharmony_ci virtual void OnPageIcon( 4390826e83eSopenharmony_ci const void* data, size_t width, size_t height, ImageColorType color_type, ImageAlphaType alpha_type) 4400826e83eSopenharmony_ci {} 4410826e83eSopenharmony_ci 4420826e83eSopenharmony_ci /** 4430826e83eSopenharmony_ci * @brief Notify the SDK of the url for a touch icon. 4440826e83eSopenharmony_ci * 4450826e83eSopenharmony_ci * @param icon_url The icon url. 4460826e83eSopenharmony_ci * @param precomposed The touch icon type. 4470826e83eSopenharmony_ci */ 4480826e83eSopenharmony_ci virtual void OnDesktopIconUrl(const std::string& icon_url, bool precomposed) {} 4490826e83eSopenharmony_ci 4500826e83eSopenharmony_ci /** 4510826e83eSopenharmony_ci * @brief Report a JavaScript console message to the host application. 4520826e83eSopenharmony_ci * 4530826e83eSopenharmony_ci * @param console_log Details of the console message. 4540826e83eSopenharmony_ci * @return Return true to stop the message from being output to the console. 4550826e83eSopenharmony_ci */ 4560826e83eSopenharmony_ci virtual bool OnConsoleLog(std::shared_ptr<NWebConsoleLog> console_log) 4570826e83eSopenharmony_ci { 4580826e83eSopenharmony_ci return false; 4590826e83eSopenharmony_ci } 4600826e83eSopenharmony_ci 4610826e83eSopenharmony_ci /** 4620826e83eSopenharmony_ci * @brief Show prompt to ask for the geolocation permission. 4630826e83eSopenharmony_ci * 4640826e83eSopenharmony_ci * @param origin String: the origin of the resource to get geolocation 4650826e83eSopenharmony_ci * @param callback GeolocationCallbackInterface: callback to report 4660826e83eSopenharmony_ci * geolocation 4670826e83eSopenharmony_ci */ 4680826e83eSopenharmony_ci virtual void OnGeolocationShow( 4690826e83eSopenharmony_ci const std::string& origin, std::shared_ptr<NWebGeolocationCallbackInterface> callback) 4700826e83eSopenharmony_ci {} 4710826e83eSopenharmony_ci 4720826e83eSopenharmony_ci /** 4730826e83eSopenharmony_ci * @brief Notify the host application that the web page wants to display a 4740826e83eSopenharmony_ci * JavaScript alert() dialog. 4750826e83eSopenharmony_ci * 4760826e83eSopenharmony_ci * @param url String: The url of the page requesting the dialog. 4770826e83eSopenharmony_ci * @param message String: The message of the dialog. 4780826e83eSopenharmony_ci * @param result std::shared_ptr<NWebJSDialogResult>: A NWebJSDialogResult to 4790826e83eSopenharmony_ci * confirm that the user closed the window. 4800826e83eSopenharmony_ci * @return To show a custom dialog, the app should return true. 4810826e83eSopenharmony_ci */ 4820826e83eSopenharmony_ci virtual bool OnAlertDialogByJS( 4830826e83eSopenharmony_ci const std::string& url, const std::string& message, std::shared_ptr<NWebJSDialogResult> result) 4840826e83eSopenharmony_ci { 4850826e83eSopenharmony_ci return false; 4860826e83eSopenharmony_ci } 4870826e83eSopenharmony_ci 4880826e83eSopenharmony_ci /** 4890826e83eSopenharmony_ci * @brief Notify the host application that the web page wants to handle 4900826e83eSopenharmony_ci * JavaScript onbeforeunload. 4910826e83eSopenharmony_ci * 4920826e83eSopenharmony_ci * @param url String: The url of the page requesting. 4930826e83eSopenharmony_ci * @param message String: The message of the dialog. 4940826e83eSopenharmony_ci * @param result std::shared_ptr<NWebJSDialogResult>: A NWebJSDialogResult to 4950826e83eSopenharmony_ci * confirm that the user closed the window. 4960826e83eSopenharmony_ci * @return To show a custom dialog, the app should return true. 4970826e83eSopenharmony_ci */ 4980826e83eSopenharmony_ci virtual bool OnBeforeUnloadByJS( 4990826e83eSopenharmony_ci const std::string& url, const std::string& message, std::shared_ptr<NWebJSDialogResult> result) 5000826e83eSopenharmony_ci { 5010826e83eSopenharmony_ci return false; 5020826e83eSopenharmony_ci } 5030826e83eSopenharmony_ci 5040826e83eSopenharmony_ci /** 5050826e83eSopenharmony_ci * @brief Notify the host application that the web page wants to display a 5060826e83eSopenharmony_ci * JavaScript prompt() dialog. 5070826e83eSopenharmony_ci * 5080826e83eSopenharmony_ci * @param url String: The url of the page requesting the dialog. 5090826e83eSopenharmony_ci * @param message String: The message of the dialog. 5100826e83eSopenharmony_ci * @param defaultValue String: The default value of the input message. 5110826e83eSopenharmony_ci * @param result std::shared_ptr<NWebJSDialogResult>: A NWebJSDialogResult to 5120826e83eSopenharmony_ci * confirm that the user closed the window. 5130826e83eSopenharmony_ci * @return To show a custom dialog, the app should return true. 5140826e83eSopenharmony_ci */ 5150826e83eSopenharmony_ci virtual bool OnPromptDialogByJS(const std::string& url, const std::string& message, const std::string& defaultValue, 5160826e83eSopenharmony_ci std::shared_ptr<NWebJSDialogResult> result) 5170826e83eSopenharmony_ci { 5180826e83eSopenharmony_ci return false; 5190826e83eSopenharmony_ci } 5200826e83eSopenharmony_ci 5210826e83eSopenharmony_ci /** 5220826e83eSopenharmony_ci * @brief Notify the host application that the web page wants to display a 5230826e83eSopenharmony_ci * JavaScript Confirm() dialog. 5240826e83eSopenharmony_ci * 5250826e83eSopenharmony_ci * @param url String: The url of the page requesting the dialog. 5260826e83eSopenharmony_ci * @param message String: The message of the dialog. 5270826e83eSopenharmony_ci * @param result std::shared_ptr<NWebJSDialogResult>: A NWebJSDialogResult to 5280826e83eSopenharmony_ci * confirm that the user closed the window. 5290826e83eSopenharmony_ci * @return To show a custom dialog, the app should return true. 5300826e83eSopenharmony_ci */ 5310826e83eSopenharmony_ci virtual bool OnConfirmDialogByJS( 5320826e83eSopenharmony_ci const std::string& url, const std::string& message, std::shared_ptr<NWebJSDialogResult> result) 5330826e83eSopenharmony_ci { 5340826e83eSopenharmony_ci return false; 5350826e83eSopenharmony_ci } 5360826e83eSopenharmony_ci 5370826e83eSopenharmony_ci /** 5380826e83eSopenharmony_ci * @brief Hide prompt to ask for the geolocation permission. 5390826e83eSopenharmony_ci */ 5400826e83eSopenharmony_ci virtual void OnGeolocationHide() {} 5410826e83eSopenharmony_ci 5420826e83eSopenharmony_ci /** 5430826e83eSopenharmony_ci * @brief Ask for the permission. 5440826e83eSopenharmony_ci * 5450826e83eSopenharmony_ci * @param request std::shared_ptr<NWebAccessRequest>: A request to ask for the 5460826e83eSopenharmony_ci * permission. 5470826e83eSopenharmony_ci */ 5480826e83eSopenharmony_ci virtual void OnPermissionRequest(std::shared_ptr<NWebAccessRequest> request) {} 5490826e83eSopenharmony_ci 5500826e83eSopenharmony_ci /** 5510826e83eSopenharmony_ci * @brief Cancel the request to ask for the permission. 5520826e83eSopenharmony_ci * 5530826e83eSopenharmony_ci * @param request std::shared_ptr<NWebAccessRequest>: A request to ask for the 5540826e83eSopenharmony_ci * permission. 5550826e83eSopenharmony_ci */ 5560826e83eSopenharmony_ci virtual void OnPermissionRequestCanceled(std::shared_ptr<NWebAccessRequest> request) {} 5570826e83eSopenharmony_ci 5580826e83eSopenharmony_ci /** 5590826e83eSopenharmony_ci * @brief called when the render process exit. 5600826e83eSopenharmony_ci * 5610826e83eSopenharmony_ci * @param reason the detail reason why render process exit, the implementation of this callback 5620826e83eSopenharmony_ci * should attempt to clean up the specific nweb that was set by SetNWeb interface. 5630826e83eSopenharmony_ci */ 5640826e83eSopenharmony_ci virtual void OnRenderExited(RenderExitReason reason) {} 5650826e83eSopenharmony_ci 5660826e83eSopenharmony_ci /** 5670826e83eSopenharmony_ci * @brief inform application to update its visited links database. 5680826e83eSopenharmony_ci * 5690826e83eSopenharmony_ci * @param url the url being visited. 5700826e83eSopenharmony_ci * @param isReload true if the url is being reload. 5710826e83eSopenharmony_ci */ 5720826e83eSopenharmony_ci virtual void OnRefreshAccessedHistory(const std::string& url, bool isReload) {} 5730826e83eSopenharmony_ci 5740826e83eSopenharmony_ci /** 5750826e83eSopenharmony_ci * @brief inform application to show a file selector. 5760826e83eSopenharmony_ci * @param callback the file list to select. 5770826e83eSopenharmony_ci * @param params the params of file selector. 5780826e83eSopenharmony_ci */ 5790826e83eSopenharmony_ci virtual bool OnFileSelectorShow( 5800826e83eSopenharmony_ci std::shared_ptr<NWebStringVectorValueCallback> callback, std::shared_ptr<NWebFileSelectorParams> params) 5810826e83eSopenharmony_ci { 5820826e83eSopenharmony_ci return false; 5830826e83eSopenharmony_ci } 5840826e83eSopenharmony_ci 5850826e83eSopenharmony_ci virtual void OnScaleChanged(float oldScaleFactor, float newScaleFactor) {} 5860826e83eSopenharmony_ci 5870826e83eSopenharmony_ci virtual bool RunContextMenu( 5880826e83eSopenharmony_ci std::shared_ptr<NWebContextMenuParams> params, std::shared_ptr<NWebContextMenuCallback> callback) 5890826e83eSopenharmony_ci { 5900826e83eSopenharmony_ci return false; 5910826e83eSopenharmony_ci } 5920826e83eSopenharmony_ci 5930826e83eSopenharmony_ci virtual void OnContextMenuDismissed() {} 5940826e83eSopenharmony_ci 5950826e83eSopenharmony_ci virtual bool RunQuickMenu( 5960826e83eSopenharmony_ci std::shared_ptr<NWebQuickMenuParams> params, std::shared_ptr<NWebQuickMenuCallback> callback) 5970826e83eSopenharmony_ci { 5980826e83eSopenharmony_ci return false; 5990826e83eSopenharmony_ci } 6000826e83eSopenharmony_ci 6010826e83eSopenharmony_ci virtual void OnQuickMenuDismissed() {} 6020826e83eSopenharmony_ci 6030826e83eSopenharmony_ci virtual void OnTouchSelectionChanged(std::shared_ptr<NWebTouchHandleState> insertHandle, 6040826e83eSopenharmony_ci std::shared_ptr<NWebTouchHandleState> startSelectionHandle, 6050826e83eSopenharmony_ci std::shared_ptr<NWebTouchHandleState> endSelectionHandle) 6060826e83eSopenharmony_ci {} 6070826e83eSopenharmony_ci 6080826e83eSopenharmony_ci virtual bool OnHttpAuthRequestByJS( 6090826e83eSopenharmony_ci std::shared_ptr<NWebJSHttpAuthResult> result, const std::string& host, const std::string& realm) 6100826e83eSopenharmony_ci { 6110826e83eSopenharmony_ci return false; 6120826e83eSopenharmony_ci } 6130826e83eSopenharmony_ci 6140826e83eSopenharmony_ci virtual void OnScroll(double xOffset, double yOffset) {} 6150826e83eSopenharmony_ci 6160826e83eSopenharmony_ci virtual bool OnDragAndDropData(const void* data, size_t len, std::shared_ptr<NWebImageOptions> opt) 6170826e83eSopenharmony_ci { 6180826e83eSopenharmony_ci return false; 6190826e83eSopenharmony_ci } 6200826e83eSopenharmony_ci 6210826e83eSopenharmony_ci virtual bool OnSslErrorRequestByJS(std::shared_ptr<NWebJSSslErrorResult> result, SslError error) 6220826e83eSopenharmony_ci { 6230826e83eSopenharmony_ci return false; 6240826e83eSopenharmony_ci } 6250826e83eSopenharmony_ci 6260826e83eSopenharmony_ci virtual bool OnSslSelectCertRequestByJS(std::shared_ptr<NWebJSSslSelectCertResult> result, const std::string& host, 6270826e83eSopenharmony_ci int port, const std::vector<std::string>& keyTypes, const std::vector<std::string>& issuers) 6280826e83eSopenharmony_ci { 6290826e83eSopenharmony_ci return false; 6300826e83eSopenharmony_ci } 6310826e83eSopenharmony_ci 6320826e83eSopenharmony_ci /** 6330826e83eSopenharmony_ci * @brief called when the page enter the full-screen mode. 6340826e83eSopenharmony_ci * @param handler to exit full-screen mode. 6350826e83eSopenharmony_ci */ 6360826e83eSopenharmony_ci virtual void OnFullScreenEnter(std::shared_ptr<NWebFullScreenExitHandler> handler) {} 6370826e83eSopenharmony_ci 6380826e83eSopenharmony_ci /** 6390826e83eSopenharmony_ci * @brief called when the page exit the full-screen mode. 6400826e83eSopenharmony_ci */ 6410826e83eSopenharmony_ci virtual void OnFullScreenExit() {} 6420826e83eSopenharmony_ci 6430826e83eSopenharmony_ci /** 6440826e83eSopenharmony_ci * @brief called when new window required. 6450826e83eSopenharmony_ci * 6460826e83eSopenharmony_ci * @param targetUrl URL to be loaded in the new window. 6470826e83eSopenharmony_ci * @param isAlert dialog window or not. 6480826e83eSopenharmony_ci * @param isUserTrigger triggered by User. 6490826e83eSopenharmony_ci * @param handler set the new web object. 6500826e83eSopenharmony_ci */ 6510826e83eSopenharmony_ci virtual void OnWindowNewByJS( 6520826e83eSopenharmony_ci const std::string& targetUrl, bool isAlert, bool isUserTrigger, std::shared_ptr<NWebControllerHandler> handler) 6530826e83eSopenharmony_ci {} 6540826e83eSopenharmony_ci 6550826e83eSopenharmony_ci /** 6560826e83eSopenharmony_ci * @brief called when window exit. 6570826e83eSopenharmony_ci */ 6580826e83eSopenharmony_ci virtual void OnWindowExitByJS() {} 6590826e83eSopenharmony_ci 6600826e83eSopenharmony_ci /** 6610826e83eSopenharmony_ci * @brief called when the page being loaded is about to be made visible. 6620826e83eSopenharmony_ci */ 6630826e83eSopenharmony_ci virtual void OnPageVisible(const std::string& url) {} 6640826e83eSopenharmony_ci 6650826e83eSopenharmony_ci /** 6660826e83eSopenharmony_ci * @brief shows the repost form confirmation dialog box. 6670826e83eSopenharmony_ci * @param handler sets whether to resend data. 6680826e83eSopenharmony_ci */ 6690826e83eSopenharmony_ci virtual void OnDataResubmission(std::shared_ptr<NWebDataResubmissionCallback> handler) {} 6700826e83eSopenharmony_ci 6710826e83eSopenharmony_ci /** 6720826e83eSopenharmony_ci * @brief Give the host application a chance to handle the key event synchronousl. 6730826e83eSopenharmony_ci * @param event The key event. 6740826e83eSopenharmony_ci * @return True if the host application wants to handle the key event itself, otherwise return false. 6750826e83eSopenharmony_ci */ 6760826e83eSopenharmony_ci virtual bool OnPreKeyEvent(std::shared_ptr<NWebKeyEvent> event) 6770826e83eSopenharmony_ci { 6780826e83eSopenharmony_ci return false; 6790826e83eSopenharmony_ci } 6800826e83eSopenharmony_ci 6810826e83eSopenharmony_ci /** 6820826e83eSopenharmony_ci * @brief Notify the host application that a key was not handled by the WebView. 6830826e83eSopenharmony_ci * @param event The key event. 6840826e83eSopenharmony_ci * @return True if the host application wants to handle the key event itself, otherwise return false. 6850826e83eSopenharmony_ci */ 6860826e83eSopenharmony_ci virtual bool OnUnProcessedKeyEvent(std::shared_ptr<NWebKeyEvent> event) 6870826e83eSopenharmony_ci { 6880826e83eSopenharmony_ci return false; 6890826e83eSopenharmony_ci } 6900826e83eSopenharmony_ci 6910826e83eSopenharmony_ci /** 6920826e83eSopenharmony_ci * @brief Called when the browser's cursor has changed. 6930826e83eSopenharmony_ci * @param type Cursor type. 6940826e83eSopenharmony_ci * @param info If |type| is CT_CUSTOM then |info| will be populated with the custom cursor information. 6950826e83eSopenharmony_ci * @return True if the cursor change was handled or false for default handling. 6960826e83eSopenharmony_ci */ 6970826e83eSopenharmony_ci virtual bool OnCursorChange(const CursorType& type, std::shared_ptr<NWebCursorInfo> info) 6980826e83eSopenharmony_ci { 6990826e83eSopenharmony_ci return false; 7000826e83eSopenharmony_ci } 7010826e83eSopenharmony_ci 7020826e83eSopenharmony_ci virtual void OnSelectPopupMenu( 7030826e83eSopenharmony_ci std::shared_ptr<NWebSelectPopupMenuParam> params, std::shared_ptr<NWebSelectPopupMenuCallback> callback) 7040826e83eSopenharmony_ci {} 7050826e83eSopenharmony_ci 7060826e83eSopenharmony_ci /** 7070826e83eSopenharmony_ci * @brief Called when the audio playing state on web page changed. 7080826e83eSopenharmony_ci * @param playing Whether the audio is playing or not. 7090826e83eSopenharmony_ci */ 7100826e83eSopenharmony_ci virtual void OnAudioStateChanged(bool playing) {} 7110826e83eSopenharmony_ci 7120826e83eSopenharmony_ci /** 7130826e83eSopenharmony_ci * @brief Called when the first content rendering of web page. 7140826e83eSopenharmony_ci * @param navigationStartTick Absolute navigation start time, as TimeTicks. 7150826e83eSopenharmony_ci * @param firstContentfulPaintMs Time to first contentful paint from 7160826e83eSopenharmony_ci * navigation start. 7170826e83eSopenharmony_ci */ 7180826e83eSopenharmony_ci virtual void OnFirstContentfulPaint(int64_t navigationStartTick, int64_t firstContentfulPaintMs) {} 7190826e83eSopenharmony_ci 7200826e83eSopenharmony_ci /** 7210826e83eSopenharmony_ci * @brief Called when the first meaningful paint rendering of web page. 7220826e83eSopenharmony_ci * @param details represents the details of first meaningful paint. 7230826e83eSopenharmony_ci */ 7240826e83eSopenharmony_ci virtual void OnFirstMeaningfulPaint(std::shared_ptr<NWebFirstMeaningfulPaintDetails> details) {} 7250826e83eSopenharmony_ci 7260826e83eSopenharmony_ci /** 7270826e83eSopenharmony_ci * @brief Called when the largest contentful paint rendering of web page. 7280826e83eSopenharmony_ci * @param details represents the details of largest contentful paint. 7290826e83eSopenharmony_ci */ 7300826e83eSopenharmony_ci virtual void OnLargestContentfulPaint(std::shared_ptr<NWebLargestContentfulPaintDetails> details) {} 7310826e83eSopenharmony_ci 7320826e83eSopenharmony_ci /** 7330826e83eSopenharmony_ci * @brief Called when swap buffer completed with new size. 7340826e83eSopenharmony_ci */ 7350826e83eSopenharmony_ci virtual void OnCompleteSwapWithNewSize() {} 7360826e83eSopenharmony_ci 7370826e83eSopenharmony_ci /** 7380826e83eSopenharmony_ci * @brief Called when resize not work. 7390826e83eSopenharmony_ci */ 7400826e83eSopenharmony_ci virtual void OnResizeNotWork() {} 7410826e83eSopenharmony_ci 7420826e83eSopenharmony_ci virtual void OnGetTouchHandleHotZone(std::shared_ptr<NWebTouchHandleHotZone> hotZone) {} 7430826e83eSopenharmony_ci 7440826e83eSopenharmony_ci virtual void OnDateTimeChooserPopup(std::shared_ptr<NWebDateTimeChooser> chooser, 7450826e83eSopenharmony_ci const std::vector<std::shared_ptr<NWebDateTimeSuggestion>>& suggestions, 7460826e83eSopenharmony_ci std::shared_ptr<NWebDateTimeChooserCallback> callback) 7470826e83eSopenharmony_ci {} 7480826e83eSopenharmony_ci 7490826e83eSopenharmony_ci virtual void OnDateTimeChooserClose() {} 7500826e83eSopenharmony_ci 7510826e83eSopenharmony_ci virtual bool OnDragAndDropDataUdmf(std::shared_ptr<NWebDragData> dragData) 7520826e83eSopenharmony_ci { 7530826e83eSopenharmony_ci return false; 7540826e83eSopenharmony_ci } 7550826e83eSopenharmony_ci 7560826e83eSopenharmony_ci virtual void UpdateDragCursor(NWebDragData::DragOperation op) {} 7570826e83eSopenharmony_ci 7580826e83eSopenharmony_ci virtual void OnOverScroll(float xOffset, float yOffset) {} 7590826e83eSopenharmony_ci 7600826e83eSopenharmony_ci /** 7610826e83eSopenharmony_ci * @brief Ask for the screen capture permission. 7620826e83eSopenharmony_ci * 7630826e83eSopenharmony_ci * @param request std::shared_ptr<NWebScreenCaptureAccessRequest>: A request to ask for the 7640826e83eSopenharmony_ci * screen capture permission. 7650826e83eSopenharmony_ci */ 7660826e83eSopenharmony_ci virtual void OnScreenCaptureRequest(std::shared_ptr<NWebScreenCaptureAccessRequest> request) {} 7670826e83eSopenharmony_ci 7680826e83eSopenharmony_ci virtual void OnOverScrollFlingVelocity(float xVelocity, float yVelocity, bool isFling) {} 7690826e83eSopenharmony_ci 7700826e83eSopenharmony_ci virtual void OnOverScrollFlingEnd() {} 7710826e83eSopenharmony_ci 7720826e83eSopenharmony_ci /** 7730826e83eSopenharmony_ci * @brief Called when the media or form state on the web page changed. 7740826e83eSopenharmony_ci * @param state state of the media or form. Refer to the enum class MediaPlayingState and FormState 7750826e83eSopenharmony_ci * @param ActivityType it can be form, media, or audio 7760826e83eSopenharmony_ci */ 7770826e83eSopenharmony_ci virtual void OnActivityStateChanged(int state, ActivityType type) {} 7780826e83eSopenharmony_ci 7790826e83eSopenharmony_ci virtual void OnScrollState(bool scrollState) {} 7800826e83eSopenharmony_ci 7810826e83eSopenharmony_ci virtual void OnRootLayerChanged(int width, int height) {} 7820826e83eSopenharmony_ci 7830826e83eSopenharmony_ci virtual bool FilterScrollEvent(const float x, const float y, const float xVelocity, const float yVelocity) 7840826e83eSopenharmony_ci { 7850826e83eSopenharmony_ci return false; 7860826e83eSopenharmony_ci } 7870826e83eSopenharmony_ci 7880826e83eSopenharmony_ci /** 7890826e83eSopenharmony_ci * @brief called when the navigation entry has been committed. 7900826e83eSopenharmony_ci * @param details represents the details of a committed navigation entry. 7910826e83eSopenharmony_ci */ 7920826e83eSopenharmony_ci virtual void OnNavigationEntryCommitted(std::shared_ptr<NWebLoadCommittedDetails> details) {} 7930826e83eSopenharmony_ci 7940826e83eSopenharmony_ci virtual void OnNativeEmbedLifecycleChange(std::shared_ptr<NWebNativeEmbedDataInfo> dataInfo) {} 7950826e83eSopenharmony_ci 7960826e83eSopenharmony_ci virtual void OnNativeEmbedGestureEvent(std::shared_ptr<NWebNativeEmbedTouchEvent> event) {} 7970826e83eSopenharmony_ci 7980826e83eSopenharmony_ci /** 7990826e83eSopenharmony_ci * @brief Called when received website security risk check result. 8000826e83eSopenharmony_ci * @param threat_type The threat_type of website. 8010826e83eSopenharmony_ci */ 8020826e83eSopenharmony_ci virtual void OnSafeBrowsingCheckResult(int threat_type) {} 8030826e83eSopenharmony_ci 8040826e83eSopenharmony_ci /** 8050826e83eSopenharmony_ci * @brief Called when tracker's cookie is prevented. 8060826e83eSopenharmony_ci * @param website_host The host of website url. 8070826e83eSopenharmony_ci * @param tracker_host The host of tracker url. 8080826e83eSopenharmony_ci */ 8090826e83eSopenharmony_ci virtual void OnIntelligentTrackingPreventionResult(const std::string& website_host, const std::string& tracker_host) 8100826e83eSopenharmony_ci {} 8110826e83eSopenharmony_ci 8120826e83eSopenharmony_ci /** 8130826e83eSopenharmony_ci * @brief called when the page enter the full-screen mode. 8140826e83eSopenharmony_ci * 8150826e83eSopenharmony_ci * @param handler to exit full-screen mode. 8160826e83eSopenharmony_ci * @param video_natural_width indicates the width of the <video> element 8170826e83eSopenharmony_ci * entering full screen. 8180826e83eSopenharmony_ci * @param video_natural_height indicates the height of the <video> element 8190826e83eSopenharmony_ci * entering full screen. 8200826e83eSopenharmony_ci */ 8210826e83eSopenharmony_ci virtual void OnFullScreenEnterWithVideoSize( 8220826e83eSopenharmony_ci std::shared_ptr<NWebFullScreenExitHandler> handler, int video_natural_width, int video_natural_height) 8230826e83eSopenharmony_ci {} 8240826e83eSopenharmony_ci 8250826e83eSopenharmony_ci /** 8260826e83eSopenharmony_ci * @brief Give the application a chance to decide whether to override loading the 8270826e83eSopenharmony_ci * url. 8280826e83eSopenharmony_ci * 8290826e83eSopenharmony_ci * @param request The request information. 8300826e83eSopenharmony_ci * @return true to abort loading the url, false to continue loading the url 8310826e83eSopenharmony_ci * as usual. 8320826e83eSopenharmony_ci */ 8330826e83eSopenharmony_ci virtual bool OnHandleOverrideUrlLoading(std::shared_ptr<OHOS::NWeb::NWebUrlResourceRequest> request) 8340826e83eSopenharmony_ci { 8350826e83eSopenharmony_ci return false; 8360826e83eSopenharmony_ci } 8370826e83eSopenharmony_ci 8380826e83eSopenharmony_ci virtual bool OnAllSslErrorRequestByJS(std::shared_ptr<NWebJSAllSslErrorResult> result, SslError error, 8390826e83eSopenharmony_ci const std::string& url, const std::string& originalUrl, const std::string& referrer, bool isFatalError, 8400826e83eSopenharmony_ci bool isMainFrame) 8410826e83eSopenharmony_ci { 8420826e83eSopenharmony_ci return false; 8430826e83eSopenharmony_ci } 8440826e83eSopenharmony_ci 8450826e83eSopenharmony_ci /** 8460826e83eSopenharmony_ci * @brief Called when a tooltip should be presented for a component. 8470826e83eSopenharmony_ci * 8480826e83eSopenharmony_ci * @param tooltip The content of the tooltip. 8490826e83eSopenharmony_ci */ 8500826e83eSopenharmony_ci virtual void OnTooltip(const std::string& param) {} 8510826e83eSopenharmony_ci 8520826e83eSopenharmony_ci /** 8530826e83eSopenharmony_ci * @brief called when resizehold is released. 8540826e83eSopenharmony_ci */ 8550826e83eSopenharmony_ci virtual void ReleaseResizeHold() {} 8560826e83eSopenharmony_ci 8570826e83eSopenharmony_ci virtual void OnShowAutofillPopup( 8580826e83eSopenharmony_ci const float offsetX, const float offsetY, const std::vector<std::string>& menu_items) 8590826e83eSopenharmony_ci {} 8600826e83eSopenharmony_ci 8610826e83eSopenharmony_ci virtual void OnHideAutofillPopup() {} 8620826e83eSopenharmony_ci 8630826e83eSopenharmony_ci /** 8640826e83eSopenharmony_ci * @brief Called when select a word. 8650826e83eSopenharmony_ci * 8660826e83eSopenharmony_ci * @param text The content of the text. 8670826e83eSopenharmony_ci * @param offset The offset of the point. 8680826e83eSopenharmony_ci */ 8690826e83eSopenharmony_ci virtual std::vector<int8_t> GetWordSelection(const std::string& text, int8_t offset) 8700826e83eSopenharmony_ci { 8710826e83eSopenharmony_ci return { -1, -1 }; 8720826e83eSopenharmony_ci } 8730826e83eSopenharmony_ci 8740826e83eSopenharmony_ci virtual void UpdateClippedSelectionBounds(int x, int y, int w, int h) {} 8750826e83eSopenharmony_ci 8760826e83eSopenharmony_ci virtual bool OnOpenAppLink(const std::string& url, std::shared_ptr<NWebAppLinkCallback> callback) 8770826e83eSopenharmony_ci { 8780826e83eSopenharmony_ci return false; 8790826e83eSopenharmony_ci } 8800826e83eSopenharmony_ci 8810826e83eSopenharmony_ci /** 8820826e83eSopenharmony_ci * @brief Called when the render process not responding. 8830826e83eSopenharmony_ci * 8840826e83eSopenharmony_ci * @param js_stack Javascript stack info of webpage when render process not 8850826e83eSopenharmony_ci * responding. 8860826e83eSopenharmony_ci * @param pid Process id of the render process not responding. 8870826e83eSopenharmony_ci * @param reason Reason of the render process not responding. 8880826e83eSopenharmony_ci */ 8890826e83eSopenharmony_ci 8900826e83eSopenharmony_ci virtual void OnRenderProcessNotResponding( 8910826e83eSopenharmony_ci const std::string& js_stack, int pid, RenderProcessNotRespondingReason reason) 8920826e83eSopenharmony_ci {} 8930826e83eSopenharmony_ci 8940826e83eSopenharmony_ci /** 8950826e83eSopenharmony_ci * @brief Called when the unresponding render process becomes responsive. 8960826e83eSopenharmony_ci * 8970826e83eSopenharmony_ci */ 8980826e83eSopenharmony_ci 8990826e83eSopenharmony_ci virtual void OnRenderProcessResponding() {} 9000826e83eSopenharmony_ci 9010826e83eSopenharmony_ci /** 9020826e83eSopenharmony_ci * @brief Called when the viewport-fit meta is detected for web page. 9030826e83eSopenharmony_ci * 9040826e83eSopenharmony_ci * @param viewportFit The type of the viewport-fit. 9050826e83eSopenharmony_ci */ 9060826e83eSopenharmony_ci virtual void OnViewportFitChange(ViewportFit viewportFit) {} 9070826e83eSopenharmony_ci 9080826e83eSopenharmony_ci /** 9090826e83eSopenharmony_ci * @brief called when creating overlay. 9100826e83eSopenharmony_ci */ 9110826e83eSopenharmony_ci virtual void CreateOverlay(void* data, size_t len, int width, int height, int offsetX, int offsetY, int rectWidth, 9120826e83eSopenharmony_ci int rectHeight, int pointX, int pointY) 9130826e83eSopenharmony_ci {} 9140826e83eSopenharmony_ci 9150826e83eSopenharmony_ci /** 9160826e83eSopenharmony_ci * @brief called when state changed. 9170826e83eSopenharmony_ci */ 9180826e83eSopenharmony_ci virtual void OnOverlayStateChanged(int offsetX, int offsetY, int rectWidth, int rectHeight) {} 9190826e83eSopenharmony_ci 9200826e83eSopenharmony_ci /** 9210826e83eSopenharmony_ci * @brief Request display and focus for a new nweb. 9220826e83eSopenharmony_ci * 9230826e83eSopenharmony_ci * @param source The Focus Source. 9240826e83eSopenharmony_ci * @return Return true if request focus success, false if request focus fail. 9250826e83eSopenharmony_ci */ 9260826e83eSopenharmony_ci virtual bool OnFocus(NWebFocusSource source) 9270826e83eSopenharmony_ci { 9280826e83eSopenharmony_ci return false; 9290826e83eSopenharmony_ci } 9300826e83eSopenharmony_ci 9310826e83eSopenharmony_ci /** 9320826e83eSopenharmony_ci * @brief Called when the page is over scroll. 9330826e83eSopenharmony_ci * 9340826e83eSopenharmony_ci * @param xOffset The offset of x axis. 9350826e83eSopenharmony_ci * @param yOffset The offset of y axis. 9360826e83eSopenharmony_ci * @param xVelocity The velocity of x axis. 9370826e83eSopenharmony_ci * @param yVelocity The velocity of y axis. 9380826e83eSopenharmony_ci * @return Return true if value is consumed, false if value is unconsumed. 9390826e83eSopenharmony_ci */ 9400826e83eSopenharmony_ci virtual bool OnOverScroll(float xOffset, float yOffset, float xVelocity, float yVelocity) 9410826e83eSopenharmony_ci { 9420826e83eSopenharmony_ci return false; 9430826e83eSopenharmony_ci } 9440826e83eSopenharmony_ci 9450826e83eSopenharmony_ci /** 9460826e83eSopenharmony_ci * @brief Called when the key board redispatch. 9470826e83eSopenharmony_ci * 9480826e83eSopenharmony_ci * @param event Key information. 9490826e83eSopenharmony_ci * @param isUsed Whether the key is used by the kernel. 9500826e83eSopenharmony_ci */ 9510826e83eSopenharmony_ci virtual void KeyboardReDispatch(std::shared_ptr<NWebKeyEvent> event, bool isUsed) {} 9520826e83eSopenharmony_ci 9530826e83eSopenharmony_ci virtual void OnInterceptKeyboardAttach( 9540826e83eSopenharmony_ci const std::shared_ptr<NWebCustomKeyboardHandler> keyboardHandler, 9550826e83eSopenharmony_ci const std::map<std::string, std::string> &attributes, bool &useSystemKeyboard, int32_t &enterKeyType) { 9560826e83eSopenharmony_ci useSystemKeyboard = true; 9570826e83eSopenharmony_ci enterKeyType = -1; 9580826e83eSopenharmony_ci } 9590826e83eSopenharmony_ci 9600826e83eSopenharmony_ci virtual void OnCustomKeyboardAttach() {} 9610826e83eSopenharmony_ci 9620826e83eSopenharmony_ci virtual void OnCustomKeyboardClose() {} 9630826e83eSopenharmony_ci /** 9640826e83eSopenharmony_ci * @brief Called when received Ads blocked results. 9650826e83eSopenharmony_ci * 9660826e83eSopenharmony_ci * @param url The url of webpage. 9670826e83eSopenharmony_ci * @param adsBlocked The ads' blocked urls. 9680826e83eSopenharmony_ci * 9690826e83eSopenharmony_ci */ 9700826e83eSopenharmony_ci virtual void OnAdsBlocked(const std::string& url, const std::vector<std::string>& adsBlocked) {} 9710826e83eSopenharmony_ci 9720826e83eSopenharmony_ci /** 9730826e83eSopenharmony_ci * @brief called when the cursor info is updated. 9740826e83eSopenharmony_ci * 9750826e83eSopenharmony_ci * @param x, y relative coordinates within web components of the cursor 9760826e83eSopenharmony_ci * @param width, height width and height of the cursor 9770826e83eSopenharmony_ci */ 9780826e83eSopenharmony_ci virtual void OnCursorUpdate(double x, double y, double width, double height) {} 9790826e83eSopenharmony_ci 9800826e83eSopenharmony_ci /** 9810826e83eSopenharmony_ci * @brief Called when web occurs frame loss event. 9820826e83eSopenharmony_ci * 9830826e83eSopenharmony_ci * @param sceneId The id of event scene. 9840826e83eSopenharmony_ci * @param isStart True if is start. 9850826e83eSopenharmony_ci */ 9860826e83eSopenharmony_ci virtual void ReportDynamicFrameLossEvent(const std::string& sceneId, bool isStart) {} 9870826e83eSopenharmony_ci 9880826e83eSopenharmony_ci /** 9890826e83eSopenharmony_ci * @brief Called when you need to temporarily hide/restore the handle menu. 9900826e83eSopenharmony_ci * 9910826e83eSopenharmony_ci * @param hide hide. 9920826e83eSopenharmony_ci */ 9930826e83eSopenharmony_ci virtual void HideHandleAndQuickMenuIfNecessary(bool hide) {} 9940826e83eSopenharmony_ci 9950826e83eSopenharmony_ci /** 9960826e83eSopenharmony_ci * @brief Called When you click on the selected area. 9970826e83eSopenharmony_ci * 9980826e83eSopenharmony_ci */ 9990826e83eSopenharmony_ci virtual void ChangeVisibilityOfQuickMenu() {} 10000826e83eSopenharmony_ci 10010826e83eSopenharmony_ci /** 10020826e83eSopenharmony_ci * @brief Called when you need to start vibrator. 10030826e83eSopenharmony_ci */ 10040826e83eSopenharmony_ci virtual void StartVibraFeedback(const std::string& vibratorType) {} 10050826e83eSopenharmony_ci 10060826e83eSopenharmony_ci /** 10070826e83eSopenharmony_ci * @brief Called when a popup is shown with the given size. 10080826e83eSopenharmony_ci * 10090826e83eSopenharmony_ci * @param x The offset of the popup on the x coordinate axis. 10100826e83eSopenharmony_ci * @param y The offset of the popup on the y coordinate axis. 10110826e83eSopenharmony_ci * @param width The width of the popup. 10120826e83eSopenharmony_ci * @param height The height of the popup. 10130826e83eSopenharmony_ci * 10140826e83eSopenharmony_ci */ 10150826e83eSopenharmony_ci virtual void OnPopupSize(int x, int y, int width, int height) {} 10160826e83eSopenharmony_ci 10170826e83eSopenharmony_ci /** 10180826e83eSopenharmony_ci * @brief Called when the popup is shown or hidden. 10190826e83eSopenharmony_ci * 10200826e83eSopenharmony_ci * @param show Whether the popup is shown or hidden. 10210826e83eSopenharmony_ci * 10220826e83eSopenharmony_ci */ 10230826e83eSopenharmony_ci virtual void OnPopupShow(bool show) {} 10240826e83eSopenharmony_ci 10250826e83eSopenharmony_ci virtual void OnNativeEmbedVisibilityChange(const std::string& embed_id, bool visibility) {} 10260826e83eSopenharmony_ci 10270826e83eSopenharmony_ci virtual bool CloseImageOverlaySelection() { return false; } 10280826e83eSopenharmony_ci 10290826e83eSopenharmony_ci virtual bool OnSslErrorRequestByJSV2(std::shared_ptr<NWebJSSslErrorResult> result, SslError error, 10300826e83eSopenharmony_ci const std::vector<std::string>& certChainData) 10310826e83eSopenharmony_ci { 10320826e83eSopenharmony_ci return false; 10330826e83eSopenharmony_ci } 10340826e83eSopenharmony_ci}; 10350826e83eSopenharmony_ci 10360826e83eSopenharmony_ci} // namespace OHOS::NWeb 10370826e83eSopenharmony_ci 10380826e83eSopenharmony_ci#endif // NWEB_HANDLER_H 1039