// // CefViewBrowserHandlerDelegate.h // CefViewCore // // Created by Sheen Tian on 2020/6/11. // #ifndef CefViewBrowserHandlerDelegate_h #define CefViewBrowserHandlerDelegate_h #pragma once #pragma region stl_headers #include #pragma endregion #include /// /// /// class CefViewBrowserClientDelegateInterface { public: /// /// /// typedef std::shared_ptr RefPtr; /// /// /// typedef std::weak_ptr WeakPtr; /// /// /// virtual ~CefViewBrowserClientDelegateInterface() {} /// /// /// /// /// /// virtual void processUrlRequest(CefRefPtr& browser, CefRefPtr& frame, const CefString& url) = 0; /// /// /// /// /// /// /// virtual void processQueryRequest(CefRefPtr& browser, CefRefPtr& frame, const CefString& query, const int64_t query_id) = 0; /// /// /// /// /// /// virtual void focusedEditableNodeChanged(CefRefPtr& browser, CefRefPtr& frame, bool focusOnEditableNode) = 0; /// /// /// /// /// /// /// virtual void invokeMethodNotify(CefRefPtr& browser, CefRefPtr& frame, const CefString& method, const CefRefPtr& arguments) = 0; /// /// /// /// /// /// /// virtual void reportJSResult(CefRefPtr& browser, CefRefPtr& frame, const CefString& context, const CefRefPtr& result) = 0; // context menu handler #pragma region ContextMenuHandler virtual void onBeforeContextMenu(CefRefPtr& browser, CefRefPtr& frame, CefRefPtr& params, CefRefPtr& model) = 0; virtual bool onRunContextMenu(CefRefPtr& browser, CefRefPtr& frame, CefRefPtr& params, CefRefPtr& model, CefRefPtr& callback) = 0; virtual bool onContextMenuCommand(CefRefPtr& browser, CefRefPtr& frame, CefRefPtr& params, int command_id, CefContextMenuHandler::EventFlags event_flags) = 0; virtual void onContextMenuDismissed(CefRefPtr& browser, CefRefPtr& frame) = 0; #pragma endregion // dialog handler #pragma region DialogHandler virtual bool onFileDialog(CefRefPtr& browser, CefBrowserHost::FileDialogMode mode, const CefString& title, const CefString& default_file_path, const std::vector& accept_filters, #if CEF_VERSION_MAJOR < 102 int selected_accept_filter, #endif CefRefPtr& callback) { return false; }; #pragma endregion // display handler #pragma region DisplayHandler virtual void addressChanged(CefRefPtr& browser, CefRefPtr& frame, const CefString& url) = 0; virtual void titleChanged(CefRefPtr& browser, const CefString& title) = 0; virtual void faviconURLChanged(CefRefPtr& browser, const std::vector& icon_urls) = 0; virtual bool tooltipMessage(CefRefPtr& browser, const CefString& text) = 0; virtual void fullscreenModeChanged(CefRefPtr& browser, bool fullscreen) = 0; virtual void statusMessage(CefRefPtr& browser, const CefString& value) = 0; virtual void loadingProgressChanged(CefRefPtr& browser, double progress) = 0; virtual void consoleMessage(CefRefPtr& browser, const CefString& message, int level) = 0; virtual bool cursorChanged(CefRefPtr& browser, CefCursorHandle cursor, cef_cursor_type_t type, const CefCursorInfo& custom_cursor_info) = 0; #pragma endregion // download hander #pragma region DownloadHandler virtual void onBeforeDownload(CefRefPtr& browser, CefRefPtr& download_item, const CefString& suggested_name, CefRefPtr& callback) = 0; virtual void onDownloadUpdated(CefRefPtr& browser, CefRefPtr& download_item, CefRefPtr& callback) = 0; #pragma endregion // drag hander #pragma region DragHandler virtual bool onDragEnter(CefRefPtr& browser, CefRefPtr& dragData, CefDragHandler::DragOperationsMask mask) { return true; } virtual void draggableRegionChanged(CefRefPtr& browser, CefRefPtr& frame, const std::vector& regions) = 0; #pragma endregion // focus handler #pragma region FocusHandler virtual void takeFocus(CefRefPtr& browser, bool next) = 0; virtual bool setFocus(CefRefPtr& browser) = 0; virtual void gotFocus(CefRefPtr& browser) = 0; #pragma endregion // JS dialog handler #pragma region JSDialogHandler virtual bool onJSDialog(CefRefPtr& browser, const CefString& origin_url, CefJSDialogHandler::JSDialogType dialog_type, const CefString& message_text, const CefString& default_prompt_text, CefRefPtr& callback, bool& suppress_message) = 0; virtual bool onBeforeUnloadDialog(CefRefPtr& browser, const CefString& message_text, bool is_reload, CefRefPtr& callback) = 0; virtual void onResetDialogState(CefRefPtr& browser) = 0; virtual void onDialogClosed(CefRefPtr& browser) = 0; #pragma endregion // keyboard handler #pragma region KeyboardHandler virtual bool onPreKeyEvent(CefRefPtr& browser, const CefKeyEvent& event, CefEventHandle os_event, bool* is_keyboard_shortcut) = 0; virtual bool onKeyEvent(CefRefPtr& browser, const CefKeyEvent& event, CefEventHandle os_event) = 0; #pragma endregion // life span handler #pragma region LifeSpanHandler virtual bool onBeforePopup(CefRefPtr& browser, CefRefPtr& frame, const CefString& targetUrl, const CefString& targetFrameName, CefLifeSpanHandler::WindowOpenDisposition targetDisposition, CefWindowInfo& windowInfo, CefBrowserSettings& settings, bool& DisableJavascriptAccess) = 0; virtual void onAfterCreate(CefRefPtr& browser) = 0; virtual bool doClose(CefRefPtr& browser) = 0; virtual bool requestClose(CefRefPtr& browser) = 0; virtual void onBeforeClose(CefRefPtr& browser) = 0; #pragma endregion // load handler #pragma region LoadHandler virtual void loadingStateChanged(CefRefPtr& browser, bool isLoading, bool canGoBack, bool canGoForward) = 0; virtual void loadStart(CefRefPtr& browser, CefRefPtr& frame, int transition_type) = 0; virtual void loadEnd(CefRefPtr& browser, CefRefPtr& frame, int httpStatusCode) = 0; virtual void loadError(CefRefPtr& browser, CefRefPtr& frame, int errorCode, const CefString& errorMsg, const CefString& failedUrl, bool& handled) = 0; #pragma endregion // Off screen rendering #pragma region RenderHandler virtual bool getRootScreenRect(CefRefPtr& browser, CefRect& rect) { return false; } virtual void getViewRect(CefRefPtr& browser, CefRect& rect) {} virtual bool getScreenPoint(CefRefPtr& browser, int viewX, int viewY, int& screenX, int& screenY) { return false; } virtual bool getScreenInfo(CefRefPtr& browser, CefScreenInfo& screen_info) { return false; } virtual void onPopupShow(CefRefPtr& browser, bool show) {} virtual void onPopupSize(CefRefPtr& browser, const CefRect& rect) {} virtual void onPaint(CefRefPtr& browser, CefRenderHandler::PaintElementType type, const CefRenderHandler::RectList& dirtyRects, const void* buffer, int width, int height) { } #if CEF_VERSION_MAJOR < 124 virtual void onAcceleratedPaint(CefRefPtr& browser, CefRenderHandler::PaintElementType type, const CefRenderHandler::RectList& dirtyRects, void* shared_handle) { } #else virtual void onAcceleratedPaint(CefRefPtr& browser, CefRenderHandler::PaintElementType type, const CefRenderHandler::RectList& dirtyRects, const CefAcceleratedPaintInfo& info) { } #endif virtual bool startDragging(CefRefPtr& browser, CefRefPtr& drag_data, CefRenderHandler::DragOperationsMask allowed_ops, int x, int y) { return false; } virtual void updateDragCursor(CefRefPtr& browser, CefRenderHandler::DragOperation operation) {} virtual void onScrollOffsetChanged(CefRefPtr& browser, double x, double y) {} virtual void onImeCompositionRangeChanged(CefRefPtr& browser, const CefRange& selected_range, const CefRenderHandler::RectList& character_bounds) { } virtual void onTextSelectionChanged(CefRefPtr& browser, const CefString& selected_text, const CefRange& selected_range) { } virtual void onVirtualKeyboardRequested(CefRefPtr& browser, CefRenderHandler::TextInputMode input_mode) {} #pragma endregion }; #endif