123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- // Engine/Source/Runtime/WebBrowser/Private/WebBrowserAdapter.cpp
- #include "CoreMinimal.h"
- #include "UObject/GCObject.h"
- #include "IWebInterfaceBrowserWindow.h"
- #include "IWebInterfaceBrowserAdapter.h"
- class FDefaultWebInterfaceBrowserAdapter
- : public IWebInterfaceBrowserAdapter
- , public FGCObject
- {
- public:
- virtual FString GetName() const override
- {
- return Name;
- }
- virtual bool IsPermanent() const override
- {
- return bIsPermanent;
- }
- virtual void ConnectTo(const TSharedRef<IWebInterfaceBrowserWindow>& BrowserWindow) override
- {
- if (JSBridge != nullptr)
- {
- BrowserWindow->BindUObject(Name, JSBridge, bIsPermanent);
- }
- if (!ConnectScriptText.IsEmpty())
- {
- BrowserWindow->ExecuteJavascript(ConnectScriptText);
- }
- }
- virtual void DisconnectFrom(const TSharedRef<IWebInterfaceBrowserWindow>& 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);
- }
- }
- virtual FString GetReferencerName() const override
- {
- return TEXT("FDefaultWebInterfaceBrowserAdapter");
- }
- private:
- FDefaultWebInterfaceBrowserAdapter(
- 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 FWebInterfaceBrowserAdapterFactory;
- };
- TSharedRef<IWebInterfaceBrowserAdapter> FWebInterfaceBrowserAdapterFactory::Create(const FString& Name, UObject* JSBridge, bool IsPermanent)
- {
- return MakeShareable(new FDefaultWebInterfaceBrowserAdapter(Name, FString(), FString(), JSBridge, IsPermanent));
- }
- TSharedRef<IWebInterfaceBrowserAdapter> FWebInterfaceBrowserAdapterFactory::Create(const FString& Name, UObject* JSBridge, bool IsPermanent, const FString& ConnectScriptText, const FString& DisconnectScriptText)
- {
- return MakeShareable(new FDefaultWebInterfaceBrowserAdapter(Name, ConnectScriptText, DisconnectScriptText, JSBridge, IsPermanent));
- }
|