chrome/test/unit/test_abi.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/chrome/test/unit/test_abi.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,60 @@
     1.4 +const XULAppInfo = {
     1.5 +  vendor: "Mozilla",
     1.6 +  name: "XPCShell",
     1.7 +  ID: "{39885e5f-f6b4-4e2a-87e5-6259ecf79011}",
     1.8 +  version: "5",
     1.9 +  appBuildID: "2007010101",
    1.10 +  platformVersion: "1.9",
    1.11 +  platformBuildID: "2007010101",
    1.12 +  inSafeMode: false,
    1.13 +  logConsoleErrors: true,
    1.14 +  OS: "XPCShell",
    1.15 +  XPCOMABI: "noarch-spidermonkey",
    1.16 +  
    1.17 +  QueryInterface: function QueryInterface(iid) {
    1.18 +    if (iid.equals(Ci.nsIXULAppInfo)
    1.19 +     || iid.equals(Ci.nsIXULRuntime)
    1.20 +     || iid.equals(Ci.nsISupports))
    1.21 +      return this;
    1.22 +  
    1.23 +    throw Components.results.NS_ERROR_NO_INTERFACE;
    1.24 +  }
    1.25 +};
    1.26 +
    1.27 +const XULAppInfoFactory = {
    1.28 +  // These two are used when we register all our factories (and unregister)
    1.29 +  CID: XULAPPINFO_CID,
    1.30 +  scheme: "XULAppInfo",
    1.31 +  contractID: XULAPPINFO_CONTRACTID,
    1.32 +  createInstance: function (outer, iid) {
    1.33 +    if (outer != null)
    1.34 +      throw Cr.NS_ERROR_NO_AGGREGATION;
    1.35 +    return XULAppInfo.QueryInterface(iid);
    1.36 +  }
    1.37 +};
    1.38 +
    1.39 +var registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
    1.40 +registrar.registerFactory(XULAPPINFO_CID, "XULAppInfo",
    1.41 +                          XULAPPINFO_CONTRACTID, XULAppInfoFactory);
    1.42 +
    1.43 +registerManifests([do_get_file("data/test_abi.manifest")]);
    1.44 +
    1.45 +const catman = Components.classes["@mozilla.org/categorymanager;1"].
    1.46 +  getService(Components.interfaces.nsICategoryManager);
    1.47 +
    1.48 +function is_registered(name) {
    1.49 +  try {
    1.50 +    var d = catman.getCategoryEntry("abitest", name);
    1.51 +    return d == "found";
    1.52 +  }
    1.53 +  catch (e) {
    1.54 +    return false;
    1.55 +  }
    1.56 +}
    1.57 +
    1.58 +function run_test() {
    1.59 +  do_check_true(is_registered("test1"));
    1.60 +  do_check_false(is_registered("test2"));
    1.61 +  do_check_true(is_registered("test3"));
    1.62 +  do_check_false(is_registered("test4"));
    1.63 +}

mercurial