1
0
Fork 0
firefox/js/xpconnect/tests/unit/test_generateQI.js
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

29 lines
999 B
JavaScript

"use strict";
add_task(async function test_generateQI() {
function checkQI(interfaces, iface) {
let obj = {
QueryInterface: ChromeUtils.generateQI(interfaces),
};
equal(obj.QueryInterface(iface), obj,
`Correct return value for query to ${iface}`);
}
// Test success scenarios.
checkQI([], Ci.nsISupports);
checkQI([Ci.nsIPropertyBag, "nsIPropertyBag2"], Ci.nsIPropertyBag);
checkQI([Ci.nsIPropertyBag, "nsIPropertyBag2"], Ci.nsIPropertyBag2);
checkQI([Ci.nsIPropertyBag, "nsIPropertyBag2", "nsINotARealInterface"], Ci.nsIPropertyBag2);
// Non-IID values get stringified, and don't cause any errors as long
// as there isn't a non-IID property with the same name on Ci.
checkQI([Ci.nsIPropertyBag, "nsIPropertyBag2", null, Object], Ci.nsIPropertyBag2);
ChromeUtils.generateQI([])(Ci.nsISupports);
// Test failure scenarios.
Assert.throws(() => checkQI([], Ci.nsIPropertyBag),
e => e.result == Cr.NS_ERROR_NO_INTERFACE);
});