using System.Diagnostics.CodeAnalysis; using CefSharp; using TweetDuck.Browser.Data; namespace TweetDuck.Browser.Handling { abstract class ResourceRequestHandler : CefSharp.Handler.ResourceRequestHandler { private class SelfFactoryImpl : IResourceRequestHandlerFactory { private readonly ResourceRequestHandler me; public SelfFactoryImpl(ResourceRequestHandler me) { this.me = me; } bool IResourceRequestHandlerFactory.HasHandlers => true; [SuppressMessage("ReSharper", "RedundantAssignment")] IResourceRequestHandler IResourceRequestHandlerFactory.GetResourceRequestHandler(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, bool isNavigation, bool isDownload, string requestInitiator, ref bool disableDefaultHandling) { disableDefaultHandling = me.ResourceHandlers.HasHandler(request); return me; } } public IResourceRequestHandlerFactory SelfFactory { get; } public ResourceHandlers ResourceHandlers { get; } protected ResourceRequestHandler() { this.SelfFactory = new SelfFactoryImpl(this); this.ResourceHandlers = new ResourceHandlers(); } protected override IResourceHandler GetResourceHandler(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request) { return ResourceHandlers.GetHandler(request); } } }