Example #1
0
        /// <summary>
        /// Converts to COM object without null check
        /// </summary>
        /// <returns></returns>
        private object ToComObjectInternal()
        {
            var context = AutoJSContext.Current;

            if (context == null)
            {
                throw new Exception("AutoJSContext not set.");
            }
            {
                var jsObject = SpiderMonkey.JS_ValueToObject(context.ContextPointer, this);

                var guid = typeof(nsISupports).GUID;
                var pUnk = IntPtr.Zero;
                try
                {
                    pUnk = Xpcom.XPConnect.Instance.WrapJS(context.ContextPointer, jsObject, ref guid);
                    var comObj = Xpcom.GetObjectForIUnknown(pUnk);

                    return(comObj);
                }
                finally
                {
                    if (pUnk != IntPtr.Zero)
                    {
                        Marshal.Release(pUnk);
                    }
                }
            }
        }
Example #2
0
        /// <summary>
        /// Converts to COM object without null check
        /// </summary>
        /// <param name="cx"></param>
        /// <returns></returns>
        private object ToComObjectInternal(IntPtr cx)
        {
            using (var context = new AutoJSContext(cx))
            {
                var jsObject = SpiderMonkey.JS_ValueToObject(context.ContextPointer, this);

                var guid = typeof(nsISupports).GUID;
                var pUnk = IntPtr.Zero;
                try
                {
                    pUnk = Xpcom.XPConnect.Instance.WrapJS(context.ContextPointer, jsObject, ref guid);
                    var comObj = Xpcom.GetObjectForIUnknown(pUnk);

                    return(comObj);
                }
                finally
                {
                    if (pUnk != IntPtr.Zero)
                    {
                        Marshal.Release(pUnk);
                    }
                }
            }
        }