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