#pragma once #include "cef-headers.hpp" #include "browser-panel-internal.hpp" #include class QCefBrowserClient : public CefClient, public CefDisplayHandler, #if CHROME_VERSION_BUILD >= 6533 public CefCommandHandler, #endif public CefRequestHandler, public CefLifeSpanHandler, public CefContextMenuHandler, public CefLoadHandler, public CefKeyboardHandler, public CefFocusHandler, public CefJSDialogHandler { public: inline QCefBrowserClient(QCefWidgetInternal *widget_, const std::string &script_, bool allowAllPopups_) : widget(widget_), script(script_), allowAllPopups(allowAllPopups_) { } /* CefClient */ virtual CefRefPtr GetLoadHandler() override; virtual CefRefPtr GetDisplayHandler() override; #if CHROME_VERSION_BUILD >= 6533 virtual CefRefPtr GetCommandHandler() override; #endif virtual CefRefPtr GetRequestHandler() override; virtual CefRefPtr GetLifeSpanHandler() override; virtual CefRefPtr GetKeyboardHandler() override; virtual CefRefPtr GetFocusHandler() override; virtual CefRefPtr GetContextMenuHandler() override; virtual CefRefPtr GetJSDialogHandler() override; /* CefCommandHandler */ #if CHROME_VERSION_BUILD >= 6533 virtual bool OnChromeCommand(CefRefPtr browser, int command_id, cef_window_open_disposition_t disposition) override; #endif /* CefDisplayHandler */ virtual void OnTitleChange(CefRefPtr browser, const CefString &title) override; /* CefRequestHandler */ virtual bool OnBeforeBrowse(CefRefPtr browser, CefRefPtr frame, CefRefPtr request, bool user_gesture, bool is_redirect) override; virtual void OnLoadError(CefRefPtr browser, CefRefPtr frame, CefLoadHandler::ErrorCode errorCode, const CefString &errorText, const CefString &failedUrl) override; virtual bool OnOpenURLFromTab(CefRefPtr browser, CefRefPtr frame, const CefString &target_url, CefRequestHandler::WindowOpenDisposition target_disposition, bool user_gesture) override; /* CefLifeSpanHandler */ virtual bool OnBeforePopup(CefRefPtr browser, CefRefPtr frame, #if CHROME_VERSION_BUILD >= 6834 int popup_id, #endif const CefString &target_url, const CefString &target_frame_name, CefLifeSpanHandler::WindowOpenDisposition target_disposition, bool user_gesture, const CefPopupFeatures &popupFeatures, CefWindowInfo &windowInfo, CefRefPtr &client, CefBrowserSettings &settings, CefRefPtr &extra_info, bool *no_javascript_access) override; virtual void OnBeforeClose(CefRefPtr browser) override; /* CefFocusHandler */ virtual bool OnSetFocus(CefRefPtr browser, CefFocusHandler::FocusSource source) override; /* CefContextMenuHandler */ virtual void OnBeforeContextMenu(CefRefPtr browser, CefRefPtr frame, CefRefPtr params, CefRefPtr model) override; #if defined(_WIN32) virtual bool RunContextMenu(CefRefPtr browser, CefRefPtr frame, CefRefPtr params, CefRefPtr model, CefRefPtr callback) override; #endif virtual bool OnContextMenuCommand(CefRefPtr browser, CefRefPtr frame, CefRefPtr params, int command_id, CefContextMenuHandler::EventFlags event_flags) override; /* CefLoadHandler */ virtual void OnLoadStart(CefRefPtr browser, CefRefPtr frame, TransitionType transition_type) override; virtual void OnLoadEnd(CefRefPtr browser, CefRefPtr frame, int httpStatusCode) override; /* CefKeyboardHandler */ virtual bool OnPreKeyEvent(CefRefPtr browser, const CefKeyEvent &event, CefEventHandle os_event, bool *is_keyboard_shortcut) override; /* CefJSDialogHandler */ 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) override; QCefWidgetInternal *widget = nullptr; std::string script; bool allowAllPopups; IMPLEMENT_REFCOUNTING(QCefBrowserClient); };