summaryrefslogtreecommitdiffstats
path: root/toolkit/mozapps/webextensions/test/xpcshell/test_system_delay_update.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/mozapps/webextensions/test/xpcshell/test_system_delay_update.js')
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/test_system_delay_update.js461
1 files changed, 0 insertions, 461 deletions
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_system_delay_update.js b/toolkit/mozapps/webextensions/test/xpcshell/test_system_delay_update.js
deleted file mode 100644
index 35964c663..000000000
--- a/toolkit/mozapps/webextensions/test/xpcshell/test_system_delay_update.js
+++ /dev/null
@@ -1,461 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
-
-// This verifies that delaying a system add-on update works.
-
-Components.utils.import("resource://testing-common/httpd.js");
-const profileDir = gProfD.clone();
-profileDir.append("extensions");
-const tempdir = gTmpD.clone();
-
-const PREF_SYSTEM_ADDON_SET = "extensions.systemAddonSet";
-const PREF_SYSTEM_ADDON_UPDATE_URL = "extensions.systemAddon.update.url";
-
-const IGNORE_ID = "system_delay_ignore@tests.mozilla.org";
-const COMPLETE_ID = "system_delay_complete@tests.mozilla.org";
-const DEFER_ID = "system_delay_defer@tests.mozilla.org";
-const DEFER_ALSO_ID = "system_delay_defer_also@tests.mozilla.org";
-const NORMAL_ID = "system1@tests.mozilla.org";
-
-
-const TEST_IGNORE_PREF = "delaytest.ignore";
-
-const distroDir = FileUtils.getDir("ProfD", ["sysfeatures"], true);
-registerDirectory("XREAppFeat", distroDir);
-
-let testserver = new HttpServer();
-testserver.registerDirectory("/data/", do_get_file("data/system_addons"));
-testserver.start();
-let root = `${testserver.identity.primaryScheme}://${testserver.identity.primaryHost}:${testserver.identity.primaryPort}/data/`;
-Services.prefs.setCharPref(PREF_SYSTEM_ADDON_UPDATE_URL, root + "update.xml");
-
-
-// Note that we would normally use BootstrapMonitor but it currently requires
-// the objects in `data` to be serializable, and we need a real reference to the
-// `instanceID` symbol to test.
-
-createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "42");
-
-function promiseInstallPostponed(addonID1, addonID2) {
- return new Promise((resolve, reject) => {
- let seen = [];
- let listener = {
- onInstallFailed: () => {
- AddonManager.removeInstallListener(listener);
- reject("extension installation should not have failed");
- },
- onInstallEnded: (install) => {
- AddonManager.removeInstallListener(listener);
- reject(`extension installation should not have ended for ${install.addon.id}`);
- },
- onInstallPostponed: (install) => {
- seen.push(install.addon.id);
- if (seen.includes(addonID1) && seen.includes(addonID2)) {
- AddonManager.removeInstallListener(listener);
- resolve();
- }
- }
- };
-
- AddonManager.addInstallListener(listener);
- });
-}
-
-function promiseInstallResumed(addonID1, addonID2) {
- return new Promise((resolve, reject) => {
- let seenPostponed = [];
- let seenEnded = [];
- let listener = {
- onInstallFailed: () => {
- AddonManager.removeInstallListener(listener);
- reject("extension installation should not have failed");
- },
- onInstallEnded: (install) => {
- seenEnded.push(install.addon.id);
- if ((seenEnded.includes(addonID1) && seenEnded.includes(addonID2)) &&
- (seenPostponed.includes(addonID1) && seenPostponed.includes(addonID2))) {
- AddonManager.removeInstallListener(listener);
- resolve();
- }
- },
- onInstallPostponed: (install) => {
- seenPostponed.push(install.addon.id);
- }
- };
-
- AddonManager.addInstallListener(listener);
- });
-}
-
-function promiseInstallDeferred(addonID1, addonID2) {
- return new Promise((resolve, reject) => {
- let seenEnded = [];
- let listener = {
- onInstallFailed: () => {
- AddonManager.removeInstallListener(listener);
- reject("extension installation should not have failed");
- },
- onInstallEnded: (install) => {
- seenEnded.push(install.addon.id);
- if (seenEnded.includes(addonID1) && seenEnded.includes(addonID2)) {
- AddonManager.removeInstallListener(listener);
- resolve();
- }
- },
- onInstallPostponed: (install) => {
- AddonManager.removeInstallListener(listener);
- reject(`extension installation should not have been postponed for ${install.addon.id}`);
- }
- };
-
- AddonManager.addInstallListener(listener);
- });
-}
-
-
-// add-on registers upgrade listener, and ignores update.
-add_task(function*() {
- // discard system addon updates
- Services.prefs.setCharPref(PREF_SYSTEM_ADDON_SET, "");
-
- do_get_file("data/system_addons/system_delay_ignore.xpi").copyTo(distroDir, "system_delay_ignore@tests.mozilla.org.xpi");
- do_get_file("data/system_addons/system1_1.xpi").copyTo(distroDir, "system1@tests.mozilla.org.xpi");
-
- startupManager();
- let updateList = [
- { id: IGNORE_ID, version: "2.0", path: "system_delay_ignore_2.xpi" },
- { id: NORMAL_ID, version: "2.0", path: "system1_2.xpi" },
- ];
-
- let postponed = promiseInstallPostponed(IGNORE_ID, NORMAL_ID);
- yield installSystemAddons(yield buildSystemAddonUpdates(updateList, root), testserver);
- yield postponed;
-
- // addon upgrade has been delayed.
- let addon_postponed = yield promiseAddonByID(IGNORE_ID, NORMAL_ID);
- do_check_neq(addon_postponed, null);
- do_check_eq(addon_postponed.version, "1.0");
- do_check_eq(addon_postponed.name, "System Test Delay Update Ignore");
- do_check_true(addon_postponed.isCompatible);
- do_check_false(addon_postponed.appDisabled);
- do_check_true(addon_postponed.isActive);
- do_check_eq(addon_postponed.type, "extension");
- do_check_true(Services.prefs.getBoolPref(TEST_IGNORE_PREF));
-
- // other addons in the set are delayed as well.
- addon_postponed = yield promiseAddonByID(NORMAL_ID);
- do_check_neq(addon_postponed, null);
- do_check_eq(addon_postponed.version, "1.0");
- do_check_eq(addon_postponed.name, "System Add-on 1");
- do_check_true(addon_postponed.isCompatible);
- do_check_false(addon_postponed.appDisabled);
- do_check_true(addon_postponed.isActive);
- do_check_eq(addon_postponed.type, "extension");
-
- // restarting allows upgrades to proceed
- yield promiseRestartManager();
-
- let addon_upgraded = yield promiseAddonByID(IGNORE_ID);
- do_check_neq(addon_upgraded, null);
- do_check_eq(addon_upgraded.version, "2.0");
- do_check_eq(addon_upgraded.name, "System Test Delay Update Ignore");
- do_check_true(addon_upgraded.isCompatible);
- do_check_false(addon_upgraded.appDisabled);
- do_check_true(addon_upgraded.isActive);
- do_check_eq(addon_upgraded.type, "extension");
-
- addon_upgraded = yield promiseAddonByID(NORMAL_ID);
- do_check_neq(addon_upgraded, null);
- do_check_eq(addon_upgraded.version, "2.0");
- do_check_eq(addon_upgraded.name, "System Add-on 1");
- do_check_true(addon_upgraded.isCompatible);
- do_check_false(addon_upgraded.appDisabled);
- do_check_true(addon_upgraded.isActive);
- do_check_eq(addon_upgraded.type, "extension");
-
- yield shutdownManager();
-});
-
-// add-on registers upgrade listener, and allows update.
-add_task(function*() {
- // discard system addon updates
- Services.prefs.setCharPref(PREF_SYSTEM_ADDON_SET, "");
-
- do_get_file("data/system_addons/system_delay_complete.xpi").copyTo(distroDir, "system_delay_complete@tests.mozilla.org.xpi");
- do_get_file("data/system_addons/system1_1.xpi").copyTo(distroDir, "system1@tests.mozilla.org.xpi");
-
- startupManager();
-
- let updateList = [
- { id: COMPLETE_ID, version: "2.0", path: "system_delay_complete_2.xpi" },
- { id: NORMAL_ID, version: "2.0", path: "system1_2.xpi" },
- ];
-
- // initial state
- let addon_allowed = yield promiseAddonByID(COMPLETE_ID);
- do_check_neq(addon_allowed, null);
- do_check_eq(addon_allowed.version, "1.0");
- do_check_eq(addon_allowed.name, "System Test Delay Update Complete");
- do_check_true(addon_allowed.isCompatible);
- do_check_false(addon_allowed.appDisabled);
- do_check_true(addon_allowed.isActive);
- do_check_eq(addon_allowed.type, "extension");
-
- addon_allowed = yield promiseAddonByID(NORMAL_ID);
- do_check_neq(addon_allowed, null);
- do_check_eq(addon_allowed.version, "1.0");
- do_check_eq(addon_allowed.name, "System Add-on 1");
- do_check_true(addon_allowed.isCompatible);
- do_check_false(addon_allowed.appDisabled);
- do_check_true(addon_allowed.isActive);
- do_check_eq(addon_allowed.type, "extension");
-
- let resumed = promiseInstallResumed(COMPLETE_ID, NORMAL_ID);
- yield installSystemAddons(yield buildSystemAddonUpdates(updateList, root), testserver);
-
- // update is initially postponed, then resumed
- yield resumed;
-
- // addon upgrade has been allowed
- addon_allowed = yield promiseAddonByID(COMPLETE_ID);
- do_check_neq(addon_allowed, null);
- do_check_eq(addon_allowed.version, "2.0");
- do_check_eq(addon_allowed.name, "System Test Delay Update Complete");
- do_check_true(addon_allowed.isCompatible);
- do_check_false(addon_allowed.appDisabled);
- do_check_true(addon_allowed.isActive);
- do_check_eq(addon_allowed.type, "extension");
-
- // other upgrades in the set are allowed as well
- addon_allowed = yield promiseAddonByID(NORMAL_ID);
- do_check_neq(addon_allowed, null);
- do_check_eq(addon_allowed.version, "2.0");
- do_check_eq(addon_allowed.name, "System Add-on 1");
- do_check_true(addon_allowed.isCompatible);
- do_check_false(addon_allowed.appDisabled);
- do_check_true(addon_allowed.isActive);
- do_check_eq(addon_allowed.type, "extension");
-
- // restarting changes nothing
- yield promiseRestartManager();
-
- let addon_upgraded = yield promiseAddonByID(COMPLETE_ID);
- do_check_neq(addon_upgraded, null);
- do_check_eq(addon_upgraded.version, "2.0");
- do_check_eq(addon_upgraded.name, "System Test Delay Update Complete");
- do_check_true(addon_upgraded.isCompatible);
- do_check_false(addon_upgraded.appDisabled);
- do_check_true(addon_upgraded.isActive);
- do_check_eq(addon_upgraded.type, "extension");
-
- addon_upgraded = yield promiseAddonByID(NORMAL_ID);
- do_check_neq(addon_upgraded, null);
- do_check_eq(addon_upgraded.version, "2.0");
- do_check_eq(addon_upgraded.name, "System Add-on 1");
- do_check_true(addon_upgraded.isCompatible);
- do_check_false(addon_upgraded.appDisabled);
- do_check_true(addon_upgraded.isActive);
- do_check_eq(addon_upgraded.type, "extension");
-
- yield shutdownManager();
-});
-
-// add-on registers upgrade listener, initially defers update then allows upgrade
-add_task(function*() {
- // discard system addon updates
- Services.prefs.setCharPref(PREF_SYSTEM_ADDON_SET, "");
-
- do_get_file("data/system_addons/system_delay_defer.xpi").copyTo(distroDir, "system_delay_defer@tests.mozilla.org.xpi");
- do_get_file("data/system_addons/system1_1.xpi").copyTo(distroDir, "system1@tests.mozilla.org.xpi");
-
- startupManager();
-
- let updateList = [
- { id: DEFER_ID, version: "2.0", path: "system_delay_defer_2.xpi" },
- { id: NORMAL_ID, version: "2.0", path: "system1_2.xpi" },
- ];
-
- let postponed = promiseInstallPostponed(DEFER_ID, NORMAL_ID);
- yield installSystemAddons(yield buildSystemAddonUpdates(updateList, root), testserver);
- yield postponed;
-
- // upgrade is initially postponed
- let addon_postponed = yield promiseAddonByID(DEFER_ID);
- do_check_neq(addon_postponed, null);
- do_check_eq(addon_postponed.version, "1.0");
- do_check_eq(addon_postponed.name, "System Test Delay Update Defer");
- do_check_true(addon_postponed.isCompatible);
- do_check_false(addon_postponed.appDisabled);
- do_check_true(addon_postponed.isActive);
- do_check_eq(addon_postponed.type, "extension");
-
- // other addons in the set are postponed as well.
- addon_postponed = yield promiseAddonByID(NORMAL_ID);
- do_check_neq(addon_postponed, null);
- do_check_eq(addon_postponed.version, "1.0");
- do_check_eq(addon_postponed.name, "System Add-on 1");
- do_check_true(addon_postponed.isCompatible);
- do_check_false(addon_postponed.appDisabled);
- do_check_true(addon_postponed.isActive);
- do_check_eq(addon_postponed.type, "extension");
-
- let deferred = promiseInstallDeferred(DEFER_ID, NORMAL_ID);
- // add-on will not allow upgrade until fake event fires
- AddonManagerPrivate.callAddonListeners("onFakeEvent");
-
- yield deferred;
-
- // addon upgrade has been allowed
- let addon_allowed = yield promiseAddonByID(DEFER_ID);
- do_check_neq(addon_allowed, null);
- do_check_eq(addon_allowed.version, "2.0");
- do_check_eq(addon_allowed.name, "System Test Delay Update Defer");
- do_check_true(addon_allowed.isCompatible);
- do_check_false(addon_allowed.appDisabled);
- do_check_true(addon_allowed.isActive);
- do_check_eq(addon_allowed.type, "extension");
-
- // other addons in the set are allowed as well.
- addon_allowed = yield promiseAddonByID(NORMAL_ID);
- do_check_neq(addon_allowed, null);
- do_check_eq(addon_allowed.version, "2.0");
- do_check_eq(addon_allowed.name, "System Add-on 1");
- do_check_true(addon_allowed.isCompatible);
- do_check_false(addon_allowed.appDisabled);
- do_check_true(addon_allowed.isActive);
- do_check_eq(addon_allowed.type, "extension");
-
- // restarting changes nothing
- yield promiseRestartManager();
-
- let addon_upgraded = yield promiseAddonByID(DEFER_ID);
- do_check_neq(addon_upgraded, null);
- do_check_eq(addon_upgraded.version, "2.0");
- do_check_eq(addon_upgraded.name, "System Test Delay Update Defer");
- do_check_true(addon_upgraded.isCompatible);
- do_check_false(addon_upgraded.appDisabled);
- do_check_true(addon_upgraded.isActive);
- do_check_eq(addon_upgraded.type, "extension");
-
- addon_upgraded = yield promiseAddonByID(NORMAL_ID);
- do_check_neq(addon_upgraded, null);
- do_check_eq(addon_upgraded.version, "2.0");
- do_check_eq(addon_upgraded.name, "System Add-on 1");
- do_check_true(addon_upgraded.isCompatible);
- do_check_false(addon_upgraded.appDisabled);
- do_check_true(addon_upgraded.isActive);
- do_check_eq(addon_upgraded.type, "extension");
-
- yield shutdownManager();
-});
-
-// multiple add-ons registers upgrade listeners, initially defers then each unblock in turn.
-add_task(function*() {
- // discard system addon updates.
- Services.prefs.setCharPref(PREF_SYSTEM_ADDON_SET, "");
-
- do_get_file("data/system_addons/system_delay_defer.xpi").copyTo(distroDir, "system_delay_defer@tests.mozilla.org.xpi");
- do_get_file("data/system_addons/system_delay_defer_also.xpi").copyTo(distroDir, "system_delay_defer_also@tests.mozilla.org.xpi");
-
- startupManager();
-
- let updateList = [
- { id: DEFER_ID, version: "2.0", path: "system_delay_defer_2.xpi" },
- { id: DEFER_ALSO_ID, version: "2.0", path: "system_delay_defer_also_2.xpi" },
- ];
-
- let postponed = promiseInstallPostponed(DEFER_ID, DEFER_ALSO_ID);
- yield installSystemAddons(yield buildSystemAddonUpdates(updateList, root), testserver);
- yield postponed;
-
- // upgrade is initially postponed
- let addon_postponed = yield promiseAddonByID(DEFER_ID);
- do_check_neq(addon_postponed, null);
- do_check_eq(addon_postponed.version, "1.0");
- do_check_eq(addon_postponed.name, "System Test Delay Update Defer");
- do_check_true(addon_postponed.isCompatible);
- do_check_false(addon_postponed.appDisabled);
- do_check_true(addon_postponed.isActive);
- do_check_eq(addon_postponed.type, "extension");
-
- // other addons in the set are postponed as well.
- addon_postponed = yield promiseAddonByID(DEFER_ALSO_ID);
- do_check_neq(addon_postponed, null);
- do_check_eq(addon_postponed.version, "1.0");
- do_check_eq(addon_postponed.name, "System Test Delay Update Defer Also");
- do_check_true(addon_postponed.isCompatible);
- do_check_false(addon_postponed.appDisabled);
- do_check_true(addon_postponed.isActive);
- do_check_eq(addon_postponed.type, "extension");
-
- let deferred = promiseInstallDeferred(DEFER_ID, DEFER_ALSO_ID);
- // add-on will not allow upgrade until fake event fires
- AddonManagerPrivate.callAddonListeners("onFakeEvent");
-
- // Upgrade blockers still present.
- addon_postponed = yield promiseAddonByID(DEFER_ID);
- do_check_neq(addon_postponed, null);
- do_check_eq(addon_postponed.version, "1.0");
- do_check_eq(addon_postponed.name, "System Test Delay Update Defer");
- do_check_true(addon_postponed.isCompatible);
- do_check_false(addon_postponed.appDisabled);
- do_check_true(addon_postponed.isActive);
- do_check_eq(addon_postponed.type, "extension");
-
- addon_postponed = yield promiseAddonByID(DEFER_ALSO_ID);
- do_check_neq(addon_postponed, null);
- do_check_eq(addon_postponed.version, "1.0");
- do_check_eq(addon_postponed.name, "System Test Delay Update Defer Also");
- do_check_true(addon_postponed.isCompatible);
- do_check_false(addon_postponed.appDisabled);
- do_check_true(addon_postponed.isActive);
- do_check_eq(addon_postponed.type, "extension");
-
- AddonManagerPrivate.callAddonListeners("onOtherFakeEvent");
-
- yield deferred;
-
- // addon upgrade has been allowed
- let addon_allowed = yield promiseAddonByID(DEFER_ID);
- do_check_neq(addon_allowed, null);
- do_check_eq(addon_allowed.version, "2.0");
- do_check_eq(addon_allowed.name, "System Test Delay Update Defer");
- do_check_true(addon_allowed.isCompatible);
- do_check_false(addon_allowed.appDisabled);
- do_check_true(addon_allowed.isActive);
- do_check_eq(addon_allowed.type, "extension");
-
- // other addons in the set are allowed as well.
- addon_allowed = yield promiseAddonByID(DEFER_ALSO_ID);
- do_check_neq(addon_allowed, null);
- // do_check_eq(addon_allowed.version, "2.0");
- do_check_eq(addon_allowed.name, "System Test Delay Update Defer Also");
- do_check_true(addon_allowed.isCompatible);
- do_check_false(addon_allowed.appDisabled);
- do_check_true(addon_allowed.isActive);
- do_check_eq(addon_allowed.type, "extension");
-
- // restarting changes nothing
- yield promiseRestartManager();
-
- let addon_upgraded = yield promiseAddonByID(DEFER_ID);
- do_check_neq(addon_upgraded, null);
- do_check_eq(addon_upgraded.version, "2.0");
- do_check_eq(addon_upgraded.name, "System Test Delay Update Defer");
- do_check_true(addon_upgraded.isCompatible);
- do_check_false(addon_upgraded.appDisabled);
- do_check_true(addon_upgraded.isActive);
- do_check_eq(addon_upgraded.type, "extension");
-
- addon_upgraded = yield promiseAddonByID(DEFER_ALSO_ID);
- do_check_neq(addon_upgraded, null);
- do_check_eq(addon_upgraded.version, "2.0");
- do_check_eq(addon_upgraded.name, "System Test Delay Update Defer Also");
- do_check_true(addon_upgraded.isCompatible);
- do_check_false(addon_upgraded.appDisabled);
- do_check_true(addon_upgraded.isActive);
- do_check_eq(addon_upgraded.type, "extension");
-
- yield shutdownManager();
-});