public CefDownloadHandler() { cef_download_handler_t *self = this.NativeInstance; self->on_before_download = (void *)Marshal.GetFunctionPointerForDelegate(fnOnBeforeDownload); self->on_download_updated = (void *)Marshal.GetFunctionPointerForDelegate(fnOnDownloadUpdated); }
private void CheckSelf(cef_download_handler_t *self) { if (_self != self) { throw ExceptionBuilder.InvalidSelfReference(); } }
public CefDownloadHandler(CefClient ownerClient) { Client = ownerClient; cef_download_handler_t *self = FixedPtr; self->on_before_download = holder_on_before_download; self->on_download_updated = holder_on_download_updated; }
protected virtual void Dispose(bool disposing) { if (_self != null) { cef_download_handler_t.Free(_self); _self = null; } }
private void add_ref(cef_download_handler_t *self) { lock (SyncRoot) { var result = ++_refct; if (result == 1) { lock (_roots) { _roots.Add((IntPtr)_self, this); } } } }
public CefDownloadHandler() { cef_download_handler_t *self = this.NativeInstance; #if NET_LESS_5_0 self->on_before_download = (void *)Marshal.GetFunctionPointerForDelegate(fnOnBeforeDownload); self->on_download_updated = (void *)Marshal.GetFunctionPointerForDelegate(fnOnDownloadUpdated); #else self->on_before_download = (delegate * unmanaged[Stdcall] < cef_download_handler_t *, cef_browser_t *, cef_download_item_t *, cef_string_t *, cef_before_download_callback_t *, void >) & OnBeforeDownloadImpl; self->on_download_updated = (delegate * unmanaged[Stdcall] < cef_download_handler_t *, cef_browser_t *, cef_download_item_t *, cef_download_item_callback_t *, void >) & OnDownloadUpdatedImpl; #endif }
/// <summary> /// A portion of the file contents have been received. This method will /// be called multiple times until the download is complete. Return /// |true| to continue receiving data and |false| to cancel. /// </summary> private int received_data(cef_download_handler_t *self, void *data, int data_size) { ThrowIfObjectDisposed(); var m_stream = new UnmanagedMemoryStream((byte *)data, data_size, data_size, FileAccess.Read); var handled = this.ReceivedData(m_stream); m_stream.Dispose(); return(handled ? 1 : 0); }
private int release(cef_download_handler_t *self) { lock (SyncRoot) { var result = --_refct; if (result == 0) { lock (_roots) { _roots.Remove((IntPtr)_self); } } return(result); } }
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); var m_download_item = CefDownloadItem.FromNative(download_item); var m_callback = CefDownloadItemCallback.FromNative(callback); OnDownloadUpdated(m_browser, m_download_item, m_callback); m_download_item.Dispose(); }
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); 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); m_download_item.Dispose(); }
// void (*)(_cef_download_handler_t* self, _cef_browser_t* browser, _cef_download_item_t* download_item, const cef_string_t* suggested_name, _cef_before_download_callback_t* callback)* private static unsafe void OnBeforeDownloadImpl(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) { var instance = GetInstance((IntPtr)self) as CefDownloadHandler; if (instance == null || ((ICefDownloadHandlerPrivate)instance).AvoidOnBeforeDownload()) { ReleaseIfNonNull((cef_base_ref_counted_t *)browser); ReleaseIfNonNull((cef_base_ref_counted_t *)download_item); ReleaseIfNonNull((cef_base_ref_counted_t *)callback); return; } instance.OnBeforeDownload(CefBrowser.Wrap(CefBrowser.Create, browser), CefDownloadItem.Wrap(CefDownloadItem.Create, download_item), CefString.Read(suggested_name), CefBeforeDownloadCallback.Wrap(CefBeforeDownloadCallback.Create, callback)); }
protected CefDownloadHandler() { _self = cef_download_handler_t.Alloc(); _ds0 = new cef_download_handler_t.add_ref_delegate(add_ref); _self->_base._add_ref = Marshal.GetFunctionPointerForDelegate(_ds0); _ds1 = new cef_download_handler_t.release_delegate(release); _self->_base._release = Marshal.GetFunctionPointerForDelegate(_ds1); _ds2 = new cef_download_handler_t.get_refct_delegate(get_refct); _self->_base._get_refct = Marshal.GetFunctionPointerForDelegate(_ds2); _ds3 = new cef_download_handler_t.on_before_download_delegate(on_before_download); _self->_on_before_download = Marshal.GetFunctionPointerForDelegate(_ds3); _ds4 = new cef_download_handler_t.on_download_updated_delegate(on_download_updated); _self->_on_download_updated = Marshal.GetFunctionPointerForDelegate(_ds4); }
protected CefDownloadHandler() { _self = cef_download_handler_t.Alloc(); _ds0 = new cef_download_handler_t.add_ref_delegate(add_ref); _self->_base._add_ref = Marshal.GetFunctionPointerForDelegate(_ds0); _ds1 = new cef_download_handler_t.release_delegate(release); _self->_base._release = Marshal.GetFunctionPointerForDelegate(_ds1); _ds2 = new cef_download_handler_t.has_one_ref_delegate(has_one_ref); _self->_base._has_one_ref = Marshal.GetFunctionPointerForDelegate(_ds2); _ds3 = new cef_download_handler_t.on_before_download_delegate(on_before_download); _self->_on_before_download = Marshal.GetFunctionPointerForDelegate(_ds3); _ds4 = new cef_download_handler_t.on_download_updated_delegate(on_download_updated); _self->_on_download_updated = Marshal.GetFunctionPointerForDelegate(_ds4); }
private int has_at_least_one_ref(cef_download_handler_t *self) { lock (SyncRoot) { return(_refct != 0 ? 1 : 0); } }
private int get_refct(cef_download_handler_t *self) { return(_refct); }
/// <summary> /// 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. /// </summary> // protected abstract void OnBeforeDownload(cef_browser_t* browser, cef_download_item_t* download_item, cef_string_t* suggested_name, cef_before_download_callback_t* 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); throw new NotImplementedException(); // TODO: CefDownloadHandler.OnDownloadUpdated }
public CefDownloadHandler(cef_download_handler_t *instance) : base((cef_base_ref_counted_t *)instance) { }
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); throw new NotImplementedException(); // TODO: CefDownloadHandler.OnBeforeDownload }
private int has_one_ref(cef_download_handler_t *self) { lock (SyncRoot) { return(_refct == 1 ? 1 : 0); } }
/// <summary> /// The download is complete. /// </summary> private void complete(cef_download_handler_t *self) { ThrowIfObjectDisposed(); this.Complete(); }
internal static void Free(cef_download_handler_t *ptr) { Marshal.FreeHGlobal((IntPtr)ptr); }