services/crypto/tests/unit/head_helpers.js

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 const Cc = Components.classes;
     2 const Ci = Components.interfaces;
     3 const Cr = Components.results;
     4 const Cu = Components.utils;
     6 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
     8 try {
     9   // In the context of xpcshell tests, there won't be a default AppInfo
    10   Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULAppInfo);
    11 }
    12 catch(ex) {
    14 // Make sure to provide the right OS so crypto loads the right binaries
    15 let OS = "XPCShell";
    16 if ("@mozilla.org/windows-registry-key;1" in Cc)
    17   OS = "WINNT";
    18 else if ("nsILocalFileMac" in Ci)
    19   OS = "Darwin";
    20 else
    21   OS = "Linux";
    23 let XULAppInfo = {
    24   vendor: "Mozilla",
    25   name: "XPCShell",
    26   ID: "{3e3ba16c-1675-4e88-b9c8-afef81b3d2ef}",
    27   version: "1",
    28   appBuildID: "20100621",
    29   platformVersion: "",
    30   platformBuildID: "20100621",
    31   inSafeMode: false,
    32   logConsoleErrors: true,
    33   OS: OS,
    34   XPCOMABI: "noarch-spidermonkey",
    35   QueryInterface: XPCOMUtils.generateQI([Ci.nsIXULAppInfo, Ci.nsIXULRuntime])
    36 };
    38 let XULAppInfoFactory = {
    39   createInstance: function (outer, iid) {
    40     if (outer != null)
    41       throw Cr.NS_ERROR_NO_AGGREGATION;
    42     return XULAppInfo.QueryInterface(iid);
    43   }
    44 };
    46 let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
    47 registrar.registerFactory(Components.ID("{fbfae60b-64a4-44ef-a911-08ceb70b9f31}"),
    48                           "XULAppInfo", "@mozilla.org/xre/app-info;1",
    49                           XULAppInfoFactory);
    51 }
    53 // Register resource alias. Normally done in SyncComponents.manifest.
    54 function addResourceAlias() {
    55   Cu.import("resource://gre/modules/Services.jsm");
    56   const resProt = Services.io.getProtocolHandler("resource")
    57                           .QueryInterface(Ci.nsIResProtocolHandler);
    58   let uri = Services.io.newURI("resource://gre/modules/services-crypto/",
    59                                null, null);
    60   resProt.setSubstitution("services-crypto", uri);
    61 }
    62 addResourceAlias();
    64 /**
    65  * Print some debug message to the console. All arguments will be printed,
    66  * separated by spaces.
    67  *
    68  * @param [arg0, arg1, arg2, ...]
    69  *        Any number of arguments to print out
    70  * @usage _("Hello World") -> prints "Hello World"
    71  * @usage _(1, 2, 3) -> prints "1 2 3"
    72  */
    73 let _ = function(some, debug, text, to) print(Array.slice(arguments).join(" "));

mercurial