1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
const {XPCOMUtils} = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
function FooComponent() {
this.wrappedJSObject = this;
}
FooComponent.prototype =
{
// nsIClassInfo + information for XPCOM registration code in XPCOMUtils.jsm
classDescription: "Foo Component",
classID: Components.ID("{6b933fe6-6eba-4622-ac86-e4f654f1b474}"),
contractID: "@mozilla.org/tests/module-importer;1",
// nsIClassInfo
flags: 0,
get interfaces() {
var interfaces = [Ci.nsIClassInfo];
// Guerilla test for line numbers hiding in this method
var threw = true;
try {
thereIsNoSuchIdentifier;
threw = false;
} catch (ex) {
Assert.ok(ex.lineNumber == 26);
}
Assert.ok(threw);
return interfaces;
},
getScriptableHelper: function getScriptableHelper() {
return null;
},
// nsISupports
QueryInterface: function QueryInterface(aIID) {
if (aIID.equals(Ci.nsIClassInfo) ||
aIID.equals(Ci.nsISupports))
return this;
throw Cr.NS_ERROR_NO_INTERFACE;
}
};
function BarComponent() {
}
BarComponent.prototype =
{
// nsIClassInfo + information for XPCOM registration code in XPCOMUtils.jsm
classDescription: "Module importer test 2",
classID: Components.ID("{708a896a-b48d-4bff-906e-fc2fd134b296}"),
contractID: "@mozilla.org/tests/module-importer;2",
// nsIClassInfo
flags: 0,
interfaces: [Ci.nsIClassInfo],
getScriptableHelper: function getScriptableHelper() {
return null;
},
// nsISupports
QueryInterface: ChromeUtils.generateQI([Ci.nsIClassInfo])
};
const Assert = {
ok(cond, text) {
// we don't have the test harness' utilities in this scope, so we need this
// little helper. In the failure case, the exception is propagated to the
// caller in the main run_test() function, and the test fails.
if (!cond)
throw "Failed check: " + text;
}
};
var gComponentsArray = [FooComponent, BarComponent];
this.NSGetFactory = XPCOMUtils.generateNSGetFactory(gComponentsArray);
|