mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-16 22:02:58 -06:00
1. File open/save dialog blocked 2. Page loading error ignores aborts 3. Interface translation git-svn-id: svn://ultimatepp.org/upp/trunk@10356 f0d560ea-af0d-0410-9eb7-867de7ffcac7
145 lines
5.5 KiB
C++
145 lines
5.5 KiB
C++
#ifndef _ClinetHandler_h
|
|
#define _ClinetHandler_h
|
|
|
|
#include <CtrlLib/CtrlLib.h>
|
|
#undef LOG
|
|
#undef DLOG
|
|
#undef CHECK
|
|
#undef LOG_INFO
|
|
#undef LOG_WARNING
|
|
#undef ITEM
|
|
|
|
#include "include/cef_client.h"
|
|
#include "include/cef_version.h"
|
|
|
|
#ifndef CHROME_VERSION_BUILD
|
|
#error "Unknown CEF version"
|
|
#endif
|
|
|
|
class ClientHandler : public CefClient, public CefLifeSpanHandler, public CefDisplayHandler,
|
|
public CefLoadHandler, public CefFocusHandler, public CefContextMenuHandler,
|
|
public CefJSDialogHandler, public CefRequestHandler, public CefDialogHandler
|
|
{
|
|
|
|
public:
|
|
typedef ClientHandler CLASSNAME;
|
|
|
|
ClientHandler( Upp::Callback1<Upp::String> & wuc,
|
|
Upp::Callback3<bool, bool, bool> & wsc,
|
|
Upp::Callback2<Upp::String, const Upp::Vector<Upp::Value>&> & wm,
|
|
Upp::Callback & tf,
|
|
Upp::Callback & gf,
|
|
Upp::Callback1<bool> & wk,
|
|
Upp::Callback3<Upp::String, int, Upp::String> & wcm,
|
|
Upp::Gate1<Upp::String> & wce):
|
|
browser(nullptr), WhenUrlChange(wuc), WhenStateChange(wsc), WhenMessage(wm),
|
|
WhenTakeFocus(tf), WhenGotFocus(gf), WhenKeyboard(wk), WhenConsoleMessage(wcm),
|
|
WhenCertificateError(wce) { }
|
|
|
|
~ClientHandler() { }
|
|
|
|
const Upp::Callback1<Upp::String> & WhenUrlChange;
|
|
const Upp::Callback3<bool, bool, bool> & WhenStateChange;
|
|
const Upp::Callback2<Upp::String, const Upp::Vector<Upp::Value>&> & WhenMessage;
|
|
const Upp::Callback & WhenTakeFocus;
|
|
const Upp::Callback & WhenGotFocus;
|
|
const Upp::Callback1<bool> & WhenKeyboard;
|
|
const Upp::Callback3<Upp::String, int, Upp::String> & WhenConsoleMessage;
|
|
const Upp::Gate1<Upp::String> & WhenCertificateError;
|
|
|
|
void WhenMessageWrapper(Upp::String name, Upp::Vector<Upp::Value> * par);
|
|
|
|
virtual CefRefPtr<CefLifeSpanHandler> GetLifeSpanHandler() OVERRIDE { return this; }
|
|
virtual CefRefPtr<CefDisplayHandler> GetDisplayHandler() OVERRIDE { return this; }
|
|
virtual CefRefPtr<CefFocusHandler> GetFocusHandler() OVERRIDE { return this; }
|
|
virtual CefRefPtr<CefLoadHandler> GetLoadHandler() OVERRIDE { return this; }
|
|
virtual CefRefPtr<CefContextMenuHandler> GetContextMenuHandler() OVERRIDE { return this; }
|
|
virtual CefRefPtr<CefJSDialogHandler> GetJSDialogHandler() OVERRIDE { return this; }
|
|
virtual CefRefPtr<CefRequestHandler> GetRequestHandler() OVERRIDE { return this; }
|
|
virtual CefRefPtr<CefDialogHandler> GetDialogHandler() OVERRIDE { return this; }
|
|
|
|
virtual bool OnBeforePopup(CefRefPtr<CefBrowser> browser,
|
|
CefRefPtr<CefFrame> frame,
|
|
const CefString& target_url,
|
|
const CefString& target_frame_name,
|
|
CefLifeSpanHandler::WindowOpenDisposition target_disposition,
|
|
bool user_gesture,
|
|
const CefPopupFeatures& popupFeatures,
|
|
CefWindowInfo& windowInfo,
|
|
CefRefPtr<CefClient>& client,
|
|
CefBrowserSettings& settings,
|
|
bool* no_javascript_access) OVERRIDE;
|
|
|
|
virtual void OnLoadError(CefRefPtr<CefBrowser> browser,
|
|
CefRefPtr<CefFrame> frame,
|
|
ErrorCode errorCode,
|
|
const CefString& errorText,
|
|
const CefString& failedUrl) OVERRIDE;
|
|
|
|
virtual void OnAfterCreated(CefRefPtr<CefBrowser> browser) OVERRIDE;
|
|
|
|
virtual void OnAddressChange(CefRefPtr<CefBrowser> browser,
|
|
CefRefPtr<CefFrame> frame,
|
|
const CefString& url) OVERRIDE;
|
|
|
|
virtual void OnLoadingStateChange(CefRefPtr<CefBrowser> browser,
|
|
bool isLoading,
|
|
bool canGoBack,
|
|
bool canGoForward) OVERRIDE;
|
|
|
|
virtual bool OnConsoleMessage(CefRefPtr<CefBrowser> browser,
|
|
const CefString& message,
|
|
const CefString& source,
|
|
int line) OVERRIDE;
|
|
|
|
virtual bool OnProcessMessageReceived(CefRefPtr<CefBrowser> browser,
|
|
CefProcessId source_process,
|
|
CefRefPtr<CefProcessMessage> message) OVERRIDE;
|
|
|
|
virtual void OnTakeFocus( CefRefPtr<CefBrowser> browser, bool next ) OVERRIDE;
|
|
virtual void OnGotFocus(CefRefPtr<CefBrowser> browser) OVERRIDE;
|
|
|
|
virtual void OnBeforeContextMenu(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame,
|
|
CefRefPtr<CefContextMenuParams> params, CefRefPtr<CefMenuModel> model) OVERRIDE;
|
|
|
|
virtual bool OnJSDialog(CefRefPtr<CefBrowser> browser,
|
|
const CefString& origin_url,
|
|
JSDialogType dialog_type,
|
|
const CefString& message_text,
|
|
const CefString& default_prompt_text,
|
|
CefRefPtr<CefJSDialogCallback> callback,
|
|
bool& suppress_message) OVERRIDE;
|
|
|
|
virtual bool OnCertificateError(CefRefPtr<CefBrowser> browser,
|
|
ErrorCode cert_error,
|
|
const CefString& request_url,
|
|
CefRefPtr<CefSSLInfo> ssl_info,
|
|
CefRefPtr<CefRequestCallback> callback) OVERRIDE;
|
|
|
|
virtual bool OnFileDialog(CefRefPtr<CefBrowser> browser,
|
|
FileDialogMode mode,
|
|
const CefString& title,
|
|
const CefString& default_file_path,
|
|
const std::vector<CefString>& accept_filters,
|
|
int selected_accept_filter,
|
|
CefRefPtr<CefFileDialogCallback> callback) OVERRIDE;
|
|
|
|
|
|
CefRefPtr<CefBrowser> GetBrowser() { return browser; }
|
|
|
|
protected:
|
|
// The child browser window
|
|
CefRefPtr<CefBrowser> browser;
|
|
|
|
// Note that any of the IMPLEMENT_WHATEVER
|
|
// macros that come with CEF can (and do) set
|
|
// access modifiers, so you'll want them after
|
|
// everything else in your class or you may be
|
|
// in for a surprise when the access of a member
|
|
// isn't what you expect it to be!
|
|
IMPLEMENT_REFCOUNTING(ClientHandler);
|
|
};
|
|
|
|
|
|
|
|
#endif
|