// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved. #pragma once #if WITH_CEF3 #if PLATFORM_WINDOWS #include "AllowWindowsPlatformTypes.h" #endif #include "include/cef_client.h" #if PLATFORM_WINDOWS #include "HideWindowsPlatformTypes.h" #endif // Forward Declarations class FWebBrowserWindow; /** * Implements CEF Client and other Browser level interfaces */ class FWebBrowserHandler : public CefClient, public CefDisplayHandler, public CefLifeSpanHandler, public CefLoadHandler, public CefRenderHandler, public CefRequestHandler { public: /** * Default Constructor */ FWebBrowserHandler(); // CefClient Interface virtual CefRefPtr GetDisplayHandler() override { return this; } virtual CefRefPtr GetLifeSpanHandler() override { return this; } virtual CefRefPtr GetLoadHandler() override { return this; } virtual CefRefPtr GetRenderHandler() override { return this; } virtual CefRefPtr GetRequestHandler() override { return this; } // CefDisplayHandler Interface virtual void OnTitleChange(CefRefPtr Browser, const CefString& Title) override; // CefLifeSpanHandler Interface virtual void OnAfterCreated(CefRefPtr Browser) override; virtual void OnBeforeClose(CefRefPtr Browser) override; // CefLoadHandler Interface virtual void OnLoadError(CefRefPtr Browser, CefRefPtr Frame, CefLoadHandler::ErrorCode InErrorCode, const CefString& ErrorText, const CefString& FailedUrl) override; // CefRenderHandler Interface virtual bool GetViewRect(CefRefPtr Browser, CefRect& Rect) override; virtual void OnPaint(CefRefPtr Browser, PaintElementType Type, const RectList& DirtyRects, const void* Buffer, int Width, int Height) override; virtual void OnCursorChange(CefRefPtr Browser, CefCursorHandle Cursor) override; // CefRequestHandler Interface virtual bool OnBeforeResourceLoad(CefRefPtr Browser, CefRefPtr Frame, CefRefPtr Request) override; /** * Pass in a pointer to our Browser Window so that events can be passed on * * @param InBrowserWindow The browser window this will be handling */ void SetBrowserWindow(TSharedPtr InBrowserWindow); private: /** Weak Pointer to our Web Browser window so that events can be passed on while it's valid*/ TWeakPtr BrowserWindow; // Include the default reference counting implementation. IMPLEMENT_REFCOUNTING(FWebBrowserHandler); }; #endif