diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
commit | 43a97878ce14b72f0981164f87f2e35e14151312 (patch) | |
tree | 620249daf56c0258faa40cbdcf9cfba06de2a846 /toolkit/mozapps/extensions/test/xpcshell/test_no_addons.js | |
parent | Initial commit. (diff) | |
download | firefox-upstream.tar.xz firefox-upstream.zip |
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/mozapps/extensions/test/xpcshell/test_no_addons.js')
-rw-r--r-- | toolkit/mozapps/extensions/test/xpcshell/test_no_addons.js | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_no_addons.js b/toolkit/mozapps/extensions/test/xpcshell/test_no_addons.js new file mode 100644 index 0000000000..71425bec4a --- /dev/null +++ b/toolkit/mozapps/extensions/test/xpcshell/test_no_addons.js @@ -0,0 +1,79 @@ +/* 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 + +// Load XPI Provider to get schema version ID +const { + XPIInternal: { DB_SCHEMA }, +} = ChromeUtils.import("resource://gre/modules/addons/XPIProvider.jsm"); + +createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); + +// Test for a preference to either exist with a specified value, or not exist at all +function checkPending() { + try { + Assert.ok(!Services.prefs.getBoolPref("extensions.pendingOperations")); + } catch (e) { + // OK + } +} + +// Make sure all our extension state is empty/nonexistent +function check_empty_state() { + Assert.equal( + Services.prefs.getIntPref("extensions.databaseSchema"), + DB_SCHEMA + ); + 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(async function first_run() { + await promiseStartupManager(); + check_empty_state(); + await true; +}); + +// Now do something that causes a DB load, and re-check +async function trigger_db_load() { + let addonList = await AddonManager.getAddonsByTypes(["extension"]); + + Assert.equal(addonList.length, 0); + check_empty_state(); + + await true; +} +add_task(trigger_db_load); + +// Now restart the manager and check again +add_task(async function restart_and_recheck() { + await promiseRestartManager(); + check_empty_state(); + await 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(async function upgrade_schema_version() { + await promiseShutdownManager(); + Services.prefs.setIntPref("extensions.databaseSchema", 1); + + await promiseStartupManager(); + Assert.equal( + Services.prefs.getIntPref("extensions.databaseSchema"), + DB_SCHEMA + ); + check_empty_state(); +}); |