mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-09-15 14:52:35 +02:00
Use headless WebViewManager on headless clients.
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
using System;
|
||||
using Robust.Client.Graphics;
|
||||
using Robust.Client.UserInterface;
|
||||
|
||||
namespace Robust.Client.WebView.Headless
|
||||
{
|
||||
internal sealed class WebViewManagerHeadless : IWebViewManagerImpl
|
||||
{
|
||||
public IWebViewWindow CreateBrowserWindow(BrowserWindowCreateParameters createParams)
|
||||
{
|
||||
return new WebViewWindowDummy();
|
||||
}
|
||||
|
||||
public IWebViewControlImpl MakeControlImpl(WebViewControl owner)
|
||||
{
|
||||
return new WebViewControlImplDummy();
|
||||
}
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
// Nop
|
||||
}
|
||||
|
||||
public void Update()
|
||||
{
|
||||
// Nop
|
||||
}
|
||||
|
||||
public void Shutdown()
|
||||
{
|
||||
// Nop
|
||||
}
|
||||
|
||||
private abstract class DummyBase : IWebViewControl
|
||||
{
|
||||
public string Url { get; set; } = "about:blank";
|
||||
public bool IsLoading => true;
|
||||
|
||||
public void StopLoad()
|
||||
{
|
||||
}
|
||||
|
||||
public void Reload()
|
||||
{
|
||||
}
|
||||
|
||||
public bool GoBack()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool GoForward()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public void ExecuteJavaScript(string code)
|
||||
{
|
||||
}
|
||||
|
||||
public void AddResourceRequestHandler(Action<IRequestHandlerContext> handler)
|
||||
{
|
||||
}
|
||||
|
||||
public void RemoveResourceRequestHandler(Action<IRequestHandlerContext> handler)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
private sealed class WebViewControlImplDummy : DummyBase, IWebViewControlImpl
|
||||
{
|
||||
public void EnteredTree()
|
||||
{
|
||||
}
|
||||
|
||||
public void ExitedTree()
|
||||
{
|
||||
}
|
||||
|
||||
public void MouseMove(GUIMouseMoveEventArgs args)
|
||||
{
|
||||
}
|
||||
|
||||
public void MouseExited()
|
||||
{
|
||||
}
|
||||
|
||||
public void MouseWheel(GUIMouseWheelEventArgs args)
|
||||
{
|
||||
}
|
||||
|
||||
public bool RawKeyEvent(in GuiRawKeyEvent guiRawEvent)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public void TextEntered(GUITextEventArgs args)
|
||||
{
|
||||
}
|
||||
|
||||
public void Resized()
|
||||
{
|
||||
}
|
||||
|
||||
public void Draw(DrawingHandleScreen handle)
|
||||
{
|
||||
}
|
||||
|
||||
public void AddBeforeBrowseHandler(Action<IBeforeBrowseContext> handler)
|
||||
{
|
||||
}
|
||||
|
||||
public void RemoveBeforeBrowseHandler(Action<IBeforeBrowseContext> handler)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
private sealed class WebViewWindowDummy : DummyBase, IWebViewWindow
|
||||
{
|
||||
public void Dispose()
|
||||
{
|
||||
}
|
||||
|
||||
public bool Closed => false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,8 +5,10 @@ namespace Robust.Client.WebView
|
||||
/// <summary>
|
||||
/// Internal implementation of WebViewManager that is switched out by <see cref="IWebViewManagerHook"/>.
|
||||
/// </summary>
|
||||
internal interface IWebViewManagerImpl : IWebViewManagerInternal, IWebViewManagerHook
|
||||
internal interface IWebViewManagerImpl : IWebViewManagerInternal
|
||||
{
|
||||
|
||||
void Initialize();
|
||||
void Update();
|
||||
void Shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using Robust.Client.WebView;
|
||||
using Robust.Client.WebView.Cef;
|
||||
using Robust.Client.WebView.Headless;
|
||||
using Robust.Client.WebViewHook;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Utility;
|
||||
@@ -12,14 +13,18 @@ namespace Robust.Client.WebView
|
||||
{
|
||||
private IWebViewManagerImpl? _impl;
|
||||
|
||||
public void Initialize()
|
||||
public void Initialize(GameController.DisplayMode mode)
|
||||
{
|
||||
DebugTools.Assert(_impl == null, "WebViewManager has already been initialized!");
|
||||
|
||||
IoCManager.RegisterInstance<IWebViewManager>(this);
|
||||
IoCManager.RegisterInstance<IWebViewManagerInternal>(this);
|
||||
|
||||
_impl = new WebViewManagerCef();
|
||||
if (mode == GameController.DisplayMode.Headless)
|
||||
_impl = new WebViewManagerHeadless();
|
||||
else
|
||||
_impl = new WebViewManagerCef();
|
||||
|
||||
_impl.Initialize();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user