41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
https://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
add_task(function () {
|
|
class TestClass {
|
|
QueryInterface = ChromeUtils.generateQI([
|
|
"nsIXPCTestInterfaceA",
|
|
"nsIClassInfo",
|
|
]);
|
|
|
|
interfaces = [Ci.nsIXPCTestInterfaceA, Ci.nsIClassInfo, Ci.nsISupports];
|
|
contractID = "@mozilla.org/test/class;1";
|
|
classDescription = "description";
|
|
classID = Components.ID("{4da556d4-00fa-451a-a280-d2aec7c5f265}");
|
|
flags = 0;
|
|
|
|
name = "this is a test";
|
|
}
|
|
|
|
let instance = new TestClass();
|
|
Assert.ok(instance, "can create an instance");
|
|
Assert.ok(instance.QueryInterface(Ci.nsIClassInfo), "can QI to nsIClassInfo");
|
|
|
|
let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
|
|
registrar.registerFactory(
|
|
instance.classID,
|
|
instance.classDescription,
|
|
instance.contractID,
|
|
{
|
|
createInstance(iid) {
|
|
return instance.QueryInterface(iid);
|
|
},
|
|
}
|
|
);
|
|
Assert.ok(true, "successfully registered the factory");
|
|
|
|
let otherInstance = Cc["@mozilla.org/test/class;1"].createInstance(
|
|
Ci.nsIXPCTestInterfaceA
|
|
);
|
|
Assert.ok(otherInstance, "can create an instance via xpcom");
|
|
});
|