summaryrefslogtreecommitdiffstats
path: root/toolkit/mozapps/webextensions/test/xpcshell/test_system_reset.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/mozapps/webextensions/test/xpcshell/test_system_reset.js')
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/test_system_reset.js418
1 files changed, 0 insertions, 418 deletions
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_system_reset.js b/toolkit/mozapps/webextensions/test/xpcshell/test_system_reset.js
deleted file mode 100644
index 31b7e5783..000000000
--- a/toolkit/mozapps/webextensions/test/xpcshell/test_system_reset.js
+++ /dev/null
@@ -1,418 +0,0 @@
-// Tests that we reset to the default system add-ons correctly when switching
-// application versions
-const PREF_SYSTEM_ADDON_SET = "extensions.systemAddonSet";
-
-BootstrapMonitor.init();
-
-const updatesDir = FileUtils.getDir("ProfD", ["features"]);
-
-// Build the test sets
-var dir = FileUtils.getDir("ProfD", ["sysfeatures", "app1"], true);
-do_get_file("data/system_addons/system1_1.xpi").copyTo(dir, "system1@tests.mozilla.org.xpi");
-do_get_file("data/system_addons/system2_1.xpi").copyTo(dir, "system2@tests.mozilla.org.xpi");
-
-dir = FileUtils.getDir("ProfD", ["sysfeatures", "app2"], true);
-do_get_file("data/system_addons/system1_2.xpi").copyTo(dir, "system1@tests.mozilla.org.xpi");
-do_get_file("data/system_addons/system3_1.xpi").copyTo(dir, "system3@tests.mozilla.org.xpi");
-
-dir = FileUtils.getDir("ProfD", ["sysfeatures", "app3"], true);
-do_get_file("data/system_addons/system1_1_badcert.xpi").copyTo(dir, "system1@tests.mozilla.org.xpi");
-do_get_file("data/system_addons/system3_1.xpi").copyTo(dir, "system3@tests.mozilla.org.xpi");
-
-const distroDir = FileUtils.getDir("ProfD", ["sysfeatures", "app0"], true);
-registerDirectory("XREAppFeat", distroDir);
-
-createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "0");
-
-function makeUUID() {
- let uuidGen = AM_Cc["@mozilla.org/uuid-generator;1"].
- getService(AM_Ci.nsIUUIDGenerator);
- return uuidGen.generateUUID().toString();
-}
-
-function* check_installed(conditions) {
- for (let i = 0; i < conditions.length; i++) {
- let condition = conditions[i];
- let id = "system" + (i + 1) + "@tests.mozilla.org";
- let addon = yield promiseAddonByID(id);
-
- if (!("isUpgrade" in condition) || !("version" in condition)) {
- throw Error("condition must contain isUpgrade and version");
- }
- let isUpgrade = conditions[i].isUpgrade;
- let version = conditions[i].version;
-
- let expectedDir = isUpgrade ? updatesDir : distroDir;
-
- if (version) {
- // Add-on should be installed
- do_check_neq(addon, null);
- do_check_eq(addon.version, version);
- do_check_true(addon.isActive);
- do_check_false(addon.foreignInstall);
- do_check_true(addon.hidden);
- do_check_true(addon.isSystem);
- do_check_false(hasFlag(addon.permissions, AddonManager.PERM_CAN_UPGRADE));
- if (isUpgrade) {
- do_check_true(hasFlag(addon.permissions, AddonManager.PERM_CAN_UNINSTALL));
- } else {
- do_check_false(hasFlag(addon.permissions, AddonManager.PERM_CAN_UNINSTALL));
- }
-
- // Verify the add-ons file is in the right place
- let file = expectedDir.clone();
- file.append(id + ".xpi");
- do_check_true(file.exists());
- do_check_true(file.isFile());
-
- let uri = addon.getResourceURI(null);
- do_check_true(uri instanceof AM_Ci.nsIFileURL);
- do_check_eq(uri.file.path, file.path);
-
- if (isUpgrade) {
- do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_SYSTEM);
- }
-
- // Verify the add-on actually started
- BootstrapMonitor.checkAddonStarted(id, version);
- }
- else {
- if (isUpgrade) {
- // Add-on should not be installed
- do_check_eq(addon, null);
- }
- else {
- // Either add-on should not be installed or it shouldn't be active
- do_check_true(!addon || !addon.isActive);
- }
-
- BootstrapMonitor.checkAddonNotStarted(id);
-
- if (addon)
- BootstrapMonitor.checkAddonInstalled(id);
- else
- BootstrapMonitor.checkAddonNotInstalled(id);
- }
- }
-}
-
-// Test with a missing features directory
-add_task(function* test_missing_app_dir() {
- startupManager();
-
- let conditions = [
- { isUpgrade: false, version: null },
- { isUpgrade: false, version: null },
- { isUpgrade: false, version: null },
- ];
-
- yield check_installed(conditions);
-
- do_check_false(updatesDir.exists());
-
- yield promiseShutdownManager();
-});
-
-// Add some features in a new version
-add_task(function* test_new_version() {
- gAppInfo.version = "1";
- distroDir.leafName = "app1";
- startupManager();
-
- let conditions = [
- { isUpgrade: false, version: "1.0" },
- { isUpgrade: false, version: "1.0" },
- { isUpgrade: false, version: null },
- ];
-
- yield check_installed(conditions);
-
- do_check_false(updatesDir.exists());
-
- yield promiseShutdownManager();
-});
-
-// Another new version swaps one feature and upgrades another
-add_task(function* test_upgrade() {
- gAppInfo.version = "2";
- distroDir.leafName = "app2";
- startupManager();
-
- let conditions = [
- { isUpgrade: false, version: "2.0" },
- { isUpgrade: false, version: null },
- { isUpgrade: false, version: "1.0" },
- ];
-
- yield check_installed(conditions);
-
- do_check_false(updatesDir.exists());
-
- yield promiseShutdownManager();
-});
-
-// Downgrade
-add_task(function* test_downgrade() {
- gAppInfo.version = "1";
- distroDir.leafName = "app1";
- startupManager();
-
- let conditions = [
- { isUpgrade: false, version: "1.0" },
- { isUpgrade: false, version: "1.0" },
- { isUpgrade: false, version: null },
- ];
-
- yield check_installed(conditions);
-
- do_check_false(updatesDir.exists());
-
- yield promiseShutdownManager();
-});
-
-// Fake a mid-cycle install
-add_task(function* test_updated() {
- // Create a random dir to install into
- let dirname = makeUUID();
- FileUtils.getDir("ProfD", ["features", dirname], true);
- updatesDir.append(dirname);
-
- // Copy in the system add-ons
- let file = do_get_file("data/system_addons/system2_2.xpi");
- file.copyTo(updatesDir, "system2@tests.mozilla.org.xpi");
- file = do_get_file("data/system_addons/system3_2.xpi");
- file.copyTo(updatesDir, "system3@tests.mozilla.org.xpi");
-
- // Inject it into the system set
- let addonSet = {
- schema: 1,
- directory: updatesDir.leafName,
- addons: {
- "system2@tests.mozilla.org": {
- version: "2.0"
- },
- "system3@tests.mozilla.org": {
- version: "2.0"
- },
- }
- };
- Services.prefs.setCharPref(PREF_SYSTEM_ADDON_SET, JSON.stringify(addonSet));
-
- startupManager(false);
-
- let conditions = [
- { isUpgrade: false, version: "1.0" },
- { isUpgrade: true, version: "2.0" },
- { isUpgrade: true, version: "2.0" },
- ];
-
- yield check_installed(conditions);
-
- yield promiseShutdownManager();
-});
-
-// Entering safe mode should disable the updated system add-ons and use the
-// default system add-ons
-add_task(function* safe_mode_disabled() {
- gAppInfo.inSafeMode = true;
- startupManager(false);
-
- let conditions = [
- { isUpgrade: false, version: "1.0" },
- { isUpgrade: false, version: "1.0" },
- { isUpgrade: false, version: null },
- ];
-
- yield check_installed(conditions);
-
- yield promiseShutdownManager();
-});
-
-// Leaving safe mode should re-enable the updated system add-ons
-add_task(function* normal_mode_enabled() {
- gAppInfo.inSafeMode = false;
- startupManager(false);
-
- let conditions = [
- { isUpgrade: false, version: "1.0" },
- { isUpgrade: true, version: "2.0" },
- { isUpgrade: true, version: "2.0" },
- ];
-
- yield check_installed(conditions);
-
- yield promiseShutdownManager();
-});
-
-// An additional add-on in the directory should be ignored
-add_task(function* test_skips_additional() {
- // Copy in the system add-ons
- let file = do_get_file("data/system_addons/system4_1.xpi");
- file.copyTo(updatesDir, "system4@tests.mozilla.org.xpi");
-
- startupManager(false);
-
- let conditions = [
- { isUpgrade: false, version: "1.0" },
- { isUpgrade: true, version: "2.0" },
- { isUpgrade: true, version: "2.0" },
- ];
-
- yield check_installed(conditions);
-
- yield promiseShutdownManager();
-});
-
-// Missing add-on should revert to the default set
-add_task(function* test_revert() {
- manuallyUninstall(updatesDir, "system2@tests.mozilla.org");
-
- // With the add-on physically gone from disk we won't see uninstall events
- BootstrapMonitor.clear("system2@tests.mozilla.org");
-
- startupManager(false);
-
- // With system add-on 2 gone the updated set is now invalid so it reverts to
- // the default set which is system add-ons 1 and 2.
- let conditions = [
- { isUpgrade: false, version: "1.0" },
- { isUpgrade: false, version: "1.0" },
- { isUpgrade: false, version: null },
- ];
-
- yield check_installed(conditions);
-
- yield promiseShutdownManager();
-});
-
-// Putting it back will make the set work again
-add_task(function* test_reuse() {
- let file = do_get_file("data/system_addons/system2_2.xpi");
- file.copyTo(updatesDir, "system2@tests.mozilla.org.xpi");
-
- startupManager(false);
-
- let conditions = [
- { isUpgrade: false, version: "1.0" },
- { isUpgrade: true, version: "2.0" },
- { isUpgrade: true, version: "2.0" },
- ];
-
- yield check_installed(conditions);
-
- yield promiseShutdownManager();
-});
-
-// Making the pref corrupt should revert to the default set
-add_task(function* test_corrupt_pref() {
- Services.prefs.setCharPref(PREF_SYSTEM_ADDON_SET, "foo");
-
- startupManager(false);
-
- let conditions = [
- { isUpgrade: false, version: "1.0" },
- { isUpgrade: false, version: "1.0" },
- { isUpgrade: false, version: null },
- ];
-
- yield check_installed(conditions);
-
- yield promiseShutdownManager();
-});
-
-// An add-on with a bad certificate should cause us to use the default set
-add_task(function* test_bad_profile_cert() {
- let file = do_get_file("data/system_addons/system1_1_badcert.xpi");
- file.copyTo(updatesDir, "system1@tests.mozilla.org.xpi");
-
- // Inject it into the system set
- let addonSet = {
- schema: 1,
- directory: updatesDir.leafName,
- addons: {
- "system1@tests.mozilla.org": {
- version: "2.0"
- },
- "system2@tests.mozilla.org": {
- version: "1.0"
- },
- "system3@tests.mozilla.org": {
- version: "1.0"
- },
- }
- };
- Services.prefs.setCharPref(PREF_SYSTEM_ADDON_SET, JSON.stringify(addonSet));
-
- startupManager(false);
-
- let conditions = [
- { isUpgrade: false, version: "1.0" },
- { isUpgrade: false, version: "1.0" },
- { isUpgrade: false, version: null },
- ];
-
- yield check_installed(conditions);
-
- yield promiseShutdownManager();
-});
-
-// Switching to app defaults that contain a bad certificate should still work
-add_task(function* test_bad_app_cert() {
- gAppInfo.version = "3";
- distroDir.leafName = "app3";
- startupManager();
-
- // Add-on will still be present
- let addon = yield promiseAddonByID("system1@tests.mozilla.org");
- do_check_neq(addon, null);
- do_check_eq(addon.signedState, AddonManager.SIGNEDSTATE_NOT_REQUIRED);
-
- let conditions = [
- { isUpgrade: false, version: "1.0" },
- { isUpgrade: false, version: null },
- { isUpgrade: false, version: "1.0" },
- ];
-
- yield check_installed(conditions);
-
- yield promiseShutdownManager();
-});
-
-// A failed upgrade should revert to the default set.
-add_task(function* test_updated() {
- // Create a random dir to install into
- let dirname = makeUUID();
- FileUtils.getDir("ProfD", ["features", dirname], true);
- updatesDir.append(dirname);
-
- // Copy in the system add-ons
- let file = do_get_file("data/system_addons/system2_2.xpi");
- file.copyTo(updatesDir, "system2@tests.mozilla.org.xpi");
- file = do_get_file("data/system_addons/system_failed_update.xpi");
- file.copyTo(updatesDir, "system_failed_update@tests.mozilla.org.xpi");
-
- // Inject it into the system set
- let addonSet = {
- schema: 1,
- directory: updatesDir.leafName,
- addons: {
- "system2@tests.mozilla.org": {
- version: "2.0"
- },
- "system_failed_update@tests.mozilla.org": {
- version: "1.0"
- },
- }
- };
- Services.prefs.setCharPref(PREF_SYSTEM_ADDON_SET, JSON.stringify(addonSet));
-
- startupManager(false);
-
- let conditions = [
- { isUpgrade: false, version: "1.0" },
- ];
-
- yield check_installed(conditions);
-
- yield promiseShutdownManager();
-});