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 { get; } = 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); } } }