namespace Xilium.CefGlue { using System; using System.Collections.Generic; using System.Diagnostics; using System.Runtime.InteropServices; using Xilium.CefGlue.Interop; /// /// Class used to handle file downloads. The methods of this class will called /// on the browser process UI thread. /// public abstract unsafe partial class CefDownloadHandler { private void on_before_download(cef_download_handler_t* self, cef_browser_t* browser, cef_download_item_t* download_item, cef_string_t* suggested_name, cef_before_download_callback_t* callback) { CheckSelf(self); var m_browser = CefBrowser.FromNative(browser); using (var m_download_item = CefDownloadItem.FromNative(download_item)) { var m_suggested_name = cef_string_t.ToString(suggested_name); var m_callback = CefBeforeDownloadCallback.FromNative(callback); OnBeforeDownload(m_browser, m_download_item, m_suggested_name, m_callback); } } /// /// Called before a download begins. |suggested_name| is the suggested name for /// the download file. By default the download will be canceled. Execute /// |callback| either asynchronously or in this method to continue the download /// if desired. Do not keep a reference to |download_item| outside of this /// method. /// protected virtual void OnBeforeDownload(CefBrowser browser, CefDownloadItem downloadItem, string suggestedName, CefBeforeDownloadCallback callback) { } private void on_download_updated(cef_download_handler_t* self, cef_browser_t* browser, cef_download_item_t* download_item, cef_download_item_callback_t* callback) { CheckSelf(self); var m_browser = CefBrowser.FromNative(browser); using (var m_download_item = CefDownloadItem.FromNative(download_item)) { var m_callback = CefDownloadItemCallback.FromNative(callback); OnDownloadUpdated(m_browser, m_download_item, m_callback); } } /// /// Called when a download's status or progress information has been updated. /// This may be called multiple times before and after OnBeforeDownload(). /// Execute |callback| either asynchronously or in this method to cancel the /// download if desired. Do not keep a reference to |download_item| outside of /// this method. /// protected virtual void OnDownloadUpdated(CefBrowser browser, CefDownloadItem downloadItem, CefDownloadItemCallback callback) { } } }