Ejemplo n.º 1
0
        private static IntPtr GetContextByName(string contextName)
        {
            Xpcom.AssertCorrectThread();

            IntPtr rt    = Runtime;
            IntPtr iterp = IntPtr.Zero;
            IntPtr cx;

            while ((cx = SpiderMonkey.JS_ContextIterator(rt, ref iterp)) != IntPtr.Zero)
            {
                IntPtr global = SpiderMonkey.JS_GetGlobalObject(cx);
                if (global != IntPtr.Zero)
                {
                    IntPtr classp = SpiderMonkey.JS_GetClass(global);
                    // get class name
                    if (classp != IntPtr.Zero)
                    {
                        string className = Marshal.PtrToStringAnsi(Marshal.ReadIntPtr(classp));
                        if (className == contextName)
                        {
                            return(cx);
                        }
                    }
                }
            }
            return(IntPtr.Zero);
        }