gecko-dev/xpcom/tests/unit/test_notxpcom_scriptable.js
Andrew McCreight 2df0136940 Bug 1498404 - Fix some errors in manifests r=froydnj
In FxAccountsComponents.manifest, the previous line registers the
component CID, but only for the main process. This means we hit an
error while parsing the manifest in the child process, because the CID
is not recognized. The fix is simply to not try to use the CID to
register the contract in the child process.

As for the rest of the changes, since bug 1438688, XPT information is
compiled into the Firefox binary, so the interfaces manifest entry is
no longer needed. This patch removes instances of this line from
manifest files. This makes some manifest files empty, so the patch
also removes the now-empty files.

Differential Revision: https://phabricator.services.mozilla.com/D8751

--HG--
extra : moz-landing-system : lando
2018-10-16 13:26:23 +00:00

76 lines
2.1 KiB
JavaScript

/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
* 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/. */
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
const kCID = Components.ID("{1f9f7181-e6c5-4f4c-8f71-08005cec8468}");
const kContract = "@testing/notxpcomtest";
function run_test() {
let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
ok(Ci.ScriptableWithNotXPCOM);
let method1Called = false;
let testObject = {
QueryInterface: ChromeUtils.generateQI([Ci.ScriptableOK,
Ci.ScriptableWithNotXPCOM,
Ci.ScriptableWithNotXPCOMBase]),
method1() {
method1Called = true;
},
method2() {
ok(false, "method2 should not have been called!");
},
method3() {
ok(false, "mehod3 should not have been called!");
},
jsonly: true,
};
let factory = {
QueryInterface: ChromeUtils.generateQI([Ci.nsIFactory]),
createInstance(outer, iid) {
if (outer) {
throw Cr.NS_ERROR_NO_AGGREGATION;
}
return testObject.QueryInterface(iid);
},
};
registrar.registerFactory(kCID, null, kContract, factory);
let xpcomObject = Cc[kContract].createInstance();
ok(xpcomObject);
strictEqual(xpcomObject.jsonly, undefined);
xpcomObject.QueryInterface(Ci.ScriptableOK);
xpcomObject.method1();
ok(method1Called);
try {
xpcomObject.QueryInterface(Ci.ScriptableWithNotXPCOM);
ok(false, "Should not have implemented ScriptableWithNotXPCOM");
} catch (e) {
ok(true, "Should not have implemented ScriptableWithNotXPCOM. Correctly threw error: " + e);
}
strictEqual(xpcomObject.method2, undefined);
try {
xpcomObject.QueryInterface(Ci.ScriptableWithNotXPCOMBase);
ok(false, "Should not have implemented ScriptableWithNotXPCOMBase");
} catch (e) {
ok(true, "Should not have implemented ScriptableWithNotXPCOMBase. Correctly threw error: " + e);
}
strictEqual(xpcomObject.method3, undefined);
}