summaryrefslogtreecommitdiffstats
path: root/toolkit/mozapps/webextensions/test/xpcshell/test_shutdown.js
diff options
context:
space:
mode:
authorMatt A. Tobin <email@mattatobin.com>2018-02-10 02:51:36 -0500
committerMatt A. Tobin <email@mattatobin.com>2018-02-10 02:51:36 -0500
commit37d5300335d81cecbecc99812747a657588c63eb (patch)
tree765efa3b6a56bb715d9813a8697473e120436278 /toolkit/mozapps/webextensions/test/xpcshell/test_shutdown.js
parentb2bdac20c02b12f2057b9ef70b0a946113a00e00 (diff)
parent4fb11cd5966461bccc3ed1599b808237be6b0de9 (diff)
downloadUXP-37d5300335d81cecbecc99812747a657588c63eb.tar
UXP-37d5300335d81cecbecc99812747a657588c63eb.tar.gz
UXP-37d5300335d81cecbecc99812747a657588c63eb.tar.lz
UXP-37d5300335d81cecbecc99812747a657588c63eb.tar.xz
UXP-37d5300335d81cecbecc99812747a657588c63eb.zip
Merge branch 'ext-work'
Diffstat (limited to 'toolkit/mozapps/webextensions/test/xpcshell/test_shutdown.js')
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/test_shutdown.js85
1 files changed, 85 insertions, 0 deletions
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_shutdown.js b/toolkit/mozapps/webextensions/test/xpcshell/test_shutdown.js
new file mode 100644
index 000000000..725887bc1
--- /dev/null
+++ b/toolkit/mozapps/webextensions/test/xpcshell/test_shutdown.js
@@ -0,0 +1,85 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+// Verify that API functions fail if the Add-ons Manager isn't initialised.
+
+const IGNORE = ["getPreferredIconURL", "escapeAddonURI",
+ "shouldAutoUpdate", "getStartupChanges",
+ "addTypeListener", "removeTypeListener",
+ "addAddonListener", "removeAddonListener",
+ "addInstallListener", "removeInstallListener",
+ "addManagerListener", "removeManagerListener",
+ "mapURIToAddonID", "shutdown", "init",
+ "stateToString", "errorToString", "getUpgradeListener",
+ "addUpgradeListener", "removeUpgradeListener"];
+
+const IGNORE_PRIVATE = ["AddonAuthor", "AddonCompatibilityOverride",
+ "AddonScreenshot", "AddonType", "startup", "shutdown",
+ "registerProvider", "unregisterProvider",
+ "addStartupChange", "removeStartupChange",
+ "recordTimestamp", "recordSimpleMeasure",
+ "recordException", "getSimpleMeasures", "simpleTimer",
+ "setTelemetryDetails", "getTelemetryDetails",
+ "callNoUpdateListeners", "backgroundUpdateTimerHandler",
+ "hasUpgradeListener", "getUpgradeListener"];
+
+function test_functions() {
+ for (let prop in AddonManager) {
+ if (IGNORE.indexOf(prop) != -1)
+ continue;
+ if (typeof AddonManager[prop] != "function")
+ continue;
+
+ let args = [];
+
+ // Getter functions need a callback and in some cases not having one will
+ // throw before checking if the add-ons manager is initialized so pass in
+ // an empty one.
+ if (prop.startsWith("get")) {
+ // For now all getter functions with more than one argument take the
+ // callback in the second argument.
+ if (AddonManager[prop].length > 1) {
+ args.push(undefined, () => {});
+ }
+ else {
+ args.push(() => {});
+ }
+ }
+
+ try {
+ do_print("AddonManager." + prop);
+ AddonManager[prop](...args);
+ do_throw(prop + " did not throw an exception");
+ }
+ catch (e) {
+ if (e.result != Components.results.NS_ERROR_NOT_INITIALIZED)
+ do_throw(prop + " threw an unexpected exception: " + e);
+ }
+ }
+
+ for (let prop in AddonManagerPrivate) {
+ if (typeof AddonManagerPrivate[prop] != "function")
+ continue;
+ if (IGNORE_PRIVATE.indexOf(prop) != -1)
+ continue;
+
+ try {
+ do_print("AddonManagerPrivate." + prop);
+ AddonManagerPrivate[prop]();
+ do_throw(prop + " did not throw an exception");
+ }
+ catch (e) {
+ if (e.result != Components.results.NS_ERROR_NOT_INITIALIZED)
+ do_throw(prop + " threw an unexpected exception: " + e);
+ }
+ }
+}
+
+function run_test() {
+ createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
+ test_functions();
+ startupManager();
+ shutdownManager();
+ test_functions();
+}