Ejemplo n.º 1
0
            public nsISupports GetCurrentDescriptorAttribute()
            {
                const string          ComponentManagerCID = "91775d60-d5dc-11d2-92fb-00e09805570f";
                nsIComponentRegistrar mgr = (nsIComponentRegistrar)Xpcom.GetObjectForIUnknown((IntPtr)Xpcom.GetService(new Guid(ComponentManagerCID)));

                return((nsISupports)mgr);
            }
Ejemplo n.º 2
0
        public void JavaScriptToCSharpCallBack()
        {
            // Note: Firefox 17 removed enablePrivilege #546848 - refactored test so that javascript to create "@mozillazine.org/example/priority;1" is now executated by AutoJsContext

            // Register a C# COM Object

            const string          ComponentManagerCID = "91775d60-d5dc-11d2-92fb-00e09805570f";
            nsIComponentRegistrar mgr = (nsIComponentRegistrar)Xpcom.GetObjectForIUnknown((IntPtr)Xpcom.GetService(new Guid(ComponentManagerCID)));
            Guid aClass = new Guid("a7139c0e-962c-44b6-bec3-aaaaaaaaaaab");

            mgr.RegisterFactory(ref aClass, "Example C sharp com component", "@geckofx/mysharpclass;1", new MyCSharpComClassFactory());

            // In order to use Components.classes etc we need to enable certan privileges.
            GeckoPreferences.User["capability.principal.codebase.p0.granted"]     = "UniversalXPConnect";
            GeckoPreferences.User["capability.principal.codebase.p0.id"]          = "file://";
            GeckoPreferences.User["capability.principal.codebase.p0.subjectName"] = "";
            GeckoPreferences.User["security.fileuri.strict_origin_policy"]        = false;

#if PORT
            browser.JavascriptError += (x, w) => Console.WriteLine(w.Message);
#endif

            string inithtml = "<html><body></body></html>";

            string initialjavascript =
                "var myClassInstance = Components.classes['@geckofx/mysharpclass;1'].createInstance(Components.interfaces.nsICommandHandler); myClassInstance.exec('hello', 'world');";

            // Create temp file to load
            var tempfilename = Path.GetTempFileName();
            tempfilename += ".html";
            using (TextWriter tw = new StreamWriter(tempfilename))
            {
                tw.WriteLine(inithtml);
                tw.Close();
            }

            browser.Navigate(tempfilename);
            browser.NavigateFinishedNotifier.BlockUntilNavigationFinished();
            File.Delete(tempfilename);

            using (var context = new AutoJSContext(GlobalJSContextHolder.BackstageJSContext))
            {
                string result  = String.Empty;
                bool   success = context.EvaluateScript(initialjavascript, out result);
                Console.WriteLine("success = {1} result = {0}", result, success);
            }

            // Test the results
            Assert.AreEqual(MyCSharpComClass._execCount, 1);
            Assert.AreEqual(MyCSharpComClass._aCommand, "hello");
            Assert.AreEqual(MyCSharpComClass._aParameters, "world");
        }
Ejemplo n.º 3
0
		public static extern nsResult NS_GetComponentRegistrar(out nsIComponentRegistrar result);
Ejemplo n.º 4
0
 static extern int NS_GetComponentRegistrar([MarshalAs(UnmanagedType.Interface)] out nsIComponentRegistrar componentRegistrar);
 static extern int NS_GetComponentRegistrar(out nsIComponentRegistrar componentRegistrar);