diff --git a/toolkit/mozapps/extensions/DeferredSave.jsm b/toolkit/mozapps/extensions/DeferredSave.jsm index 298a4f3a5609..20a75fe83203 100644 --- a/toolkit/mozapps/extensions/DeferredSave.jsm +++ b/toolkit/mozapps/extensions/DeferredSave.jsm @@ -73,14 +73,10 @@ function DeferredSave(aPath, aDataProvider, aDelay) { // Some counters for telemetry // The total number of times the file was written this.totalSaves = 0; - // The number of times the data became dirty while // another save was in progress this.overlappedSaves = 0; - // Error returned by the most recent write (if any) - this._lastError = null; - if (aDelay && (aDelay > 0)) this._delay = aDelay; else @@ -92,7 +88,7 @@ DeferredSave.prototype = { return this._pending || this.writeInProgress; }, - get lastError() { + get error() { return this._lastError; }, diff --git a/toolkit/mozapps/extensions/XPIProvider.jsm b/toolkit/mozapps/extensions/XPIProvider.jsm index 98cbeef518f8..61ef77ed3fc7 100644 --- a/toolkit/mozapps/extensions/XPIProvider.jsm +++ b/toolkit/mozapps/extensions/XPIProvider.jsm @@ -1884,9 +1884,9 @@ var XPIProvider = { delete this._uriMappings; if (gLazyObjectsLoaded) { - XPIDatabase.shutdown(function shutdownCallback(saveError) { + XPIDatabase.shutdown(function shutdownCallback() { LOG("Notifying XPI shutdown observers"); - Services.obs.notifyObservers(null, "xpi-provider-shutdown", saveError); + Services.obs.notifyObservers(null, "xpi-provider-shutdown", null); }); } else { @@ -2594,8 +2594,9 @@ var XPIProvider = { aOldAddon.descriptor = aAddonState.descriptor; aOldAddon.visible = !(aOldAddon.id in visibleAddons); - XPIDatabase.saveChanges(); + // Update the database + XPIDatabase.setAddonDescriptor(aOldAddon, aAddonState.descriptor); if (aOldAddon.visible) { visibleAddons[aOldAddon.id] = aOldAddon; @@ -3187,6 +3188,8 @@ var XPIProvider = { // If the database doesn't exist and there are add-ons installed then we // must update the database however if there are no add-ons then there is // no need to update the database. + // Avoid using XPIDatabase.dbFileExists, as that code is lazy-loaded, + // and we want to avoid loading it until absolutely necessary. let dbFile = FileUtils.getFile(KEY_PROFILEDIR, [FILE_DATABASE], true); if (!dbFile.exists()) updateDatabase = state.length > 0; diff --git a/toolkit/mozapps/extensions/XPIProviderUtils.js b/toolkit/mozapps/extensions/XPIProviderUtils.js index ad36119d54bd..89ce9fac9c0d 100644 --- a/toolkit/mozapps/extensions/XPIProviderUtils.js +++ b/toolkit/mozapps/extensions/XPIProviderUtils.js @@ -349,6 +349,7 @@ function DBAddonInternal(aLoaded) { // this change is being detected. } + // XXX Can we redesign pendingUpgrade? XPCOMUtils.defineLazyGetter(this, "pendingUpgrade", function DBA_pendingUpgradeGetter() { for (let install of XPIProvider.installs) { @@ -425,17 +426,17 @@ this.XPIDatabase = { migrateData: null, // Active add-on directories loaded from extensions.ini and prefs at startup. activeBundles: null, + // Special handling for when the database is locked at first load + lockedDatabase: false, - // Saved error object if we fail to read an existing database - _loadError: null, - - // Error reported by our most recent attempt to read or write the database, if any - get lastError() { - if (this._loadError) - return this._loadError; - if (this._deferredSave) - return this._deferredSave.lastError; - return null; + // XXX may be able to refactor this away + get dbfileExists() { + delete this.dbfileExists; + return this.dbfileExists = this.jsonFile.exists(); + }, + set dbfileExists(aValue) { + delete this.dbfileExists; + return this.dbfileExists = aValue; }, /** @@ -446,6 +447,11 @@ this.XPIDatabase = { throw new Error("Attempt to use XPI database when it is not initialized"); } + // handle the "in memory only" case + if (this.lockedDatabase) { + return; + } + if (!this._deferredSave) { this._deferredSave = new DeferredSave(this.jsonFile.path, () => JSON.stringify(this), @@ -461,16 +467,11 @@ this.XPIDatabase = { // save the database. LOG("XPI Database saved, setting schema version preference to " + DB_SCHEMA); Services.prefs.setIntPref(PREF_DB_SCHEMA, DB_SCHEMA); - // Reading the DB worked once, so we don't need the load error - this._loadError = null; }, error => { // Need to try setting the schema version again later this._schemaVersionSet = false; WARN("Failed to save XPI database", error); - // this._deferredSave.lastError has the most recent error so we don't - // need this any more - this._loadError = null; }); } }, @@ -478,15 +479,16 @@ this.XPIDatabase = { flush: function() { // handle the "in memory only" and "saveChanges never called" cases if (!this._deferredSave) { - return Promise.resolve(0); + let done = Promise.defer(); + done.resolve(0); + return done.promise; } return this._deferredSave.flush(); }, /** - * Converts the current internal state of the XPI addon database to - * a JSON.stringify()-ready structure + * Converts the current internal state of the XPI addon database to JSON */ toJSON: function() { if (!this.addonDB) { @@ -494,9 +496,13 @@ this.XPIDatabase = { throw new Error("Attempt to save database without loading it first"); } + let addons = []; + for (let [, addon] of this.addonDB) { + addons.push(addon); + } let toSave = { schemaVersion: DB_SCHEMA, - addons: [...this.addonDB.values()] + addons: addons }; return toSave; }, @@ -619,16 +625,17 @@ this.XPIDatabase = { // Handle mismatched JSON schema version. For now, we assume // compatibility for JSON data, though we throw away any fields we // don't know about + // XXX preserve unknown fields during save/restore LOG("JSON schema mismatch: expected " + DB_SCHEMA + ", actual " + inputAddons.schemaVersion); } // If we got here, we probably have good data // Make AddonInternal instances from the loaded data and save them let addonDB = new Map(); - for (let loadedAddon of inputAddons.addons) { + inputAddons.addons.forEach(function(loadedAddon) { let newAddon = new DBAddonInternal(loadedAddon); addonDB.set(newAddon._key, newAddon); - }; + }); this.addonDB = addonDB; LOG("Successfully read XPI database"); this.initialized = true; @@ -670,14 +677,15 @@ this.XPIDatabase = { /** * Reconstruct when the DB file exists but is unreadable - * (for example because read permission is denied) + * (for example because read permission is denied */ rebuildUnreadableDB: function(aError, aRebuildOnError) { WARN("Extensions database " + this.jsonFile.path + " exists but is not readable; rebuilding in memory", aError); - // Remember the error message until we try and write at least once, so - // we know at shutdown time that there was a problem - this._loadError = aError; + // XXX open question - if we can overwrite at save time, should we, or should we + // leave the locked database in case we can recover from it next time we start up? + // The old code made one attempt to remove the locked file before it rebuilt in memory + this.lockedDatabase = true; // XXX TELEMETRY report when this happens? this.rebuildDatabase(aRebuildOnError); }, @@ -965,26 +973,24 @@ this.XPIDatabase = { shutdown: function XPIDB_shutdown(aCallback) { LOG("shutdown"); if (this.initialized) { - // If our last database I/O had an error, try one last time to save. - if (this.lastError) - this.saveChanges(); + // If we are running with an in-memory database then force a new + // extensions.ini to be written to disk on the next startup + if (this.lockedDatabase) + Services.prefs.setBoolPref(PREF_PENDING_OPERATIONS, true); this.initialized = false; + let result = null; // Make sure any pending writes of the DB are complete, and we // finish cleaning up, and then call back this.flush() .then(null, error => { ERROR("Flush of XPI database failed", error); + Services.prefs.setBoolPref(PREF_PENDING_OPERATIONS, true); + result = error; return 0; }) .then(count => { - // If our last attempt to read or write the DB failed, force a new - // extensions.ini to be written to disk on the next startup - let lastSaveFailed = this.lastError; - if (lastSaveFailed) - Services.prefs.setBoolPref(PREF_PENDING_OPERATIONS, true); - // Clear out the cached addons data loaded from JSON delete this.addonDB; delete this._dbPromise; @@ -994,7 +1000,7 @@ this.XPIDatabase = { delete this._schemaVersionSet; if (aCallback) - aCallback(lastSaveFailed); + aCallback(result); }); } else { @@ -1335,6 +1341,20 @@ this.XPIDatabase = { this.saveChanges(); }, + /** + * Synchronously sets the file descriptor for an add-on. + * XXX IRVING could replace this with setAddonProperties + * + * @param aAddon + * The DBAddonInternal being updated + * @param aDescriptor + * File path of the installed addon + */ + setAddonDescriptor: function XPIDB_setAddonDescriptor(aAddon, aDescriptor) { + aAddon.descriptor = aDescriptor; + this.saveChanges(); + }, + /** * Synchronously updates an add-on's active flag in the database. * @@ -1352,6 +1372,8 @@ this.XPIDatabase = { * Synchronously calculates and updates all the active flags in the database. */ updateActiveAddons: function XPIDB_updateActiveAddons() { + // XXX IRVING this may get called during XPI-utils shutdown + // XXX need to make sure PREF_PENDING_OPERATIONS handling is clean LOG("Updating add-on states"); for (let [, addon] of this.addonDB) { let newActive = (addon.visible && !addon.userDisabled && diff --git a/toolkit/mozapps/extensions/test/xpcshell/head_addons.js b/toolkit/mozapps/extensions/test/xpcshell/head_addons.js index 877ce0b6c322..781f38e21c30 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/head_addons.js +++ b/toolkit/mozapps/extensions/test/xpcshell/head_addons.js @@ -344,10 +344,6 @@ function do_check_icons(aActual, aExpected) { } } -// Record the error (if any) from trying to save the XPI -// database at shutdown time -let gXPISaveError = null; - /** * Starts up the add-on manager as if it was started by the application. * @@ -400,24 +396,26 @@ function shutdownManager() { if (!gInternalManager) return; + let obs = AM_Cc["@mozilla.org/observer-service;1"]. + getService(AM_Ci.nsIObserverService); + let xpiShutdown = false; - Services.obs.addObserver({ + obs.addObserver({ observe: function(aSubject, aTopic, aData) { xpiShutdown = true; - gXPISaveError = aData; - Services.obs.removeObserver(this, "xpi-provider-shutdown"); + obs.removeObserver(this, "xpi-provider-shutdown"); } }, "xpi-provider-shutdown", false); let repositoryShutdown = false; - Services.obs.addObserver({ + obs.addObserver({ observe: function(aSubject, aTopic, aData) { repositoryShutdown = true; - Services.obs.removeObserver(this, "addon-repository-shutdown"); + obs.removeObserver(this, "addon-repository-shutdown"); } }, "addon-repository-shutdown", false); - Services.obs.notifyObservers(null, "quit-application-granted", null); + obs.notifyObservers(null, "quit-application-granted", null); let scope = Components.utils.import("resource://gre/modules/AddonManager.jsm"); scope.AddonManagerInternal.shutdown(); gInternalManager = null; @@ -430,11 +428,14 @@ function shutdownManager() { // Clear any crash report annotations gAppInfo.annotations = {}; - let thr = Services.tm.mainThread; + let thr = AM_Cc["@mozilla.org/thread-manager;1"]. + getService(AM_Ci.nsIThreadManager). + mainThread; // Wait until we observe the shutdown notifications while (!repositoryShutdown || !xpiShutdown) { - thr.processNextEvent(true); + if (thr.hasPendingEvents()) + thr.processNextEvent(false); } // Force the XPIProvider provider to reload to better diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_ChromeManifestParser.js b/toolkit/mozapps/extensions/test/xpcshell/test_ChromeManifestParser.js index 2e4adbe0f54d..61ffc12f6703 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_ChromeManifestParser.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_ChromeManifestParser.js @@ -103,6 +103,6 @@ function run_test_1() { do_check_eq(JSON.stringify(manifest[i]), JSON.stringify(expected[i])); } - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_DeferredSave.js b/toolkit/mozapps/extensions/test/xpcshell/test_DeferredSave.js index b40b5342fb23..7b29fa68d5c6 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_DeferredSave.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_DeferredSave.js @@ -37,8 +37,8 @@ function DeferredSaveTester(aDelay, aDataProvider) { return tester.saver.flush(); }, - get lastError() { - return tester.saver.lastError; + get error() { + return tester.saver.error; } }; @@ -154,11 +154,11 @@ add_task(function test_error_immediate() { count => do_throw("Did not get expected error"), error => do_check_eq(testError.message, error.message) ); - do_check_eq(testError, tester.lastError); + do_check_eq(testError, tester.error); // This write should succeed and clear the error yield tester.save("test_error_immediate succeeds"); - do_check_eq(null, tester.lastError); + do_check_eq(null, tester.error); // The failed save attempt counts in our total do_check_eq(2, tester.saver.totalSaves); }); diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_blocklistchange.js b/toolkit/mozapps/extensions/test/xpcshell/test_blocklistchange.js index 752e4103740a..d3b8aceb2ccb 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_blocklistchange.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_blocklistchange.js @@ -335,12 +335,12 @@ const ADDON_IDS = ["softblock1@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) { + openWindow: function(parent, url, name, features, arguments) { // 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; + var list = arguments.wrappedJSObject.list; list.forEach(function(aItem) { if (!aItem.blocked) aItem.disable = true; @@ -1329,7 +1329,7 @@ add_test(function run_manual_update_2_test() { startupManager(false); - AddonManager.getAddonsByIDs(ADDON_IDS, callback_soon(function([s1, s2, s3, s4, s5, h, r]) { + AddonManager.getAddonsByIDs(ADDON_IDS, function([s1, s2, s3, s4, s5, h, r]) { check_addon(s1, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); check_addon(s2, "1.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); @@ -1347,8 +1347,7 @@ add_test(function run_manual_update_2_test() { manual_update("2", function manual_update_2_2() { restartManager(); - AddonManager.getAddonsByIDs(ADDON_IDS, - callback_soon(function([s1, s2, s3, s4, s5, h, r]) { + AddonManager.getAddonsByIDs(ADDON_IDS, function([s1, s2, s3, s4, s5, h, r]) { check_addon(s1, "2.0", true, true, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); check_addon(s2, "2.0", true, false, Ci.nsIBlocklistService.STATE_SOFTBLOCKED); @@ -1376,9 +1375,9 @@ add_test(function run_manual_update_2_test() { run_next_test(); }); }); - })); + }); }); - })); + }); }); // Uses the API to install blocked add-ons from the local filesystem diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bootstrap.js b/toolkit/mozapps/extensions/test/xpcshell/test_bootstrap.js index b6b3c65f7aaa..912c676f8e14 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bootstrap.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bootstrap.js @@ -455,7 +455,7 @@ function check_test_7() { do_check_eq(getShutdownNewVersion(), 0); do_check_not_in_crash_annotation("bootstrap1@tests.mozilla.org", "2.0"); - AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", callback_soon(function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { do_check_eq(b1, null); restartManager(); @@ -465,7 +465,7 @@ function check_test_7() { do_check_bootstrappedPref(run_test_8); }); - })); + }); } // Test that a bootstrapped extension dropped into the profile loads properly @@ -671,13 +671,10 @@ function run_test_12() { do_check_in_crash_annotation("bootstrap1@tests.mozilla.org", "1.0"); b1.uninstall(); - do_execute_soon(test_12_restart); - }); -} + restartManager(); -function test_12_restart() { - restartManager(); - do_check_bootstrappedPref(run_test_13); + do_check_bootstrappedPref(run_test_13); + }); } @@ -706,7 +703,7 @@ function run_test_13() { }, [ "onInstallStarted", "onInstallEnded", - ], callback_soon(check_test_13)); + ], function() {do_execute_soon(check_test_13)}); install.install(); }); } @@ -727,27 +724,23 @@ function check_test_13() { do_check_eq(getActiveVersion(), 0); // Should not have called startup though do_check_not_in_crash_annotation("bootstrap1@tests.mozilla.org", "3.0"); - do_execute_soon(test_13_restart); - }); - }); -} + restartManager(); -function test_13_restart() { - restartManager(); + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { + do_check_neq(b1, null); + do_check_eq(b1.version, "3.0"); + do_check_true(b1.appDisabled); + do_check_false(b1.userDisabled); + do_check_false(b1.isActive); + do_check_eq(getInstalledVersion(), 3); // We call install even for disabled add-ons + do_check_eq(getActiveVersion(), 0); // Should not have called startup though + do_check_not_in_crash_annotation("bootstrap1@tests.mozilla.org", "3.0"); - AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "3.0"); - do_check_true(b1.appDisabled); - do_check_false(b1.userDisabled); - do_check_false(b1.isActive); - do_check_eq(getInstalledVersion(), 3); // We call install even for disabled add-ons - do_check_eq(getActiveVersion(), 0); // Should not have called startup though - do_check_not_in_crash_annotation("bootstrap1@tests.mozilla.org", "3.0"); - - do_check_bootstrappedPref(function() { - b1.uninstall(); - do_execute_soon(run_test_14); + do_check_bootstrappedPref(function() { + b1.uninstall(); + do_execute_soon(run_test_14); + }); + }); }); }); } @@ -819,7 +812,7 @@ function run_test_15() { }, [ "onInstallStarted", "onInstallEnded", - ], callback_soon(check_test_15)); + ], function() {do_execute_soon(check_test_15)}); install.install(); }); }); @@ -861,7 +854,7 @@ function check_test_15() { function run_test_16() { resetPrefs(); waitForPref("bootstraptest.startup_reason", function test_16_after_startup() { - AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", callback_soon(function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { // Should have installed and started do_check_eq(getInstalledVersion(), 1); do_check_eq(getActiveVersion(), 1); @@ -879,7 +872,7 @@ function run_test_16() { gAppInfo.inSafeMode = true; startupManager(false); - AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", callback_soon(function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { // Should still be stopped do_check_eq(getInstalledVersion(), 1); do_check_eq(getActiveVersion(), 0); @@ -899,10 +892,10 @@ function run_test_16() { AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { b1.uninstall(); - do_execute_soon(run_test_17); + run_test_17(); }); - })); - })); + }); + }); }); installAllFiles([do_get_addon("test_bootstrap1_1")], function() { }); } @@ -1029,7 +1022,7 @@ function run_test_20() { do_check_eq(getInstallOldVersion(), 1); do_check_eq(getStartupOldVersion(), 0); - do_execute_soon(run_test_21); + run_test_21(); }); } @@ -1086,7 +1079,7 @@ function run_test_22() { startupManager(); - AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", callback_soon(function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { // Should have installed and started do_check_eq(getInstalledVersion(), 1); do_check_eq(getActiveVersion(), 1); @@ -1130,7 +1123,7 @@ function run_test_22() { run_test_23(); }); }); - })); + }); } @@ -1204,17 +1197,17 @@ function check_test_23() { let dir = do_get_addon_root_uri(profileDir, "bootstrap1@tests.mozilla.org"); do_check_eq(b1.getResourceURI("bootstrap.js").spec, dir + "bootstrap.js"); - AddonManager.getAddonsWithOperationsByTypes(null, callback_soon(function(list) { + AddonManager.getAddonsWithOperationsByTypes(null, function(list) { do_check_eq(list.length, 0); restartManager(); - AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", callback_soon(function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { b1.uninstall(); restartManager(); testserver.stop(run_test_24); - })); - })); + }); + }); }); }); }); @@ -1281,7 +1274,7 @@ function run_test_25() { do_check_eq(getInstalledVersion(), 1); do_check_eq(getActiveVersion(), 1); - AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", callback_soon(function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { do_check_neq(b1, null); do_check_eq(b1.version, "1.0"); do_check_true(b1.isActive); @@ -1302,7 +1295,7 @@ function run_test_25() { do_check_bootstrappedPref(run_test_26); }); - })); + }); }); }); installAllFiles([do_get_addon("test_bootstrap1_1")], function test_25_installed() { @@ -1318,7 +1311,7 @@ function run_test_26() { do_check_eq(getInstalledVersion(), 0); do_check_eq(getActiveVersion(), 0); - AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", callback_soon(function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { do_check_neq(b1, null); do_check_eq(b1.version, "4.0"); do_check_true(b1.isActive); @@ -1339,7 +1332,7 @@ function run_test_26() { do_check_bootstrappedPref(run_test_27); }); - })); + }); }); } @@ -1362,7 +1355,7 @@ function run_test_27() { do_check_eq(getUninstallNewVersion(), 4); do_check_eq(getActiveVersion(), 0); - AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", callback_soon(function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { do_check_neq(b1, null); do_check_eq(b1.version, "4.0"); do_check_false(b1.isActive); @@ -1381,7 +1374,7 @@ function run_test_27() { do_check_bootstrappedPref(run_test_28); }); - })); + }); }); }); } @@ -1397,7 +1390,7 @@ function run_test_28() { do_check_eq(getInstallOldVersion(), 4); do_check_eq(getActiveVersion(), 0); - AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", callback_soon(function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { do_check_neq(b1, null); do_check_eq(b1.version, "1.0"); do_check_false(b1.isActive); @@ -1421,7 +1414,7 @@ function run_test_28() { do_check_bootstrappedPref(do_test_finished); }); - })); + }); }); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug324121.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug324121.js index b88c07b235d9..cb6ede5fc1f4 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug324121.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug324121.js @@ -138,7 +138,7 @@ function run_test() { installAllFiles([do_get_addon(a.addon) for each (a in ADDONS)], function() { restartManager(); - AddonManager.getAddonByID(ADDONS[0].id, callback_soon(function(addon) { + AddonManager.getAddonByID(ADDONS[0].id, function(addon) { do_check_true(!(!addon)); addon.userDisabled = true; restartManager(); @@ -168,7 +168,7 @@ function run_test() { } } }); - })); + }); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug335238.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug335238.js index 8bfef2feffdc..c379fcdcdca3 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug335238.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug335238.js @@ -165,7 +165,7 @@ function run_test() { installAllFiles([do_get_addon(a.addon) for each (a in ADDONS)], function() { restartManager(); - AddonManager.getAddonByID(ADDONS[1].id, callback_soon(function(addon) { + AddonManager.getAddonByID(ADDONS[1].id, function(addon) { do_check_true(!(!addon)); addon.userDisabled = true; restartManager(); @@ -176,6 +176,6 @@ function run_test() { item.findUpdates(updateListener, AddonManager.UPDATE_WHEN_USER_REQUESTED); }); }); - })); + }); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug371495.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug371495.js index ac746dda7b19..7919b7c171fa 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug371495.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug371495.js @@ -28,7 +28,7 @@ function run_test() do_check_eq(addon.optionsURL, null); do_check_eq(addon.aboutURL, null); - do_execute_soon(do_test_finished); + do_test_finished(); }); }); }); diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug384052.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug384052.js index aeaaf3d8ff2d..bbdcb76a1b0c 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug384052.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug384052.js @@ -96,7 +96,7 @@ function run_test() onUpdateFinished: function(addon, error) { do_check_eq(error, AddonManager.UPDATE_STATUS_DOWNLOAD_ERROR); do_check_true(gSeenExpectedURL); - do_execute_soon(shutdownTest); + shutdownTest(); } }, AddonManager.UPDATE_WHEN_USER_REQUESTED); }); diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug397778.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug397778.js index aa18a6946ab9..134b17a53bf5 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug397778.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug397778.js @@ -27,7 +27,7 @@ function run_test() } function run_test_1() { - AddonManager.getAddonByID(ID, callback_soon(function(addon) { + AddonManager.getAddonByID(ID, function(addon) { do_check_neq(addon, null); do_check_eq(addon.name, "fr Name"); do_check_eq(addon.description, "fr Description"); @@ -40,9 +40,9 @@ function run_test_1() { do_check_neq(newAddon, null); do_check_eq(newAddon.name, "fr Name"); - do_execute_soon(run_test_2); + run_test_2(); }); - })); + }); } function run_test_2() { @@ -55,7 +55,7 @@ function run_test_2() { do_check_eq(addon.name, "de-DE Name"); do_check_eq(addon.description, null); - do_execute_soon(run_test_3); + run_test_3(); }); } @@ -69,7 +69,7 @@ function run_test_3() { do_check_eq(addon.name, "de-DE Name"); do_check_eq(addon.description, null); - do_execute_soon(run_test_4); + run_test_4(); }); } @@ -83,7 +83,7 @@ function run_test_4() { do_check_eq(addon.name, "es-ES Name"); do_check_eq(addon.description, "es-ES Description"); - do_execute_soon(run_test_5); + run_test_5(); }); } @@ -97,7 +97,7 @@ function run_test_5() { if (addon.name != "zh-TW Name" && addon.name != "zh-CN Name") do_throw("zh matched to " + addon.name); - do_execute_soon(run_test_6); + run_test_6(); }); } @@ -112,6 +112,6 @@ function run_test_6() { do_check_eq(addon.name, "en Name"); do_check_eq(addon.description, "en Description"); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug425657.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug425657.js index f11a942fb68e..f383b201449a 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug425657.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug425657.js @@ -21,7 +21,7 @@ function run_test() do_check_eq(addon.name, "Deutsches W\u00f6rterbuch"); do_check_eq(addon.name.length, 20); - do_execute_soon(do_test_finished); + do_test_finished(); }); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug455906.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug455906.js index 4ed2df463c3b..fc31a4086229 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug455906.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug455906.js @@ -285,7 +285,7 @@ function check_initial_state(callback) { function check_test_pt1() { dump("Checking pt 1\n"); - AddonManager.getAddonsByIDs([a.id for each (a in ADDONS)], callback_soon(function(addons) { + AddonManager.getAddonsByIDs([a.id for each (a in ADDONS)], function(addons) { for (var i = 0; i < ADDONS.length; i++) { if (!addons[i]) do_throw("Addon " + (i + 1) + " did not get installed correctly"); @@ -316,7 +316,7 @@ function check_test_pt1() { gTestCheck = check_test_pt2; load_blocklist("bug455906_warn.xml"); }); - })); + }); } function check_notification_pt2(args) { @@ -357,7 +357,7 @@ function check_test_pt2() { restartManager(); dump("Checking results pt 2\n"); - AddonManager.getAddonsByIDs([a.id for each (a in ADDONS)], callback_soon(function(addons) { + AddonManager.getAddonsByIDs([a.id for each (a in ADDONS)], function(addons) { // Should have disabled this add-on as requested do_check_eq(check_addon_state(addons[2]), "true,true,false"); do_check_eq(check_plugin_state(PLUGINS[2]), "true,false"); @@ -386,7 +386,7 @@ function check_test_pt2() { gNotificationCheck = null; gTestCheck = run_test_pt3; load_blocklist("bug455906_start.xml"); - })); + }); } function run_test_pt3() { @@ -485,7 +485,7 @@ function check_test_pt3() { } function run_test_pt4() { - AddonManager.getAddonByID(ADDONS[4].id, callback_soon(function(addon) { + AddonManager.getAddonByID(ADDONS[4].id, function(addon) { addon.userDisabled = false; PLUGINS[4].enabledState = Ci.nsIPluginTag.STATE_ENABLED; restartManager(); @@ -494,7 +494,7 @@ function run_test_pt4() { gTestCheck = check_test_pt4; load_blocklist("bug455906_empty.xml"); }); - })); + }); } function check_notification_pt4(args) { diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug470377_3.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug470377_3.js index fcac471ee6db..6dee8ee9e738 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug470377_3.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug470377_3.js @@ -90,6 +90,6 @@ function run_test_2() { do_check_neq(a5, null); do_check_true(a5.isActive); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug470377_3_strictcompat.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug470377_3_strictcompat.js index 7a3347320e82..e8adc8b07bc0 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug470377_3_strictcompat.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug470377_3_strictcompat.js @@ -89,6 +89,6 @@ function run_test_2() { do_check_neq(a5, null); do_check_true(a5.isActive); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug470377_4.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug470377_4.js index 701cbe4485ee..362ccec5c452 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug470377_4.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug470377_4.js @@ -87,6 +87,6 @@ function run_test_2() { do_check_neq(a5, null); do_check_true(a5.isActive); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug521905.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug521905.js index b507fc100125..962e1ebc1ec4 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug521905.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug521905.js @@ -54,6 +54,6 @@ function run_test_2() { do_check_neq(addon, null); do_check_false(addon.isActive); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug526598.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug526598.js index debf5917233e..f399dd9d114d 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug526598.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug526598.js @@ -16,7 +16,7 @@ function run_test() { AddonManager.getAddonsByIDs(["bug526598_1@tests.mozilla.org", "bug526598_2@tests.mozilla.org"], - callback_soon(function([a1, a2]) { + function([a1, a2]) { do_check_neq(a1, null); do_check_true(a1.hasResource("install.rdf")); @@ -47,8 +47,8 @@ function run_test() { do_check_eq(newa1, null); do_check_eq(newa2, null); - do_execute_soon(do_test_finished); + do_test_finished(); }); - })); + }); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug541420.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug541420.js index 1f70b42d559b..7f3719611ea4 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug541420.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug541420.js @@ -31,7 +31,7 @@ function run_test() { if (!("nsIWindowsRegKey" in Components.interfaces)) do_check_true((file.permissions & 0100) == 0100); - do_execute_soon(do_test_finished); + do_test_finished(); }); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug542391.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug542391.js index 3c1056852a32..17edaf39b78d 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug542391.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug542391.js @@ -332,7 +332,7 @@ function run_test() { AddonManager.getAddonsByIDs(["bug542391_2@tests.mozilla.org", "bug542391_4@tests.mozilla.org"], - callback_soon(function disable_and_restart([a2, a4]) { + function disable_and_restart([a2, a4]) { do_check_true(a2 != null && a4 != null); a2.userDisabled = true; a4.userDisabled = true; @@ -349,7 +349,7 @@ function run_test() { "bug542391_4@tests.mozilla.org", "bug542391_5@tests.mozilla.org", "bug542391_6@tests.mozilla.org"], - callback_soon(function(addons) { + function(addons) { check_state_v1(addons); WindowWatcher.expected = true; @@ -372,8 +372,8 @@ function run_test() { do_execute_soon(run_test_1); }); - })); - })); + }); + }); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug559800.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug559800.js index 41057cd7685f..741debb76b4c 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug559800.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug559800.js @@ -41,7 +41,7 @@ function end_test() { } function run_test_1() { - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { do_check_neq(a1, null); do_check_eq(a1.version, "1.0"); @@ -50,13 +50,13 @@ function run_test_1() { gExtensionsJSON.remove(true); do_execute_soon(check_test_1); - })); + }); } function check_test_1() { startupManager(false); - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { do_check_neq(a1, null); do_check_eq(a1.version, "1.0"); @@ -67,5 +67,5 @@ function check_test_1() { do_check_true(gExtensionsJSON.fileSize > 0); end_test(); - })); + }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug563256.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug563256.js index 2437cf7480ae..79ebdc66d985 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug563256.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug563256.js @@ -65,7 +65,7 @@ function run_test() { } function end_test() { - do_execute_soon(do_test_finished); + do_test_finished(); } // Checks switching to a different theme and back again leaves everything the @@ -196,7 +196,7 @@ function run_test_2() { function check_test_2() { restartManager(); AddonManager.getAddonsByIDs(["default@tests.mozilla.org", - "alternate@tests.mozilla.org"], callback_soon(function([d, a]) { + "alternate@tests.mozilla.org"], function([d, a]) { do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "alternate/1.0"); do_check_true(d.userDisabled); @@ -255,5 +255,5 @@ function check_test_2() { end_test(); }); - })); + }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug564030.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug564030.js index b5ac157c7d99..36c4a2b3c021 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug564030.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug564030.js @@ -28,7 +28,7 @@ function run_test() { startupManager(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a) { do_check_neq(a, null); do_check_eq(a.version, "1.0"); do_check_false(a.userDisabled); @@ -57,7 +57,7 @@ function run_test() { do_check_true(a.isActive); do_check_true(isExtensionInAddonsList(profileDir, a.id)); - do_execute_soon(do_test_finished); + do_test_finished(); }); - })); + }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug566626.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug566626.js index 641ff87c9783..facdfcc838f3 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug566626.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug566626.js @@ -106,7 +106,7 @@ function run_test_2() { do_check_eq(a1, gAddon); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug567184.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug567184.js index 0e78630686a9..f905698eedbc 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug567184.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug567184.js @@ -47,7 +47,7 @@ function check_test_1() { do_check_false(b1.userDisabled); do_check_false(b1.isActive); - do_execute_soon(do_test_finished); + do_test_finished(); }); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug569138.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug569138.js index 4869fc117377..3efb6973fe54 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug569138.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug569138.js @@ -141,7 +141,7 @@ function run_test() { do_check_true(a6.appDisabled); do_check_false(a6.isActive); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug576735.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug576735.js index 007e8270696d..b9452b16296a 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug576735.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug576735.js @@ -38,7 +38,7 @@ function run_test() { startupManager(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { a1.uninstall(); shutdownManager(); @@ -60,7 +60,7 @@ function run_test() { // Addon2 should have been detected do_check_neq(a2, null); - do_execute_soon(do_test_finished); + do_test_finished(); }); - })); + }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug587088.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug587088.js index 01de80634c85..6b5b5531e7fa 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug587088.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug587088.js @@ -96,12 +96,12 @@ function run_test_1() { restartManager(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { check_addon_upgrading(a1); restartManager(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { check_addon_upgrading(a1); fstream.close(); @@ -114,8 +114,8 @@ function run_test_1() { a1.uninstall(); do_execute_soon(run_test_2); }); - })); - })); + }); + }); }); }); }); @@ -128,7 +128,7 @@ function run_test_2() { installAllFiles([do_get_addon("test_bug587088_1")], function() { restartManager(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { check_addon(a1, "1.0"); // Lock either install.rdf for unpacked add-ons or the xpi for packed add-ons. @@ -146,12 +146,12 @@ function run_test_2() { restartManager(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { check_addon_uninstalling(a1, true); restartManager(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { check_addon_uninstalling(a1, true); fstream.close(); @@ -165,10 +165,10 @@ function run_test_2() { do_check_false(dir.exists()); do_check_false(isExtensionInAddonsList(profileDir, "addon1@tests.mozilla.org")); - do_execute_soon(do_test_finished); + do_test_finished(); }); - })); - })); - })); + }); + }); + }); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug595573.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug595573.js index 7e2bf7d778fa..dc7d8ebfa69f 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug595573.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug595573.js @@ -35,6 +35,6 @@ function run_test_2() { do_check_neq(a1, null); do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug596607.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug596607.js index 3e655dc87ed9..2a4da3b88b5b 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug596607.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug596607.js @@ -135,6 +135,6 @@ function run_test_3() { do_check_eq(a3, null); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug616841.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug616841.js index d0c9739602b0..722f151f21a9 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug616841.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug616841.js @@ -21,6 +21,6 @@ function run_test() { AddonManager.getAddonByID("foo", function(aAddon) { test_string_compare(); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug655254.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug655254.js index 45274b734fed..4adda9d592dd 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug655254.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug655254.js @@ -84,7 +84,7 @@ function run_test_1() { onUpdateFinished: function() { restartManager(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { do_check_neq(a1, null); do_check_false(a1.appDisabled); do_check_true(a1.isActive); @@ -115,9 +115,9 @@ function run_test_1() { do_check_false(isExtensionInAddonsList(userDir, a2.id)); do_check_eq(Services.prefs.getIntPref("bootstraptest.active_version"), 1); - do_execute_soon(run_test_2); + run_test_2(); }); - })); + }); } }, AddonManager.UPDATE_WHEN_USER_REQUESTED); }); @@ -125,7 +125,7 @@ function run_test_1() { //Set up the profile function run_test_2() { - AddonManager.getAddonByID("addon2@tests.mozilla.org", callback_soon(function(a2) { + AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { do_check_neq(a2, null); do_check_false(a2.appDisabled); do_check_true(a2.isActive); @@ -160,5 +160,5 @@ function run_test_2() { end_test(); }); - })); + }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug659772.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug659772.js index c6e8ab4e2200..46b3e0393d2c 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug659772.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug659772.js @@ -290,7 +290,7 @@ function run_test_2() { "addon2@tests.mozilla.org", "addon3@tests.mozilla.org", "addon4@tests.mozilla.org"], - callback_soon(function([a1, a2, a3, a4]) { + function([a1, a2, a3, a4]) { do_check_neq(a1, null); do_check_eq(a1.version, "2.0"); do_check_true(a1.appDisabled); @@ -334,7 +334,7 @@ function run_test_2() { shutdownManager(); do_test_finished(); - })); + }); }; }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug675371.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug675371.js index 579335d8aad3..617e87868ed4 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug675371.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug675371.js @@ -24,7 +24,9 @@ function run_test() { }, [ "onInstallStarted", "onInstallEnded", - ], callback_soon(check_test)); + ], function() { + do_execute_soon(check_test) + }); install.install(); }); } @@ -86,6 +88,6 @@ function check_test() { do_check_false(target.active); } - do_execute_soon(do_test_finished); + do_test_finished(); })); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug740612.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug740612.js index d17e7acde6f9..e85976751b98 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug740612.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug740612.js @@ -35,6 +35,6 @@ function run_test() { do_check_eq(getInstalledVersion(), "1.0"); do_check_eq(getActiveVersion(), "1.0"); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug753900.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug753900.js index 2068623390bd..6878e329fd4f 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug753900.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug753900.js @@ -81,6 +81,6 @@ function run_test() { do_check_neq(a4, null); do_check_in_crash_annotation(addon4.id, addon4.version); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug757663.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug757663.js index 648c7acc3ba4..3fef71a49eb6 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug757663.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug757663.js @@ -107,6 +107,6 @@ function run_test_2() { AddonManager.removeInstallListener(listener2); AddonManager.removeInstallListener(listener3); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_cacheflush.js b/toolkit/mozapps/extensions/test/xpcshell/test_cacheflush.js index c0615ef0e010..173514fe012f 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_cacheflush.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_cacheflush.js @@ -117,6 +117,6 @@ function run_test_4() { do_check_true(gCacheFlushed); gCacheFlushed = false; - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_checkcompatibility.js b/toolkit/mozapps/extensions/test/xpcshell/test_checkcompatibility.js index b9fc0b3abaa0..160e605bd552 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_checkcompatibility.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_checkcompatibility.js @@ -191,6 +191,6 @@ function run_test_4() { function([a1, a2, a3, a4, a5]) { check_state(false, a1, a2, a3, a4, a5); - do_execute_soon(do_test_finished); + do_test_finished("checkcompatibility.js"); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_dictionary.js b/toolkit/mozapps/extensions/test/xpcshell/test_dictionary.js index c24b5a1b06e8..ff9c3228a71a 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_dictionary.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_dictionary.js @@ -149,7 +149,7 @@ function run_test_1() { HunspellEngine.listener = function(aEvent) { HunspellEngine.listener = null; do_check_eq(aEvent, "addDirectory"); - do_execute_soon(check_test_1); + check_test_1(); }; }); install.install(); @@ -317,8 +317,7 @@ function check_test_7() { do_check_false(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); do_check_not_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", - callback_soon(function(b1) { + AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { do_check_eq(b1, null); restartManager(); @@ -328,7 +327,7 @@ function check_test_7() { do_execute_soon(run_test_8); }); - })); + }); } // Test that a bootstrapped extension dropped into the profile loads properly @@ -428,8 +427,7 @@ function run_test_16() { installAllFiles([do_get_addon("test_dictionary")], function() { // spin the event loop to let the addon finish starting do_execute_soon(function check_installed_dictionary() { - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", - callback_soon(function(b1) { + AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { // Should have installed and started do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); @@ -441,8 +439,7 @@ function run_test_16() { gAppInfo.inSafeMode = true; startupManager(false); - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", - callback_soon(function(b1) { + AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { // Should still be stopped do_check_false(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); do_check_false(b1.isActive); @@ -459,8 +456,8 @@ function run_test_16() { do_execute_soon(run_test_17); }); - })); - })); + }); + }); }); }); } @@ -486,8 +483,7 @@ function run_test_17() { startupManager(); - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", - callback_soon(function(b1) { + AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { // Should have installed and started do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); do_check_neq(b1, null); @@ -502,7 +498,7 @@ function run_test_17() { restartManager(); run_test_23(); - })); + }); } // Tests that installing from a URL doesn't require a restart @@ -569,7 +565,7 @@ function check_test_23() { let dir = do_get_addon_root_uri(profileDir, "ab-CD@dictionaries.addons.mozilla.org"); - AddonManager.getAddonsWithOperationsByTypes(null, callback_soon(function(list) { + AddonManager.getAddonsWithOperationsByTypes(null, function(list) { do_check_eq(list.length, 0); restartManager(); @@ -577,7 +573,7 @@ function check_test_23() { b1.uninstall(); do_execute_soon(run_test_25); }); - })); + }); }); }); } @@ -596,8 +592,7 @@ function run_test_25() { // Needs a restart to complete this so the old version stays running do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", - callback_soon(function(b1) { + AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { do_check_neq(b1, null); do_check_eq(b1.version, "1.0"); do_check_true(b1.isActive); @@ -615,7 +610,7 @@ function run_test_25() { do_execute_soon(run_test_26); }); - })); + }); }); }; @@ -629,8 +624,7 @@ function run_test_26() { // Needs a restart to complete this do_check_false(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", - callback_soon(function(b1) { + AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { do_check_neq(b1, null); do_check_eq(b1.version, "2.0"); do_check_true(b1.isActive); @@ -650,7 +644,7 @@ function run_test_26() { b1.uninstall(); do_execute_soon(run_test_27); }); - })); + }); }); } @@ -680,7 +674,7 @@ function run_test_27() { "onDownloadEnded", "onInstallStarted", "onInstallEnded" - ], callback_soon(check_test_27)); + ], check_test_27); AddonManagerPrivate.backgroundUpdateCheck(); } @@ -726,7 +720,7 @@ function run_test_28() { "onDownloadEnded", "onInstallStarted", "onInstallEnded" - ], callback_soon(check_test_28)); + ], check_test_28); AddonManagerPrivate.backgroundUpdateCheck(); } @@ -790,7 +784,7 @@ function check_test_29(install) { ["onUninstalled", false], ] }, [ - ], callback_soon(finish_test_29)); + ], finish_test_29); b2.uninstall(); }); diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_disable.js b/toolkit/mozapps/extensions/test/xpcshell/test_disable.js index 867715863509..159ff7e58b62 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_disable.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_disable.js @@ -32,7 +32,7 @@ function run_test() { startupManager(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { do_check_eq(a1, null); do_check_not_in_crash_annotation(addon1.id, addon1.version); @@ -57,7 +57,7 @@ function run_test() { run_test_1(); }); - })); + }); } // Disabling an add-on should work @@ -83,7 +83,7 @@ function run_test_1() { ensure_test_completed(); - AddonManager.getAddonsWithOperationsByTypes(null, callback_soon(function(list) { + AddonManager.getAddonsWithOperationsByTypes(null, function(list) { do_check_eq(list.length, 1); do_check_eq(list[0].id, "addon1@tests.mozilla.org"); @@ -104,7 +104,7 @@ function run_test_1() { run_test_2(); }); - })); + }); }); } @@ -127,7 +127,7 @@ function run_test_2() { ensure_test_completed(); - AddonManager.getAddonsWithOperationsByTypes(null, callback_soon(function(list) { + AddonManager.getAddonsWithOperationsByTypes(null, function(list) { do_check_eq(list.length, 1); do_check_eq(list[0].id, "addon1@tests.mozilla.org"); @@ -149,7 +149,7 @@ function run_test_2() { run_test_3(); }); - })); + }); }); } @@ -161,7 +161,7 @@ function run_test_3() { ] }); - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { a1.userDisabled = true; ensure_test_completed(); prepare_test({ @@ -188,7 +188,7 @@ function run_test_3() { do_check_true(hasFlag(newa1.permissions, AddonManager.PERM_CAN_DISABLE)); do_check_false(hasFlag(newa1.permissions, AddonManager.PERM_CAN_ENABLE)); - do_execute_soon(do_test_finished); + do_test_finished(); }); - })); + }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_distribution.js b/toolkit/mozapps/extensions/test/xpcshell/test_distribution.js index 9f5bfacca884..63089251e650 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_distribution.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_distribution.js @@ -149,7 +149,7 @@ function run_test_4() { // Tests that after uninstalling a restart doesn't re-install the extension function run_test_5() { - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { a1.uninstall(); restartManager(); @@ -159,7 +159,7 @@ function run_test_5() { do_execute_soon(run_test_6); }); - })); + }); } // Tests that upgrading the application still doesn't re-install the uninstalled @@ -257,6 +257,6 @@ function run_test_9() { a2.uninstall(); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_dss.js b/toolkit/mozapps/extensions/test/xpcshell/test_dss.js index 7b171212a032..b096d55b63b1 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_dss.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_dss.js @@ -115,7 +115,7 @@ function run_test() { } function end_test() { - do_execute_soon(do_test_finished); + do_test_finished(); } // Checks enabling one theme disables the others @@ -592,7 +592,7 @@ function run_test_9() { // Uninstalling a custom theme in use should require a restart function run_test_10() { - AddonManager.getAddonByID("theme2@tests.mozilla.org", callback_soon(function(oldt2) { + AddonManager.getAddonByID("theme2@tests.mozilla.org", function(oldt2) { prepare_test({ "theme2@tests.mozilla.org": [ ["onEnabling", false], @@ -611,8 +611,7 @@ function run_test_10() { restartManager(); AddonManager.getAddonsByIDs(["default@tests.mozilla.org", - "theme2@tests.mozilla.org"], - callback_soon(function([d, t2]) { + "theme2@tests.mozilla.org"], function([d, t2]) { do_check_true(t2.isActive); do_check_false(t2.userDisabled); do_check_false(t2.appDisabled); @@ -639,8 +638,8 @@ function run_test_10() { restartManager(); do_execute_soon(run_test_11); - })); - })); + }); + }); } // Installing a custom theme not in use should not require a restart @@ -666,7 +665,7 @@ function run_test_11() { }, [ "onInstallStarted", "onInstallEnded", - ], callback_soon(check_test_11)); + ], check_test_11); install.install(); }); } @@ -723,7 +722,7 @@ function check_test_12() { // Updating a custom theme in use should require a restart function run_test_13() { - AddonManager.getAddonByID("theme1@tests.mozilla.org", callback_soon(function(t1) { + AddonManager.getAddonByID("theme1@tests.mozilla.org", function(t1) { prepare_test({ "theme1@tests.mozilla.org": [ ["onEnabling", false], @@ -759,10 +758,10 @@ function run_test_13() { }, [ "onInstallStarted", "onInstallEnded", - ], callback_soon(check_test_13)); + ], check_test_13); install.install(); }); - })); + }); } function check_test_13() { @@ -773,6 +772,7 @@ function check_test_13() { do_check_true(t1.isActive); do_check_false(gLWThemeChanged); t1.uninstall(); + restartManager(); do_execute_soon(run_test_14); }); @@ -781,7 +781,6 @@ function check_test_13() { // Switching from a lightweight theme to the default theme should not require // a restart function run_test_14() { - restartManager(); LightweightThemeManager.currentTheme = { id: "1", version: "1", diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_duplicateplugins.js b/toolkit/mozapps/extensions/test/xpcshell/test_duplicateplugins.js index 40b532c51ae9..748b8acd538a 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_duplicateplugins.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_duplicateplugins.js @@ -164,7 +164,7 @@ function run_test_2() { function run_test_3() { restartManager(); - AddonManager.getAddonByID(gPluginIDs[0], callback_soon(function(p) { + AddonManager.getAddonByID(gPluginIDs[0], function(p) { do_check_neq(p, null); do_check_eq(p.name, "Duplicate Plugin 1"); do_check_eq(p.description, "A duplicate plugin"); @@ -178,7 +178,7 @@ function run_test_3() { do_check_eq(p.name, "Duplicate Plugin 1"); do_check_eq(p.description, "A duplicate plugin"); - do_execute_soon(do_test_finished); + do_test_finished(); }); - })); + }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_error.js b/toolkit/mozapps/extensions/test/xpcshell/test_error.js index 2184399e2bd6..e01dcedb4525 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_error.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_error.js @@ -85,6 +85,6 @@ function run_test_5() { do_check_eq(install.state, AddonManager.STATE_DOWNLOAD_FAILED); do_check_eq(install.error, AddonManager.ERROR_CORRUPT_FILE); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_filepointer.js b/toolkit/mozapps/extensions/test/xpcshell/test_filepointer.js index cb661e495197..545a3df4f88f 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_filepointer.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_filepointer.js @@ -150,7 +150,7 @@ function run_test_2() { "onDownloadEnded", "onInstallStarted", "onInstallEnded" - ], callback_soon(check_test_2)); + ], check_test_2); install.install(); }, "application/x-xpinstall"); @@ -190,7 +190,7 @@ function run_test_3() { restartManager(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { do_check_neq(a1, null); do_check_eq(a1.version, "1.0"); @@ -203,7 +203,7 @@ function run_test_3() { do_check_true(source.exists()); do_execute_soon(run_test_4); - })); + }); } // Tests that misnaming a pointer doesn't clobber the sources @@ -238,7 +238,7 @@ function run_test_5() { restartManager(); - AddonManager.getAddonByID(addon1.id, callback_soon(function(a1) { + AddonManager.getAddonByID(addon1.id, function(a1) { do_check_neq(a1, null); do_check_eq(a1.version, "1.0"); @@ -261,7 +261,7 @@ function run_test_5() { do_execute_soon(run_test_6); }); - })); + }); } // Removing the pointer file should uninstall the add-on @@ -273,7 +273,7 @@ function run_test_6() { restartManager(); - AddonManager.getAddonByID(addon1.id, callback_soon(function(a1) { + AddonManager.getAddonByID(addon1.id, function(a1) { do_check_neq(a1, null); do_check_eq(a1.version, "1.0"); @@ -288,7 +288,7 @@ function run_test_6() { do_execute_soon(run_test_7); }); - })); + }); } // Removing the pointer file and replacing it with a directory should work @@ -297,7 +297,7 @@ function run_test_7() { restartManager(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { do_check_neq(a1, null); do_check_eq(a1.version, "1.0"); @@ -315,20 +315,20 @@ function run_test_7() { a1.uninstall(); + restartManager(); + do_execute_soon(run_test_8); }); - })); + }); } // Changes to the source files should be detected function run_test_8() { - restartManager(); - writePointer(addon1.id); restartManager(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { do_check_neq(a1, null); do_check_eq(a1.version, "1.0"); @@ -342,21 +342,21 @@ function run_test_8() { a1.uninstall(); + restartManager(); + do_execute_soon(run_test_9); }); - })); + }); } // Removing the add-on the pointer file points at should uninstall the add-on function run_test_9() { - restartManager(); - var dest = writeInstallRDFForExtension(addon1, sourceDir); writePointer(addon1.id); restartManager(); - AddonManager.getAddonByID(addon1.id, callback_soon(function(a1) { + AddonManager.getAddonByID(addon1.id, function(a1) { do_check_neq(a1, null); do_check_eq(a1.version, "1.0"); @@ -373,7 +373,7 @@ function run_test_9() { do_execute_soon(run_test_10); }); - })); + }); } // Tests that installing a new add-on by pointer with a relative path works diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_fuel.js b/toolkit/mozapps/extensions/test/xpcshell/test_fuel.js index 800933220e3d..bdd3f7e4f96c 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_fuel.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_fuel.js @@ -160,5 +160,5 @@ function onPrefChange(evt) { function onPrefChange2(evt) { do_check_eq(evt.data, testdata.dummy); - do_execute_soon(do_test_finished); + do_test_finished(); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_general.js b/toolkit/mozapps/extensions/test/xpcshell/test_general.js index e69b13314022..97b4971d2d89 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_general.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_general.js @@ -18,7 +18,7 @@ function run_test() { AddonManager.getAddonsByTypes(null, function(list) { gCount = list.length; - do_execute_soon(run_test_1); + run_test_1(); }); } @@ -51,8 +51,9 @@ function run_test_2() { function run_test_3() { restartManager(); - AddonManager.getAddonsByTypes(null, callback_soon(function(addons) { + AddonManager.getAddonsByTypes(null, function(addons) { do_check_eq(gCount, addons.length); + shutdownManager(); do_test_finished(); - })); + }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_getresource.js b/toolkit/mozapps/extensions/test/xpcshell/test_getresource.js index 4dce15aec679..33c72182dbd6 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_getresource.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_getresource.js @@ -75,8 +75,7 @@ function run_test() { do_check_true(false); } - AddonManager.getInstallForFile(do_get_addon("test_getresource"), - callback_soon(function(aInstall) { + AddonManager.getInstallForFile(do_get_addon("test_getresource"), function(aInstall) { do_check_false(a1.hasResource("icon.png")); do_check_true(aInstall.addon.hasResource("icon.png")); @@ -85,9 +84,9 @@ function run_test() { AddonManager.getAddonByID("addon1@tests.mozilla.org", function(newa1) { do_check_eq(newa1, null); - do_execute_soon(do_test_finished); + do_test_finished(); }); - })); + }); }); }); }); diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_hasbinarycomponents.js b/toolkit/mozapps/extensions/test/xpcshell/test_hasbinarycomponents.js index 598e06ed09bf..2390894d35d8 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_hasbinarycomponents.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_hasbinarycomponents.js @@ -76,7 +76,7 @@ function run_test() { do_check_true(a5.isActive); do_check_true(isExtensionInAddonsList(profileDir, a5.id)); - do_execute_soon(do_test_finished); + do_test_finished(); }); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_hotfix.js b/toolkit/mozapps/extensions/test/xpcshell/test_hotfix.js index ab96d1fdaffc..4e1e4f88a0a4 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_hotfix.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_hotfix.js @@ -50,7 +50,7 @@ function run_test_1() { "onDownloadEnded", "onInstallStarted", "onInstallEnded", - ], callback_soon(check_test_1)); + ], check_test_1); // Fake a timer event gInternalManager.notify(null); @@ -105,7 +105,7 @@ function run_test_3() { "onDownloadEnded", "onInstallStarted", "onInstallEnded", - ], callback_soon(check_test_3)); + ], check_test_3); // Fake a timer event gInternalManager.notify(null); @@ -189,7 +189,7 @@ function run_test_6() { "onDownloadEnded", "onInstallStarted", "onInstallEnded", - ], callback_soon(check_test_6)); + ], check_test_6); // Fake a timer event gInternalManager.notify(null); @@ -261,7 +261,7 @@ function check_test_7(aInstall) { "onDownloadEnded", "onInstallStarted", "onInstallEnded", - ], callback_soon(finish_test_7)); + ], finish_test_7); // Fake a timer event gInternalManager.notify(null); @@ -326,13 +326,13 @@ function check_test_8() { } function finish_test_8() { - AddonManager.getAllInstalls(callback_soon(function(aInstalls) { + AddonManager.getAllInstalls(function(aInstalls) { do_check_eq(aInstalls.length, 1); do_check_eq(aInstalls[0].version, "2.0"); restartManager(); - AddonManager.getAddonByID("hotfix@tests.mozilla.org", callback_soon(function(aAddon) { + AddonManager.getAddonByID("hotfix@tests.mozilla.org", function(aAddon) { do_check_neq(aAddon, null); do_check_eq(aAddon.version, "2.0"); @@ -340,6 +340,6 @@ function finish_test_8() { restartManager(); end_test(); - })); - })); + }); + }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_install.js b/toolkit/mozapps/extensions/test/xpcshell/test_install.js index cc85c053b9ae..2b014b8ef158 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_install.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_install.js @@ -124,7 +124,7 @@ function check_test_1(installSyncGUID) { AddonManager.getAddonByID("addon1@tests.mozilla.org", function(olda1) { do_check_eq(olda1, null); - AddonManager.getAddonsWithOperationsByTypes(null, callback_soon(function(pendingAddons) { + AddonManager.getAddonsWithOperationsByTypes(null, function(pendingAddons) { do_check_eq(pendingAddons.length, 1); do_check_eq(pendingAddons[0].id, "addon1@tests.mozilla.org"); let uri = NetUtil.newURI(pendingAddons[0].iconURL); @@ -162,7 +162,7 @@ function check_test_1(installSyncGUID) { AddonManager.getAllInstalls(function(activeInstalls) { do_check_eq(activeInstalls, 0); - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { do_check_neq(a1, null); do_check_neq(a1.syncGUID, null); do_check_true(a1.syncGUID.length >= 9); @@ -198,10 +198,10 @@ function check_test_1(installSyncGUID) { restartManager(); do_check_not_in_crash_annotation(a1.id, a1.version); - do_execute_soon(run_test_2); - })); + run_test_2(); + }); }); - })); + }); }); } @@ -275,7 +275,7 @@ function check_test_3(aInstall) { setExtensionModifiedTime(ext, updateDate); ensure_test_completed(); - AddonManager.getAddonByID("addon2@tests.mozilla.org", callback_soon(function(olda2) { + AddonManager.getAddonByID("addon2@tests.mozilla.org", function(olda2) { do_check_eq(olda2, null); restartManager(); @@ -307,7 +307,7 @@ function check_test_3(aInstall) { run_test_4(); }); }); - })); + }); } // Tests that installing a new version of an existing add-on works @@ -376,7 +376,7 @@ function check_test_5(install) { do_check_neq(olda2, null); do_check_true(hasFlag(olda2.pendingOperations, AddonManager.PENDING_UPGRADE)); - AddonManager.getInstallsByTypes(null, callback_soon(function(installs) { + AddonManager.getInstallsByTypes(null, function(installs) { do_check_eq(installs.length, 1); do_check_eq(installs[0].addon, olda2.pendingUpgrade); restartManager(); @@ -402,17 +402,17 @@ function check_test_5(install) { do_check_true(a2.installDate <= a2.updateDate); a2.uninstall(); - do_execute_soon(run_test_6); + restartManager(); + + run_test_6(); }); }); - })); + }); }); } // Tests that an install that requires a compatibility update works function run_test_6() { - restartManager(); - prepare_test({ }, [ "onNewInstall" ]); @@ -464,7 +464,7 @@ function run_test_7() { function check_test_7() { ensure_test_completed(); - AddonManager.getAddonByID("addon3@tests.mozilla.org", callback_soon(function(olda3) { + AddonManager.getAddonByID("addon3@tests.mozilla.org", function(olda3) { do_check_eq(olda3, null); restartManager(); @@ -482,15 +482,15 @@ function check_test_7() { do_check_true(isExtensionInAddonsList(profileDir, a3.id)); do_check_true(do_get_addon("test_install3").exists()); a3.uninstall(); - do_execute_soon(run_test_8); + restartManager(); + + run_test_8(); }); }); - })); + }); } function run_test_8() { - restartManager(); - AddonManager.addInstallListener(InstallListener); AddonManager.addAddonListener(AddonListener); @@ -508,7 +508,7 @@ function run_test_8() { }, [ "onInstallStarted", "onInstallEnded", - ], callback_soon(check_test_8)); + ], check_test_8); install.install(); }); } @@ -527,14 +527,14 @@ function check_test_8() { do_check_true(isExtensionInAddonsList(profileDir, a3.id)); do_check_true(do_get_addon("test_install3").exists()); a3.uninstall(); - do_execute_soon(run_test_9); + restartManager(); + + run_test_9(); }); } // Test that after cancelling a download it is removed from the active installs function run_test_9() { - restartManager(); - prepare_test({ }, [ "onNewInstall" ]); @@ -625,7 +625,7 @@ function check_test_10(install) { ensure_test_completed(); - AddonManager.getAllInstalls(callback_soon(function(activeInstalls) { + AddonManager.getAllInstalls(function(activeInstalls) { do_check_eq(activeInstalls.length, 0); restartManager(); @@ -634,9 +634,9 @@ function check_test_10(install) { AddonManager.getAddonByID("addon3@tests.mozilla.org", function(a3) { do_check_eq(a3, null); - do_execute_soon(run_test_11); + run_test_11(); }); - })); + }); } // Tests that a multi-package install shows up as multiple installs with the @@ -738,7 +738,7 @@ function run_test_11() { "onInstallStarted", "onInstallEnded" ] - }, callback_soon(check_test_11)); + }, check_test_11); installs[0].install(); installs[1].install(); @@ -771,14 +771,14 @@ function check_test_11() { a6.uninstall(); a7.uninstall(); - do_execute_soon(run_test_12); + restartManager(); + + run_test_12(); }); } // Same as test 11 but for a remote XPI function run_test_12() { - restartManager(); - prepare_test({ }, [ "onNewInstall", ]); @@ -829,7 +829,7 @@ function run_test_12() { "onInstallStarted", "onInstallEnded" ] - }, callback_soon(check_test_12)); + }, check_test_12); install.install(); }, "application/x-xpinstall", null, "Multi Test 4"); } @@ -896,7 +896,9 @@ function check_test_12() { a6.uninstall(); a7.uninstall(); - do_execute_soon(run_test_13); + restartManager(); + + run_test_13(); }); } @@ -904,8 +906,6 @@ function check_test_12() { // Tests that cancelling an upgrade leaves the original add-on's pendingOperations // correct function run_test_13() { - restartManager(); - installAllFiles([do_get_addon("test_install2_1")], function() { restartManager(); @@ -953,7 +953,7 @@ function check_test_13(install) { do_check_eq(install.existingAddon.id, "addon2@tests.mozilla.org"); do_check_eq(install.addon.install, install); - AddonManager.getAddonByID("addon2@tests.mozilla.org", callback_soon(function(olda2) { + AddonManager.getAddonByID("addon2@tests.mozilla.org", function(olda2) { do_check_neq(olda2, null); do_check_true(hasFlag(olda2.pendingOperations, AddonManager.PENDING_UPGRADE)); do_check_eq(olda2.pendingUpgrade, install.addon); @@ -984,15 +984,15 @@ function check_test_13(install) { a2.uninstall(); - do_execute_soon(run_test_14); + restartManager(); + + run_test_14(); }); - })); + }); } // Check that cancelling the install from onDownloadStarted actually cancels it function run_test_14() { - restartManager(); - prepare_test({ }, [ "onNewInstall" ]); @@ -1347,7 +1347,7 @@ function run_test_21() { } function check_test_21(aInstall) { - AddonManager.getAllInstalls(callback_soon(function(aInstalls) { + AddonManager.getAllInstalls(function(aInstalls) { do_check_eq(aInstalls.length, 1); do_check_eq(aInstalls[0], aInstall); @@ -1370,7 +1370,7 @@ function check_test_21(aInstall) { run_test_22(); }); - })); + }); } // Tests that an install can be restarted after being cancelled diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_install_icons.js b/toolkit/mozapps/extensions/test/xpcshell/test_install_icons.js index 70f91c56013e..f4e192f91396 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_install_icons.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_install_icons.js @@ -56,6 +56,6 @@ function test_4() { do_check_neq(aInstall.icons, null); do_check_eq(aInstall.icons[32], icon32_url); do_check_eq(aInstall.icons[64], icon64_url); - do_execute_soon(do_test_finished); + do_test_finished(); }, "application/x-xpinstall", null, null, { "32": icon32_url, "64": icon64_url }, null, null); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_install_strictcompat.js b/toolkit/mozapps/extensions/test/xpcshell/test_install_strictcompat.js index bcebc74c83c2..c5b99d5735d1 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_install_strictcompat.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_install_strictcompat.js @@ -121,7 +121,7 @@ function check_test_1() { AddonManager.getAddonByID("addon1@tests.mozilla.org", function(olda1) { do_check_eq(olda1, null); - AddonManager.getAddonsWithOperationsByTypes(null, callback_soon(function(pendingAddons) { + AddonManager.getAddonsWithOperationsByTypes(null, function(pendingAddons) { do_check_eq(pendingAddons.length, 1); do_check_eq(pendingAddons[0].id, "addon1@tests.mozilla.org"); let uri = NetUtil.newURI(pendingAddons[0].iconURL); @@ -191,7 +191,7 @@ function check_test_1() { do_execute_soon(function(){run_test_2(a1)}); }); }); - })); + }); }); } @@ -268,7 +268,7 @@ function check_test_3(aInstall) { setExtensionModifiedTime(ext, updateDate); ensure_test_completed(); - AddonManager.getAddonByID("addon2@tests.mozilla.org", callback_soon(function(olda2) { + AddonManager.getAddonByID("addon2@tests.mozilla.org", function(olda2) { do_check_eq(olda2, null); restartManager(); @@ -299,7 +299,7 @@ function check_test_3(aInstall) { run_test_4(); }); }); - })); + }); } // Tests that installing a new version of an existing add-on works @@ -368,7 +368,7 @@ function check_test_5(install) { do_check_neq(olda2, null); do_check_true(hasFlag(olda2.pendingOperations, AddonManager.PENDING_UPGRADE)); - AddonManager.getInstallsByTypes(null, callback_soon(function(installs) { + AddonManager.getInstallsByTypes(null, function(installs) { do_check_eq(installs.length, 1); do_check_eq(installs[0].addon, olda2.pendingUpgrade); restartManager(); @@ -396,7 +396,7 @@ function check_test_5(install) { do_execute_soon(run_test_6); }); }); - })); + }); }); } @@ -455,7 +455,7 @@ function run_test_7() { function check_test_7() { ensure_test_completed(); - AddonManager.getAddonByID("addon3@tests.mozilla.org", callback_soon(function(olda3) { + AddonManager.getAddonByID("addon3@tests.mozilla.org", function(olda3) { do_check_eq(olda3, null); restartManager(); @@ -475,7 +475,7 @@ function check_test_7() { do_execute_soon(run_test_8); }); }); - })); + }); } function run_test_8() { @@ -498,7 +498,7 @@ function run_test_8() { }, [ "onInstallStarted", "onInstallEnded", - ], callback_soon(check_test_8)); + ], check_test_8); install.install(); }); } @@ -614,7 +614,7 @@ function check_test_10(install) { ensure_test_completed(); - AddonManager.getAllInstalls(callback_soon(function(activeInstalls) { + AddonManager.getAllInstalls(function(activeInstalls) { do_check_eq(activeInstalls.length, 0); restartManager(); @@ -625,7 +625,7 @@ function check_test_10(install) { run_test_11(); }); - })); + }); } // Tests that a multi-package install shows up as multiple installs with the @@ -728,7 +728,7 @@ function run_test_11() { "onInstallStarted", "onInstallEnded" ] - }, callback_soon(check_test_11)); + }, check_test_11); installs[0].install(); installs[1].install(); @@ -820,7 +820,7 @@ function run_test_12() { "onInstallStarted", "onInstallEnded" ] - }, callback_soon(check_test_12)); + }, check_test_12); install.install(); }, "application/x-xpinstall", null, "Multi Test 4"); } @@ -944,7 +944,7 @@ function check_test_13(install) { do_check_eq(install.existingAddon.id, "addon2@tests.mozilla.org"); do_check_eq(install.addon.install, install); - AddonManager.getAddonByID("addon2@tests.mozilla.org", callback_soon(function(olda2) { + AddonManager.getAddonByID("addon2@tests.mozilla.org", function(olda2) { do_check_neq(olda2, null); do_check_true(hasFlag(olda2.pendingOperations, AddonManager.PENDING_UPGRADE)); do_check_eq(olda2.pendingUpgrade, install.addon); @@ -977,7 +977,7 @@ function check_test_13(install) { do_execute_soon(run_test_14); }); - })); + }); } // Check that cancelling the install from onDownloadStarted actually cancels it @@ -1338,7 +1338,7 @@ function run_test_21() { } function check_test_21(aInstall) { - AddonManager.getAllInstalls(callback_soon(function(aInstalls) { + AddonManager.getAllInstalls(function(aInstalls) { do_check_eq(aInstalls.length, 1); do_check_eq(aInstalls[0], aInstall); @@ -1361,7 +1361,7 @@ function check_test_21(aInstall) { run_test_22(); }); - })); + }); } // Tests that an install can be restarted after being cancelled @@ -1640,5 +1640,5 @@ function finish_test_27(aInstall) { ensure_test_completed(); - end_test(); + do_test_finished(); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_langpack.js b/toolkit/mozapps/extensions/test/xpcshell/test_langpack.js index 56edb06277c6..771f452e24a7 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_langpack.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_langpack.js @@ -142,7 +142,7 @@ function run_test_2() { do_check_true(newb1.userDisabled); do_check_false(newb1.isActive); - do_execute_soon(run_test_3); + run_test_3(); }); }); } @@ -195,7 +195,7 @@ function run_test_4() { do_check_false(newb1.userDisabled); do_check_true(newb1.isActive); - do_execute_soon(run_test_5); + run_test_5(); }); }); } @@ -244,8 +244,7 @@ function check_test_7() { // check chrome reg that language pack is not registered do_check_locale_not_registered("test-langpack"); - AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", - callback_soon(function(b1) { + AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) { do_check_eq(b1, null); restartManager(); @@ -253,9 +252,9 @@ function check_test_7() { AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(newb1) { do_check_eq(newb1, null); - do_execute_soon(run_test_8); + run_test_8(); }); - })); + }); } // Tests that a locale detected in the profile starts working immediately @@ -266,8 +265,7 @@ function run_test_8() { startupManager(false); - AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", - callback_soon(function(b1) { + AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) { do_check_neq(b1, null); do_check_eq(b1.version, "1.0"); do_check_false(b1.appDisabled); @@ -295,9 +293,9 @@ function run_test_8() { b2.uninstall(); ensure_test_completed(); - do_execute_soon(run_test_9); + run_test_9(); }); - })); + }); } // Tests that a locale from distribution/extensions gets installed and starts @@ -308,7 +306,7 @@ function run_test_9() { gAppInfo.version = "2.0"; startupManager(true); - AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", callback_soon(function(b1) { + AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) { do_check_neq(b1, null); do_check_eq(b1.version, "1.0"); do_check_false(b1.appDisabled); @@ -327,5 +325,5 @@ function run_test_9() { do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing"); do_test_finished(); - })); + }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_locale.js b/toolkit/mozapps/extensions/test/xpcshell/test_locale.js index b4c7311e5391..288c6b2f2699 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_locale.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_locale.js @@ -34,7 +34,7 @@ function run_test_1() { }, [ "onInstallStarted", "onInstallEnded", - ], callback_soon(run_test_2)); + ], run_test_2); install.install(); }); } @@ -50,19 +50,19 @@ function run_test_2() { do_check_eq(addon.description, "fr-FR Description"); addon.userDisabled = true; - do_execute_soon(run_test_3); + restartManager(); + + run_test_3(); }); } // Test that the localized properties are still there when disabled. function run_test_3() { - restartManager(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(addon) { do_check_neq(addon, null); do_check_eq(addon.name, "fr-FR Name"); - do_execute_soon(run_test_4); + run_test_4(); }); } @@ -82,7 +82,7 @@ function run_test_4() { do_check_eq(contributors[1], "Fr Contributor 2"); do_check_eq(contributors[2], "Fr Contributor 3"); - do_execute_soon(run_test_5); + run_test_5(); }); } @@ -97,7 +97,7 @@ function run_test_5() { do_check_eq(addon.name, "de-DE Name"); do_check_eq(addon.description, null); - do_execute_soon(run_test_6); + run_test_6(); }); } @@ -106,27 +106,26 @@ function run_test_6() { Services.prefs.setCharPref(PREF_SELECTED_LOCALE, "nl-NL"); restartManager(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(addon) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(addon) { do_check_neq(addon, null); do_check_eq(addon.name, "Fallback Name"); do_check_eq(addon.description, "Fallback Description"); addon.userDisabled = false; - do_execute_soon(run_test_7); - })); + restartManager(); + run_test_7(); + }); } // Test that the prefs will override the fallbacks function run_test_7() { - restartManager(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", function(addon) { do_check_neq(addon, null); do_check_eq(addon.name, "Name from prefs"); - do_execute_soon(run_test_8); + run_test_8(); }); } @@ -144,6 +143,6 @@ function run_test_8() { do_check_eq(contributors[0], "Contributor 1"); do_check_eq(contributors[1], "Contributor 2"); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_locked.js b/toolkit/mozapps/extensions/test/xpcshell/test_locked.js old mode 100755 new mode 100644 index 90c86ceeddfd..91d09c07c7e2 --- a/toolkit/mozapps/extensions/test/xpcshell/test_locked.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_locked.js @@ -4,9 +4,8 @@ // Checks that we rebuild something sensible from a corrupt database -Components.utils.import("resource://testing-common/httpd.js"); -Components.utils.import("resource://gre/modules/osfile.jsm"); +Components.utils.import("resource://testing-common/httpd.js"); var testserver = new HttpServer(); testserver.start(-1); gPort = testserver.identity.primaryPort; @@ -255,28 +254,188 @@ function run_test_1() { do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); do_check_true(isThemeInAddonsList(profileDir, t2.id)); - // Open another handle on the JSON DB with as much Unix and Windows locking - // as we can to simulate some other process interfering with it + // After shutting down the database won't be open so we can + // mess with permissions shutdownManager(); - do_print("Locking " + gExtensionsJSON.path); - let options = { - winShare: 0 - }; - if (OS.Constants.libc.O_EXLOCK) - options.unixFlags = OS.Constants.libc.O_EXLOCK; + var savedPermissions = gExtensionsJSON.permissions; + gExtensionsJSON.permissions = 0; + + startupManager(false); + + // Shouldn't have seen any startup changes + check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); + + // Accessing the add-ons should open and recover the database + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", + "addon2@tests.mozilla.org", + "addon3@tests.mozilla.org", + "addon4@tests.mozilla.org", + "addon5@tests.mozilla.org", + "addon6@tests.mozilla.org", + "addon7@tests.mozilla.org", + "theme1@tests.mozilla.org", + "theme2@tests.mozilla.org"], + callback_soon(function get_after_lock([a1, a2, a3, a4, a5, a6, a7, t1, t2]) { + // Should be correctly recovered + do_check_neq(a1, null); + do_check_true(a1.isActive); + do_check_false(a1.userDisabled); + do_check_false(a1.appDisabled); + do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); + do_check_true(isExtensionInAddonsList(profileDir, a1.id)); + + // Should be correctly recovered + do_check_neq(a2, null); + do_check_false(a2.isActive); + do_check_true(a2.userDisabled); + do_check_false(a2.appDisabled); + do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); + do_check_false(isExtensionInAddonsList(profileDir, a2.id)); + + // The compatibility update won't be recovered but it should still be + // active for this session + do_check_neq(a3, null); + do_check_true(a3.isActive); + do_check_false(a3.userDisabled); + do_check_false(a3.appDisabled); + do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); + do_check_true(isExtensionInAddonsList(profileDir, a3.id)); + + // The compatibility update won't be recovered and with strict + // compatibility it would not have been able to tell that it was + // previously userDisabled. However, without strict compat, it wasn't + // appDisabled, so it knows it must have been userDisabled. + do_check_neq(a4, null); + do_check_false(a4.isActive); + do_check_true(a4.userDisabled); + do_check_false(a4.appDisabled); + do_check_eq(a4.pendingOperations, AddonManager.PENDING_NONE); + do_check_false(isExtensionInAddonsList(profileDir, a4.id)); + + do_check_neq(a5, null); + do_check_true(a5.isActive); + do_check_false(a5.userDisabled); + do_check_false(a5.appDisabled); + do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); + do_check_true(isExtensionInAddonsList(profileDir, a5.id)); + + do_check_neq(a6, null); + do_check_true(a6.isActive); + do_check_false(a6.userDisabled); + do_check_false(a6.appDisabled); + do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); + + do_check_neq(a7, null); + do_check_false(a7.isActive); + do_check_true(a7.userDisabled); + do_check_false(a7.appDisabled); + do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); + + // Should be correctly recovered + do_check_neq(t1, null); + do_check_false(t1.isActive); + do_check_true(t1.userDisabled); + do_check_false(t1.appDisabled); + do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); + do_check_false(isThemeInAddonsList(profileDir, t1.id)); + + // Should be correctly recovered + do_check_neq(t2, null); + do_check_true(t2.isActive); + do_check_false(t2.userDisabled); + do_check_false(t2.appDisabled); + do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); + do_check_true(isThemeInAddonsList(profileDir, t2.id)); + + // Restarting will actually apply changes to extensions.ini which will + // then be put into the in-memory database when we next fail to load the + // real thing + restartManager(); + + // Shouldn't have seen any startup changes + check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); + + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", + "addon2@tests.mozilla.org", + "addon3@tests.mozilla.org", + "addon4@tests.mozilla.org", + "addon5@tests.mozilla.org", + "addon6@tests.mozilla.org", + "addon7@tests.mozilla.org", + "theme1@tests.mozilla.org", + "theme2@tests.mozilla.org"], + callback_soon(function([a1, a2, a3, a4, a5, a6, a7, t1, t2]) { + do_check_neq(a1, null); + do_check_true(a1.isActive); + do_check_false(a1.userDisabled); + do_check_false(a1.appDisabled); + do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); + do_check_true(isExtensionInAddonsList(profileDir, a1.id)); + + do_check_neq(a2, null); + do_check_false(a2.isActive); + do_check_true(a2.userDisabled); + do_check_false(a2.appDisabled); + do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); + do_check_false(isExtensionInAddonsList(profileDir, a2.id)); + + do_check_neq(a3, null); + do_check_true(a3.isActive); + do_check_false(a3.userDisabled); + do_check_false(a3.appDisabled); + do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); + do_check_true(isExtensionInAddonsList(profileDir, a3.id)); + + do_check_neq(a4, null); + do_check_false(a4.isActive); + do_check_true(a4.userDisabled); + do_check_false(a4.appDisabled); + do_check_eq(a4.pendingOperations, AddonManager.PENDING_NONE); + do_check_false(isExtensionInAddonsList(profileDir, a4.id)); + + do_check_neq(a5, null); + do_check_true(a5.isActive); + do_check_false(a5.userDisabled); + do_check_false(a5.appDisabled); + do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); + do_check_true(isExtensionInAddonsList(profileDir, a5.id)); + + do_check_neq(a6, null); + do_check_true(a6.isActive); + do_check_false(a6.userDisabled); + do_check_false(a6.appDisabled); + do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); + + do_check_neq(a7, null); + do_check_false(a7.isActive); + do_check_true(a7.userDisabled); + do_check_false(a7.appDisabled); + do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); + + do_check_neq(t1, null); + do_check_false(t1.isActive); + do_check_true(t1.userDisabled); + do_check_false(t1.appDisabled); + do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); + do_check_false(isThemeInAddonsList(profileDir, t1.id)); + + do_check_neq(t2, null); + do_check_true(t2.isActive); + do_check_false(t2.userDisabled); + do_check_false(t2.appDisabled); + do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); + do_check_true(isThemeInAddonsList(profileDir, t2.id)); + + // After allowing access to the original DB things should go back to as + // they were previously + shutdownManager(); + gExtensionsJSON.permissions = savedPermissions; + startupManager(); - OS.File.open(gExtensionsJSON.path, {read:true, write:true, existing:true}, options).then( - file => { - filePermissions = gExtensionsJSON.permissions; - if (!OS.Constants.Win) { - gExtensionsJSON.permissions = 0; - } - startupManager(false); // Shouldn't have seen any startup changes check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - // Accessing the add-ons should open and recover the database AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", "addon2@tests.mozilla.org", "addon3@tests.mozilla.org", @@ -286,8 +445,7 @@ function run_test_1() { "addon7@tests.mozilla.org", "theme1@tests.mozilla.org", "theme2@tests.mozilla.org"], - callback_soon(function get_after_lock([a1, a2, a3, a4, a5, a6, a7, t1, t2]) { - // Should be correctly recovered + callback_soon(function([a1, a2, a3, a4, a5, a6, a7, t1, t2]) { do_check_neq(a1, null); do_check_true(a1.isActive); do_check_false(a1.userDisabled); @@ -295,7 +453,6 @@ function run_test_1() { do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - // Should be correctly recovered do_check_neq(a2, null); do_check_false(a2.isActive); do_check_true(a2.userDisabled); @@ -303,8 +460,6 @@ function run_test_1() { do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - // The compatibility update won't be recovered but it should still be - // active for this session do_check_neq(a3, null); do_check_true(a3.isActive); do_check_false(a3.userDisabled); @@ -312,10 +467,6 @@ function run_test_1() { do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - // The compatibility update won't be recovered and with strict - // compatibility it would not have been able to tell that it was - // previously userDisabled. However, without strict compat, it wasn't - // appDisabled, so it knows it must have been userDisabled. do_check_neq(a4, null); do_check_false(a4.isActive); do_check_true(a4.userDisabled); @@ -342,7 +493,6 @@ function run_test_1() { do_check_false(a7.appDisabled); do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); - // Should be correctly recovered do_check_neq(t1, null); do_check_false(t1.isActive); do_check_true(t1.userDisabled); @@ -350,7 +500,6 @@ function run_test_1() { do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); do_check_false(isThemeInAddonsList(profileDir, t1.id)); - // Should be correctly recovered do_check_neq(t2, null); do_check_true(t2.isActive); do_check_false(t2.userDisabled); @@ -358,174 +507,9 @@ function run_test_1() { do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); do_check_true(isThemeInAddonsList(profileDir, t2.id)); - // Restarting will actually apply changes to extensions.ini which will - // then be put into the in-memory database when we next fail to load the - // real thing - restartManager(); - - // Shouldn't have seen any startup changes - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], - callback_soon(function([a1, a2, a3, a4, a5, a6, a7, t1, t2]) { - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_true(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_true(a3.isActive); - do_check_false(a3.userDisabled); - do_check_false(a3.appDisabled); - do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - - do_check_neq(a4, null); - do_check_false(a4.isActive); - do_check_true(a4.userDisabled); - do_check_false(a4.appDisabled); - do_check_eq(a4.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a4.id)); - - do_check_neq(a5, null); - do_check_true(a5.isActive); - do_check_false(a5.userDisabled); - do_check_false(a5.appDisabled); - do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a5.id)); - - do_check_neq(a6, null); - do_check_true(a6.isActive); - do_check_false(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a7, null); - do_check_false(a7.isActive); - do_check_true(a7.userDisabled); - do_check_false(a7.appDisabled); - do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isThemeInAddonsList(profileDir, t1.id)); - - do_check_neq(t2, null); - do_check_true(t2.isActive); - do_check_false(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isThemeInAddonsList(profileDir, t2.id)); - - // After allowing access to the original DB things should go back to as - // they were previously - shutdownManager(); - do_print("Unlocking " + gExtensionsJSON.path); - file.close(); - gExtensionsJSON.permissions = filePermissions; - startupManager(); - - - // Shouldn't have seen any startup changes - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], - callback_soon(function([a1, a2, a3, a4, a5, a6, a7, t1, t2]) { - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_true(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_true(a3.isActive); - do_check_false(a3.userDisabled); - do_check_false(a3.appDisabled); - do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - - do_check_neq(a4, null); - do_check_false(a4.isActive); - do_check_true(a4.userDisabled); - do_check_false(a4.appDisabled); - do_check_eq(a4.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a4.id)); - - do_check_neq(a5, null); - do_check_true(a5.isActive); - do_check_false(a5.userDisabled); - do_check_false(a5.appDisabled); - do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a5.id)); - - do_check_neq(a6, null); - do_check_true(a6.isActive); - do_check_false(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a7, null); - do_check_false(a7.isActive); - do_check_true(a7.userDisabled); - do_check_false(a7.appDisabled); - do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isThemeInAddonsList(profileDir, t1.id)); - - do_check_neq(t2, null); - do_check_true(t2.isActive); - do_check_false(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isThemeInAddonsList(profileDir, t2.id)); - - end_test(); - })); - })); + end_test(); })); - }, - do_report_unexpected_exception - ); + })); + })); })); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_locked2.js b/toolkit/mozapps/extensions/test/xpcshell/test_locked2.js index 1f97334fd37c..79c3439fd4e8 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_locked2.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_locked2.js @@ -5,8 +5,6 @@ // Checks that we handle a locked database when there are extension changes // in progress -Components.utils.import("resource://gre/modules/osfile.jsm"); - // Will be left alone var addon1 = { id: "addon1@tests.mozilla.org", @@ -91,7 +89,7 @@ function run_test() { check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); - AddonManager.getAddonByID("addon2@tests.mozilla.org", callback_soon(function(a2) { + AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { a2.userDisabled = true; restartManager(); @@ -144,152 +142,125 @@ function run_test() { do_check_eq(a5.pendingOperations, AddonManager.PENDING_UPGRADE); do_check_true(isExtensionInAddonsList(profileDir, a5.id)); - // Open another handle on the JSON DB with as much Unix and Windows locking - // as we can to simulate some other process interfering with it + // After shutting down the database won't be open so we can lock it shutdownManager(); - do_print("Locking " + gExtensionsJSON.path); - let options = { - winShare: 0 - }; - if (OS.Constants.libc.O_EXLOCK) - options.unixFlags = OS.Constants.libc.O_EXLOCK; + var savedPermissions = gExtensionsJSON.permissions; + gExtensionsJSON.permissions = 0; - OS.File.open(gExtensionsJSON.path, {read:true, write:true, existing:true}, options).then( - file => { - filePermissions = gExtensionsJSON.permissions; - if (!OS.Constants.Win) { - gExtensionsJSON.permissions = 0; - } - startupManager(false); + startupManager(false); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); + check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); + check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org"], - callback_soon(function([a1, a2, a3, a4, a5, a6]) { - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", + "addon2@tests.mozilla.org", + "addon3@tests.mozilla.org", + "addon4@tests.mozilla.org", + "addon5@tests.mozilla.org", + "addon6@tests.mozilla.org"], + function([a1, a2, a3, a4, a5, a6]) { + do_check_neq(a1, null); + do_check_true(a1.isActive); + do_check_false(a1.userDisabled); + do_check_false(a1.appDisabled); + do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); + do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - do_check_neq(a2, null); - do_check_true(a2.isActive); - do_check_false(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a2.id)); + do_check_neq(a2, null); + do_check_true(a2.isActive); + do_check_false(a2.userDisabled); + do_check_false(a2.appDisabled); + do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); + do_check_true(isExtensionInAddonsList(profileDir, a2.id)); - do_check_neq(a3, null); - do_check_false(a3.isActive); - do_check_true(a3.userDisabled); - do_check_false(a3.appDisabled); - do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a3.id)); + do_check_neq(a3, null); + do_check_false(a3.isActive); + do_check_true(a3.userDisabled); + do_check_false(a3.appDisabled); + do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); + do_check_false(isExtensionInAddonsList(profileDir, a3.id)); - do_check_eq(a4, null); + do_check_eq(a4, null); - do_check_neq(a5, null); - do_check_eq(a5.version, "2.0"); - do_check_true(a5.isActive); - do_check_false(a5.userDisabled); - do_check_false(a5.appDisabled); - do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a5.id)); + do_check_neq(a5, null); + do_check_eq(a5.version, "2.0"); + do_check_true(a5.isActive); + do_check_false(a5.userDisabled); + do_check_false(a5.appDisabled); + do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); + do_check_true(isExtensionInAddonsList(profileDir, a5.id)); - do_check_neq(a6, null); - do_check_true(a6.isActive); - do_check_false(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a6.id)); + do_check_neq(a6, null); + do_check_true(a6.isActive); + do_check_false(a6.userDisabled); + do_check_false(a6.appDisabled); + do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); + do_check_true(isExtensionInAddonsList(profileDir, a6.id)); - // After allowing access to the original DB things should still be - // back how they were before the lock - shutdownManager(); - file.close(); - gExtensionsJSON.permissions = filePermissions; - startupManager(); + // After allowing access to the original DB things should still be + // applied correctly + shutdownManager(); + gExtensionsJSON.permissions = savedPermissions; + startupManager(); - // On Unix, we can save the DB even when the original file wasn't - // readable, so our changes were saved. On Windows, - // these things happened when we had no access to the database so - // they are seen as external changes when we get the database back - if (gXPISaveError) { - do_print("Previous XPI save failed"); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, - ["addon6@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, - ["addon4@tests.mozilla.org"]); - } - else { - do_print("Previous XPI save succeeded"); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); - } + // These things happened when we had no access to the database so + // they are seen as external changes when we get the database back :( + check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, ["addon6@tests.mozilla.org"]); + check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, ["addon4@tests.mozilla.org"]); - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org"], - function([a1, a2, a3, a4, a5, a6]) { - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", + "addon2@tests.mozilla.org", + "addon3@tests.mozilla.org", + "addon4@tests.mozilla.org", + "addon5@tests.mozilla.org", + "addon6@tests.mozilla.org"], + function([a1, a2, a3, a4, a5, a6]) { + do_check_neq(a1, null); + do_check_true(a1.isActive); + do_check_false(a1.userDisabled); + do_check_false(a1.appDisabled); + do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); + do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - do_check_neq(a2, null); - do_check_true(a2.isActive); - do_check_false(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a2.id)); + do_check_neq(a2, null); + do_check_true(a2.isActive); + do_check_false(a2.userDisabled); + do_check_false(a2.appDisabled); + do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); + do_check_true(isExtensionInAddonsList(profileDir, a2.id)); - do_check_neq(a3, null); - do_check_false(a3.isActive); - do_check_true(a3.userDisabled); - do_check_false(a3.appDisabled); - do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a3.id)); + do_check_neq(a3, null); + do_check_false(a3.isActive); + do_check_true(a3.userDisabled); + do_check_false(a3.appDisabled); + do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); + do_check_false(isExtensionInAddonsList(profileDir, a3.id)); - do_check_eq(a4, null); + do_check_eq(a4, null); - do_check_neq(a5, null); - do_check_eq(a5.version, "2.0"); - do_check_true(a5.isActive); - do_check_false(a5.userDisabled); - do_check_false(a5.appDisabled); - do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a5.id)); + do_check_neq(a5, null); + do_check_eq(a5.version, "2.0"); + do_check_true(a5.isActive); + do_check_false(a5.userDisabled); + do_check_false(a5.appDisabled); + do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); + do_check_true(isExtensionInAddonsList(profileDir, a5.id)); - do_check_neq(a6, null); - do_check_true(a6.isActive); - do_check_false(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a6.id)); + do_check_neq(a6, null); + do_check_true(a6.isActive); + do_check_false(a6.userDisabled); + do_check_false(a6.appDisabled); + do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); + do_check_true(isExtensionInAddonsList(profileDir, a6.id)); - end_test(); - }); - })); - }, - do_report_unexpected_exception - ); + end_test(); + }); + }); }); }); - })); + }); } function end_test() { - do_execute_soon(do_test_finished); + do_test_finished(); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_locked_strictcompat.js b/toolkit/mozapps/extensions/test/xpcshell/test_locked_strictcompat.js index 79f6b89be280..f38549cdaae2 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_locked_strictcompat.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_locked_strictcompat.js @@ -4,9 +4,8 @@ // Checks that we rebuild something sensible from a corrupt database -Components.utils.import("resource://testing-common/httpd.js"); -Components.utils.import("resource://gre/modules/osfile.jsm"); +Components.utils.import("resource://testing-common/httpd.js"); var testserver = new HttpServer(); testserver.start(-1); gPort = testserver.identity.primaryPort; @@ -255,28 +254,184 @@ function run_test_1() { do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); do_check_true(isThemeInAddonsList(profileDir, t2.id)); - // Open another handle on the JSON DB with as much Unix and Windows locking - // as we can to simulate some other process interfering with it + // After shutting down the database won't be open so we can lock it shutdownManager(); - do_print("Locking " + gExtensionsJSON.path); - let options = { - winShare: 0 - }; - if (OS.Constants.libc.O_EXLOCK) - options.unixFlags = OS.Constants.libc.O_EXLOCK; + var savedPermissions = gExtensionsJSON.permissions; + gExtensionsJSON.permissions = 0; - OS.File.open(gExtensionsJSON.path, {read:true, write:true, existing:true}, options).then( - file => { - filePermissions = gExtensionsJSON.permissions; - if (!OS.Constants.Win) { - gExtensionsJSON.permissions = 0; - } + startupManager(false); + + // Shouldn't have seen any startup changes + check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); + + // Accessing the add-ons should open and recover the database + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", + "addon2@tests.mozilla.org", + "addon3@tests.mozilla.org", + "addon4@tests.mozilla.org", + "addon5@tests.mozilla.org", + "addon6@tests.mozilla.org", + "addon7@tests.mozilla.org", + "theme1@tests.mozilla.org", + "theme2@tests.mozilla.org"], + callback_soon(function([a1, a2, a3, a4, a5, a6, a7, t1, t2]) { + // Should be correctly recovered + do_check_neq(a1, null); + do_check_true(a1.isActive); + do_check_false(a1.userDisabled); + do_check_false(a1.appDisabled); + do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); + do_check_true(isExtensionInAddonsList(profileDir, a1.id)); + + // Should be correctly recovered + do_check_neq(a2, null); + do_check_false(a2.isActive); + do_check_true(a2.userDisabled); + do_check_false(a2.appDisabled); + do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); + do_check_false(isExtensionInAddonsList(profileDir, a2.id)); + + // The compatibility update won't be recovered but it should still be + // active for this session + do_check_neq(a3, null); + do_check_true(a3.isActive); + do_check_false(a3.userDisabled); + do_check_true(a3.appDisabled); + do_check_eq(a3.pendingOperations, AddonManager.PENDING_DISABLE); + do_check_true(isExtensionInAddonsList(profileDir, a3.id)); + + // The compatibility update won't be recovered and it will not have been + // able to tell that it was previously userDisabled + do_check_neq(a4, null); + do_check_false(a4.isActive); + do_check_false(a4.userDisabled); + do_check_true(a4.appDisabled); + do_check_eq(a4.pendingOperations, AddonManager.PENDING_NONE); + do_check_false(isExtensionInAddonsList(profileDir, a4.id)); + + do_check_neq(a5, null); + do_check_false(a5.isActive); + do_check_false(a5.userDisabled); + do_check_true(a5.appDisabled); + do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); + do_check_false(isExtensionInAddonsList(profileDir, a5.id)); + + do_check_neq(a6, null); + do_check_true(a6.isActive); + do_check_false(a6.userDisabled); + do_check_false(a6.appDisabled); + do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); + + do_check_neq(a7, null); + do_check_false(a7.isActive); + do_check_true(a7.userDisabled); + do_check_false(a7.appDisabled); + do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); + + // Should be correctly recovered + do_check_neq(t1, null); + do_check_false(t1.isActive); + do_check_true(t1.userDisabled); + do_check_false(t1.appDisabled); + do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); + do_check_false(isThemeInAddonsList(profileDir, t1.id)); + + // Should be correctly recovered + do_check_neq(t2, null); + do_check_true(t2.isActive); + do_check_false(t2.userDisabled); + do_check_false(t2.appDisabled); + do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); + do_check_true(isThemeInAddonsList(profileDir, t2.id)); + + // Restarting will actually apply changes to extensions.ini which will + // then be put into the in-memory database when we next fail to load the + // real thing + restartManager(); + + // Shouldn't have seen any startup changes + check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); + + AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", + "addon2@tests.mozilla.org", + "addon3@tests.mozilla.org", + "addon4@tests.mozilla.org", + "addon5@tests.mozilla.org", + "addon6@tests.mozilla.org", + "addon7@tests.mozilla.org", + "theme1@tests.mozilla.org", + "theme2@tests.mozilla.org"], + callback_soon(function([a1, a2, a3, a4, a5, a6, a7, t1, t2]) { + do_check_neq(a1, null); + do_check_true(a1.isActive); + do_check_false(a1.userDisabled); + do_check_false(a1.appDisabled); + do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); + do_check_true(isExtensionInAddonsList(profileDir, a1.id)); + + do_check_neq(a2, null); + do_check_false(a2.isActive); + do_check_true(a2.userDisabled); + do_check_false(a2.appDisabled); + do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); + do_check_false(isExtensionInAddonsList(profileDir, a2.id)); + + do_check_neq(a3, null); + do_check_false(a3.isActive); + do_check_false(a3.userDisabled); + do_check_true(a3.appDisabled); + do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); + do_check_false(isExtensionInAddonsList(profileDir, a3.id)); + + do_check_neq(a4, null); + do_check_false(a4.isActive); + do_check_false(a4.userDisabled); + do_check_true(a4.appDisabled); + do_check_eq(a4.pendingOperations, AddonManager.PENDING_NONE); + do_check_false(isExtensionInAddonsList(profileDir, a4.id)); + + do_check_neq(a5, null); + do_check_false(a5.isActive); + do_check_false(a5.userDisabled); + do_check_true(a5.appDisabled); + do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); + do_check_false(isExtensionInAddonsList(profileDir, a5.id)); + + do_check_neq(a6, null); + do_check_true(a6.isActive); + do_check_false(a6.userDisabled); + do_check_false(a6.appDisabled); + do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); + + do_check_neq(a7, null); + do_check_false(a7.isActive); + do_check_true(a7.userDisabled); + do_check_false(a7.appDisabled); + do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); + + do_check_neq(t1, null); + do_check_false(t1.isActive); + do_check_true(t1.userDisabled); + do_check_false(t1.appDisabled); + do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); + do_check_false(isThemeInAddonsList(profileDir, t1.id)); + + do_check_neq(t2, null); + do_check_true(t2.isActive); + do_check_false(t2.userDisabled); + do_check_false(t2.appDisabled); + do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); + do_check_true(isThemeInAddonsList(profileDir, t2.id)); + + // After allowing access to the original DB things should go back to as + // they were previously + shutdownManager(); + gExtensionsJSON.permissions = savedPermissions; startupManager(false); // Shouldn't have seen any startup changes check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - // Accessing the add-ons should open and recover the database AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", "addon2@tests.mozilla.org", "addon3@tests.mozilla.org", @@ -287,7 +442,6 @@ function run_test_1() { "theme1@tests.mozilla.org", "theme2@tests.mozilla.org"], callback_soon(function([a1, a2, a3, a4, a5, a6, a7, t1, t2]) { - // Should be correctly recovered do_check_neq(a1, null); do_check_true(a1.isActive); do_check_false(a1.userDisabled); @@ -295,7 +449,6 @@ function run_test_1() { do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - // Should be correctly recovered do_check_neq(a2, null); do_check_false(a2.isActive); do_check_true(a2.userDisabled); @@ -303,21 +456,17 @@ function run_test_1() { do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - // The compatibility update won't be recovered but it should still be - // active for this session do_check_neq(a3, null); do_check_true(a3.isActive); do_check_false(a3.userDisabled); - do_check_true(a3.appDisabled); - do_check_eq(a3.pendingOperations, AddonManager.PENDING_DISABLE); + do_check_false(a3.appDisabled); + do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - // The compatibility update won't be recovered and it will not have been - // able to tell that it was previously userDisabled do_check_neq(a4, null); do_check_false(a4.isActive); - do_check_false(a4.userDisabled); - do_check_true(a4.appDisabled); + do_check_true(a4.userDisabled); + do_check_false(a4.appDisabled); do_check_eq(a4.pendingOperations, AddonManager.PENDING_NONE); do_check_false(isExtensionInAddonsList(profileDir, a4.id)); @@ -340,7 +489,6 @@ function run_test_1() { do_check_false(a7.appDisabled); do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); - // Should be correctly recovered do_check_neq(t1, null); do_check_false(t1.isActive); do_check_true(t1.userDisabled); @@ -348,7 +496,6 @@ function run_test_1() { do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); do_check_false(isThemeInAddonsList(profileDir, t1.id)); - // Should be correctly recovered do_check_neq(t2, null); do_check_true(t2.isActive); do_check_false(t2.userDisabled); @@ -356,195 +503,9 @@ function run_test_1() { do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); do_check_true(isThemeInAddonsList(profileDir, t2.id)); - // Restarting will actually apply changes to extensions.ini which will - // then be put into the in-memory database when we next fail to load the - // real thing - restartManager(); - - // Shouldn't have seen any startup changes - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], - callback_soon(function([a1, a2, a3, a4, a5, a6, a7, t1, t2]) { - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_true(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_false(a3.isActive); - do_check_false(a3.userDisabled); - do_check_true(a3.appDisabled); - do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a3.id)); - - do_check_neq(a4, null); - do_check_false(a4.isActive); - do_check_false(a4.userDisabled); - do_check_true(a4.appDisabled); - do_check_eq(a4.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a4.id)); - - do_check_neq(a5, null); - do_check_false(a5.isActive); - do_check_false(a5.userDisabled); - do_check_true(a5.appDisabled); - do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a5.id)); - - do_check_neq(a6, null); - do_check_true(a6.isActive); - do_check_false(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a7, null); - do_check_false(a7.isActive); - do_check_true(a7.userDisabled); - do_check_false(a7.appDisabled); - do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isThemeInAddonsList(profileDir, t1.id)); - - do_check_neq(t2, null); - do_check_true(t2.isActive); - do_check_false(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isThemeInAddonsList(profileDir, t2.id)); - - // After allowing access to the original DB things should go back to as - // back how they were before the lock - shutdownManager(); - do_print("Unlocking " + gExtensionsJSON.path); - file.close(); - gExtensionsJSON.permissions = filePermissions; - startupManager(false); - - // Shouldn't have seen any startup changes - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org", - "addon4@tests.mozilla.org", - "addon5@tests.mozilla.org", - "addon6@tests.mozilla.org", - "addon7@tests.mozilla.org", - "theme1@tests.mozilla.org", - "theme2@tests.mozilla.org"], - callback_soon(function([a1, a2, a3, a4, a5, a6, a7, t1, t2]) { - do_check_neq(a1, null); - do_check_true(a1.isActive); - do_check_false(a1.userDisabled); - do_check_false(a1.appDisabled); - do_check_eq(a1.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_false(a2.isActive); - do_check_true(a2.userDisabled); - do_check_false(a2.appDisabled); - do_check_eq(a2.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_false(a3.userDisabled); - // On Unix, we may be able to save our changes over the locked DB so we - // remember that this extension was changed to disabled. On Windows we - // couldn't replace the old DB so we read the older version of the DB - // where the extension is enabled - if (gXPISaveError) { - do_print("XPI save failed"); - do_check_true(a3.isActive); - do_check_false(a3.appDisabled); - do_check_true(isExtensionInAddonsList(profileDir, a3.id)); - } - else { - do_print("XPI save succeeded"); - do_check_false(a3.isActive); - do_check_true(a3.appDisabled); - do_check_false(isExtensionInAddonsList(profileDir, a3.id)); - } - do_check_eq(a3.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a4, null); - do_check_false(a4.isActive); - // The reverse of the platform difference for a3 - Unix should - // stay the same as the last iteration because the save succeeded, - // Windows should still say userDisabled - if (OS.Constants.Win) { - do_check_true(a4.userDisabled); - do_check_false(a4.appDisabled); - } - else { - do_check_false(a4.userDisabled); - do_check_true(a4.appDisabled); - } - do_check_false(isExtensionInAddonsList(profileDir, a4.id)); - do_check_eq(a4.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a5, null); - do_check_false(a5.isActive); - do_check_false(a5.userDisabled); - do_check_true(a5.appDisabled); - do_check_eq(a5.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isExtensionInAddonsList(profileDir, a5.id)); - - do_check_neq(a6, null); - do_check_true(a6.isActive); - do_check_false(a6.userDisabled); - do_check_false(a6.appDisabled); - do_check_eq(a6.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(a7, null); - do_check_false(a7.isActive); - do_check_true(a7.userDisabled); - do_check_false(a7.appDisabled); - do_check_eq(a7.pendingOperations, AddonManager.PENDING_NONE); - - do_check_neq(t1, null); - do_check_false(t1.isActive); - do_check_true(t1.userDisabled); - do_check_false(t1.appDisabled); - do_check_eq(t1.pendingOperations, AddonManager.PENDING_NONE); - do_check_false(isThemeInAddonsList(profileDir, t1.id)); - - do_check_neq(t2, null); - do_check_true(t2.isActive); - do_check_false(t2.userDisabled); - do_check_false(t2.appDisabled); - do_check_eq(t2.pendingOperations, AddonManager.PENDING_NONE); - do_check_true(isThemeInAddonsList(profileDir, t2.id)); - - end_test(); - })); - })); + end_test(); })); - }, - do_report_unexpected_exception - ); + })); + })); })); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_manifest.js b/toolkit/mozapps/extensions/test/xpcshell/test_manifest.js index 061a3a6b2b85..e228dc61305f 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_manifest.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_manifest.js @@ -557,6 +557,6 @@ function run_test() { do_check_eq(a26.optionsType, AddonManager.OPTIONS_TYPE_INLINE_INFO); do_check_neq(a26.optionsURL, null); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_mapURIToAddonID.js b/toolkit/mozapps/extensions/test/xpcshell/test_mapURIToAddonID.js index 6a116746549b..a01701c57bc3 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_mapURIToAddonID.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_mapURIToAddonID.js @@ -140,7 +140,7 @@ function run_test_2(uri) { do_check_true(newb1.userDisabled); check_mapping(uri, newb1.id); - do_execute_soon(() => run_test_3(uri)); + run_test_3(uri); }); }); } @@ -174,7 +174,7 @@ function run_test_4() { let uri = newb1.getResourceURI("."); check_mapping(uri, newb1.id); - do_execute_soon(run_test_5); + run_test_5(); }); }); } @@ -187,7 +187,7 @@ function run_test_5() { let uri = b1.getResourceURI("."); check_mapping(uri, b1.id); - do_execute_soon(run_test_invalidarg); + run_test_invalidarg(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_migrate1.js b/toolkit/mozapps/extensions/test/xpcshell/test_migrate1.js index ffef6b7d169b..478e697cb78f 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_migrate1.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_migrate1.js @@ -246,6 +246,6 @@ function run_test() { do_check_false(stagedXPIs.exists()); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_migrate2.js b/toolkit/mozapps/extensions/test/xpcshell/test_migrate2.js index c213bace73fa..c703b25c19a9 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_migrate2.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_migrate2.js @@ -254,6 +254,6 @@ function run_test() { do_check_false(a8.strictCompatibility); do_check_true(a8.foreignInstall); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_migrate3.js b/toolkit/mozapps/extensions/test/xpcshell/test_migrate3.js index f27d53c3fc9f..ef7bdd3f603c 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_migrate3.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_migrate3.js @@ -234,6 +234,6 @@ function run_test() { do_check_false(stagedXPIs.exists()); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_migrate5.js b/toolkit/mozapps/extensions/test/xpcshell/test_migrate5.js index 0109dcf927a6..91a05fa358e3 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_migrate5.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_migrate5.js @@ -134,6 +134,6 @@ function run_test() { do_check_false(d.appDisabled); do_check_false(d.isActive); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_onPropertyChanged_appDisabled.js b/toolkit/mozapps/extensions/test/xpcshell/test_onPropertyChanged_appDisabled.js index f9b7da073cd6..d191ed33bdde 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_onPropertyChanged_appDisabled.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_onPropertyChanged_appDisabled.js @@ -59,7 +59,7 @@ function run_test_2() { "addon1@tests.mozilla.org": [ ["onPropertyChanged", ["appDisabled"]] ] - }, [], callback_soon(do_test_finished)); + }, [], do_test_finished); AddonManager.strictCompatibility = false; }); diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_pluginchange.js b/toolkit/mozapps/extensions/test/xpcshell/test_pluginchange.js index ba24e92e019c..917e2aa7d4d3 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_pluginchange.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_pluginchange.js @@ -75,7 +75,7 @@ function run_test() { } function end_test() { - do_execute_soon(do_test_finished); + do_test_finished(); } function sortAddons(addons) { diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_plugins.js b/toolkit/mozapps/extensions/test/xpcshell/test_plugins.js index 7051ca14470b..3de712cdae40 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_plugins.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_plugins.js @@ -173,6 +173,6 @@ function run_test_4() { Services.prefs.clearUserPref("plugins.click_to_play"); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_registry.js b/toolkit/mozapps/extensions/test/xpcshell/test_registry.js index 010250457986..a2d8b80a31d0 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_registry.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_registry.js @@ -146,6 +146,6 @@ function run_test_4() { do_check_eq(a1, null); do_check_neq(a2, null); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_safemode.js b/toolkit/mozapps/extensions/test/xpcshell/test_safemode.js index 05647f807f3b..dbbe848fc5db 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_safemode.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_safemode.js @@ -33,7 +33,7 @@ function run_test() { startupManager(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { do_check_eq(a1, null); do_check_not_in_crash_annotation(addon1.id, addon1.version); @@ -57,7 +57,7 @@ function run_test() { run_test_1(); }); - })); + }); } // Disabling an add-on should work @@ -110,6 +110,6 @@ function run_test_2() { ensure_test_completed(); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_startup.js b/toolkit/mozapps/extensions/test/xpcshell/test_startup.js index 36e3da0465a3..a14f07e43471 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_startup.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_startup.js @@ -828,7 +828,7 @@ function run_test_12() { "addon3@tests.mozilla.org", "addon4@tests.mozilla.org", "addon5@tests.mozilla.org"], - callback_soon(function([a1, a2, a3, a4, a5]) { + function([a1, a2, a3, a4, a5]) { do_check_neq(a1, null); do_check_false(a1.userDisabled); do_check_true(a1.isActive); @@ -917,8 +917,8 @@ function run_test_12() { do_check_true(a3.userDisabled); do_check_false(a3.isActive); - do_execute_soon(end_test); + end_test(); }); }); - })); + }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_syncGUID.js b/toolkit/mozapps/extensions/test/xpcshell/test_syncGUID.js index f57fa4d22d3b..c73a412c4870 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_syncGUID.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_syncGUID.js @@ -86,7 +86,7 @@ add_test(function test_error_on_duplicate_syncguid_insert() { do_execute_soon(function duplicate_syncguid_install_ended() { restartManager(); - AddonManager.getAddonsByIDs(installIDs, callback_soon(function(addons) { + AddonManager.getAddonsByIDs(installIDs, function(addons) { let initialGUID = addons[1].syncGUID; try { @@ -102,7 +102,7 @@ add_test(function test_error_on_duplicate_syncguid_insert() { run_next_test(); }); } - })); + }); }); } } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_targetPlatforms.js b/toolkit/mozapps/extensions/test/xpcshell/test_targetPlatforms.js index ef4f2aee562e..011288e814a6 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_targetPlatforms.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_targetPlatforms.js @@ -141,6 +141,6 @@ function run_test() { do_check_false(isExtensionInAddonsList(profileDir, a5.id)); do_check_not_in_crash_annotation(addon5.id, addon5.version); - do_execute_soon(do_test_finished); + do_test_finished(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_theme.js b/toolkit/mozapps/extensions/test/xpcshell/test_theme.js index f201c776d879..6b2e0c94da3c 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_theme.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_theme.js @@ -126,7 +126,7 @@ function run_test() { } function end_test() { - do_execute_soon(do_test_finished); + do_test_finished(); } // Checks enabling one theme disables the others @@ -613,7 +613,7 @@ function run_test_9() { // Uninstalling a custom theme in use should require a restart function run_test_10() { - AddonManager.getAddonByID("theme2@tests.mozilla.org", callback_soon(function(oldt2) { + AddonManager.getAddonByID("theme2@tests.mozilla.org", function(oldt2) { prepare_test({ "theme2@tests.mozilla.org": [ "onEnabling", @@ -654,7 +654,7 @@ function run_test_10() { do_execute_soon(run_test_11); }); - })); + }); } // Installing a custom theme not in use should not require a restart @@ -742,7 +742,7 @@ function check_test_12() { // Updating a custom theme in use should require a restart function run_test_13() { - AddonManager.getAddonByID("theme1@tests.mozilla.org", callback_soon(function(t1) { + AddonManager.getAddonByID("theme1@tests.mozilla.org", function(t1) { prepare_test({ "theme1@tests.mozilla.org": [ "onEnabling", @@ -777,16 +777,16 @@ function run_test_13() { }, [ "onInstallStarted", "onInstallEnded", - ], callback_soon(check_test_13)); + ], check_test_13); install.install(); }); - })); + }); } function check_test_13() { restartManager(); - AddonManager.getAddonByID("theme1@tests.mozilla.org", callback_soon(function(t1) { + AddonManager.getAddonByID("theme1@tests.mozilla.org", function(t1) { do_check_neq(t1, null); do_check_true(t1.isActive); do_check_false(gLWThemeChanged); @@ -794,7 +794,7 @@ function check_test_13() { restartManager(); do_execute_soon(run_test_14); - })); + }); } // Switching from a lightweight theme to the default theme should not require @@ -846,15 +846,14 @@ function run_test_15() { restartManager(); installAllFiles([do_get_addon("test_theme")], function() { - AddonManager.getAddonByID("theme1@tests.mozilla.org", callback_soon(function(t1) { + AddonManager.getAddonByID("theme1@tests.mozilla.org", function(t1) { t1.userDisabled = false; restartManager(); do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "theme1/1.0"); AddonManager.getAddonsByIDs(["default@tests.mozilla.org", - "theme1@tests.mozilla.org"], - callback_soon(function([d, t1]) { + "theme1@tests.mozilla.org"], function([d, t1]) { do_check_true(d.userDisabled); do_check_false(d.appDisabled); do_check_false(d.isActive); @@ -878,8 +877,8 @@ function run_test_15() { do_execute_soon(run_test_16); }); - })); - })); + }); + }); }); } @@ -933,14 +932,13 @@ function run_test_17() { function run_test_18() { restartManager(2); - AddonManager.getAddonByID("theme1@tests.mozilla.org", callback_soon(function(t1) { + AddonManager.getAddonByID("theme1@tests.mozilla.org", function(t1) { t1.userDisabled = false; restartManager(); AddonManager.getAddonsByIDs(["default@tests.mozilla.org", - "theme1@tests.mozilla.org"], - callback_soon(function([d, t1]) { + "theme1@tests.mozilla.org"], function([d, t1]) { do_check_true(d.userDisabled); do_check_false(d.appDisabled); do_check_false(d.isActive); @@ -982,8 +980,8 @@ function run_test_18() { do_execute_soon(run_test_19); }); - })); - })); + }); + }); } // Disabling the active persona should switch back to the default theme @@ -1046,7 +1044,7 @@ function run_test_20() { // Tests that cached copies of a lightweight theme have the right permissions // and pendingOperations during the onEnabling event function run_test_21() { - AddonManager.getAddonByID("theme1@tests.mozilla.org", callback_soon(function(t1) { + AddonManager.getAddonByID("theme1@tests.mozilla.org", function(t1) { // Switch to a custom theme so we can test pendingOperations properly. prepare_test({ @@ -1088,5 +1086,5 @@ function run_test_21() { end_test(); }); - })); + }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_uninstall.js b/toolkit/mozapps/extensions/test/xpcshell/test_uninstall.js index 02d37d89b745..38349a22f542 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_uninstall.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_uninstall.js @@ -25,7 +25,7 @@ function run_test() { do_test_pending(); startupManager(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(olda1) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(olda1) { do_check_eq(olda1, null); writeInstallRDFForExtension(addon1, profileDir); @@ -40,13 +40,13 @@ function run_test() { do_check_eq(a1.pendingOperations, 0); do_check_in_crash_annotation(addon1.id, addon1.version); - do_execute_soon(run_test_1); + run_test_1(); }); - })); + }); } function end_test() { - do_execute_soon(do_test_finished); + do_test_finished(); } // Uninstalling an add-on should work. diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_update.js b/toolkit/mozapps/extensions/test/xpcshell/test_update.js index 793a8d545521..e222b8e126e2 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_update.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_update.js @@ -210,7 +210,7 @@ function run_test_2(install) { function check_test_2() { ensure_test_completed(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(olda1) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(olda1) { do_check_neq(olda1, null); do_check_eq(olda1.version, "1.0"); do_check_true(isExtensionInAddonsList(profileDir, olda1.id)); @@ -234,7 +234,7 @@ function check_test_2() { a1.uninstall(); do_execute_soon(run_test_3); }); - })); + }); } @@ -401,7 +401,7 @@ function continue_test_6(install) { }, [ "onInstallStarted", "onInstallEnded", - ], callback_soon(check_test_6)); + ], check_test_6); } function check_test_6(install) { @@ -413,14 +413,14 @@ function check_test_6(install) { do_check_eq(a1.version, "2.0"); do_check_eq(a1.releaseNotesURI.spec, "http://example.com/updateInfo.xhtml"); a1.uninstall(); - do_execute_soon(run_test_7); + restartManager(); + + run_test_7(); }); } // Test that background update checks work for lightweight themes function run_test_7() { - restartManager(); - LightweightThemeManager.currentTheme = { id: "1", version: "1", @@ -578,7 +578,7 @@ function check_test_7_cache() { do_check_eq(p1.installDate.getTime(), gInstallDate); do_check_true(p1.installDate.getTime() < p1.updateDate.getTime()); - do_execute_soon(run_test_8); + run_test_8(); }); } @@ -662,7 +662,7 @@ function run_test_8() { restartManager(); - AddonManager.getAddonByID("addon2@tests.mozilla.org", callback_soon(function(a2) { + AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { a2.userDisabled = true; restartManager(); @@ -756,7 +756,7 @@ function run_test_8() { let compatListener = { onUpdateFinished: function(addon, error) { if (--count == 0) - do_execute_soon(run_next_test); + run_next_test(); } }; @@ -778,7 +778,7 @@ function run_test_8() { a5.findUpdates(compatListener, AddonManager.UPDATE_WHEN_NEW_APP_INSTALLED); a6.findUpdates(updateListener, AddonManager.UPDATE_WHEN_NEW_APP_INSTALLED); }); - })); + }); } // Tests that if an install.rdf claims compatibility then the add-on will be @@ -828,7 +828,7 @@ function run_test_11() { onUpdateFinished: function(addon) { do_check_true(addon.isCompatible); - do_execute_soon(run_test_12); + run_test_12(); } }, AddonManager.UPDATE_WHEN_NEW_APP_INSTALLED); }); @@ -1296,7 +1296,7 @@ function continue_test_20(install) { }, [ "onInstallStarted", "onInstallEnded", - ], callback_soon(check_test_20)); + ], check_test_20); } function check_test_20(install) { @@ -1308,10 +1308,8 @@ function check_test_20(install) { do_check_eq(a12.version, "2.0"); do_check_eq(a12.type, "extension"); a12.uninstall(); + restartManager(); - do_execute_soon(() => { - restartManager(); - end_test(); - }); + end_test(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_update_strictcompat.js b/toolkit/mozapps/extensions/test/xpcshell/test_update_strictcompat.js index 1eba7779aa71..993f91f732a7 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_update_strictcompat.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_update_strictcompat.js @@ -207,7 +207,7 @@ function run_test_2(install) { function check_test_2() { ensure_test_completed(); - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(olda1) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(olda1) { do_check_neq(olda1, null); do_check_eq(olda1.version, "1.0"); do_check_true(isExtensionInAddonsList(profileDir, olda1.id)); @@ -228,7 +228,7 @@ function check_test_2() { a1.uninstall(); do_execute_soon(run_test_3); }); - })); + }); } @@ -496,7 +496,7 @@ function check_test_7() { gInstallDate = p1.installDate.getTime(); - do_execute_soon(run_test_8); + run_test_8(); }); } @@ -580,7 +580,7 @@ function run_test_8() { restartManager(); - AddonManager.getAddonByID("addon2@tests.mozilla.org", callback_soon(function(a2) { + AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) { a2.userDisabled = true; restartManager(); @@ -696,7 +696,7 @@ function run_test_8() { a5.findUpdates(compatListener, AddonManager.UPDATE_WHEN_NEW_APP_INSTALLED); a6.findUpdates(updateListener, AddonManager.UPDATE_WHEN_NEW_APP_INSTALLED); }); - })); + }); } // Tests that if an install.rdf claims compatibility then the add-on will be @@ -746,7 +746,7 @@ function run_test_11() { onUpdateFinished: function(addon) { do_check_false(addon.isCompatible); - do_execute_soon(run_test_12); + run_test_12(); } }, AddonManager.UPDATE_WHEN_NEW_APP_INSTALLED); }); @@ -1085,7 +1085,7 @@ function run_test_17() { }, onUpdateFinished: function() { - do_execute_soon(end_test); + end_test(); } }, AddonManager.UPDATE_WHEN_USER_REQUESTED); }); diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_updateid.js b/toolkit/mozapps/extensions/test/xpcshell/test_updateid.js index e8aea0301697..069ed0671141 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_updateid.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_updateid.js @@ -93,7 +93,7 @@ function run_test_1() { } function check_test_1(install) { - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { // Existing add-on should have a pending upgrade do_check_neq(a1.pendingUpgrade, null); do_check_eq(a1.pendingUpgrade.id, "addon2@tests.mozilla.org"); @@ -118,7 +118,7 @@ function check_test_1(install) { do_execute_soon(run_test_2); }); - })); + }); } // Test that when the new add-on already exists we just upgrade that @@ -164,8 +164,7 @@ function run_test_2() { function check_test_2(install) { AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org"], - callback_soon(function([a1, a2]) { + "addon2@tests.mozilla.org"], function([a1, a2]) { do_check_eq(a1.pendingUpgrade, null); // Existing add-on should have a pending upgrade do_check_neq(a2.pendingUpgrade, null); @@ -185,7 +184,7 @@ function check_test_2(install) { do_execute_soon(run_test_3); }); - })); + }); } // Test that we rollback correctly when removing the old add-on fails @@ -226,7 +225,7 @@ function run_test_3() { } function check_test_3(install) { - AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) { + AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) { // Existing add-on should have a pending upgrade do_check_neq(a1.pendingUpgrade, null); do_check_eq(a1.pendingUpgrade.id, "addon2@tests.mozilla.org"); @@ -249,8 +248,7 @@ function check_test_3(install) { fstream.close(); AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org"], - callback_soon(function([a1, a2]) { + "addon2@tests.mozilla.org"], function([a1, a2]) { // Should not have installed the new add-on but it should still be // pending install do_check_neq(a1, null); @@ -268,8 +266,8 @@ function check_test_3(install) { do_execute_soon(run_test_4); }); - })); - })); + }); + }); } // Tests that upgrading to a bootstrapped add-on works but requires a restart @@ -308,8 +306,7 @@ function run_test_4() { function check_test_4() { AddonManager.getAddonsByIDs(["addon2@tests.mozilla.org", - "addon3@tests.mozilla.org"], - callback_soon(function([a2, a3]) { + "addon3@tests.mozilla.org"], function([a2, a3]) { // Should still be pending install even though the new add-on is restartless do_check_neq(a2, null); do_check_eq(a3, null); @@ -333,7 +330,7 @@ function check_test_4() { do_execute_soon(run_test_5); }); - })); + }); } // Tests that upgrading to another bootstrapped add-on works without a restart @@ -352,8 +349,7 @@ function run_test_5() { function check_test_5() { AddonManager.getAddonsByIDs(["addon3@tests.mozilla.org", - "addon4@tests.mozilla.org"], - callback_soon(function([a3, a4]) { + "addon4@tests.mozilla.org"], function([a3, a4]) { // Should have updated do_check_eq(a3, null); do_check_neq(a4, null); @@ -374,7 +370,7 @@ function check_test_5() { run_test_6(); }); - })); + }); } // Tests that upgrading to a non-bootstrapped add-on works but requires a restart @@ -393,8 +389,7 @@ function run_test_6() { function check_test_6() { AddonManager.getAddonsByIDs(["addon4@tests.mozilla.org", - "addon2@tests.mozilla.org"], - callback_soon(function([a4, a2]) { + "addon2@tests.mozilla.org"], function([a4, a2]) { // Should still be pending install even though the old add-on is restartless do_check_neq(a4, null); do_check_eq(a2, null); @@ -418,5 +413,5 @@ function check_test_6() { end_test(); }); - })); + }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_upgrade.js b/toolkit/mozapps/extensions/test/xpcshell/test_upgrade.js index 67bec392efd8..a5e2c532bed6 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_upgrade.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_upgrade.js @@ -93,7 +93,7 @@ function end_test() { globalDir.append(do_get_expected_addon_name("addon4@tests.mozilla.org")); globalDir.remove(true); } - do_execute_soon(do_test_finished); + do_test_finished(); } // Test that the test extensions are all installed diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_upgrade_strictcompat.js b/toolkit/mozapps/extensions/test/xpcshell/test_upgrade_strictcompat.js index 96e1cbd8d19b..22aa7114fd1b 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_upgrade_strictcompat.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_upgrade_strictcompat.js @@ -96,7 +96,7 @@ function end_test() { Services.prefs.clearUserPref(PREF_EM_STRICT_COMPATIBILITY); - do_execute_soon(do_test_finished); + do_test_finished(); } // Test that the test extensions are all installed