Example #1
0
        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);
        }
Example #2
0
 private void CheckSelf(cef_download_handler_t *self)
 {
     if (_self != self)
     {
         throw ExceptionBuilder.InvalidSelfReference();
     }
 }
Example #3
0
        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;
        }
Example #4
0
 protected virtual void Dispose(bool disposing)
 {
     if (_self != null)
     {
         cef_download_handler_t.Free(_self);
         _self = null;
     }
 }
Example #5
0
 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); }
         }
     }
 }
Example #7
0
        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);
        }
Example #9
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);
     }
 }
Example #10
0
        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();
        }
Example #11
0
        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();
        }
Example #12
0
        // 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));
        }
Example #13
0
        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);
        }
Example #14
0
 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); }
 }
Example #16
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
        }
Example #18
0
 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);
 }