Backed out changeset 607b35c777f0 (bug 853388)

This commit is contained in:
Tim Taubert 2013-08-09 04:20:02 +02:00
Родитель 8b6453c632
Коммит b601506296
82 изменённых файлов: 907 добавлений и 994 удалений

Просмотреть файл

@ -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;
},

Просмотреть файл

@ -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;

Просмотреть файл

@ -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 &&

Просмотреть файл

@ -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

Просмотреть файл

@ -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();
});
}

Просмотреть файл

@ -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);
});

Просмотреть файл

@ -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

Просмотреть файл

@ -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);
});
}
function test_12_restart() {
restartManager();
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,12 +724,6 @@ 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);
});
});
}
function test_13_restart() {
restartManager();
AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) {
@ -750,6 +741,8 @@ function test_13_restart() {
do_execute_soon(run_test_14);
});
});
});
});
}
// Tests that a bootstrapped extension with an invalid target application entry
@ -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);
});
}));
});
});
});
}

Просмотреть файл

@ -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() {
}
}
});
}));
});
});
}

Просмотреть файл

@ -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);
});
});
}));
});
});
}

Просмотреть файл

@ -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();
});
});
});

Просмотреть файл

@ -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);
});

Просмотреть файл

@ -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();
});
}

Просмотреть файл

@ -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();
});
});
}

Просмотреть файл

@ -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) {

Просмотреть файл

@ -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();
});
}

Просмотреть файл

@ -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();
});
}

Просмотреть файл

@ -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();
});
}

Просмотреть файл

@ -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();
});
}

Просмотреть файл

@ -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();
});
});
}));
});
}

Просмотреть файл

@ -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();
});
});
}

Просмотреть файл

@ -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);
});
}));
}));
});
});
});
}

Просмотреть файл

@ -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();
}));
});
}

Просмотреть файл

@ -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();
});
}));
});
}

Просмотреть файл

@ -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();
});
});
}));
}

Просмотреть файл

@ -106,7 +106,7 @@ function run_test_2() {
do_check_eq(a1, gAddon);
do_execute_soon(do_test_finished);
do_test_finished();
});
}

Просмотреть файл

@ -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();
});
});
}

Просмотреть файл

@ -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();
});
}

Просмотреть файл

@ -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();
});
});
}));
}

Просмотреть файл

@ -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();
});
});
});
});
}));
}));
}));
});
}

Просмотреть файл

@ -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();
});
}

Просмотреть файл

@ -135,6 +135,6 @@ function run_test_3() {
do_check_eq(a3, null);
do_execute_soon(do_test_finished);
do_test_finished();
});
}

Просмотреть файл

@ -21,6 +21,6 @@ function run_test() {
AddonManager.getAddonByID("foo", function(aAddon) {
test_string_compare();
do_execute_soon(do_test_finished);
do_test_finished();
});
}

Просмотреть файл

@ -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();
});
}));
});
}

Просмотреть файл

@ -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();
}));
});
};
});
}

Просмотреть файл

@ -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();
}));
}

Просмотреть файл

@ -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();
});
}

Просмотреть файл

@ -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();
});
}

Просмотреть файл

@ -107,6 +107,6 @@ function run_test_2() {
AddonManager.removeInstallListener(listener2);
AddonManager.removeInstallListener(listener3);
do_execute_soon(do_test_finished);
do_test_finished();
});
}

Просмотреть файл

@ -117,6 +117,6 @@ function run_test_4() {
do_check_true(gCacheFlushed);
gCacheFlushed = false;
do_execute_soon(do_test_finished);
do_test_finished();
});
}

Просмотреть файл

@ -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");
});
}

Просмотреть файл

@ -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();
});

Просмотреть файл

@ -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();
});
});
}));
}

Просмотреть файл

@ -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();
});
}

Просмотреть файл

@ -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",

Просмотреть файл

@ -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();
});
});
}));
}

Просмотреть файл

@ -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();
});
}

Просмотреть файл

@ -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

Просмотреть файл

@ -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();
}

Просмотреть файл

@ -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();
}));
});
}

Просмотреть файл

@ -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();
});
});
}));
});
});
});

Просмотреть файл

@ -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();
});
});
}

Просмотреть файл

@ -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();
}));
}));
});
});
}

Просмотреть файл

@ -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

Просмотреть файл

@ -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);
}

Просмотреть файл

@ -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();
}

Просмотреть файл

@ -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();
}));
});
}

Просмотреть файл

@ -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();
});
}

28
toolkit/mozapps/extensions/test/xpcshell/test_locked.js Executable file → Normal file
Просмотреть файл

@ -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,22 +254,12 @@ 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;
OS.File.open(gExtensionsJSON.path, {read:true, write:true, existing:true}, options).then(
file => {
filePermissions = gExtensionsJSON.permissions;
if (!OS.Constants.Win) {
var savedPermissions = gExtensionsJSON.permissions;
gExtensionsJSON.permissions = 0;
}
startupManager(false);
// Shouldn't have seen any startup changes
@ -440,9 +429,7 @@ function run_test_1() {
// 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;
gExtensionsJSON.permissions = savedPermissions;
startupManager();
@ -524,8 +511,5 @@ function run_test_1() {
}));
}));
}));
},
do_report_unexpected_exception
);
}));
}

Просмотреть файл

@ -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,22 +142,11 @@ 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;
OS.File.open(gExtensionsJSON.path, {read:true, write:true, existing:true}, options).then(
file => {
filePermissions = gExtensionsJSON.permissions;
if (!OS.Constants.Win) {
var savedPermissions = gExtensionsJSON.permissions;
gExtensionsJSON.permissions = 0;
}
startupManager(false);
check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []);
@ -171,7 +158,7 @@ function run_test() {
"addon4@tests.mozilla.org",
"addon5@tests.mozilla.org",
"addon6@tests.mozilla.org"],
callback_soon(function([a1, a2, a3, a4, a5, a6]) {
function([a1, a2, a3, a4, a5, a6]) {
do_check_neq(a1, null);
do_check_true(a1.isActive);
do_check_false(a1.userDisabled);
@ -211,28 +198,15 @@ function run_test() {
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
// applied correctly
shutdownManager();
file.close();
gExtensionsJSON.permissions = filePermissions;
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",
@ -281,15 +255,12 @@ function run_test() {
end_test();
});
}));
},
do_report_unexpected_exception
);
});
});
}));
});
});
}
function end_test() {
do_execute_soon(do_test_finished);
do_test_finished();
}

Просмотреть файл

@ -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,22 +254,11 @@ 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;
OS.File.open(gExtensionsJSON.path, {read:true, write:true, existing:true}, options).then(
file => {
filePermissions = gExtensionsJSON.permissions;
if (!OS.Constants.Win) {
var savedPermissions = gExtensionsJSON.permissions;
gExtensionsJSON.permissions = 0;
}
startupManager(false);
// Shouldn't have seen any startup changes
@ -436,11 +424,9 @@ function run_test_1() {
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
// they were previously
shutdownManager();
do_print("Unlocking " + gExtensionsJSON.path);
file.close();
gExtensionsJSON.permissions = filePermissions;
gExtensionsJSON.permissions = savedPermissions;
startupManager(false);
// Shouldn't have seen any startup changes
@ -471,40 +457,18 @@ function run_test_1() {
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.userDisabled);
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_true(isExtensionInAddonsList(profileDir, a3.id));
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_false(isExtensionInAddonsList(profileDir, a4.id));
do_check_neq(a5, null);
do_check_false(a5.isActive);
@ -543,8 +507,5 @@ function run_test_1() {
}));
}));
}));
},
do_report_unexpected_exception
);
}));
}

Просмотреть файл

@ -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();
});
}

Просмотреть файл

@ -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();
});
}

Просмотреть файл

@ -246,6 +246,6 @@ function run_test() {
do_check_false(stagedXPIs.exists());
do_execute_soon(do_test_finished);
do_test_finished();
});
}

Просмотреть файл

@ -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();
});
}

Просмотреть файл

@ -234,6 +234,6 @@ function run_test() {
do_check_false(stagedXPIs.exists());
do_execute_soon(do_test_finished);
do_test_finished();
});
}

Просмотреть файл

@ -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();
});
}

Просмотреть файл

@ -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;
});

Просмотреть файл

@ -75,7 +75,7 @@ function run_test() {
}
function end_test() {
do_execute_soon(do_test_finished);
do_test_finished();
}
function sortAddons(addons) {

Просмотреть файл

@ -173,6 +173,6 @@ function run_test_4() {
Services.prefs.clearUserPref("plugins.click_to_play");
do_execute_soon(do_test_finished);
do_test_finished();
});
}

Просмотреть файл

@ -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();
});
}

Просмотреть файл

@ -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();
});
}

Просмотреть файл

@ -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();
});
});
});
}));
}

Просмотреть файл

@ -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();
});
}
}));
});
});
}
}

Просмотреть файл

@ -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();
});
}

Просмотреть файл

@ -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();
});
}));
});
}

Просмотреть файл

@ -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.

Просмотреть файл

@ -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();
do_execute_soon(() => {
restartManager();
end_test();
});
});
}

Просмотреть файл

@ -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);
});

Просмотреть файл

@ -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();
});
}));
});
}

Просмотреть файл

@ -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

Просмотреть файл

@ -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