using CefSharp; using CefSharp.Handler; using TweetLib.Browser.CEF.Logic; namespace TweetDuck.Browser.Base { sealed class CefRequestHandler : RequestHandler { public RequestHandlerLogic<IRequest> Logic { get; } private readonly bool autoReload; public CefRequestHandler(CefLifeSpanHandler lifeSpanHandler, bool autoReload) { this.Logic = new RequestHandlerLogic<IRequest>(CefRequestAdapter.Instance, lifeSpanHandler.Logic); this.autoReload = autoReload; } protected override bool OnBeforeBrowse(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool userGesture, bool isRedirect) { return Logic.OnBeforeBrowse(request, userGesture); } protected override bool OnOpenUrlFromTab(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, WindowOpenDisposition targetDisposition, bool userGesture) { return Logic.OnOpenUrlFromTab(targetUrl, userGesture, CefLifeSpanHandler.ConvertTargetDisposition(targetDisposition)); } protected override void OnRenderProcessTerminated(IWebBrowser browserControl, IBrowser browser, CefTerminationStatus status) { if (autoReload) { browser.Reload(); } } } }