From 43a97878ce14b72f0981164f87f2e35e14151312 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:22:09 +0200 Subject: Adding upstream version 110.0.1. Signed-off-by: Daniel Baumann --- .../extensions/test/xpcshell/test_no_addons.js | 79 ++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 toolkit/mozapps/extensions/test/xpcshell/test_no_addons.js (limited to 'toolkit/mozapps/extensions/test/xpcshell/test_no_addons.js') 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(); +}); -- cgit v1.2.3