mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-09 00:37:32 +09:00
Move WebExtensions enabled Add-ons Manager
This commit is contained in:
parent
d7d16e7fbb
commit
358cd0404a
1100 changed files with 133 additions and 106 deletions
|
|
@ -0,0 +1,98 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/
|
||||
*/
|
||||
|
||||
// Test startup and restart when no add-ons are installed
|
||||
// bug 944006
|
||||
|
||||
Components.utils.import("resource://gre/modules/Promise.jsm");
|
||||
|
||||
// Load XPI Provider to get schema version ID
|
||||
var XPIScope = Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm");
|
||||
const DB_SCHEMA = XPIScope.DB_SCHEMA;
|
||||
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
|
||||
|
||||
function run_test() {
|
||||
// Kick off the task-based tests...
|
||||
run_next_test();
|
||||
}
|
||||
|
||||
// Test for a preference to either exist with a specified value, or not exist at all
|
||||
function checkPending() {
|
||||
try {
|
||||
do_check_false(Services.prefs.getBoolPref("extensions.pendingOperations"));
|
||||
}
|
||||
catch (e) {
|
||||
// OK
|
||||
}
|
||||
}
|
||||
|
||||
function checkString(aPref, aValue) {
|
||||
try {
|
||||
do_check_eq(Services.prefs.getCharPref(aPref), aValue)
|
||||
}
|
||||
catch (e) {
|
||||
// OK
|
||||
}
|
||||
}
|
||||
|
||||
// Make sure all our extension state is empty/nonexistent
|
||||
function check_empty_state() {
|
||||
do_check_false(gExtensionsJSON.exists());
|
||||
do_check_false(gExtensionsINI.exists());
|
||||
|
||||
do_check_eq(Services.prefs.getIntPref("extensions.databaseSchema"), DB_SCHEMA);
|
||||
|
||||
checkString("extensions.bootstrappedAddons", "{}");
|
||||
checkString("extensions.installCache", "[]");
|
||||
checkPending();
|
||||
}
|
||||
|
||||
// After first run with no add-ons, we expect:
|
||||
// no extensions.json is created
|
||||
// no extensions.ini
|
||||
// database schema version preference is set
|
||||
// bootstrap add-ons preference is not found
|
||||
// add-on directory state preference is an empty array
|
||||
// no pending operations
|
||||
add_task(function* first_run() {
|
||||
startupManager();
|
||||
check_empty_state();
|
||||
yield true;
|
||||
});
|
||||
|
||||
// Now do something that causes a DB load, and re-check
|
||||
function* trigger_db_load() {
|
||||
let addonDefer = Promise.defer();
|
||||
AddonManager.getAddonsByTypes(['extension'], addonDefer.resolve);
|
||||
let addonList = yield addonDefer.promise;
|
||||
|
||||
do_check_eq(addonList.length, 0);
|
||||
check_empty_state();
|
||||
|
||||
yield true;
|
||||
}
|
||||
add_task(trigger_db_load);
|
||||
|
||||
// Now restart the manager and check again
|
||||
add_task(function* restart_and_recheck() {
|
||||
restartManager();
|
||||
check_empty_state();
|
||||
yield true;
|
||||
});
|
||||
|
||||
// and reload the DB again
|
||||
add_task(trigger_db_load);
|
||||
|
||||
// When we start up with no DB and an old database schema, we should update the
|
||||
// schema number but not create a database
|
||||
add_task(function upgrade_schema_version() {
|
||||
shutdownManager();
|
||||
Services.prefs.setIntPref("extensions.databaseSchema", 1);
|
||||
|
||||
startupManager();
|
||||
do_check_eq(Services.prefs.getIntPref("extensions.databaseSchema"), DB_SCHEMA);
|
||||
check_empty_state();
|
||||
});
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue