diff options
Diffstat (limited to 'toolkit/mozapps/extensions/test/xpcshell/test_bootstrap.js')
-rw-r--r-- | toolkit/mozapps/extensions/test/xpcshell/test_bootstrap.js | 707 |
1 files changed, 369 insertions, 338 deletions
diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bootstrap.js b/toolkit/mozapps/extensions/test/xpcshell/test_bootstrap.js index ff58599bc..e8d12c1fa 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bootstrap.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bootstrap.js @@ -11,9 +11,6 @@ const ADDON_UNINSTALL = 6; const ADDON_UPGRADE = 7; const ADDON_DOWNGRADE = 8; -const ID1 = "bootstrap1@tests.mozilla.org"; -const ID2 = "bootstrap2@tests.mozilla.org"; - // This verifies that bootstrappable add-ons can be used without restarts. Components.utils.import("resource://gre/modules/Services.jsm"); Components.utils.import("resource://gre/modules/Promise.jsm"); @@ -22,8 +19,6 @@ Components.utils.import("resource://gre/modules/Promise.jsm"); Services.prefs.setIntPref("extensions.enabledScopes", AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER); -BootstrapMonitor.init(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); const profileDir = gProfD.clone(); @@ -35,49 +30,99 @@ registerDirectory("XREUSysExt", userExtDir.parent); Components.utils.import("resource://testing-common/httpd.js"); var testserver = new HttpServer(); -testserver.start(undefined); +testserver.start(-1); gPort = testserver.identity.primaryPort; testserver.registerDirectory("/addons/", do_get_file("addons")); +function resetPrefs() { + Services.prefs.setIntPref("bootstraptest.active_version", -1); + Services.prefs.setIntPref("bootstraptest.installed_version", -1); + Services.prefs.setIntPref("bootstraptest2.active_version", -1); + Services.prefs.setIntPref("bootstraptest2.installed_version", -1); + Services.prefs.setIntPref("bootstraptest.startup_reason", -1); + Services.prefs.setIntPref("bootstraptest.shutdown_reason", -1); + Services.prefs.setIntPref("bootstraptest.install_reason", -1); + Services.prefs.setIntPref("bootstraptest.uninstall_reason", -1); + Services.prefs.setIntPref("bootstraptest.startup_oldversion", -1); + Services.prefs.setIntPref("bootstraptest.shutdown_newversion", -1); + Services.prefs.setIntPref("bootstraptest.install_oldversion", -1); + Services.prefs.setIntPref("bootstraptest.uninstall_newversion", -1); +} + +function waitForPref(aPref, aCallback) { + function prefChanged() { + Services.prefs.removeObserver(aPref, prefChanged); + // Always let whoever set the preference keep running + do_execute_soon(aCallback); + } + Services.prefs.addObserver(aPref, prefChanged, false); +} + +function promisePref(aPref) { + let deferred = Promise.defer(); + + waitForPref(aPref, deferred.resolve.bind(deferred)); + + return deferred.promise; +} + +function promiseInstall(aFiles) { + let deferred = Promise.defer(); + + installAllFiles(aFiles, function() { + deferred.resolve(); + }); + + return deferred.promise; +} + +function getActiveVersion() { + return Services.prefs.getIntPref("bootstraptest.active_version"); +} + +function getInstalledVersion() { + return Services.prefs.getIntPref("bootstraptest.installed_version"); +} + +function getActiveVersion2() { + return Services.prefs.getIntPref("bootstraptest2.active_version"); +} + +function getInstalledVersion2() { + return Services.prefs.getIntPref("bootstraptest2.installed_version"); +} + function getStartupReason() { - let info = BootstrapMonitor.started.get(ID1); - return info ? info.reason : undefined; + return Services.prefs.getIntPref("bootstraptest.startup_reason"); } function getShutdownReason() { - let info = BootstrapMonitor.stopped.get(ID1); - return info ? info.reason : undefined; + return Services.prefs.getIntPref("bootstraptest.shutdown_reason"); } function getInstallReason() { - let info = BootstrapMonitor.installed.get(ID1); - return info ? info.reason : undefined; + return Services.prefs.getIntPref("bootstraptest.install_reason"); } function getUninstallReason() { - let info = BootstrapMonitor.uninstalled.get(ID1); - return info ? info.reason : undefined; + return Services.prefs.getIntPref("bootstraptest.uninstall_reason"); } function getStartupOldVersion() { - let info = BootstrapMonitor.started.get(ID1); - return info ? info.data.oldVersion : undefined; + return Services.prefs.getIntPref("bootstraptest.startup_oldversion"); } function getShutdownNewVersion() { - let info = BootstrapMonitor.stopped.get(ID1); - return info ? info.data.newVersion : undefined; + return Services.prefs.getIntPref("bootstraptest.shutdown_newversion"); } function getInstallOldVersion() { - let info = BootstrapMonitor.installed.get(ID1); - return info ? info.data.oldVersion : undefined; + return Services.prefs.getIntPref("bootstraptest.install_oldversion"); } function getUninstallNewVersion() { - let info = BootstrapMonitor.uninstalled.get(ID1); - return info ? info.data.newVersion : undefined; + return Services.prefs.getIntPref("bootstraptest.uninstall_newversion"); } function do_check_bootstrappedPref(aCallback) { @@ -112,6 +157,8 @@ function do_check_bootstrappedPref(aCallback) { function run_test() { do_test_pending(); + resetPrefs(); + startupManager(); do_check_false(gExtensionsJSON.exists()); @@ -141,18 +188,18 @@ function run_test_1() { do_check_false(install.addon.hasResource("foo.bar")); do_check_eq(install.addon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_INSTALL, 0); - do_check_not_in_crash_annotation(ID1, "1.0"); + do_check_not_in_crash_annotation("bootstrap1@tests.mozilla.org", "1.0"); let addon = install.addon; - BootstrapMonitor.promiseAddonStartup(ID1).then(function() { + waitForPref("bootstraptest.startup_reason", function() { do_check_bootstrappedPref(function() { check_test_1(addon.syncGUID); }); }); prepare_test({ - [ID1]: [ + "bootstrap1@tests.mozilla.org": [ ["onInstalling", false], "onInstalled" ] @@ -163,7 +210,7 @@ function run_test_1() { do_check_true(addon.hasResource("install.rdf")); // startup should not have been called yet. - BootstrapMonitor.checkAddonNotStarted(ID1); + do_check_eq(getActiveVersion(), -1); }); install.install(); }); @@ -177,7 +224,7 @@ function check_test_1(installSyncGUID) { // doesn't require a restart. do_check_eq(installs.length, 0); - AddonManager.getAddonByID(ID1, function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { do_check_neq(b1, null); do_check_eq(b1.version, "1.0"); do_check_neq(b1.syncGUID, null); @@ -185,17 +232,16 @@ function check_test_1(installSyncGUID) { do_check_false(b1.appDisabled); do_check_false(b1.userDisabled); do_check_true(b1.isActive); - do_check_false(b1.isSystem); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 1); do_check_eq(getStartupReason(), ADDON_INSTALL); - do_check_eq(getStartupOldVersion(), undefined); + do_check_eq(getStartupOldVersion(), 0); do_check_true(b1.hasResource("install.rdf")); do_check_true(b1.hasResource("bootstrap.js")); do_check_false(b1.hasResource("foo.bar")); - do_check_in_crash_annotation(ID1, "1.0"); + do_check_in_crash_annotation("bootstrap1@tests.mozilla.org", "1.0"); - let dir = do_get_addon_root_uri(profileDir, ID1); + 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, function(list) { @@ -209,9 +255,9 @@ function check_test_1(installSyncGUID) { // Tests that disabling doesn't require a restart function run_test_2() { - AddonManager.getAddonByID(ID1, function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { prepare_test({ - [ID1]: [ + "bootstrap1@tests.mozilla.org": [ ["onDisabling", false], "onDisabled" ] @@ -227,13 +273,13 @@ function run_test_2() { do_check_false(b1.appDisabled); do_check_true(b1.userDisabled); do_check_false(b1.isActive); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 0); do_check_eq(getShutdownReason(), ADDON_DISABLE); - do_check_eq(getShutdownNewVersion(), undefined); - do_check_not_in_crash_annotation(ID1, "1.0"); + do_check_eq(getShutdownNewVersion(), 0); + do_check_not_in_crash_annotation("bootstrap1@tests.mozilla.org", "1.0"); - AddonManager.getAddonByID(ID1, function(newb1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(newb1) { do_check_neq(newb1, null); do_check_eq(newb1.version, "1.0"); do_check_false(newb1.appDisabled); @@ -248,20 +294,20 @@ function run_test_2() { // Test that restarting doesn't accidentally re-enable function run_test_3() { shutdownManager(); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 0); do_check_eq(getShutdownReason(), ADDON_DISABLE); - do_check_eq(getShutdownNewVersion(), undefined); + do_check_eq(getShutdownNewVersion(), 0); startupManager(false); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 0); do_check_eq(getShutdownReason(), ADDON_DISABLE); - do_check_eq(getShutdownNewVersion(), undefined); - do_check_not_in_crash_annotation(ID1, "1.0"); + do_check_eq(getShutdownNewVersion(), 0); + do_check_not_in_crash_annotation("bootstrap1@tests.mozilla.org", "1.0"); do_check_false(gExtensionsINI.exists()); - AddonManager.getAddonByID(ID1, 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.appDisabled); @@ -274,9 +320,9 @@ function run_test_3() { // Tests that enabling doesn't require a restart function run_test_4() { - AddonManager.getAddonByID(ID1, function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { prepare_test({ - [ID1]: [ + "bootstrap1@tests.mozilla.org": [ ["onEnabling", false], "onEnabled" ] @@ -292,14 +338,13 @@ function run_test_4() { do_check_false(b1.appDisabled); do_check_false(b1.userDisabled); do_check_true(b1.isActive); - do_check_false(b1.isSystem); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 1); do_check_eq(getStartupReason(), ADDON_ENABLE); - do_check_eq(getStartupOldVersion(), undefined); - do_check_in_crash_annotation(ID1, "1.0"); + do_check_eq(getStartupOldVersion(), 0); + do_check_in_crash_annotation("bootstrap1@tests.mozilla.org", "1.0"); - AddonManager.getAddonByID(ID1, function(newb1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(newb1) { do_check_neq(newb1, null); do_check_eq(newb1.version, "1.0"); do_check_false(newb1.appDisabled); @@ -317,25 +362,24 @@ function run_test_5() { // By the time we've shut down, the database must have been written do_check_true(gExtensionsJSON.exists()); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 0); do_check_eq(getShutdownReason(), APP_SHUTDOWN); - do_check_eq(getShutdownNewVersion(), undefined); - do_check_not_in_crash_annotation(ID1, "1.0"); + do_check_eq(getShutdownNewVersion(), 0); + do_check_not_in_crash_annotation("bootstrap1@tests.mozilla.org", "1.0"); startupManager(false); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 1); do_check_eq(getStartupReason(), APP_STARTUP); - do_check_eq(getStartupOldVersion(), undefined); - do_check_in_crash_annotation(ID1, "1.0"); + do_check_eq(getStartupOldVersion(), 0); + do_check_in_crash_annotation("bootstrap1@tests.mozilla.org", "1.0"); - AddonManager.getAddonByID(ID1, 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.appDisabled); do_check_false(b1.userDisabled); do_check_true(b1.isActive); - do_check_false(b1.isSystem); do_check_false(isExtensionInAddonsList(profileDir, b1.id)); do_check_bootstrappedPref(run_test_6); @@ -357,9 +401,9 @@ function run_test_6() { do_check_eq(install.name, "Test Bootstrap 1"); do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - BootstrapMonitor.promiseAddonStartup(ID1).then(check_test_6); + waitForPref("bootstraptest.startup_reason", check_test_6); prepare_test({ - [ID1]: [ + "bootstrap1@tests.mozilla.org": [ ["onInstalling", false], "onInstalled" ] @@ -373,23 +417,22 @@ function run_test_6() { } function check_test_6() { - AddonManager.getAddonByID(ID1, function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { do_check_neq(b1, null); do_check_eq(b1.version, "2.0"); do_check_false(b1.appDisabled); do_check_false(b1.userDisabled); do_check_true(b1.isActive); - do_check_false(b1.isSystem); - BootstrapMonitor.checkAddonInstalled(ID1, "2.0"); - BootstrapMonitor.checkAddonStarted(ID1, "2.0"); + do_check_eq(getInstalledVersion(), 2); + do_check_eq(getActiveVersion(), 2); do_check_eq(getStartupReason(), ADDON_UPGRADE); do_check_eq(getInstallOldVersion(), 1); do_check_eq(getStartupOldVersion(), 1); do_check_eq(getShutdownReason(), ADDON_UPGRADE); do_check_eq(getShutdownNewVersion(), 2); do_check_eq(getUninstallNewVersion(), 2); - do_check_not_in_crash_annotation(ID1, "1.0"); - do_check_in_crash_annotation(ID1, "2.0"); + do_check_not_in_crash_annotation("bootstrap1@tests.mozilla.org", "1.0"); + do_check_in_crash_annotation("bootstrap1@tests.mozilla.org", "2.0"); do_check_bootstrappedPref(run_test_7); }); @@ -397,9 +440,9 @@ function check_test_6() { // Tests that uninstalling doesn't require a restart function run_test_7() { - AddonManager.getAddonByID(ID1, function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { prepare_test({ - [ID1]: [ + "bootstrap1@tests.mozilla.org": [ ["onUninstalling", false], "onUninstalled" ] @@ -415,18 +458,18 @@ function run_test_7() { function check_test_7() { ensure_test_completed(); - BootstrapMonitor.checkAddonNotInstalled(ID1); - BootstrapMonitor.checkAddonNotStarted(ID1); + do_check_eq(getInstalledVersion(), 0); + do_check_eq(getActiveVersion(), 0); do_check_eq(getShutdownReason(), ADDON_UNINSTALL); - do_check_eq(getShutdownNewVersion(), undefined); - do_check_not_in_crash_annotation(ID1, "2.0"); + do_check_eq(getShutdownNewVersion(), 0); + do_check_not_in_crash_annotation("bootstrap1@tests.mozilla.org", "2.0"); - AddonManager.getAddonByID(ID1, callback_soon(function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", callback_soon(function(b1) { do_check_eq(b1, null); restartManager(); - AddonManager.getAddonByID(ID1, function(newb1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(newb1) { do_check_eq(newb1, null); do_check_bootstrappedPref(run_test_8); @@ -440,22 +483,21 @@ function run_test_8() { shutdownManager(); manuallyInstall(do_get_addon("test_bootstrap1_1"), profileDir, - ID1); + "bootstrap1@tests.mozilla.org"); startupManager(false); - AddonManager.getAddonByID(ID1, 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.appDisabled); do_check_false(b1.userDisabled); do_check_true(b1.isActive); - do_check_false(b1.isSystem); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 1); do_check_eq(getStartupReason(), ADDON_INSTALL); - do_check_eq(getStartupOldVersion(), undefined); - do_check_in_crash_annotation(ID1, "1.0"); + do_check_eq(getStartupOldVersion(), 0); + do_check_in_crash_annotation("bootstrap1@tests.mozilla.org", "1.0"); do_check_bootstrappedPref(run_test_9); }); @@ -465,14 +507,13 @@ function run_test_8() { function run_test_9() { shutdownManager(); - manuallyUninstall(profileDir, ID1); - BootstrapMonitor.clear(ID1); + manuallyUninstall(profileDir, "bootstrap1@tests.mozilla.org"); startupManager(false); - AddonManager.getAddonByID(ID1, function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { do_check_eq(b1, null); - do_check_not_in_crash_annotation(ID1, "1.0"); + do_check_not_in_crash_annotation("bootstrap1@tests.mozilla.org", "1.0"); do_check_bootstrappedPref(run_test_10); }); @@ -481,6 +522,7 @@ function run_test_9() { // Tests that installing a downgrade sends the right reason function run_test_10() { + resetPrefs(); prepare_test({ }, [ "onNewInstall" ]); @@ -496,11 +538,11 @@ function run_test_10() { do_check_true(install.addon.hasResource("install.rdf")); do_check_true(install.addon.hasResource("bootstrap.js")); do_check_false(install.addon.hasResource("foo.bar")); - do_check_not_in_crash_annotation(ID1, "2.0"); + do_check_not_in_crash_annotation("bootstrap1@tests.mozilla.org", "2.0"); - BootstrapMonitor.promiseAddonStartup(ID1).then(check_test_10_pt1); + waitForPref("bootstraptest.startup_reason", check_test_10_pt1); prepare_test({ - [ID1]: [ + "bootstrap1@tests.mozilla.org": [ ["onInstalling", false], "onInstalled" ] @@ -515,21 +557,20 @@ function run_test_10() { } function check_test_10_pt1() { - AddonManager.getAddonByID(ID1, function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { do_check_neq(b1, null); do_check_eq(b1.version, "2.0"); do_check_false(b1.appDisabled); do_check_false(b1.userDisabled); do_check_true(b1.isActive); - do_check_false(b1.isSystem); - BootstrapMonitor.checkAddonInstalled(ID1, "2.0"); - BootstrapMonitor.checkAddonStarted(ID1, "2.0"); + do_check_eq(getInstalledVersion(), 2); + do_check_eq(getActiveVersion(), 2); do_check_eq(getStartupReason(), ADDON_INSTALL); - do_check_eq(getStartupOldVersion(), undefined); + do_check_eq(getStartupOldVersion(), 0); do_check_true(b1.hasResource("install.rdf")); do_check_true(b1.hasResource("bootstrap.js")); do_check_false(b1.hasResource("foo.bar")); - do_check_in_crash_annotation(ID1, "2.0"); + do_check_in_crash_annotation("bootstrap1@tests.mozilla.org", "2.0"); prepare_test({ }, [ "onNewInstall" @@ -544,9 +585,9 @@ function check_test_10_pt1() { do_check_eq(install.name, "Test Bootstrap 1"); do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - BootstrapMonitor.promiseAddonStartup(ID1).then(check_test_10_pt2); + waitForPref("bootstraptest.startup_reason", check_test_10_pt2); prepare_test({ - [ID1]: [ + "bootstrap1@tests.mozilla.org": [ ["onInstalling", false], "onInstalled" ] @@ -560,23 +601,22 @@ function check_test_10_pt1() { } function check_test_10_pt2() { - AddonManager.getAddonByID(ID1, 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.appDisabled); do_check_false(b1.userDisabled); do_check_true(b1.isActive); - do_check_false(b1.isSystem); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 1); do_check_eq(getStartupReason(), ADDON_DOWNGRADE); do_check_eq(getInstallOldVersion(), 2); do_check_eq(getStartupOldVersion(), 2); do_check_eq(getShutdownReason(), ADDON_DOWNGRADE); do_check_eq(getShutdownNewVersion(), 1); do_check_eq(getUninstallNewVersion(), 1); - do_check_in_crash_annotation(ID1, "1.0"); - do_check_not_in_crash_annotation(ID1, "2.0"); + do_check_in_crash_annotation("bootstrap1@tests.mozilla.org", "1.0"); + do_check_not_in_crash_annotation("bootstrap1@tests.mozilla.org", "2.0"); do_check_bootstrappedPref(run_test_11); }); @@ -584,9 +624,9 @@ function check_test_10_pt2() { // Tests that uninstalling a disabled add-on still calls the uninstall method function run_test_11() { - AddonManager.getAddonByID(ID1, function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { prepare_test({ - [ID1]: [ + "bootstrap1@tests.mozilla.org": [ ["onDisabling", false], "onDisabled", ["onUninstalling", false], @@ -596,11 +636,11 @@ function run_test_11() { b1.userDisabled = true; - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 0); do_check_eq(getShutdownReason(), ADDON_DISABLE); - do_check_eq(getShutdownNewVersion(), undefined); - do_check_not_in_crash_annotation(ID1, "1.0"); + do_check_eq(getShutdownNewVersion(), 0); + do_check_not_in_crash_annotation("bootstrap1@tests.mozilla.org", "1.0"); b1.uninstall(); @@ -610,9 +650,9 @@ function run_test_11() { function check_test_11() { ensure_test_completed(); - BootstrapMonitor.checkAddonNotInstalled(ID1); - BootstrapMonitor.checkAddonNotStarted(ID1); - do_check_not_in_crash_annotation(ID1, "1.0"); + do_check_eq(getInstalledVersion(), 0); + do_check_eq(getActiveVersion(), 0); + do_check_not_in_crash_annotation("bootstrap1@tests.mozilla.org", "1.0"); do_check_bootstrappedPref(run_test_12); } @@ -623,22 +663,21 @@ function run_test_12() { shutdownManager(); manuallyInstall(do_get_addon("test_bootstrap1_1"), profileDir, - ID1); + "bootstrap1@tests.mozilla.org"); startupManager(true); - AddonManager.getAddonByID(ID1, 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.appDisabled); do_check_false(b1.userDisabled); do_check_true(b1.isActive); - do_check_false(b1.isSystem); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 1); do_check_eq(getStartupReason(), ADDON_INSTALL); - do_check_eq(getStartupOldVersion(), undefined); - do_check_in_crash_annotation(ID1, "1.0"); + do_check_eq(getStartupOldVersion(), 0); + do_check_in_crash_annotation("bootstrap1@tests.mozilla.org", "1.0"); b1.uninstall(); do_execute_soon(test_12_restart); @@ -666,10 +705,10 @@ function run_test_13() { do_check_eq(install.version, "3.0"); do_check_eq(install.name, "Test Bootstrap 1"); do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); - do_check_not_in_crash_annotation(ID1, "3.0"); + do_check_not_in_crash_annotation("bootstrap1@tests.mozilla.org", "3.0"); prepare_test({ - [ID1]: [ + "bootstrap1@tests.mozilla.org": [ ["onInstalling", false], "onInstalled" ] @@ -687,15 +726,15 @@ function check_test_13() { // doesn't require a restart. do_check_eq(installs.length, 0); - AddonManager.getAddonByID(ID1, function(b1) { + 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); - BootstrapMonitor.checkAddonInstalled(ID1, "3.0"); // We call install even for disabled add-ons - BootstrapMonitor.checkAddonNotStarted(ID1); // Should not have called startup though - do_check_not_in_crash_annotation(ID1, "3.0"); + 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_execute_soon(test_13_restart); }); @@ -705,15 +744,15 @@ function check_test_13() { function test_13_restart() { restartManager(); - AddonManager.getAddonByID(ID1, function(b1) { + 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); - BootstrapMonitor.checkAddonInstalled(ID1, "3.0"); // We call install even for disabled add-ons - BootstrapMonitor.checkAddonNotStarted(ID1); // Should not have called startup though - do_check_not_in_crash_annotation(ID1, "3.0"); + 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(); @@ -730,19 +769,19 @@ function run_test_14() { shutdownManager(); manuallyInstall(do_get_addon("test_bootstrap1_3"), profileDir, - ID1); + "bootstrap1@tests.mozilla.org"); startupManager(false); - AddonManager.getAddonByID(ID1, function(b1) { + 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); - BootstrapMonitor.checkAddonInstalled(ID1, "3.0"); // We call install even for disabled add-ons - BootstrapMonitor.checkAddonNotStarted(ID1); // Should not have called startup though - do_check_not_in_crash_annotation(ID1, "3.0"); + 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(); @@ -755,21 +794,21 @@ function run_test_14() { // Tests that upgrading a disabled bootstrapped extension still calls uninstall // and install but doesn't startup the new version function run_test_15() { - BootstrapMonitor.promiseAddonStartup(ID1).then(function test_15_after_startup() { - AddonManager.getAddonByID(ID1, function(b1) { + resetPrefs(); + waitForPref("bootstraptest.startup_reason", function test_15_after_startup() { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { do_check_neq(b1, null); do_check_eq(b1.version, "1.0"); do_check_false(b1.appDisabled); do_check_false(b1.userDisabled); do_check_true(b1.isActive); - do_check_false(b1.isSystem); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 1); b1.userDisabled = true; do_check_false(b1.isActive); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 0); prepare_test({ }, [ "onNewInstall" @@ -782,7 +821,7 @@ function run_test_15() { do_check_true(install.addon.userDisabled); prepare_test({ - [ID1]: [ + "bootstrap1@tests.mozilla.org": [ ["onInstalling", false], "onInstalled" ] @@ -798,28 +837,28 @@ function run_test_15() { } function check_test_15() { - AddonManager.getAddonByID(ID1, function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { do_check_neq(b1, null); do_check_eq(b1.version, "2.0"); do_check_false(b1.appDisabled); do_check_true(b1.userDisabled); do_check_false(b1.isActive); - BootstrapMonitor.checkAddonInstalled(ID1, "2.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); + do_check_eq(getInstalledVersion(), 2); + do_check_eq(getActiveVersion(), 0); do_check_bootstrappedPref(function() { restartManager(); - AddonManager.getAddonByID(ID1, callback_soon(function(b1_2) { - do_check_neq(b1_2, null); - do_check_eq(b1_2.version, "2.0"); - do_check_false(b1_2.appDisabled); - do_check_true(b1_2.userDisabled); - do_check_false(b1_2.isActive); - BootstrapMonitor.checkAddonInstalled(ID1, "2.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", callback_soon(function(b1) { + do_check_neq(b1, null); + do_check_eq(b1.version, "2.0"); + do_check_false(b1.appDisabled); + do_check_true(b1.userDisabled); + do_check_false(b1.isActive); + do_check_eq(getInstalledVersion(), 2); + do_check_eq(getActiveVersion(), 0); - b1_2.uninstall(); + b1.uninstall(); run_test_16(); })); @@ -829,13 +868,13 @@ function check_test_15() { // Tests that bootstrapped extensions don't get loaded when in safe mode function run_test_16() { - BootstrapMonitor.promiseAddonStartup(ID1).then(function test_16_after_startup() { - AddonManager.getAddonByID(ID1, callback_soon(function(b1) { + resetPrefs(); + waitForPref("bootstraptest.startup_reason", function test_16_after_startup() { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", callback_soon(function(b1) { // Should have installed and started - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 1); do_check_true(b1.isActive); - do_check_false(b1.isSystem); do_check_eq(b1.iconURL, "chrome://foo/skin/icon.png"); do_check_eq(b1.aboutURL, "chrome://foo/content/about.xul"); do_check_eq(b1.optionsURL, "chrome://foo/content/options.xul"); @@ -843,31 +882,31 @@ function run_test_16() { shutdownManager(); // Should have stopped - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 0); gAppInfo.inSafeMode = true; startupManager(false); - AddonManager.getAddonByID(ID1, callback_soon(function(b1_2) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", callback_soon(function(b1) { // Should still be stopped - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); - do_check_false(b1_2.isActive); - do_check_eq(b1_2.iconURL, null); - do_check_eq(b1_2.aboutURL, null); - do_check_eq(b1_2.optionsURL, null); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 0); + do_check_false(b1.isActive); + do_check_eq(b1.iconURL, null); + do_check_eq(b1.aboutURL, null); + do_check_eq(b1.optionsURL, null); shutdownManager(); gAppInfo.inSafeMode = false; startupManager(false); // Should have started - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 1); - AddonManager.getAddonByID(ID1, function(b1_3) { - b1_3.uninstall(); + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { + b1.uninstall(); do_execute_soon(run_test_17); }); @@ -882,18 +921,18 @@ function run_test_17() { shutdownManager(); manuallyInstall(do_get_addon("test_bootstrap1_1"), userExtDir, - ID1); + "bootstrap1@tests.mozilla.org"); + resetPrefs(); startupManager(); - AddonManager.getAddonByID(ID1, function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { // Should have installed and started - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 1); do_check_neq(b1, null); do_check_eq(b1.version, "1.0"); do_check_true(b1.isActive); - do_check_false(b1.isSystem); do_check_bootstrappedPref(run_test_18); }); @@ -902,15 +941,15 @@ function run_test_17() { // Check that installing a new bootstrapped extension in the profile replaces // the existing one function run_test_18() { - BootstrapMonitor.promiseAddonStartup(ID1).then(function test_18_after_startup() { - AddonManager.getAddonByID(ID1, function(b1) { + resetPrefs(); + waitForPref("bootstraptest.startup_reason", function test_18_after_startup() { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { // Should have installed and started - BootstrapMonitor.checkAddonInstalled(ID1, "2.0"); - BootstrapMonitor.checkAddonStarted(ID1, "2.0"); + do_check_eq(getInstalledVersion(), 2); + do_check_eq(getActiveVersion(), 2); do_check_neq(b1, null); do_check_eq(b1.version, "2.0"); do_check_true(b1.isActive); - do_check_false(b1.isSystem); do_check_eq(getShutdownReason(), ADDON_UPGRADE); do_check_eq(getUninstallReason(), ADDON_UPGRADE); @@ -930,10 +969,11 @@ function run_test_18() { // Check that uninstalling the profile version reveals the non-profile one function run_test_19() { - AddonManager.getAddonByID(ID1, function(b1) { + resetPrefs(); + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { // The revealed add-on gets activated asynchronously prepare_test({ - [ID1]: [ + "bootstrap1@tests.mozilla.org": [ ["onUninstalling", false], "onUninstalled", ["onInstalling", false], @@ -946,14 +986,13 @@ function run_test_19() { } function check_test_19() { - AddonManager.getAddonByID(ID1, function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { // Should have reverted to the older version - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 1); do_check_neq(b1, null); do_check_eq(b1.version, "1.0"); do_check_true(b1.isActive); - do_check_false(b1.isSystem); // TODO these reasons really should be ADDON_DOWNGRADE (bug 607818) do_check_eq(getShutdownReason(), ADDON_UNINSTALL); @@ -961,10 +1000,10 @@ function check_test_19() { do_check_eq(getInstallReason(), ADDON_INSTALL); do_check_eq(getStartupReason(), ADDON_INSTALL); - do_check_eq(getShutdownNewVersion(), undefined); - do_check_eq(getUninstallNewVersion(), undefined); - do_check_eq(getInstallOldVersion(), undefined); - do_check_eq(getStartupOldVersion(), undefined); + do_check_eq(getShutdownNewVersion(), 0); + do_check_eq(getUninstallNewVersion(), 0); + do_check_eq(getInstallOldVersion(), 0); + do_check_eq(getStartupOldVersion(), 0); do_check_bootstrappedPref(run_test_20); }); @@ -973,31 +1012,31 @@ function check_test_19() { // Check that a new profile extension detected at startup replaces the non-profile // one function run_test_20() { + resetPrefs(); shutdownManager(); manuallyInstall(do_get_addon("test_bootstrap1_2"), profileDir, - ID1); + "bootstrap1@tests.mozilla.org"); startupManager(); - AddonManager.getAddonByID(ID1, function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { // Should have installed and started - BootstrapMonitor.checkAddonInstalled(ID1, "2.0"); - BootstrapMonitor.checkAddonStarted(ID1, "2.0"); + do_check_eq(getInstalledVersion(), 2); + do_check_eq(getActiveVersion(), 2); do_check_neq(b1, null); do_check_eq(b1.version, "2.0"); do_check_true(b1.isActive); - do_check_false(b1.isSystem); do_check_eq(getShutdownReason(), APP_SHUTDOWN); do_check_eq(getUninstallReason(), ADDON_UPGRADE); do_check_eq(getInstallReason(), ADDON_UPGRADE); do_check_eq(getStartupReason(), APP_STARTUP); - do_check_eq(getShutdownNewVersion(), undefined); + do_check_eq(getShutdownNewVersion(), 0); do_check_eq(getUninstallNewVersion(), 2); do_check_eq(getInstallOldVersion(), 1); - do_check_eq(getStartupOldVersion(), undefined); + do_check_eq(getStartupOldVersion(), 0); do_execute_soon(run_test_21); }); @@ -1005,43 +1044,40 @@ function run_test_20() { // Check that a detected removal reveals the non-profile one function run_test_21() { + resetPrefs(); shutdownManager(); - do_check_eq(getShutdownReason(), APP_SHUTDOWN); - do_check_eq(getShutdownNewVersion(), undefined); - - manuallyUninstall(profileDir, ID1); - BootstrapMonitor.clear(ID1); + manuallyUninstall(profileDir, "bootstrap1@tests.mozilla.org"); startupManager(); - AddonManager.getAddonByID(ID1, function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { // Should have installed and started - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 1); do_check_neq(b1, null); do_check_eq(b1.version, "1.0"); do_check_true(b1.isActive); - do_check_false(b1.isSystem); + + do_check_eq(getShutdownReason(), APP_SHUTDOWN); + do_check_eq(getShutdownNewVersion(), 0); // This won't be set as the bootstrap script was gone so we couldn't // uninstall it properly - do_check_eq(getUninstallReason(), undefined); - do_check_eq(getUninstallNewVersion(), undefined); + do_check_eq(getUninstallReason(), -1); + do_check_eq(getUninstallNewVersion(), -1); - do_check_eq(getInstallReason(), ADDON_DOWNGRADE); - do_check_eq(getInstallOldVersion(), 2); + // TODO this reason should probably be ADDON_DOWNGRADE (bug 607818) + do_check_eq(getInstallReason(), ADDON_INSTALL); + do_check_eq(getInstallOldVersion(), 0); do_check_eq(getStartupReason(), APP_STARTUP); - do_check_eq(getStartupOldVersion(), undefined); + do_check_eq(getStartupOldVersion(), 0); do_check_bootstrappedPref(function() { - shutdownManager(); + manuallyUninstall(userExtDir, "bootstrap1@tests.mozilla.org"); - manuallyUninstall(userExtDir, ID1); - BootstrapMonitor.clear(ID1); - - startupManager(false); + restartManager(); run_test_22(); }); }); @@ -1052,55 +1088,53 @@ function run_test_22() { shutdownManager(); let file = manuallyInstall(do_get_addon("test_bootstrap1_1"), profileDir, - ID1); + "bootstrap1@tests.mozilla.org"); // Make it look old so changes are detected setExtensionModifiedTime(file, file.lastModifiedTime - 5000); startupManager(); - AddonManager.getAddonByID(ID1, callback_soon(function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", callback_soon(function(b1) { // Should have installed and started - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 1); do_check_neq(b1, null); do_check_eq(b1.version, "1.0"); do_check_true(b1.isActive); - do_check_false(b1.isSystem); + resetPrefs(); shutdownManager(); - do_check_eq(getShutdownReason(), APP_SHUTDOWN); - do_check_eq(getShutdownNewVersion(), undefined); - - manuallyUninstall(profileDir, ID1); - BootstrapMonitor.clear(ID1); + manuallyUninstall(profileDir, "bootstrap1@tests.mozilla.org"); manuallyInstall(do_get_addon("test_bootstrap1_2"), profileDir, - ID1); + "bootstrap1@tests.mozilla.org"); startupManager(); - AddonManager.getAddonByID(ID1, function(b1_2) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { // Should have installed and started - BootstrapMonitor.checkAddonInstalled(ID1, "2.0"); - BootstrapMonitor.checkAddonStarted(ID1, "2.0"); - do_check_neq(b1_2, null); - do_check_eq(b1_2.version, "2.0"); - do_check_true(b1_2.isActive); - do_check_false(b1_2.isSystem); + do_check_eq(getInstalledVersion(), 2); + do_check_eq(getActiveVersion(), 2); + do_check_neq(b1, null); + do_check_eq(b1.version, "2.0"); + do_check_true(b1.isActive); + + do_check_eq(getShutdownReason(), APP_SHUTDOWN); + do_check_eq(getShutdownNewVersion(), 0); // This won't be set as the bootstrap script was gone so we couldn't // uninstall it properly - do_check_eq(getUninstallReason(), undefined); - do_check_eq(getUninstallNewVersion(), undefined); + do_check_eq(getUninstallReason(), -1); + do_check_eq(getUninstallNewVersion(), -1); do_check_eq(getInstallReason(), ADDON_UPGRADE); do_check_eq(getInstallOldVersion(), 1); do_check_eq(getStartupReason(), APP_STARTUP); - do_check_eq(getStartupOldVersion(), undefined); + do_check_eq(getStartupOldVersion(), 0); do_check_bootstrappedPref(function() { - b1_2.uninstall(); + b1.uninstall(); run_test_23(); }); @@ -1134,11 +1168,11 @@ function run_test_23() { do_check_false(install.addon.hasResource("foo.bar")); do_check_eq(install.addon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_INSTALL, 0); - do_check_not_in_crash_annotation(ID1, "1.0"); + do_check_not_in_crash_annotation("bootstrap1@tests.mozilla.org", "1.0"); let addon = install.addon; prepare_test({ - [ID1]: [ + "bootstrap1@tests.mozilla.org": [ ["onInstalling", false], "onInstalled" ] @@ -1160,32 +1194,31 @@ function check_test_23() { // doesn't require a restart. do_check_eq(installs.length, 0); - AddonManager.getAddonByID(ID1, function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { do_execute_soon(function test_23_after_startup() { do_check_neq(b1, null); do_check_eq(b1.version, "1.0"); do_check_false(b1.appDisabled); do_check_false(b1.userDisabled); do_check_true(b1.isActive); - do_check_false(b1.isSystem); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 1); do_check_eq(getStartupReason(), ADDON_INSTALL); - do_check_eq(getStartupOldVersion(), undefined); + do_check_eq(getStartupOldVersion(), 0); do_check_true(b1.hasResource("install.rdf")); do_check_true(b1.hasResource("bootstrap.js")); do_check_false(b1.hasResource("foo.bar")); - do_check_in_crash_annotation(ID1, "1.0"); + do_check_in_crash_annotation("bootstrap1@tests.mozilla.org", "1.0"); - let dir = do_get_addon_root_uri(profileDir, ID1); + 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) { do_check_eq(list.length, 0); restartManager(); - AddonManager.getAddonByID(ID1, callback_soon(function(b1_2) { - b1_2.uninstall(); + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", callback_soon(function(b1) { + b1.uninstall(); restartManager(); testserver.stop(run_test_24); @@ -1198,42 +1231,45 @@ function check_test_23() { // Tests that we recover from a broken preference function run_test_24() { + resetPrefs(); do_print("starting 24"); - Promise.all([BootstrapMonitor.promiseAddonStartup(ID2), - promiseInstallAllFiles([do_get_addon("test_bootstrap1_1"), do_get_addon("test_bootstrap2_1")])]) + Promise.all([promisePref("bootstraptest2.active_version"), + promiseInstall([do_get_addon("test_bootstrap1_1"), do_get_addon("test_bootstrap2_1")])]) .then(function test_24_pref() { do_print("test 24 got prefs"); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - BootstrapMonitor.checkAddonInstalled(ID2, "1.0"); - BootstrapMonitor.checkAddonStarted(ID2, "1.0"); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 1); + do_check_eq(getInstalledVersion2(), 1); + do_check_eq(getActiveVersion2(), 1); + + resetPrefs(); restartManager(); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - BootstrapMonitor.checkAddonInstalled(ID2, "1.0"); - BootstrapMonitor.checkAddonStarted(ID2, "1.0"); + do_check_eq(getInstalledVersion(), -1); + do_check_eq(getActiveVersion(), 1); + do_check_eq(getInstalledVersion2(), -1); + do_check_eq(getActiveVersion2(), 1); shutdownManager(); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); - BootstrapMonitor.checkAddonInstalled(ID2, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID2); + do_check_eq(getInstalledVersion(), -1); + do_check_eq(getActiveVersion(), 0); + do_check_eq(getInstalledVersion2(), -1); + do_check_eq(getActiveVersion2(), 0); - // Break the preference + // Break the preferece let bootstrappedAddons = JSON.parse(Services.prefs.getCharPref("extensions.bootstrappedAddons")); - bootstrappedAddons[ID1].descriptor += "foo"; + bootstrappedAddons["bootstrap1@tests.mozilla.org"].descriptor += "foo"; Services.prefs.setCharPref("extensions.bootstrappedAddons", JSON.stringify(bootstrappedAddons)); startupManager(false); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); - BootstrapMonitor.checkAddonInstalled(ID2, "1.0"); - BootstrapMonitor.checkAddonStarted(ID2, "1.0"); + do_check_eq(getInstalledVersion(), -1); + do_check_eq(getActiveVersion(), 1); + do_check_eq(getInstalledVersion2(), -1); + do_check_eq(getActiveVersion2(), 1); run_test_25(); }); @@ -1242,36 +1278,34 @@ function run_test_24() { // Tests that updating from a bootstrappable add-on to a normal add-on calls // the uninstall method function run_test_25() { - BootstrapMonitor.promiseAddonStartup(ID1).then(function test_25_after_pref() { + waitForPref("bootstraptest.startup_reason", function test_25_after_pref() { do_print("test 25 pref change detected"); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 1); installAllFiles([do_get_addon("test_bootstrap1_4")], function() { // Needs a restart to complete this so the old version stays running - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 1); - AddonManager.getAddonByID(ID1, callback_soon(function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", callback_soon(function(b1) { do_check_neq(b1, null); do_check_eq(b1.version, "1.0"); do_check_true(b1.isActive); - do_check_false(b1.isSystem); do_check_true(hasFlag(b1.pendingOperations, AddonManager.PENDING_UPGRADE)); restartManager(); - BootstrapMonitor.checkAddonNotInstalled(ID1); + do_check_eq(getInstalledVersion(), 0); do_check_eq(getUninstallReason(), ADDON_UPGRADE); do_check_eq(getUninstallNewVersion(), 4); - BootstrapMonitor.checkAddonNotStarted(ID1); + do_check_eq(getActiveVersion(), 0); - AddonManager.getAddonByID(ID1, function(b1_2) { - do_check_neq(b1_2, null); - do_check_eq(b1_2.version, "4.0"); - do_check_true(b1_2.isActive); - do_check_false(b1_2.isSystem); - do_check_eq(b1_2.pendingOperations, AddonManager.PENDING_NONE); + 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); + do_check_eq(b1.pendingOperations, AddonManager.PENDING_NONE); do_check_bootstrappedPref(run_test_26); }); @@ -1288,29 +1322,27 @@ function run_test_25() { function run_test_26() { installAllFiles([do_get_addon("test_bootstrap1_1")], function() { // Needs a restart to complete this - BootstrapMonitor.checkAddonNotInstalled(ID1); - BootstrapMonitor.checkAddonNotStarted(ID1); + do_check_eq(getInstalledVersion(), 0); + do_check_eq(getActiveVersion(), 0); - AddonManager.getAddonByID(ID1, callback_soon(function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", callback_soon(function(b1) { do_check_neq(b1, null); do_check_eq(b1.version, "4.0"); do_check_true(b1.isActive); - do_check_false(b1.isSystem); do_check_true(hasFlag(b1.pendingOperations, AddonManager.PENDING_UPGRADE)); restartManager(); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); + do_check_eq(getInstalledVersion(), 1); do_check_eq(getInstallReason(), ADDON_DOWNGRADE); do_check_eq(getInstallOldVersion(), 4); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); + do_check_eq(getActiveVersion(), 1); - AddonManager.getAddonByID(ID1, function(b1_2) { - do_check_neq(b1_2, null); - do_check_eq(b1_2.version, "1.0"); - do_check_true(b1_2.isActive); - do_check_false(b1_2.isSystem); - do_check_eq(b1_2.pendingOperations, AddonManager.PENDING_NONE); + 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); + do_check_eq(b1.pendingOperations, AddonManager.PENDING_NONE); do_check_bootstrappedPref(run_test_27); }); @@ -1321,38 +1353,38 @@ function run_test_26() { // Tests that updating from a bootstrappable add-on to a normal add-on while // disabled calls the uninstall method function run_test_27() { - AddonManager.getAddonByID(ID1, function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { do_check_neq(b1, null); b1.userDisabled = true; do_check_eq(b1.version, "1.0"); do_check_false(b1.isActive); do_check_eq(b1.pendingOperations, AddonManager.PENDING_NONE); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 0); installAllFiles([do_get_addon("test_bootstrap1_4")], function() { // Updating disabled things happens immediately - BootstrapMonitor.checkAddonNotInstalled(ID1); + do_check_eq(getInstalledVersion(), 0); do_check_eq(getUninstallReason(), ADDON_UPGRADE); do_check_eq(getUninstallNewVersion(), 4); - BootstrapMonitor.checkAddonNotStarted(ID1); + do_check_eq(getActiveVersion(), 0); - AddonManager.getAddonByID(ID1, callback_soon(function(b1_2) { - do_check_neq(b1_2, null); - do_check_eq(b1_2.version, "4.0"); - do_check_false(b1_2.isActive); - do_check_eq(b1_2.pendingOperations, AddonManager.PENDING_NONE); + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", callback_soon(function(b1) { + do_check_neq(b1, null); + do_check_eq(b1.version, "4.0"); + do_check_false(b1.isActive); + do_check_eq(b1.pendingOperations, AddonManager.PENDING_NONE); restartManager(); - BootstrapMonitor.checkAddonNotInstalled(ID1); - BootstrapMonitor.checkAddonNotStarted(ID1); + do_check_eq(getInstalledVersion(), 0); + do_check_eq(getActiveVersion(), 0); - AddonManager.getAddonByID(ID1, function(b1_3) { - do_check_neq(b1_3, null); - do_check_eq(b1_3.version, "4.0"); - do_check_false(b1_3.isActive); - do_check_eq(b1_3.pendingOperations, AddonManager.PENDING_NONE); + 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); + do_check_eq(b1.pendingOperations, AddonManager.PENDING_NONE); do_check_bootstrappedPref(run_test_28); }); @@ -1367,12 +1399,12 @@ function run_test_28() { installAllFiles([do_get_addon("test_bootstrap1_1")], function() { do_execute_soon(function bootstrap_disabled_downgrade_check() { // Doesn't need a restart to complete this - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); + do_check_eq(getInstalledVersion(), 1); do_check_eq(getInstallReason(), ADDON_DOWNGRADE); do_check_eq(getInstallOldVersion(), 4); - BootstrapMonitor.checkAddonNotStarted(ID1); + do_check_eq(getActiveVersion(), 0); - AddonManager.getAddonByID(ID1, callback_soon(function(b1) { + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", callback_soon(function(b1) { do_check_neq(b1, null); do_check_eq(b1.version, "1.0"); do_check_false(b1.isActive); @@ -1381,19 +1413,18 @@ function run_test_28() { restartManager(); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonNotStarted(ID1); - - AddonManager.getAddonByID(ID1, function(b1_2) { - do_check_neq(b1_2, null); - do_check_true(b1_2.userDisabled); - b1_2.userDisabled = false; - do_check_eq(b1_2.version, "1.0"); - do_check_true(b1_2.isActive); - do_check_false(b1_2.isSystem); - do_check_eq(b1_2.pendingOperations, AddonManager.PENDING_NONE); - BootstrapMonitor.checkAddonInstalled(ID1, "1.0"); - BootstrapMonitor.checkAddonStarted(ID1, "1.0"); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 0); + + AddonManager.getAddonByID("bootstrap1@tests.mozilla.org", function(b1) { + do_check_neq(b1, null); + do_check_true(b1.userDisabled); + b1.userDisabled = false; + do_check_eq(b1.version, "1.0"); + do_check_true(b1.isActive); + do_check_eq(b1.pendingOperations, AddonManager.PENDING_NONE); + do_check_eq(getInstalledVersion(), 1); + do_check_eq(getActiveVersion(), 1); do_check_bootstrappedPref(do_test_finished); }); |