using CefSharp; namespace prBrowser { internal class ResourceRequestHandler : IResourceRequestHandler { private readonly MainForm myForm; public ResourceRequestHandler(MainForm form) { myForm = form; } public ICookieAccessFilter GetCookieAccessFilter(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request) { return null; } public IResourceHandler GetResourceHandler(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request) { return null; } public IResponseFilter GetResourceResponseFilter(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response) { return null; } public CefReturnValue OnBeforeResourceLoad(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback) { SharpTab tab = myForm.GetTabByBrowser(chromiumWebBrowser); if (tab != null && tab.RefererURL != null) { request.SetReferrer(tab.RefererURL, ReferrerPolicy.ClearReferrerOnTransitionFromSecureToInsecure); } return CefReturnValue.Continue; } public bool OnProtocolExecution(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request) { return true; } public void OnResourceLoadComplete(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength) { int code = response.StatusCode; if (!frame.IsValid) { return; } if (code == 404) { if (request.Url.IsURLLocalhost()) { } } else if (request.Url.IsURLOfflineFile()) { string path = request.Url.FileURLToPath(); if (!path.FileNotExists()) { } } else if (code != 0 && code != 444 && (code < 500 || code > 599)) { } } public void OnResourceRedirect(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response, ref string newUrl) { } public bool OnResourceResponse(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response) { return false; } } }