// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "Misc/Guid.h" #if WITH_CEF3 #if PLATFORM_WINDOWS #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/cef_v8.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 class FEpicWebHelperRemoteScripting; class FEpicWebHelperRemoteObject : public CefBaseRefCounted { public: FEpicWebHelperRemoteObject(FEpicWebHelperRemoteScripting* InRemoteScripting, CefRefPtr InBrowser, CefRefPtr InContext, const FGuid& InObjectId) : RemoteScripting(InRemoteScripting) , Browser(InBrowser) , CreationContext(InContext) , ObjectId(InObjectId) {} bool ExecuteMethod(const CefString& MethodName, CefRefPtr Object, const CefV8ValueList& Arguments, CefRefPtr& Retval, CefString& Exception); void ReleaseMethod(); private: FEpicWebHelperRemoteScripting* RemoteScripting; CefRefPtr Browser; CefRefPtr CreationContext; FGuid ObjectId; friend class FEpicWebHelperRemoteScripting; // Include the default reference counting implementation. IMPLEMENT_REFCOUNTING(FEpicWebHelperRemoteObject); }; class FEpicWebHelperRemoteMethodHandler : public CefV8Handler { public: FEpicWebHelperRemoteMethodHandler(CefRefPtr InRemoteObject, CefString& InMethodName) : RemoteObject(InRemoteObject) , MethodName(InMethodName) {} virtual bool Execute(const CefString& Name, CefRefPtr Object, const CefV8ValueList& Arguments, CefRefPtr& Retval, CefString& Exception) override; private: CefRefPtr RemoteObject; CefString MethodName; // Include the default reference counting implementation. IMPLEMENT_REFCOUNTING(FEpicWebHelperRemoteMethodHandler); }; #endif