123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- // Engine/Source/Runtime/WebBrowser/Private/Native/NativeWebBrowserProxy.h
- #pragma once
- #include "CoreMinimal.h"
- #include "IWebInterfaceBrowserWindow.h"
- #include "NativeInterfaceJSScripting.h"
- class FNativeWebInterfaceBrowserProxy
- : public IWebInterfaceBrowserWindow
- , public TSharedFromThis<FNativeWebInterfaceBrowserProxy>
- {
- // For creating instances of this class
- friend class FWebInterfaceBrowserSingleton;
- private:
- FNativeWebInterfaceBrowserProxy(bool bJSBindingToLoweringEnabled);
- void Initialize();
- void HandleEmbeddedCommunication(const struct FEmbeddedCallParamsHelper& Params);
- bool OnJsMessageReceived(const FString& Message);
- public:
- virtual ~FNativeWebInterfaceBrowserProxy();
- public:
- // IWebBrowserWindow Interface
- virtual void LoadURL(FString NewURL) override;
- virtual void LoadString(FString Contents, FString DummyURL) override;
- virtual void SetViewportSize(FIntPoint WindowSize, FIntPoint WindowPos) override;
- virtual FIntPoint GetViewportSize() const override;
- virtual class FSlateShaderResource* GetTexture(bool bIsPopup = false) override;
- virtual bool IsValid() const override;
- virtual bool IsInitialized() const override;
- virtual bool IsClosing() const override;
- virtual EWebInterfaceBrowserDocumentState GetDocumentLoadingState() const override;
- virtual FString GetTitle() const override;
- virtual FString GetUrl() const override;
- virtual void GetSource(TFunction<void(const FString&)> Callback) const override;
- virtual bool OnKeyDown(const FKeyEvent& InKeyEvent) override;
- virtual bool OnKeyUp(const FKeyEvent& InKeyEvent) override;
- virtual bool OnKeyChar(const FCharacterEvent& InCharacterEvent) override;
- virtual void SetSupportsMouseWheel(bool bValue) override;
- virtual bool GetSupportsMouseWheel() const override;
- virtual FReply OnMouseButtonDown(const FGeometry& MyGeometry, const FPointerEvent& MouseEvent, bool bIsPopup) override;
- virtual FReply OnMouseButtonUp(const FGeometry& MyGeometry, const FPointerEvent& MouseEvent, bool bIsPopup) override;
- virtual FReply OnMouseButtonDoubleClick(const FGeometry& MyGeometry, const FPointerEvent& MouseEvent, bool bIsPopup) override;
- virtual FReply OnMouseMove(const FGeometry& MyGeometry, const FPointerEvent& MouseEvent, bool bIsPopup) override;
- virtual void OnMouseLeave(const FPointerEvent& MouseEvent) override;
- virtual FReply OnMouseWheel(const FGeometry& MyGeometry, const FPointerEvent& MouseEvent, bool bIsPopup) override;
- virtual FOnDragWindow& OnDragWindow() override
- {
- return DragWindowDelegate;
- }
- virtual void OnFocus(bool SetFocus, bool bIsPopup) override;
- virtual void OnCaptureLost() override;
- virtual bool CanGoBack() const override;
- virtual void GoBack() override;
- virtual bool CanGoForward() const override;
- virtual void GoForward() override;
- virtual bool IsLoading() const override;
- virtual void Reload() override;
- virtual void StopLoad() override;
- virtual void ExecuteJavascript(const FString& Script) override;
- virtual void CloseBrowser(bool bForce, bool bBlockTillClosed) override;
- virtual void BindUObject(const FString& Name, UObject* Object, bool bIsPermanent = true) override;
- virtual void UnbindUObject(const FString& Name, UObject* Object = nullptr, bool bIsPermanent = true) override;
- virtual int GetLoadError() override;
- virtual void SetIsDisabled(bool bValue) override;
- virtual TSharedPtr<SWindow> GetParentWindow() const override;
- virtual void SetParentWindow(TSharedPtr<SWindow> Window) override;
- // @todo: None of these are actually called at the moment.
- DECLARE_DERIVED_EVENT(FNativeWebInterfaceBrowserProxy, IWebInterfaceBrowserWindow::FOnDocumentStateChanged, FOnDocumentStateChanged);
- virtual FOnDocumentStateChanged& OnDocumentStateChanged() override
- {
- return DocumentStateChangedEvent;
- }
- DECLARE_DERIVED_EVENT(FNativeWebInterfaceBrowserProxy, IWebInterfaceBrowserWindow::FOnTitleChanged, FOnTitleChanged);
- virtual FOnTitleChanged& OnTitleChanged() override
- {
- return TitleChangedEvent;
- }
- DECLARE_DERIVED_EVENT(FNativeWebInterfaceBrowserProxy, IWebInterfaceBrowserWindow::FOnUrlChanged, FOnUrlChanged);
- virtual FOnUrlChanged& OnUrlChanged() override
- {
- return UrlChangedEvent;
- }
- DECLARE_DERIVED_EVENT(FNativeWebInterfaceBrowserProxy, IWebInterfaceBrowserWindow::FOnToolTip, FOnToolTip);
- virtual FOnToolTip& OnToolTip() override
- {
- return ToolTipEvent;
- }
- DECLARE_DERIVED_EVENT(FNativeWebInterfaceBrowserProxy, IWebInterfaceBrowserWindow::FOnNeedsRedraw, FOnNeedsRedraw);
- virtual FOnNeedsRedraw& OnNeedsRedraw() override
- {
- return NeedsRedrawEvent;
- }
- virtual FOnBeforeBrowse& OnBeforeBrowse() override
- {
- return BeforeBrowseDelegate;
- }
- virtual FOnLoadUrl& OnLoadUrl() override
- {
- return LoadUrlDelegate;
- }
- virtual FOnCreateWindow& OnCreateWindow() override
- {
- return CreateWindowDelegate;
- }
- virtual FOnCloseWindow& OnCloseWindow() override
- {
- return CloseWindowDelegate;
- }
- virtual FCursorReply OnCursorQuery(const FGeometry& MyGeometry, const FPointerEvent& CursorEvent) override
- {
- return FCursorReply::Unhandled();
- }
- virtual FOnBeforePopupDelegate& OnBeforePopup() override
- {
- return BeforePopupDelegate;
- }
- virtual FOnBeforeResourceLoadDelegate& OnBeforeResourceLoad() override
- {
- return BeforeResourceLoadDelegate;
- }
- virtual FOnResourceLoadCompleteDelegate& OnResourceLoadComplete() override
- {
- return ResourceLoadCompleteDelegate;
- }
- virtual FOnConsoleMessageDelegate& OnConsoleMessage() override
- {
- return ConsoleMessageDelegate;
- }
- DECLARE_DERIVED_EVENT(FNativeWebInterfaceBrowserProxy, IWebInterfaceBrowserWindow::FOnShowPopup, FOnShowPopup);
- virtual FOnShowPopup& OnShowPopup() override
- {
- return ShowPopupEvent;
- }
- DECLARE_DERIVED_EVENT(FNativeWebInterfaceBrowserProxy, IWebInterfaceBrowserWindow::FOnDismissPopup, FOnDismissPopup);
- virtual FOnDismissPopup& OnDismissPopup() override
- {
- return DismissPopupEvent;
- }
- virtual FOnShowDialog& OnShowDialog() override
- {
- return ShowDialogDelegate;
- }
- virtual FOnDismissAllDialogs& OnDismissAllDialogs() override
- {
- return DismissAllDialogsDelegate;
- }
- virtual FOnSuppressContextMenu& OnSuppressContextMenu() override
- {
- return SuppressContextMenuDelgate;
- }
- virtual FOnUnhandledKeyDown& OnUnhandledKeyDown() override
- {
- return UnhandledKeyDownDelegate;
- }
- virtual FOnUnhandledKeyUp& OnUnhandledKeyUp() override
- {
- return UnhandledKeyUpDelegate;
- }
- virtual FOnUnhandledKeyChar& OnUnhandledKeyChar() override
- {
- return UnhandledKeyCharDelegate;
- }
- private:
- /** Delegate for broadcasting load state changes. */
- FOnDocumentStateChanged DocumentStateChangedEvent;
- /** Delegate for broadcasting title changes. */
- FOnTitleChanged TitleChangedEvent;
- /** Delegate for broadcasting address changes. */
- FOnUrlChanged UrlChangedEvent;
- /** Delegate for broadcasting when the browser wants to show a tool tip. */
- FOnToolTip ToolTipEvent;
- /** Delegate for notifying that the window needs refreshing. */
- FOnNeedsRedraw NeedsRedrawEvent;
- /** Delegate that is executed prior to browser navigation. */
- FOnBeforeBrowse BeforeBrowseDelegate;
- /** Delegate for overriding Url contents. */
- FOnLoadUrl LoadUrlDelegate;
- /** Delegate for notifying that a popup window is attempting to open. */
- FOnBeforePopupDelegate BeforePopupDelegate;
-
- /** Delegate that is invoked before the browser loads a resource. Its primary purpose is to inject headers into the request. */
- FOnBeforeResourceLoadDelegate BeforeResourceLoadDelegate;
- /** Delegate that is invoked on completion of browser resource loads. Its primary purpose is to allow response to failures. */
- FOnResourceLoadCompleteDelegate ResourceLoadCompleteDelegate;
- /** Delegate that is invoked for each console message */
- FOnConsoleMessageDelegate ConsoleMessageDelegate;
- /** Delegate for handling requests to create new windows. */
- FOnCreateWindow CreateWindowDelegate;
- /** Delegate for handling requests to close new windows that were created. */
- FOnCloseWindow CloseWindowDelegate;
- /** Delegate for handling requests to show the popup menu. */
- FOnShowPopup ShowPopupEvent;
- /** Delegate for handling requests to dismiss the current popup menu. */
- FOnDismissPopup DismissPopupEvent;
- /** Delegate for showing dialogs. */
- FOnShowDialog ShowDialogDelegate;
- /** Delegate for dismissing all dialogs. */
- FOnDismissAllDialogs DismissAllDialogsDelegate;
- /** Delegate for suppressing context menu */
- FOnSuppressContextMenu SuppressContextMenuDelgate;
- /** Delegate for handling key down events not handled by the browser. */
- FOnUnhandledKeyDown UnhandledKeyDownDelegate;
-
- /** Delegate for handling key up events not handled by the browser. */
- FOnUnhandledKeyUp UnhandledKeyUpDelegate;
-
- /** Delegate for handling key char events not handled by the browser. */
- FOnUnhandledKeyChar UnhandledKeyCharDelegate;
- FOnDragWindow DragWindowDelegate;
- bool bJSBindingToLoweringEnabled;
- FNativeInterfaceJSScriptingPtr Scripting;
- };
|