2019-04-19 17:19:57 +08:00
|
|
|
|
/** @file browser_handler.h
|
|
|
|
|
* @brief ʵ<EFBFBD><EFBFBD>CefClient<EFBFBD>ӿڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Cef<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD>ؼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @copyright (c) 2016, NetEase Inc. All rights reserved
|
|
|
|
|
* @author Redrain
|
|
|
|
|
* @date 2016/7/19
|
|
|
|
|
*/
|
|
|
|
|
#pragma once
|
|
|
|
|
#include "include/cef_client.h"
|
|
|
|
|
#include "include/cef_browser.h"
|
2019-09-20 16:27:58 +08:00
|
|
|
|
#include "cef_control/util/auto_unregister.h"
|
2019-04-19 17:19:57 +08:00
|
|
|
|
#include "cef_control/app/cef_js_bridge.h"
|
|
|
|
|
|
|
|
|
|
namespace nim_cef
|
|
|
|
|
{
|
|
|
|
|
// BrowserHandler implements CefClient and a number of other interfaces.
|
|
|
|
|
class BrowserHandler :
|
|
|
|
|
public nbase::SupportWeakCallback,
|
|
|
|
|
public CefClient,
|
|
|
|
|
public CefLifeSpanHandler,
|
|
|
|
|
public CefRenderHandler,
|
|
|
|
|
public CefContextMenuHandler,
|
|
|
|
|
public CefDisplayHandler,
|
|
|
|
|
public CefDragHandler,
|
|
|
|
|
public CefGeolocationHandler,
|
|
|
|
|
public CefJSDialogHandler,
|
|
|
|
|
public CefKeyboardHandler,
|
|
|
|
|
public CefLoadHandler,
|
|
|
|
|
public CefRequestHandler,
|
|
|
|
|
public CefDownloadHandler,
|
|
|
|
|
public CefDialogHandler
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
BrowserHandler();
|
|
|
|
|
|
|
|
|
|
/** @class HandlerDelegate
|
|
|
|
|
* @brief BrowserHandler<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣί<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڣ<EFBFBD>BrowserHandler<EFBFBD><EFBFBD><EFBFBD>ᴦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Cef<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ϲ㽻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD>ӿڷ<EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>BrowserHandler<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ί<EFBFBD>нӿ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD>˽ӿ<EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
class HandlerDelegate : public virtual nbase::SupportWeakCallback
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
// <20>ڷ<EFBFBD>UI<55>߳<EFBFBD><DFB3>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
virtual void OnPaint(CefRefPtr<CefBrowser> browser,
|
|
|
|
|
CefRenderHandler::PaintElementType type,
|
|
|
|
|
const CefRenderHandler::RectList& dirtyRects,
|
|
|
|
|
const std::string* buffer,
|
|
|
|
|
int width,
|
|
|
|
|
int height) = 0;
|
|
|
|
|
|
|
|
|
|
virtual void OnPopupShow(CefRefPtr<CefBrowser> browser, bool show) = 0;
|
|
|
|
|
|
|
|
|
|
virtual void OnPopupSize(CefRefPtr<CefBrowser> browser, const CefRect& rect) = 0;
|
|
|
|
|
|
|
|
|
|
virtual void UpdateWindowPos() = 0;
|
|
|
|
|
|
|
|
|
|
// <20>ڷ<EFBFBD>UI<55>߳<EFBFBD><DFB3>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
virtual void OnBeforeContextMenu(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, CefRefPtr<CefContextMenuParams> params, CefRefPtr<CefMenuModel> model) = 0;
|
|
|
|
|
|
|
|
|
|
// <20>ڷ<EFBFBD>UI<55>߳<EFBFBD><DFB3>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
virtual bool OnContextMenuCommand(CefRefPtr<CefBrowser> browser,
|
|
|
|
|
CefRefPtr<CefFrame> frame,
|
|
|
|
|
CefRefPtr<CefContextMenuParams> params,
|
|
|
|
|
int command_id,
|
|
|
|
|
EventFlags event_flags) = 0;
|
|
|
|
|
|
|
|
|
|
virtual void OnAddressChange(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, const CefString& url) = 0;
|
|
|
|
|
|
|
|
|
|
virtual void OnTitleChange(CefRefPtr<CefBrowser> browser, const CefString& title) = 0;
|
|
|
|
|
|
|
|
|
|
virtual void OnLoadingStateChange(CefRefPtr<CefBrowser> browser, bool isLoading, bool canGoBack, bool canGoForward) = 0;
|
|
|
|
|
|
|
|
|
|
virtual void OnLoadStart(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame) = 0;
|
|
|
|
|
|
|
|
|
|
virtual void OnLoadEnd(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, int httpStatusCode) = 0;
|
|
|
|
|
|
|
|
|
|
virtual void OnLoadError(CefRefPtr<CefBrowser> browser,
|
|
|
|
|
CefRefPtr<CefFrame> frame,
|
|
|
|
|
ErrorCode errorCode,
|
|
|
|
|
const CefString& errorText,
|
|
|
|
|
const CefString& failedUrl) = 0;
|
|
|
|
|
|
|
|
|
|
// <20>ڷ<EFBFBD>UI<55>߳<EFBFBD><DFB3>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
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) = 0;
|
|
|
|
|
|
|
|
|
|
virtual bool OnAfterCreated(CefRefPtr<CefBrowser> browser) = 0;
|
|
|
|
|
|
|
|
|
|
virtual void OnBeforeClose(CefRefPtr<CefBrowser> browser) = 0;
|
|
|
|
|
|
|
|
|
|
// <20>ڷ<EFBFBD>UI<55>߳<EFBFBD><DFB3>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
virtual bool OnBeforeBrowse(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, CefRefPtr<CefRequest> request, bool is_redirect) = 0;
|
|
|
|
|
virtual void OnProtocolExecution(CefRefPtr<CefBrowser> browser, const CefString& url, bool& allow_os_execution) = 0;
|
|
|
|
|
|
|
|
|
|
// <20>ڷ<EFBFBD>UI<55>߳<EFBFBD><DFB3>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
virtual ReturnValue OnBeforeResourceLoad(
|
|
|
|
|
CefRefPtr<CefBrowser> browser,
|
|
|
|
|
CefRefPtr<CefFrame> frame,
|
|
|
|
|
CefRefPtr<CefRequest> request,
|
|
|
|
|
CefRefPtr<CefRequestCallback> callback) = 0;
|
|
|
|
|
|
|
|
|
|
virtual void OnRenderProcessTerminated(CefRefPtr<CefBrowser> browser, TerminationStatus status) = 0;
|
|
|
|
|
|
|
|
|
|
// <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
virtual void OnBeforeDownload(
|
|
|
|
|
CefRefPtr<CefBrowser> browser,
|
|
|
|
|
CefRefPtr<CefDownloadItem> download_item,
|
|
|
|
|
const CefString& suggested_name,
|
|
|
|
|
CefRefPtr<CefBeforeDownloadCallback> callback) = 0;
|
|
|
|
|
|
|
|
|
|
virtual void OnDownloadUpdated(
|
|
|
|
|
CefRefPtr<CefBrowser> browser,
|
|
|
|
|
CefRefPtr<CefDownloadItem> download_item,
|
|
|
|
|
CefRefPtr<CefDownloadItemCallback> callback) = 0;
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> Dialog
|
|
|
|
|
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) = 0;
|
|
|
|
|
|
|
|
|
|
// <20><>װһЩ JS <20><> C++ <20><><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>
|
|
|
|
|
virtual bool OnExecuteCppFunc(const CefString& function_name, const CefString& params, int js_callback_id, CefRefPtr<CefBrowser> browser) = 0;
|
|
|
|
|
|
|
|
|
|
virtual bool OnExecuteCppCallbackFunc(int cpp_callback_id, const CefString& json_string) = 0;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Cef<65><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
|
|
|
|
|
void SetHostWindow(HWND hwnd){ hwnd_ = hwnd; }
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ί<EFBFBD><CEAF><EFBFBD><EFBFBD>ָ<EFBFBD>룬<EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<D2BB>¼<EFBFBD><C2BC>ύ<EFBFBD><E1BDBB><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
// <20><>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ָ<EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>ʱ<EFBFBD><CAB1>Ӧ<EFBFBD>ø<EFBFBD><C3B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL
|
|
|
|
|
void SetHandlerDelegate(HandlerDelegate *handler){ handle_delegate_ = handler; }
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Cef<65><66>Ⱦ<EFBFBD><C8BE><EFBFBD>ݵĴ<DDB5>С
|
|
|
|
|
void SetViewRect(RECT rc);
|
|
|
|
|
|
|
|
|
|
// <20><>ǰWebҳ<62><D2B3><EFBFBD>л<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>Ƿ<EFBFBD><C7B7>ɱ༭
|
|
|
|
|
bool IsCurFieldEditable(){ return is_focus_oneditable_field_; }
|
|
|
|
|
|
|
|
|
|
CefRefPtr<CefBrowser> GetBrowser(){ return browser_; }
|
|
|
|
|
|
|
|
|
|
CefRefPtr<CefBrowserHost> GetBrowserHost();
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F1B5BDB6><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD>Browser<65><72><EFBFBD><EFBFBD><F3B4B4BD>ɹ<EFBFBD><C9B9><EFBFBD><F3A3ACBB><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
// <20><><EFBFBD>紴<EFBFBD><E7B4B4>Browser<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>LoadUrl<72><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱBrowser<65>ܿ<EFBFBD><DCBF>ܻ<EFBFBD>û<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD>Ͱ<EFBFBD>LoadUrl<72><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
UnregisterCallback AddAfterCreateTask(const StdClosure& cb);
|
|
|
|
|
|
|
|
|
|
void CloseAllBrowser();
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
// CefClient methods. Important to return |this| for the handler callbacks.
|
|
|
|
|
virtual CefRefPtr<CefContextMenuHandler> GetContextMenuHandler() OVERRIDE { return this; }
|
|
|
|
|
virtual CefRefPtr<CefRenderHandler> GetRenderHandler() OVERRIDE { return this; }
|
|
|
|
|
virtual CefRefPtr<CefDisplayHandler> GetDisplayHandler() OVERRIDE{ return this; }
|
|
|
|
|
virtual CefRefPtr<CefDragHandler> GetDragHandler() OVERRIDE{ return this; }
|
|
|
|
|
virtual CefRefPtr<CefGeolocationHandler> GetGeolocationHandler() OVERRIDE{ return this; }
|
|
|
|
|
virtual CefRefPtr<CefJSDialogHandler> GetJSDialogHandler() { return this; }
|
|
|
|
|
virtual CefRefPtr<CefKeyboardHandler> GetKeyboardHandler() OVERRIDE{ return this; }
|
|
|
|
|
virtual CefRefPtr<CefLifeSpanHandler> GetLifeSpanHandler() OVERRIDE{ return this; }
|
|
|
|
|
virtual CefRefPtr<CefLoadHandler> GetLoadHandler() OVERRIDE{ return this; }
|
|
|
|
|
virtual CefRefPtr<CefRequestHandler> GetRequestHandler() OVERRIDE{ return this; }
|
|
|
|
|
virtual CefRefPtr<CefDownloadHandler> GetDownloadHandler() OVERRIDE { return this; }
|
|
|
|
|
virtual CefRefPtr<CefDialogHandler> GetDialogHandler() OVERRIDE { return this; }
|
|
|
|
|
virtual bool OnProcessMessageReceived(CefRefPtr<CefBrowser> browser, CefProcessId source_process, CefRefPtr<CefProcessMessage> message) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
// CefLifeSpanHandler methods
|
|
|
|
|
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 OnAfterCreated(CefRefPtr<CefBrowser> browser) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
virtual bool DoClose(CefRefPtr<CefBrowser> browser) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
virtual void OnBeforeClose(CefRefPtr<CefBrowser> browser) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
// CefRenderHandler methods
|
|
|
|
|
virtual bool GetRootScreenRect(CefRefPtr<CefBrowser> browser, CefRect& rect) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
virtual bool GetViewRect(CefRefPtr<CefBrowser> browser, CefRect& rect) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
virtual bool GetScreenPoint(CefRefPtr<CefBrowser> browser, int viewX, int viewY, int& screenX, int& screenY) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
virtual void OnPopupShow(CefRefPtr<CefBrowser> browser, bool show) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
virtual void OnPopupSize(CefRefPtr<CefBrowser> browser, const CefRect& rect) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
virtual void OnPaint(CefRefPtr<CefBrowser> browser, PaintElementType type, const RectList& dirtyRects, const void* buffer, int width, int height) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
virtual void OnCursorChange(CefRefPtr<CefBrowser> browser, CefCursorHandle cursor, CursorType type, const CefCursorInfo& custom_cursor_info) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
// CefContextMenuHandler methods
|
|
|
|
|
virtual void OnBeforeContextMenu(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, CefRefPtr<CefContextMenuParams> params, CefRefPtr<CefMenuModel> model) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
virtual bool RunContextMenu(CefRefPtr<CefBrowser> browser,
|
|
|
|
|
CefRefPtr<CefFrame> frame,
|
|
|
|
|
CefRefPtr<CefContextMenuParams> params,
|
|
|
|
|
CefRefPtr<CefMenuModel> model,
|
|
|
|
|
CefRefPtr<CefRunContextMenuCallback> callback) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
virtual bool OnContextMenuCommand(CefRefPtr<CefBrowser> browser,
|
|
|
|
|
CefRefPtr<CefFrame> frame,
|
|
|
|
|
CefRefPtr<CefContextMenuParams> params,
|
|
|
|
|
int command_id,
|
|
|
|
|
EventFlags event_flags) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
virtual void OnContextMenuDismissed(CefRefPtr<CefBrowser> browser,
|
|
|
|
|
CefRefPtr<CefFrame> frame) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
// CefDisplayHandler methods
|
|
|
|
|
virtual void OnAddressChange(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, const CefString& url) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
virtual void OnTitleChange(CefRefPtr<CefBrowser> browser, const CefString& title) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
virtual bool OnConsoleMessage(CefRefPtr<CefBrowser> browser, const CefString& message, const CefString& source, int line) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
// CefLoadHandler methods
|
|
|
|
|
virtual void OnLoadingStateChange(CefRefPtr<CefBrowser> browser, bool isLoading, bool canGoBack, bool canGoForward) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
virtual void OnLoadStart(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
virtual void OnLoadEnd(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, int httpStatusCode) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
virtual void OnLoadError(CefRefPtr<CefBrowser> browser,
|
|
|
|
|
CefRefPtr<CefFrame> frame,
|
|
|
|
|
ErrorCode errorCode,
|
|
|
|
|
const CefString& errorText,
|
|
|
|
|
const CefString& failedUrl) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
// CefJSDialogHandler methods
|
|
|
|
|
virtual bool OnJSDialog(CefRefPtr<CefBrowser> browser,
|
|
|
|
|
const CefString& origin_url,
|
|
|
|
|
const CefString& accept_lang,
|
|
|
|
|
JSDialogType dialog_type,
|
|
|
|
|
const CefString& message_text,
|
|
|
|
|
const CefString& default_prompt_text,
|
|
|
|
|
CefRefPtr<CefJSDialogCallback> callback,
|
|
|
|
|
bool& suppress_message) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
// CefRequestHandler methods
|
|
|
|
|
bool OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
|
|
|
|
|
CefRefPtr<CefFrame> frame,
|
|
|
|
|
CefRefPtr<CefRequest> request,
|
|
|
|
|
bool is_redirect) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
virtual void OnProtocolExecution(CefRefPtr<CefBrowser> browser,
|
|
|
|
|
const CefString& url,
|
|
|
|
|
bool& allow_os_execution);
|
|
|
|
|
|
|
|
|
|
cef_return_value_t OnBeforeResourceLoad(
|
|
|
|
|
CefRefPtr<CefBrowser> browser,
|
|
|
|
|
CefRefPtr<CefFrame> frame,
|
|
|
|
|
CefRefPtr<CefRequest> request,
|
|
|
|
|
CefRefPtr<CefRequestCallback> callback) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
bool OnQuotaRequest(CefRefPtr<CefBrowser> browser,
|
|
|
|
|
const CefString& origin_url,
|
|
|
|
|
int64 new_size,
|
|
|
|
|
CefRefPtr<CefRequestCallback> callback) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
void OnRenderProcessTerminated(CefRefPtr<CefBrowser> browser,
|
|
|
|
|
TerminationStatus status) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
// CefDownloadHandler methods
|
|
|
|
|
virtual void OnBeforeDownload(
|
|
|
|
|
CefRefPtr<CefBrowser> browser,
|
|
|
|
|
CefRefPtr<CefDownloadItem> download_item,
|
|
|
|
|
const CefString& suggested_name,
|
|
|
|
|
CefRefPtr<CefBeforeDownloadCallback> callback) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
virtual void OnDownloadUpdated(
|
|
|
|
|
CefRefPtr<CefBrowser> browser,
|
|
|
|
|
CefRefPtr<CefDownloadItem> download_item,
|
|
|
|
|
CefRefPtr<CefDownloadItemCallback> callback) OVERRIDE;
|
|
|
|
|
|
|
|
|
|
// CefDialogHandler methods
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
CefRefPtr<CefBrowser> browser_;
|
|
|
|
|
std::vector<CefRefPtr<CefBrowser>> browser_list_;
|
|
|
|
|
HWND hwnd_;
|
|
|
|
|
HandlerDelegate* handle_delegate_;
|
|
|
|
|
RECT rect_cef_control_;
|
|
|
|
|
std::string paint_buffer_;
|
|
|
|
|
bool is_focus_oneditable_field_;
|
|
|
|
|
UnregistedCallbackList<StdClosure> task_list_after_created_;
|
|
|
|
|
|
|
|
|
|
IMPLEMENT_REFCOUNTING(BrowserHandler);
|
|
|
|
|
};
|
|
|
|
|
}
|