Files
RobustToolbox/Robust.Client.WebView/WebViewManager.cs
Pieter-Jan Briers d6cbdd221c WebView fixes and improvements.
Re-organize initialization so that User-Agent CVar actually works.

Add web.headless CVar to not load CEF even on graphical client.

Clean up init logic to not rely on static IoC, and clean up loggers used too.
2023-02-24 00:29:31 +01:00

86 lines
2.8 KiB
C#

using System.Diagnostics.CodeAnalysis;
using Robust.Client.WebView;
using Robust.Client.WebView.Cef;
using Robust.Client.WebView.Headless;
using Robust.Client.WebViewHook;
using Robust.Shared.Configuration;
using Robust.Shared.IoC;
using Robust.Shared.Utility;
[assembly: WebViewManagerImpl(typeof(WebViewManager))]
namespace Robust.Client.WebView
{
internal sealed class WebViewManager : IWebViewManagerInternal, IWebViewManagerHook
{
private IWebViewManagerImpl? _impl;
public void PreInitialize(IDependencyCollection dependencies, GameController.DisplayMode mode)
{
DebugTools.Assert(_impl == null, "WebViewManager has already been initialized!");
var cfg = dependencies.Resolve<IConfigurationManagerInternal>();
cfg.LoadCVarsFromAssembly(typeof(WebViewManager).Assembly);
dependencies.RegisterInstance<IWebViewManager>(this);
dependencies.RegisterInstance<IWebViewManagerInternal>(this);
if (mode == GameController.DisplayMode.Headless || cfg.GetCVar(WCVars.WebHeadless))
_impl = new WebViewManagerHeadless();
else
_impl = new WebViewManagerCef();
dependencies.InjectDependencies(_impl, oneOff: true);
}
public void Initialize()
{
DebugTools.Assert(_impl != null, "WebViewManager has not yet been initialized!");
_impl!.Initialize();
}
public void Update()
{
DebugTools.Assert(_impl != null, "WebViewManager has not yet been initialized!");
_impl!.Update();
}
public void Shutdown()
{
DebugTools.Assert(_impl != null, "WebViewManager has not yet been initialized!");
_impl!.Shutdown();
}
public IWebViewWindow CreateBrowserWindow(BrowserWindowCreateParameters createParams)
{
DebugTools.Assert(_impl != null, "WebViewManager has not yet been initialized!");
return _impl!.CreateBrowserWindow(createParams);
}
public void SetResourceMimeType(string extension, string mimeType)
{
DebugTools.Assert(_impl != null, "WebViewManager has not yet been initialized!");
_impl!.SetResourceMimeType(extension, mimeType);
}
public bool TryGetResourceMimeType(string extension, [NotNullWhen(true)] out string? mimeType)
{
DebugTools.Assert(_impl != null, "WebViewManager has not yet been initialized!");
return _impl!.TryGetResourceMimeType(extension, out mimeType);
}
public IWebViewControlImpl MakeControlImpl(WebViewControl owner)
{
DebugTools.Assert(_impl != null, "WebViewManager has not yet been initialized!");
return _impl!.MakeControlImpl(owner);
}
}
}