private void CheckSelf(cef_scheme_handler_factory_t *self)
 {
     if (_self != self)
     {
         throw ExceptionBuilder.InvalidSelfReference();
     }
 }
Example #2
0
 protected virtual void Dispose(bool disposing)
 {
     if (_self != null)
     {
         cef_scheme_handler_factory_t.Free(_self);
         _self = null;
     }
 }
 protected virtual void Dispose(bool disposing)
 {
     if (_self != null)
     {
         cef_scheme_handler_factory_t.Free(_self);
         _self = null;
     }
 }
Example #4
0
        public CefSchemeHandlerFactory()
        {
            cef_scheme_handler_factory_t *self = this.NativeInstance;

                        #if NET_LESS_5_0
            self->create = (void *)Marshal.GetFunctionPointerForDelegate(fnCreate);
                        #else
            self->create = (delegate * unmanaged[Stdcall] < cef_scheme_handler_factory_t *, cef_browser_t *, cef_frame_t *, cef_string_t *, cef_request_t *, cef_resource_handler_t * >) & CreateImpl;
                        #endif
        }
 private void add_ref(cef_scheme_handler_factory_t *self)
 {
     lock (SyncRoot)
     {
         var result = ++_refct;
         if (result == 1)
         {
             lock (_roots) { _roots.Add((IntPtr)_self, this); }
         }
     }
 }
        /// <summary>
        /// Return a new scheme handler instance to handle the request. |browser| will
        /// be the browser window that initiated the request. If the request was
        /// initiated using the CefWebURLRequest API |browser| will be NULL.
        /// </summary>
        private cef_scheme_handler_t *create(cef_scheme_handler_factory_t *self, cef_browser_t *browser, /*const*/ cef_string_t *scheme_name, cef_request_t *request)
        {
            ThrowIfObjectDisposed();

            var mBrowser     = CefBrowser.FromOrDefault(browser);
            var m_schemeName = cef_string_t.ToString(scheme_name);
            var m_request    = CefRequest.From(request);

            var handler = this.Create(mBrowser, m_schemeName, m_request);

            return(handler.GetNativePointerAndAddRef());
        }
 private int release(cef_scheme_handler_factory_t *self)
 {
     lock (SyncRoot)
     {
         var result = --_refct;
         if (result == 0)
         {
             lock (_roots) { _roots.Remove((IntPtr)_self); }
         }
         return(result);
     }
 }
        protected CefSchemeHandlerFactory()
        {
            _self = cef_scheme_handler_factory_t.Alloc();

            _ds0 = new cef_scheme_handler_factory_t.add_ref_delegate(add_ref);
            _self->_base._add_ref = Marshal.GetFunctionPointerForDelegate(_ds0);
            _ds1 = new cef_scheme_handler_factory_t.release_delegate(release);
            _self->_base._release = Marshal.GetFunctionPointerForDelegate(_ds1);
            _ds2 = new cef_scheme_handler_factory_t.get_refct_delegate(get_refct);
            _self->_base._get_refct = Marshal.GetFunctionPointerForDelegate(_ds2);
            _ds3           = new cef_scheme_handler_factory_t.create_delegate(create);
            _self->_create = Marshal.GetFunctionPointerForDelegate(_ds3);
        }
Example #9
0
        protected CefSchemeHandlerFactory()
        {
            _self = cef_scheme_handler_factory_t.Alloc();

            _ds0 = new cef_scheme_handler_factory_t.add_ref_delegate(add_ref);
            _self->_base._add_ref = Marshal.GetFunctionPointerForDelegate(_ds0);
            _ds1 = new cef_scheme_handler_factory_t.release_delegate(release);
            _self->_base._release = Marshal.GetFunctionPointerForDelegate(_ds1);
            _ds2 = new cef_scheme_handler_factory_t.get_refct_delegate(get_refct);
            _self->_base._get_refct = Marshal.GetFunctionPointerForDelegate(_ds2);
            _ds3 = new cef_scheme_handler_factory_t.create_delegate(create);
            _self->_create = Marshal.GetFunctionPointerForDelegate(_ds3);
        }
Example #10
0
        private cef_resource_handler_t *create(cef_scheme_handler_factory_t *self, cef_browser_t *browser, cef_frame_t *frame, cef_string_t *scheme_name, cef_request_t *request)
        {
            CheckSelf(self);

            var m_browser    = CefBrowser.FromNativeOrNull(browser);
            var m_frame      = CefFrame.FromNativeOrNull(frame);
            var m_schemeName = cef_string_t.ToString(scheme_name);
            var m_request    = CefRequest.FromNative(request);

            var handler = Create(m_browser, m_frame, m_schemeName, m_request);

            // TODO: [ApiUsage] method can return null, only when schemeName is built-in scheme, in other cases it is incorrect.
            return(handler != null?handler.ToNative() : null);
        }
Example #11
0
 public CefSchemeHandlerFactory(cef_scheme_handler_factory_t *instance)
     : base((cef_base_ref_counted_t *)instance)
 {
 }
Example #12
0
        public CefSchemeHandlerFactory()
        {
            cef_scheme_handler_factory_t *self = this.NativeInstance;

            self->create = (void *)Marshal.GetFunctionPointerForDelegate(fnCreate);
        }
 private int has_at_least_one_ref(cef_scheme_handler_factory_t *self)
 {
     lock (SyncRoot) { return(_refct != 0 ? 1 : 0); }
 }
Example #14
0
 public unsafe extern int RegisterSchemeHandlerFactory([Immutable] cef_string_t *scheme_name, [Immutable] cef_string_t *domain_name, cef_scheme_handler_factory_t *factory);
Example #15
0
 public unsafe int RegisterSchemeHandlerFactory([Immutable] cef_string_t *scheme_name, [Immutable] cef_string_t *domain_name, cef_scheme_handler_factory_t *factory)
 {
     fixed(cef_request_context_t *self = &this)
     {
         return(((delegate * unmanaged[Stdcall] < cef_request_context_t *, cef_string_t *, cef_string_t *, cef_scheme_handler_factory_t *, int >)register_scheme_handler_factory)(self, scheme_name, domain_name, factory));
     }
 }
Example #16
0
 public static extern int register_scheme_handler_factory(cef_string_t *scheme_name, cef_string_t *domain_name, cef_scheme_handler_factory_t *factory);
 private cef_resource_handler_t *create(cef_scheme_handler_factory_t *self, cef_browser_t *browser, cef_frame_t *frame, cef_string_t *scheme_name, cef_request_t *request)
 {
     CheckSelf(self);
     throw new NotImplementedException(); // TODO: CefSchemeHandlerFactory.Create
 }
        public static int register_scheme_handler_factory(cef_request_context_t *self, cef_string_t *scheme_name, cef_string_t *domain_name, cef_scheme_handler_factory_t *factory)
        {
            register_scheme_handler_factory_delegate d;
            var p = self->_register_scheme_handler_factory;

            if (p == _p9)
            {
                d = _d9;
            }
            else
            {
                d = (register_scheme_handler_factory_delegate)Marshal.GetDelegateForFunctionPointer(p, typeof(register_scheme_handler_factory_delegate));
                if (_p9 == IntPtr.Zero)
                {
                    _d9 = d; _p9 = p;
                }
            }
            return(d(self, scheme_name, domain_name, factory));
        }
 private int get_refct(cef_scheme_handler_factory_t *self)
 {
     return(_refct);
 }
 internal static void Free(cef_scheme_handler_factory_t *ptr)
 {
     Marshal.FreeHGlobal((IntPtr)ptr);
 }
 /// <summary>
 /// Register a scheme handler factory for the specified |scheme_name| and
 /// optional |domain_name|. An empty |domain_name| value for a standard scheme
 /// will cause the factory to match all domain names. The |domain_name| value
 /// will be ignored for non-standard schemes. If |scheme_name| is a built-in
 /// scheme and no handler is returned by |factory| then the built-in scheme
 /// handler factory will be called. If |scheme_name| is a custom scheme then
 /// you must also implement the CefApp::OnRegisterCustomSchemes() method in all
 /// processes. This function may be called multiple times to change or remove
 /// the factory that matches the specified |scheme_name| and optional
 /// |domain_name|. Returns false if an error occurs. This function may be
 /// called on any thread in the browser process.
 /// </summary>
 public int RegisterSchemeHandlerFactory(cef_string_t *scheme_name, cef_string_t *domain_name, cef_scheme_handler_factory_t *factory)
 {
     throw new NotImplementedException(); // TODO: CefRequestContext.RegisterSchemeHandlerFactory
 }