зеркало из https://github.com/mozilla/gecko-dev.git
Backed out changeset 607b35c777f0 (bug 853388)
This commit is contained in:
Родитель
8b6453c632
Коммит
b601506296
|
@ -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);
|
||||
});
|
||||
}
|
||||
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);
|
||||
});
|
||||
}));
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
});
|
||||
}
|
||||
|
|
|
@ -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
|
||||
);
|
||||
}));
|
||||
}));
|
||||
}));
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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
|
||||
);
|
||||
}));
|
||||
}));
|
||||
}));
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
restartManager();
|
||||
|
||||
do_execute_soon(() => {
|
||||
restartManager();
|
||||
end_test();
|
||||
});
|
||||
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
|
||||
|
|
Загрузка…
Ссылка в новой задаче