diff options
Diffstat (limited to 'toolkit/mozapps/extensions/test/xpcshell/test_blocklistchange.js')
-rw-r--r-- | toolkit/mozapps/extensions/test/xpcshell/test_blocklistchange.js | 1321 |
1 files changed, 0 insertions, 1321 deletions
diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_blocklistchange.js b/toolkit/mozapps/extensions/test/xpcshell/test_blocklistchange.js deleted file mode 100644 index 46f939943..000000000 --- a/toolkit/mozapps/extensions/test/xpcshell/test_blocklistchange.js +++ /dev/null @@ -1,1321 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// Checks that changes that cause an add-on to become unblocked or blocked have -// the right effect - -// The tests follow a mostly common pattern. First they start with the add-ons -// unblocked, then they make a change that causes the add-ons to become blocked -// then they make a similar change that keeps the add-ons blocked then they make -// a change that unblocks the add-ons. Some tests skip the initial part and -// start with add-ons detected as blocked. - -// softblock1 is enabled/disabled by the blocklist changes so its softDisabled -// property should always match its userDisabled property - -// softblock2 gets manually enabled then disabled after it becomes blocked so -// its softDisabled property should never become true after that - -// softblock3 does the same as softblock2 however it remains disabled - -// softblock4 is disabled while unblocked and so should never have softDisabled -// set to true and stay userDisabled. This add-on is not used in tests that -// start with add-ons blocked as it would be identical to softblock3 - -// softblock5 is a theme. Currently themes just get disabled when they become -// softblocked and have to be manually re-enabled if they become completely -// unblocked (bug 657520) - -const Cc = Components.classes; -const Ci = Components.interfaces; -const Cu = Components.utils; -const Cr = Components.results; - -const URI_EXTENSION_BLOCKLIST_DIALOG = "chrome://mozapps/content/extensions/blocklist.xul"; - -Cu.import("resource://gre/modules/NetUtil.jsm"); - -// Allow insecure updates -Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false) - -Cu.import("resource://testing-common/httpd.js"); -var testserver = new HttpServer(); -testserver.start(-1); -gPort = testserver.identity.primaryPort; - -// register static files with server and interpolate port numbers in them -mapFile("/data/blocklistchange/addon_update1.rdf", testserver); -mapFile("/data/blocklistchange/addon_update2.rdf", testserver); -mapFile("/data/blocklistchange/addon_update3.rdf", testserver); -mapFile("/data/blocklistchange/addon_change.xml", testserver); -mapFile("/data/blocklistchange/app_update.xml", testserver); -mapFile("/data/blocklistchange/blocklist_update1.xml", testserver); -mapFile("/data/blocklistchange/blocklist_update2.xml", testserver); -mapFile("/data/blocklistchange/manual_update.xml", testserver); - -testserver.registerDirectory("/addons/", do_get_file("addons")); - - -var default_theme = { - id: "default@tests.mozilla.org", - version: "1.0", - name: "Softblocked add-on", - internalName: "classic/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock1_1 = { - id: "softblock1@tests.mozilla.org", - version: "1.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update1.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock1_2 = { - id: "softblock1@tests.mozilla.org", - version: "2.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update2.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock1_3 = { - id: "softblock1@tests.mozilla.org", - version: "3.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update3.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock2_1 = { - id: "softblock2@tests.mozilla.org", - version: "1.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update1.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock2_2 = { - id: "softblock2@tests.mozilla.org", - version: "2.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update2.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock2_3 = { - id: "softblock2@tests.mozilla.org", - version: "3.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update3.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock3_1 = { - id: "softblock3@tests.mozilla.org", - version: "1.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update1.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock3_2 = { - id: "softblock3@tests.mozilla.org", - version: "2.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update2.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock3_3 = { - id: "softblock3@tests.mozilla.org", - version: "3.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update3.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock4_1 = { - id: "softblock4@tests.mozilla.org", - version: "1.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update1.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock4_2 = { - id: "softblock4@tests.mozilla.org", - version: "2.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update2.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock4_3 = { - id: "softblock4@tests.mozilla.org", - version: "3.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update3.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock5_1 = { - id: "softblock5@tests.mozilla.org", - version: "1.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update1.rdf", - internalName: "test/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock5_2 = { - id: "softblock5@tests.mozilla.org", - version: "2.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update2.rdf", - internalName: "test/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var softblock5_3 = { - id: "softblock5@tests.mozilla.org", - version: "3.0", - name: "Softblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update3.rdf", - internalName: "test/1.0", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var hardblock_1 = { - id: "hardblock@tests.mozilla.org", - version: "1.0", - name: "Hardblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update1.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var hardblock_2 = { - id: "hardblock@tests.mozilla.org", - version: "2.0", - name: "Hardblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update2.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var hardblock_3 = { - id: "hardblock@tests.mozilla.org", - version: "3.0", - name: "Hardblocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update3.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var regexpblock_1 = { - id: "regexpblock@tests.mozilla.org", - version: "1.0", - name: "RegExp-blocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update1.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var regexpblock_2 = { - id: "regexpblock@tests.mozilla.org", - version: "2.0", - name: "RegExp-blocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update2.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -var regexpblock_3 = { - id: "regexpblock@tests.mozilla.org", - version: "3.0", - name: "RegExp-blocked add-on", - updateURL: "http://localhost:" + gPort + "/data/blocklistchange/addon_update3.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "3" - }] -}; - -const ADDON_IDS = ["softblock1@tests.mozilla.org", - "softblock2@tests.mozilla.org", - "softblock3@tests.mozilla.org", - "softblock4@tests.mozilla.org", - "softblock5@tests.mozilla.org", - "hardblock@tests.mozilla.org", - "regexpblock@tests.mozilla.org"]; - -// Don't need the full interface, attempts to call other methods will just -// throw which is just fine -var WindowWatcher = { - openWindow: function(parent, url, name, features, openArgs) { - // Should be called to list the newly blocklisted items - do_check_eq(url, URI_EXTENSION_BLOCKLIST_DIALOG); - - // Simulate auto-disabling any softblocks - var list = openArgs.wrappedJSObject.list; - list.forEach(function(aItem) { - if (!aItem.blocked) - aItem.disable = true; - }); - - //run the code after the blocklist is closed - Services.obs.notifyObservers(null, "addon-blocklist-closed", null); - - }, - - QueryInterface: function(iid) { - if (iid.equals(Ci.nsIWindowWatcher) - || iid.equals(Ci.nsISupports)) - return this; - - throw Cr.NS_ERROR_NO_INTERFACE; - } -}; - -var WindowWatcherFactory = { - createInstance: function createInstance(outer, iid) { - if (outer != null) - throw Components.results.NS_ERROR_NO_AGGREGATION; - return WindowWatcher.QueryInterface(iid); - } -}; - -var InstallConfirm = { - confirm: function(aWindow, aUrl, aInstalls, aInstallCount) { - aInstalls.forEach(function(aInstall) { - aInstall.install(); - }); - }, - - QueryInterface: function(iid) { - if (iid.equals(Ci.amIWebInstallPrompt) - || iid.equals(Ci.nsISupports)) - return this; - - throw Cr.NS_ERROR_NO_INTERFACE; - } -}; - -var InstallConfirmFactory = { - createInstance: function createInstance(outer, iid) { - if (outer != null) - throw Components.results.NS_ERROR_NO_AGGREGATION; - return InstallConfirm.QueryInterface(iid); - } -}; - -var registrar = Components.manager.QueryInterface(Components.interfaces.nsIComponentRegistrar); -registrar.registerFactory(Components.ID("{1dfeb90a-2193-45d5-9cb8-864928b2af55}"), - "Fake Window Watcher", - "@mozilla.org/embedcomp/window-watcher;1", WindowWatcherFactory); -registrar.registerFactory(Components.ID("{f0863905-4dde-42e2-991c-2dc8209bc9ca}"), - "Fake Install Prompt", - "@mozilla.org/addons/web-install-prompt;1", InstallConfirmFactory); - -const profileDir = gProfD.clone(); -profileDir.append("extensions"); - -function Pload_blocklist(aFile) { - let blocklist_updated = new Promise((resolve, reject) => { - Services.obs.addObserver(function() { - Services.obs.removeObserver(arguments.callee, "blocklist-updated"); - - resolve(); - }, "blocklist-updated", false); - }); - - Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + gPort + "/data/blocklistchange/" + aFile); - var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. - getService(Ci.nsITimerCallback); - blocklist.notify(null); - return blocklist_updated; -} - -// Does a background update check for add-ons and returns a promise that -// resolves when any started installs complete -function Pbackground_update() { - var installCount = 0; - var backgroundCheckCompleted = false; - - let updated = new Promise((resolve, reject) => { - AddonManager.addInstallListener({ - onNewInstall: function(aInstall) { - installCount++; - }, - - onInstallEnded: function(aInstall) { - installCount--; - // Wait until all started installs have completed - if (installCount) - return; - - AddonManager.removeInstallListener(this); - - // If the background check hasn't yet completed then let that call the - // callback when it is done - if (!backgroundCheckCompleted) - return; - - resolve(); - } - }) - - Services.obs.addObserver(function() { - Services.obs.removeObserver(arguments.callee, "addons-background-update-complete"); - backgroundCheckCompleted = true; - - // If any new installs have started then we'll call the callback once they - // are completed - if (installCount) - return; - - resolve(); - }, "addons-background-update-complete", false); - }); - - AddonManagerPrivate.backgroundUpdateCheck(); - return updated; -} - -// Manually updates the test add-ons to the given version -function Pmanual_update(aVersion) { - let Pinstalls = []; - for (let name of ["soft1", "soft2", "soft3", "soft4", "soft5", "hard1", "regexp1"]) { - Pinstalls.push(new Promise((resolve, reject) => { - AddonManager.getInstallForURL("http://localhost:" + gPort + "/addons/blocklist_" - + name + "_" + aVersion + ".xpi", - resolve, "application/x-xpinstall"); - })); - } - - return Promise.all(Pinstalls).then(installs => { - let completePromises = []; - for (let install of installs) { - completePromises.push(new Promise(resolve => { - install.addListener({ - onDownloadCancelled: resolve, - onInstallEnded: resolve - }) - })); - } - - // Use the default web installer to cancel/allow installs based on whether - // the add-on is valid or not. - let webInstaller = Cc["@mozilla.org/addons/web-install-listener;1"] - .getService(Ci.amIWebInstallListener); - webInstaller.onWebInstallRequested(null, null, installs, installs.length); - - return Promise.all(completePromises); - }); -} - -// Checks that an add-ons properties match expected values -function check_addon(aAddon, aExpectedVersion, aExpectedUserDisabled, - aExpectedSoftDisabled, aExpectedState) { - do_check_neq(aAddon, null); - do_print("Testing " + aAddon.id + " version " + aAddon.version + " user " - + aAddon.userDisabled + " soft " + aAddon.softDisabled - + " perms " + aAddon.permissions); - - do_check_eq(aAddon.version, aExpectedVersion); - do_check_eq(aAddon.blocklistState, aExpectedState); - do_check_eq(aAddon.userDisabled, aExpectedUserDisabled); - do_check_eq(aAddon.softDisabled, aExpectedSoftDisabled); - if (aAddon.softDisabled) - do_check_true(aAddon.userDisabled); - - if (aExpectedState == Ci.nsIBlocklistService.STATE_BLOCKED) { - do_print("blocked, PERM_CAN_ENABLE " + aAddon.id); - do_check_false(hasFlag(aAddon.permissions, AddonManager.PERM_CAN_ENABLE)); - do_print("blocked, PERM_CAN_DISABLE " + aAddon.id); - do_check_false(hasFlag(aAddon.permissions, AddonManager.PERM_CAN_DISABLE)); - } - else if (aAddon.userDisabled) { - do_print("userDisabled, PERM_CAN_ENABLE " + aAddon.id); - do_check_true(hasFlag(aAddon.permissions, AddonManager.PERM_CAN_ENABLE)); - do_print("userDisabled, PERM_CAN_DISABLE " + aAddon.id); - do_check_false(hasFlag(aAddon.permissions, AddonManager.PERM_CAN_DISABLE)); - } - else { - do_print("other, PERM_CAN_ENABLE " + aAddon.id); - do_check_false(hasFlag(aAddon.permissions, AddonManager.PERM_CAN_ENABLE)); - if (aAddon.type != "theme") { - do_print("other, PERM_CAN_DISABLE " + aAddon.id); - do_check_true(hasFlag(aAddon.permissions, AddonManager.PERM_CAN_DISABLE)); - } - } - do_check_eq(aAddon.appDisabled, aExpectedState == Ci.nsIBlocklistService.STATE_BLOCKED); - - let willBeActive = aAddon.isActive; - if (hasFlag(aAddon.pendingOperations, AddonManager.PENDING_DISABLE)) - willBeActive = false; - else if (hasFlag(aAddon.pendingOperations, AddonManager.PENDING_ENABLE)) - willBeActive = true; - - if (aExpectedUserDisabled || aExpectedState == Ci.nsIBlocklistService.STATE_BLOCKED) { - do_check_false(willBeActive); - } - else { - do_check_true(willBeActive); - } -} - -function run_test() { - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1"); - run_next_test(); -} - -add_task(function* init() { - writeInstallRDFForExtension(default_theme, profileDir); - writeInstallRDFForExtension(softblock1_1, profileDir); - writeInstallRDFForExtension(softblock2_1, profileDir); - writeInstallRDFForExtension(softblock3_1, profileDir); - writeInstallRDFForExtension(softblock4_1, profileDir); - writeInstallRDFForExtension(softblock5_1, profileDir); - writeInstallRDFForExtension(hardblock_1, profileDir); - writeInstallRDFForExtension(regexpblock_1, profileDir); - startupManager(); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - s4.userDisabled = true; - s5.userDisabled = false; -}); - -// Starts with add-ons unblocked and then switches application versions to -// change add-ons to blocked and back -add_task(function* run_app_update_test() { - do_print("Test: " + arguments.callee.name); - yield promiseRestartManager(); - yield Pload_blocklist("app_update.xml"); - yield promiseRestartManager(); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s5, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "test/1.0"); -}); - -add_task(function* app_update_step_2() { - yield promiseRestartManager("2"); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); - - s2.userDisabled = false; - s2.userDisabled = true; - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - s3.userDisabled = false; - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); -}); - -add_task(function* app_update_step_3() { - yield promiseRestartManager(); - - yield promiseRestartManager("2.5"); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); -}); - -add_task(function* app_update_step_4() { - yield promiseRestartManager("1"); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); - - s1.userDisabled = false; - s2.userDisabled = false; - s5.userDisabled = false; -}); - -// Starts with add-ons unblocked and then switches application versions to -// change add-ons to blocked and back. A DB schema change is faked to force a -// rebuild when the application version changes -add_task(function* run_app_update_schema_test() { - do_print("Test: " + arguments.callee.name); - yield promiseRestartManager(); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s5, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "test/1.0"); -}); - -add_task(function* update_schema_2() { - yield promiseShutdownManager(); - - changeXPIDBVersion(100); - gAppInfo.version = "2"; - startupManager(true); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); - - s2.userDisabled = false; - s2.userDisabled = true; - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - s3.userDisabled = false; - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); -}); - -add_task(function* update_schema_3() { - yield promiseRestartManager(); - - yield promiseShutdownManager(); - changeXPIDBVersion(100); - gAppInfo.version = "2.5"; - startupManager(true); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); -}); - -add_task(function* update_schema_4() { - yield promiseShutdownManager(); - - changeXPIDBVersion(100); - startupManager(false); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); -}); - -add_task(function* update_schema_5() { - yield promiseShutdownManager(); - - changeXPIDBVersion(100); - gAppInfo.version = "1"; - startupManager(true); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); - - s1.userDisabled = false; - s2.userDisabled = false; - s5.userDisabled = false; -}); - -// Starts with add-ons unblocked and then loads new blocklists to change add-ons -// to blocked and back again. -add_task(function* run_blocklist_update_test() { - do_print("Test: " + arguments.callee.name + "\n"); - yield Pload_blocklist("blocklist_update1.xml"); - yield promiseRestartManager(); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s5, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "test/1.0"); - - yield Pload_blocklist("blocklist_update2.xml"); - yield promiseRestartManager(); - - [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); - - s2.userDisabled = false; - s2.userDisabled = true; - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - s3.userDisabled = false; - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - - yield promiseRestartManager(); - - yield Pload_blocklist("blocklist_update2.xml"); - yield promiseRestartManager(); - - [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); - - yield Pload_blocklist("blocklist_update1.xml"); - yield promiseRestartManager(); - - [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); - - s1.userDisabled = false; - s2.userDisabled = false; - s5.userDisabled = false; -}); - -// Starts with add-ons unblocked and then new versions are installed outside of -// the app to change them to blocked and back again. -add_task(function* run_addon_change_test() { - do_print("Test: " + arguments.callee.name + "\n"); - yield Pload_blocklist("addon_change.xml"); - yield promiseRestartManager(); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s5, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "test/1.0"); -}); - -add_task(function* run_addon_change_2() { - yield promiseShutdownManager(); - - writeInstallRDFForExtension(softblock1_2, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock1_2.id), Date.now() + 10000); - writeInstallRDFForExtension(softblock2_2, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock2_2.id), Date.now() + 10000); - writeInstallRDFForExtension(softblock3_2, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock3_2.id), Date.now() + 10000); - writeInstallRDFForExtension(softblock4_2, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock4_2.id), Date.now() + 10000); - writeInstallRDFForExtension(softblock5_2, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock5_2.id), Date.now() + 10000); - writeInstallRDFForExtension(hardblock_2, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, hardblock_2.id), Date.now() + 10000); - writeInstallRDFForExtension(regexpblock_2, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, regexpblock_2.id), Date.now() + 10000); - - startupManager(false); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "2.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "2.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "2.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s4, "2.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s5, "2.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "2.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "2.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); - - s2.userDisabled = false; - s2.userDisabled = true; - check_addon(s2, "2.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - s3.userDisabled = false; - check_addon(s3, "2.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); -}); - -add_task(function* run_addon_change_3() { - yield promiseRestartManager(); - - yield promiseShutdownManager(); - - writeInstallRDFForExtension(softblock1_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock1_3.id), Date.now() + 20000); - writeInstallRDFForExtension(softblock2_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock2_3.id), Date.now() + 20000); - writeInstallRDFForExtension(softblock3_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock3_3.id), Date.now() + 20000); - writeInstallRDFForExtension(softblock4_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock4_3.id), Date.now() + 20000); - writeInstallRDFForExtension(softblock5_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock5_3.id), Date.now() + 20000); - writeInstallRDFForExtension(hardblock_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, hardblock_3.id), Date.now() + 20000); - writeInstallRDFForExtension(regexpblock_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, regexpblock_3.id), Date.now() + 20000); - - startupManager(false); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "3.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "3.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "3.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s4, "3.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s5, "3.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "3.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "3.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); -}); - -add_task(function* run_addon_change_4() { - yield promiseShutdownManager(); - - writeInstallRDFForExtension(softblock1_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock1_1.id), Date.now() + 30000); - writeInstallRDFForExtension(softblock2_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock2_1.id), Date.now() + 30000); - writeInstallRDFForExtension(softblock3_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock3_1.id), Date.now() + 30000); - writeInstallRDFForExtension(softblock4_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock4_1.id), Date.now() + 30000); - writeInstallRDFForExtension(softblock5_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock5_1.id), Date.now() + 30000); - writeInstallRDFForExtension(hardblock_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, hardblock_1.id), Date.now() + 30000); - writeInstallRDFForExtension(regexpblock_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, regexpblock_1.id), Date.now() + 30000); - - startupManager(false); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - do_check_eq(Services.prefs.getCharPref("general.skins.selectedSkin"), "classic/1.0"); - - s1.userDisabled = false; - s2.userDisabled = false; - s5.userDisabled = false; -}); - -// Starts with add-ons blocked and then new versions are installed outside of -// the app to change them to unblocked. -add_task(function* run_addon_change_2_test() { - do_print("Test: " + arguments.callee.name + "\n"); - yield promiseShutdownManager(); - - getFileForAddon(profileDir, softblock1_1.id).remove(true); - getFileForAddon(profileDir, softblock2_1.id).remove(true); - getFileForAddon(profileDir, softblock3_1.id).remove(true); - getFileForAddon(profileDir, softblock4_1.id).remove(true); - getFileForAddon(profileDir, softblock5_1.id).remove(true); - getFileForAddon(profileDir, hardblock_1.id).remove(true); - getFileForAddon(profileDir, regexpblock_1.id).remove(true); - - startupManager(false); - yield promiseShutdownManager(); - - writeInstallRDFForExtension(softblock1_2, profileDir); - writeInstallRDFForExtension(softblock2_2, profileDir); - writeInstallRDFForExtension(softblock3_2, profileDir); - writeInstallRDFForExtension(softblock4_2, profileDir); - writeInstallRDFForExtension(softblock5_2, profileDir); - writeInstallRDFForExtension(hardblock_2, profileDir); - writeInstallRDFForExtension(regexpblock_2, profileDir); - - startupManager(false); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "2.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "2.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "2.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "2.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "2.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - - s2.userDisabled = false; - s2.userDisabled = true; - check_addon(s2, "2.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - s3.userDisabled = false; - check_addon(s3, "2.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); -}); - -add_task(function* addon_change_2_test_2() { - yield promiseRestartManager(); - - yield promiseShutdownManager(); - - writeInstallRDFForExtension(softblock1_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock1_3.id), Date.now() + 10000); - writeInstallRDFForExtension(softblock2_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock2_3.id), Date.now() + 10000); - writeInstallRDFForExtension(softblock3_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock3_3.id), Date.now() + 10000); - writeInstallRDFForExtension(softblock4_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock4_3.id), Date.now() + 10000); - writeInstallRDFForExtension(softblock5_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock5_3.id), Date.now() + 10000); - writeInstallRDFForExtension(hardblock_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, hardblock_3.id), Date.now() + 10000); - writeInstallRDFForExtension(regexpblock_3, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, regexpblock_3.id), Date.now() + 10000); - - startupManager(false); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "3.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "3.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "3.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "3.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "3.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); -}); - -add_task(function* addon_change_2_test_3() { - yield promiseShutdownManager(); - - writeInstallRDFForExtension(softblock1_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock1_1.id), Date.now() + 20000); - writeInstallRDFForExtension(softblock2_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock2_1.id), Date.now() + 20000); - writeInstallRDFForExtension(softblock3_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock3_1.id), Date.now() + 20000); - writeInstallRDFForExtension(softblock4_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock4_1.id), Date.now() + 20000); - writeInstallRDFForExtension(softblock5_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, softblock5_1.id), Date.now() + 20000); - writeInstallRDFForExtension(hardblock_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, hardblock_1.id), Date.now() + 20000); - writeInstallRDFForExtension(regexpblock_1, profileDir); - setExtensionModifiedTime(getFileForAddon(profileDir, regexpblock_1.id), Date.now() + 20000); - - startupManager(false); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - - s1.userDisabled = false; - s2.userDisabled = false; - s4.userDisabled = true; - s5.userDisabled = false; -}); - -// Add-ons are initially unblocked then attempts to upgrade to blocked versions -// in the background which should fail -add_task(function* run_background_update_test() { - do_print("Test: " + arguments.callee.name + "\n"); - yield promiseRestartManager(); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s5, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - - yield Pbackground_update(); - yield promiseRestartManager(); - - [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s5, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); -}); - -// Starts with add-ons blocked and then new versions are detected and installed -// automatically for unblocked versions. -add_task(function* run_background_update_2_test() { - do_print("Test: " + arguments.callee.name + "\n"); - yield promiseShutdownManager(); - - getFileForAddon(profileDir, softblock1_1.id).remove(true); - getFileForAddon(profileDir, softblock2_1.id).remove(true); - getFileForAddon(profileDir, softblock3_1.id).remove(true); - getFileForAddon(profileDir, softblock4_1.id).remove(true); - getFileForAddon(profileDir, softblock5_1.id).remove(true); - getFileForAddon(profileDir, hardblock_1.id).remove(true); - getFileForAddon(profileDir, regexpblock_1.id).remove(true); - - startupManager(false); - yield promiseShutdownManager(); - - writeInstallRDFForExtension(softblock1_3, profileDir); - writeInstallRDFForExtension(softblock2_3, profileDir); - writeInstallRDFForExtension(softblock3_3, profileDir); - writeInstallRDFForExtension(softblock4_3, profileDir); - writeInstallRDFForExtension(softblock5_3, profileDir); - writeInstallRDFForExtension(hardblock_3, profileDir); - writeInstallRDFForExtension(regexpblock_3, profileDir); - - startupManager(false); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "3.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "3.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "3.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "3.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "3.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - - s2.userDisabled = false; - s2.userDisabled = true; - check_addon(s2, "3.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - s3.userDisabled = false; - check_addon(s3, "3.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - - yield promiseRestartManager(); - - yield Pbackground_update(); - yield promiseRestartManager(); - - [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - - s1.userDisabled = false; - s2.userDisabled = false; - s4.userDisabled = true; - s5.userDisabled = true; -}); - -// Starts with add-ons blocked and then simulates the user upgrading them to -// unblocked versions. -add_task(function* run_manual_update_test() { - do_print("Test: " + arguments.callee.name + "\n"); - yield promiseRestartManager(); - yield Pload_blocklist("manual_update.xml"); - yield promiseRestartManager(); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s4, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s5, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - - s2.userDisabled = false; - s2.userDisabled = true; - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - s3.userDisabled = false; - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - - yield promiseRestartManager(); - - yield Pmanual_update("2"); - yield promiseRestartManager(); - - [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "2.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "2.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "2.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s4, "2.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s5, "2.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - // Can't manually update to a hardblocked add-on - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - - yield Pmanual_update("3"); - yield promiseRestartManager(); - - [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "3.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "3.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "3.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s4, "3.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s5, "3.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "3.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "3.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); -}); - -// Starts with add-ons blocked and then new versions are installed outside of -// the app to change them to unblocked. -add_task(function* run_manual_update_2_test() { - do_print("Test: " + arguments.callee.name + "\n"); - yield promiseShutdownManager(); - - getFileForAddon(profileDir, softblock1_1.id).remove(true); - getFileForAddon(profileDir, softblock2_1.id).remove(true); - getFileForAddon(profileDir, softblock3_1.id).remove(true); - getFileForAddon(profileDir, softblock4_1.id).remove(true); - getFileForAddon(profileDir, softblock5_1.id).remove(true); - getFileForAddon(profileDir, hardblock_1.id).remove(true); - getFileForAddon(profileDir, regexpblock_1.id).remove(true); - - startupManager(false); - yield promiseShutdownManager(); - - writeInstallRDFForExtension(softblock1_1, profileDir); - writeInstallRDFForExtension(softblock2_1, profileDir); - writeInstallRDFForExtension(softblock3_1, profileDir); - writeInstallRDFForExtension(softblock4_1, profileDir); - writeInstallRDFForExtension(softblock5_1, profileDir); - writeInstallRDFForExtension(hardblock_1, profileDir); - writeInstallRDFForExtension(regexpblock_1, profileDir); - - startupManager(false); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - - s2.userDisabled = false; - s2.userDisabled = true; - check_addon(s2, "1.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - s3.userDisabled = false; - check_addon(s3, "1.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - yield promiseRestartManager(); - - yield Pmanual_update("2"); - yield promiseRestartManager(); - - [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "2.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "2.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "2.0", false, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - // Can't manually update to a hardblocked add-on - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - - yield promiseRestartManager(); - - yield Pmanual_update("3"); - yield promiseRestartManager(); - - [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "3.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s2, "3.0", true, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(s3, "3.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(h, "3.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - check_addon(r, "3.0", false, false, Ci.nsIBlocklistService.STATE_NOT_BLOCKED); - - s1.userDisabled = false; - s2.userDisabled = false; - s4.userDisabled = true; -}); - -// Uses the API to install blocked add-ons from the local filesystem -add_task(function* run_local_install_test() { - do_print("Test: " + arguments.callee.name + "\n"); - yield promiseShutdownManager(); - - getFileForAddon(profileDir, softblock1_1.id).remove(true); - getFileForAddon(profileDir, softblock2_1.id).remove(true); - getFileForAddon(profileDir, softblock3_1.id).remove(true); - getFileForAddon(profileDir, softblock4_1.id).remove(true); - getFileForAddon(profileDir, softblock5_1.id).remove(true); - getFileForAddon(profileDir, hardblock_1.id).remove(true); - getFileForAddon(profileDir, regexpblock_1.id).remove(true); - - startupManager(false); - - yield promiseInstallAllFiles([ - do_get_file("addons/blocklist_soft1_1.xpi"), - do_get_file("addons/blocklist_soft2_1.xpi"), - do_get_file("addons/blocklist_soft3_1.xpi"), - do_get_file("addons/blocklist_soft4_1.xpi"), - do_get_file("addons/blocklist_soft5_1.xpi"), - do_get_file("addons/blocklist_hard1_1.xpi"), - do_get_file("addons/blocklist_regexp1_1.xpi") - ]); - - let aInstalls = yield new Promise((resolve, reject) => { - AddonManager.getAllInstalls(resolve) - }); - // Should have finished all installs without needing to restart - do_check_eq(aInstalls.length, 0); - - let [s1, s2, s3, s4, s5, h, r] = yield promiseAddonsByIDs(ADDON_IDS); - - check_addon(s1, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s2, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(s3, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); - check_addon(h, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); - check_addon(r, "1.0", false, false, Ci.nsIBlocklistService.STATE_BLOCKED); -}); - -add_task(function* shutdown_httpserver() { - yield new Promise((resolve, reject) => { - testserver.stop(resolve); - }); -}); |