Files
UnrealEngineUWP/Engine/Source/Runtime/WebBrowser/Private/WebBrowserSingleton.h
marc audy 6553e6cd0a Remove as much C++ deprecation as possible up to 4.17 (along with a few scattered removals from beyond)
#preflight 61eefc77ba69a4fdb220bf23

#ROBOMERGE-AUTHOR: marc.audy
#ROBOMERGE-SOURCE: CL 18712765 in //UE5/Release-5.0/... via CL 18712784 via CL 18713147
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18713191 by marc audy in ue5-main branch]
2022-01-24 15:07:48 -05:00

206 lines
5.7 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Containers/Ticker.h"
#include "IWebBrowserSingleton.h"
#if WITH_CEF3
#if PLATFORM_WINDOWS
#include "Windows/WindowsHWrapper.h"
#include "Windows/AllowWindowsPlatformTypes.h"
#include "Windows/AllowWindowsPlatformAtomics.h"
#endif
#pragma push_macro("OVERRIDE")
#undef OVERRIDE // cef headers provide their own OVERRIDE macro
THIRD_PARTY_INCLUDES_START
#if PLATFORM_APPLE
PRAGMA_DISABLE_DEPRECATION_WARNINGS
#endif
#include "include/internal/cef_ptr.h"
#include "include/cef_request_context.h"
#if PLATFORM_APPLE
PRAGMA_ENABLE_DEPRECATION_WARNINGS
#endif
THIRD_PARTY_INCLUDES_END
#pragma pop_macro("OVERRIDE")
#if PLATFORM_WINDOWS
#include "Windows/HideWindowsPlatformAtomics.h"
#include "Windows/HideWindowsPlatformTypes.h"
#endif
#include "CEF/CEFSchemeHandler.h"
#include "CEF/CEFResourceContextHandler.h"
class CefListValue;
class FCEFBrowserApp;
class FCEFWebBrowserWindow;
#endif
class IWebBrowserCookieManager;
class IWebBrowserWindow;
struct FWebBrowserWindowInfo;
struct FWebBrowserInitSettings;
class UMaterialInterface;
PRAGMA_DISABLE_DEPRECATION_WARNINGS
/**
* Implementation of singleton class that takes care of general web browser tasks
*/
class FWebBrowserSingleton
: public IWebBrowserSingleton
, public FTSTickerObjectBase
{
public:
/** Constructor. */
FWebBrowserSingleton(const FWebBrowserInitSettings& WebBrowserInitSettings);
/** Virtual destructor. */
virtual ~FWebBrowserSingleton();
/**
* Gets the Current Locale Code in the format CEF expects
*
* @return Locale code as either "xx" or "xx-YY"
*/
static FString GetCurrentLocaleCode();
virtual FString ApplicationCacheDir() const override;
public:
// IWebBrowserSingleton Interface
virtual TSharedRef<IWebBrowserWindowFactory> GetWebBrowserWindowFactory() const override;
TSharedPtr<IWebBrowserWindow> CreateBrowserWindow(
TSharedPtr<FCEFWebBrowserWindow>& BrowserWindowParent,
TSharedPtr<FWebBrowserWindowInfo>& BrowserWindowInfo) override;
TSharedPtr<IWebBrowserWindow> CreateBrowserWindow(const FCreateBrowserWindowSettings& Settings) override;
#if BUILD_EMBEDDED_APP
TSharedPtr<IWebBrowserWindow> CreateNativeBrowserProxy() override;
#endif
virtual TSharedPtr<IWebBrowserCookieManager> GetCookieManager() const override
{
return DefaultCookieManager;
}
virtual TSharedPtr<IWebBrowserCookieManager> GetCookieManager(TOptional<FString> ContextId) const override;
virtual bool RegisterContext(const FBrowserContextSettings& Settings) override;
virtual bool UnregisterContext(const FString& ContextId) override;
virtual bool RegisterSchemeHandlerFactory(FString Scheme, FString Domain, IWebBrowserSchemeHandlerFactory* WebBrowserSchemeHandlerFactory) override;
virtual bool UnregisterSchemeHandlerFactory(IWebBrowserSchemeHandlerFactory* WebBrowserSchemeHandlerFactory) override;
virtual bool IsDevToolsShortcutEnabled() override
{
return bDevToolsShortcutEnabled;
}
virtual void SetDevToolsShortcutEnabled(bool Value) override
{
bDevToolsShortcutEnabled = Value;
}
virtual void SetJSBindingToLoweringEnabled(bool bEnabled) override
{
bJSBindingsToLoweringEnabled = bEnabled;
}
virtual void ClearOldCacheFolders(const FString& CachePathRoot, const FString& CachePrefix) override;
/** Set a reference to UWebBrowser's default material*/
virtual void SetDefaultMaterial(UMaterialInterface* InDefaultMaterial) override
{
DefaultMaterial = InDefaultMaterial;
}
/** Set a reference to UWebBrowser's translucent material*/
virtual void SetDefaultTranslucentMaterial(UMaterialInterface* InDefaultMaterial) override
{
DefaultTranslucentMaterial = InDefaultMaterial;
}
/** Get a reference to UWebBrowser's default material*/
virtual UMaterialInterface* GetDefaultMaterial() override
{
return DefaultMaterial;
}
/** Get a reference to UWebBrowser's translucent material*/
virtual UMaterialInterface* GetDefaultTranslucentMaterial() override
{
return DefaultTranslucentMaterial;
}
public:
// FTSTickerObjectBase Interface
virtual bool Tick(float DeltaTime) override;
private:
TSharedPtr<IWebBrowserCookieManager> DefaultCookieManager;
#if WITH_CEF3
/** When new render processes are created, send all permanent variable bindings to them. */
void HandleRenderProcessCreated(CefRefPtr<CefListValue> ExtraInfo);
/** Helper function to generate the CEF build unique name for the cache_path */
FString GenerateWebCacheFolderName(const FString &InputPath);
/** Pointer to the CEF App implementation */
CefRefPtr<FCEFBrowserApp> CEFBrowserApp;
TMap<FString, CefRefPtr<CefRequestContext>> RequestContexts;
TMap<FString, CefRefPtr<FCEFResourceContextHandler>> RequestResourceHandlers;
FCefSchemeHandlerFactories SchemeHandlerFactories;
bool bAllowCEF;
bool bTaskFinished;
#endif
/** List of currently existing browser windows */
#if WITH_CEF3
TArray<TWeakPtr<FCEFWebBrowserWindow>> WindowInterfaces;
#elif PLATFORM_IOS || PLATFORM_PS4 || (PLATFORM_ANDROID && USE_ANDROID_JNI)
TArray<TWeakPtr<IWebBrowserWindow>> WindowInterfaces;
#endif
/** Critical section for thread safe modification of WindowInterfaces array. */
FCriticalSection WindowInterfacesCS;
TSharedRef<IWebBrowserWindowFactory> WebBrowserWindowFactory;
bool bDevToolsShortcutEnabled;
bool bJSBindingsToLoweringEnabled;
/** Reference to UWebBrowser's default material*/
UMaterialInterface* DefaultMaterial;
/** Reference to UWebBrowser's translucent material*/
UMaterialInterface* DefaultTranslucentMaterial;
};
PRAGMA_ENABLE_DEPRECATION_WARNINGS
#if WITH_CEF3
class CefCookieManager;
class FCefWebBrowserCookieManagerFactory
{
public:
static TSharedRef<IWebBrowserCookieManager> Create(
const CefRefPtr<CefCookieManager>& CookieManager);
};
#endif