using System.Drawing; using CefSharp; namespace prBrowser { internal class DownloadHandler : IDownloadHandler { private readonly MainForm myForm; public DownloadHandler(MainForm form) { myForm = form; } public void OnBeforeDownload(IWebBrowser webBrowser, IBrowser browser, DownloadItem item, IBeforeDownloadCallback callback) { if (callback.IsDisposed) { return; } using (callback) { myForm.UpdateDownloadItem(item); myForm.CurTab.Browser.BackColor = Color.White; string path = myForm.CalcDownloadPath(item); if (path == null) { callback.Continue(path, showDialog: false); return; } myForm.OpenDownloadsTab(); callback.Continue(path, showDialog: true); } } public void OnDownloadUpdated(IWebBrowser webBrowser, IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback) { myForm.UpdateDownloadItem(downloadItem); if (downloadItem.IsInProgress && myForm.CancelRequests.Contains(downloadItem.Id)) { callback.Cancel(); } } } }