Files
UnrealEngineUWP/Engine/Source/Runtime/WebBrowser/Private/WebBrowserAdapter.cpp
ryan durand 0f0464a30e Updating copyright for Engine Runtime.
#rnx
#rb none


#ROBOMERGE-OWNER: ryan.durand
#ROBOMERGE-AUTHOR: ryan.durand
#ROBOMERGE-SOURCE: CL 10869210 via CL 10869511 via CL 10869900
#ROBOMERGE-BOT: (v613-10869866)

[CL 10870549 by ryan durand in Main branch]
2019-12-26 14:45:42 -05:00

97 lines
2.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "CoreMinimal.h"
#include "UObject/GCObject.h"
#include "IWebBrowserWindow.h"
#include "IWebBrowserAdapter.h"
class FDefaultWebBrowserAdapter
: public IWebBrowserAdapter
, public FGCObject
{
public:
virtual FString GetName() const override
{
return Name;
}
virtual bool IsPermanent() const override
{
return bIsPermanent;
}
virtual void ConnectTo(const TSharedRef<IWebBrowserWindow>& BrowserWindow) override
{
if (JSBridge != nullptr)
{
BrowserWindow->BindUObject(Name, JSBridge, bIsPermanent);
}
if (!ConnectScriptText.IsEmpty())
{
BrowserWindow->ExecuteJavascript(ConnectScriptText);
}
}
virtual void DisconnectFrom(const TSharedRef<IWebBrowserWindow>& BrowserWindow) override
{
if (!DisconnectScriptText.IsEmpty())
{
BrowserWindow->ExecuteJavascript(DisconnectScriptText);
}
if (JSBridge != nullptr)
{
BrowserWindow->UnbindUObject(Name, JSBridge, bIsPermanent);
}
}
// FGCObject API
virtual void AddReferencedObjects(FReferenceCollector& Collector) override
{
if (JSBridge != nullptr)
{
Collector.AddReferencedObject(JSBridge);
}
}
private:
FDefaultWebBrowserAdapter(
const FString InName,
const FString InConnectScriptText,
const FString InDisconnectScriptText,
UObject* InJSBridge,
const bool InIsPermanent)
: Name(InName)
, ConnectScriptText(InConnectScriptText)
, DisconnectScriptText(InDisconnectScriptText)
, JSBridge(InJSBridge)
, bIsPermanent(InIsPermanent)
{ }
private:
const FString Name;
const FString ConnectScriptText;
const FString DisconnectScriptText;
UObject* JSBridge;
const bool bIsPermanent;
friend FWebBrowserAdapterFactory;
};
TSharedRef<IWebBrowserAdapter> FWebBrowserAdapterFactory::Create(const FString& Name, UObject* JSBridge, bool IsPermanent)
{
return MakeShareable(new FDefaultWebBrowserAdapter(Name, FString(), FString(), JSBridge, IsPermanent));
}
TSharedRef<IWebBrowserAdapter> FWebBrowserAdapterFactory::Create(const FString& Name, UObject* JSBridge, bool IsPermanent, const FString& ConnectScriptText, const FString& DisconnectScriptText)
{
return MakeShareable(new FDefaultWebBrowserAdapter(Name, ConnectScriptText, DisconnectScriptText, JSBridge, IsPermanent));
}