From 48c3fdbe68c47fc536d6b4254beb3453c5a81ad2 Mon Sep 17 00:00:00 2001 From: Dave Townsend Date: Wed, 29 Jun 2011 12:27:00 -0700 Subject: [PATCH] Backing out bug 666431 due to test failures. --- mobile/chrome/content/browser-ui.js | 18 ++- toolkit/mozapps/extensions/AddonManager.jsm | 96 +---------- toolkit/mozapps/extensions/XPIProvider.jsm | 87 ++++------ toolkit/mozapps/extensions/content/update.js | 7 - .../extensions/test/xpcshell/head_addons.js | 14 -- .../test/xpcshell/test_bug542391.js | 150 +++++++----------- .../extensions/test/xpcshell/test_migrate1.js | 5 - .../extensions/test/xpcshell/test_migrate2.js | 6 - .../extensions/test/xpcshell/test_migrate3.js | 6 - .../extensions/test/xpcshell/test_startup.js | 65 -------- 10 files changed, 98 insertions(+), 356 deletions(-) diff --git a/mobile/chrome/content/browser-ui.js b/mobile/chrome/content/browser-ui.js index 48be27b270bd..07278672e8cf 100644 --- a/mobile/chrome/content/browser-ui.js +++ b/mobile/chrome/content/browser-ui.js @@ -39,7 +39,6 @@ Cu.import("resource://gre/modules/XPCOMUtils.jsm"); Cu.import("resource://gre/modules/Services.jsm"); -Cu.import("resource://gre/modules/AddonManager.jsm"); [ ["AllPagesList", "popup_autocomplete", "cmd_openLocation"], @@ -556,14 +555,17 @@ var BrowserUI = { CharsetMenu.init(); // If some add-ons were disabled during during an application update, alert user - let addonIDs = AddonManager.getStartupChanges("disabled"); - if (addonIDs.length > 0) { - let disabledStrings = Strings.browser.GetStringFromName("alertAddonsDisabled"); - let label = PluralForm.get(addonIDs.length, disabledStrings).replace("#1", addonIDs.length); - let image = "chrome://browser/skin/images/alert-addons-30.png"; + if (Services.prefs.prefHasUserValue("extensions.disabledAddons")) { + let addons = Services.prefs.getCharPref("extensions.disabledAddons").split(","); + if (addons.length > 0) { + let disabledStrings = Strings.browser.GetStringFromName("alertAddonsDisabled"); + let label = PluralForm.get(addons.length, disabledStrings).replace("#1", addons.length); + let image = "chrome://browser/skin/images/alert-addons-30.png"; - let alerts = Cc["@mozilla.org/toaster-alerts-service;1"].getService(Ci.nsIAlertsService); - alerts.showAlertNotification(image, Strings.browser.GetStringFromName("alertAddons"), label, false, "", null); + let alerts = Cc["@mozilla.org/toaster-alerts-service;1"].getService(Ci.nsIAlertsService); + alerts.showAlertNotification(image, Strings.browser.GetStringFromName("alertAddons"), label, false, "", null); + } + Services.prefs.clearUserPref("extensions.disabledAddons"); } #ifdef MOZ_UPDATER diff --git a/toolkit/mozapps/extensions/AddonManager.jsm b/toolkit/mozapps/extensions/AddonManager.jsm index 7661854c8965..9d637259ce95 100644 --- a/toolkit/mozapps/extensions/AddonManager.jsm +++ b/toolkit/mozapps/extensions/AddonManager.jsm @@ -273,7 +273,6 @@ var AddonManagerInternal = { typeListeners: [], providers: [], types: {}, - startupChanges: {}, // A read-only wrapper around the types dictionary typesProxy: Proxy.create({ @@ -386,13 +385,6 @@ var AddonManagerInternal = { callProvider(provider, "startup", null, appChanged, oldAppVersion, oldPlatformVersion); }); - - // If this is a new profile just pretend that there were no changes - if (appChanged === undefined) { - for (let type in this.startupChanges) - delete this.startupChanges[type]; - } - gStarted = true; }, @@ -475,7 +467,7 @@ var AddonManagerInternal = { * Shuts down the addon manager and all registered providers, this must clean * up everything in order for automated tests to fake restarts. */ - shutdown: function AMI_shutdown() { + shutdown: function AM_shutdown() { this.providers.forEach(function(provider) { callProvider(provider, "shutdown"); }); @@ -483,8 +475,6 @@ var AddonManagerInternal = { this.installListeners.splice(0); this.addonListeners.splice(0); this.typeListeners.splice(0); - for (let type in this.startupChanges) - delete this.startupChanges[type]; gStarted = false; }, @@ -548,49 +538,6 @@ var AddonManagerInternal = { }); }, - /** - * Adds a add-on to the list of detected changes for this startup. If - * addStartupChange is called multiple times for the same add-on in the same - * startup then only the most recent change will be remembered. - * - * @param aType - * The type of change as a string. Providers can define their own - * types of changes or use the existing defined STARTUP_CHANGE_* - * constants - * @param aID - * The ID of the add-on - */ - addStartupChange: function AMI_addStartupChange(aType, aID) { - if (gStarted) - return; - - // Ensure that an ID is only listed in one type of change - for (let type in this.startupChanges) - this.removeStartupChange(type, aID); - - if (!(aType in this.startupChanges)) - this.startupChanges[aType] = []; - this.startupChanges[aType].push(aID); - }, - - /** - * Removes a startup change for an add-on. - * - * @param aType - * The type of change - * @param aID - * The ID of the add-on - */ - removeStartupChange: function AMI_removeStartupChange(aType, aID) { - if (gStarted) - return; - - if (!(aType in this.startupChanges)) - return; - - this.startupChanges[aType] = this.startupChanges[aType].filter(function(aItem) aItem != aID); - }, - /** * Calls all registered InstallListeners with an event. Any parameters after * the extraListeners parameter are passed to the listener. @@ -1117,14 +1064,6 @@ var AddonManagerPrivate = { AddonManagerInternal.backgroundUpdateCheck(); }, - addStartupChange: function AMP_addStartupChange(aType, aID) { - AddonManagerInternal.addStartupChange(aType, aID); - }, - - removeStartupChange: function AMP_removeStartupChange(aType, aID) { - AddonManagerInternal.removeStartupChange(aType, aID); - }, - notifyAddonChanged: function AMP_notifyAddonChanged(aId, aType, aPendingRestart) { AddonManagerInternal.notifyAddonChanged(aId, aType, aPendingRestart); }, @@ -1281,26 +1220,6 @@ var AddonManager = { // Options will be displayed in a new tab, if possible OPTIONS_TYPE_TAB: 3, - // Constants for getStartupChanges, addStartupChange and removeStartupChange - // Add-ons that were detected as installed during startup. Doesn't include - // add-ons that were pending installation the last time the application ran. - STARTUP_CHANGE_INSTALLED: "installed", - // Add-ons that were detected as changed during startup. This includes an - // add-on moving to a different location, changing version or just having - // been detected as possibly changed. - STARTUP_CHANGE_CHANGED: "changed", - // Add-ons that were detected as uninstalled during startup. Doesn't include - // add-ons that were pending uninstallation the last time the application ran. - STARTUP_CHANGE_UNINSTALLED: "uninstalled", - // Add-ons that were detected as disabled during startup, normally because of - // an application change making an add-on incompatible. Doesn't include - // add-ons that were pending being disabled the last time the application ran. - STARTUP_CHANGE_DISABLED: "disabled", - // Add-ons that were detected as enabled during startup, normally because of - // an application change making an add-on compatible. Doesn't include - // add-ons that were pending being enabled the last time the application ran. - STARTUP_CHANGE_ENABLED: "enabled", - getInstallForURL: function AM_getInstallForURL(aUrl, aCallback, aMimetype, aHash, aName, aIconURL, aVersion, aLoadGroup) { @@ -1312,19 +1231,6 @@ var AddonManager = { AddonManagerInternal.getInstallForFile(aFile, aCallback, aMimetype); }, - /** - * Gets an array of add-on IDs that changed during the most recent startup. - * - * @param aType - * The type of startup change to get - * @return An array of add-on IDs - */ - getStartupChanges: function AM_getStartupChanges(aType) { - if (!(aType in AddonManagerInternal.startupChanges)) - return []; - return AddonManagerInternal.startupChanges[aType].slice(0); - }, - getAddonByID: function AM_getAddonByID(aId, aCallback) { AddonManagerInternal.getAddonByID(aId, aCallback); }, diff --git a/toolkit/mozapps/extensions/XPIProvider.jsm b/toolkit/mozapps/extensions/XPIProvider.jsm index 828bcdb772e0..c599c383f0e1 100644 --- a/toolkit/mozapps/extensions/XPIProvider.jsm +++ b/toolkit/mozapps/extensions/XPIProvider.jsm @@ -68,6 +68,7 @@ const PREF_EM_EXTENSION_FORMAT = "extensions."; const PREF_EM_ENABLED_SCOPES = "extensions.enabledScopes"; const PREF_EM_AUTO_DISABLED_SCOPES = "extensions.autoDisableScopes"; const PREF_EM_SHOW_MISMATCH_UI = "extensions.showMismatchUI"; +const PREF_EM_DISABLED_ADDONS_LIST = "extensions.disabledAddons"; const PREF_XPI_ENABLED = "xpinstall.enabled"; const PREF_XPI_WHITELIST_REQUIRED = "xpinstall.whitelist.required"; const PREF_XPI_WHITELIST_PERMISSIONS = "xpinstall.whitelist.add"; @@ -1455,6 +1456,14 @@ var XPIProvider = { enabledAddons: null, // An array of add-on IDs of add-ons that were inactive during startup inactiveAddonIDs: [], + // A cache of the add-on IDs of add-ons that had changes performed to them + // during this session's startup. This is preliminary work, hopefully it will + // be expanded on in the future and an API made to get at it from the + // application. + startupChanges: { + // Add-ons that became disabled for compatibility reasons + appDisabled: [] + }, /** * Starts the XPI provider initializes the install locations and prefs. @@ -1577,13 +1586,24 @@ var XPIProvider = { // Changes to installed extensions may have changed which theme is selected this.applyThemeChange(); + if (Services.prefs.prefHasUserValue(PREF_EM_DISABLED_ADDONS_LIST)) + Services.prefs.clearUserPref(PREF_EM_DISABLED_ADDONS_LIST); + // If the application has been upgraded and there are add-ons outside the // application directory then we may need to synchronize compatibility - // information but only if the mismatch UI isn't disabled - if (aAppChanged && !this.allAppGlobal && - Prefs.getBoolPref(PREF_EM_SHOW_MISMATCH_UI, true)) { - this.showMismatchWindow(); - flushCaches = true; + // information + if (aAppChanged && !this.allAppGlobal) { + // Should we show a UI or just pass the list via a pref? + if (Prefs.getBoolPref(PREF_EM_SHOW_MISMATCH_UI, true)) { + this.showMismatchWindow(); + flushCaches = true; + } + else if (this.startupChanges.appDisabled.length > 0) { + // Remember the list of add-ons that were disabled this startup so + // the application can notify the user however it wants to + Services.prefs.setCharPref(PREF_EM_DISABLED_ADDONS_LIST, + this.startupChanges.appDisabled.join(",")); + } } if (flushCaches) { @@ -1652,6 +1672,9 @@ var XPIProvider = { this.enabledAddons = null; this.allAppGlobal = true; + for (let type in this.startupChanges) + this.startupChanges[type] = []; + this.inactiveAddonIDs = []; // If there are pending operations then we must update the list of active @@ -2283,9 +2306,6 @@ var XPIProvider = { XPIDatabase.updateAddonMetadata(aOldAddon, newAddon, aAddonState.descriptor); if (newAddon.visible) { visibleAddons[newAddon.id] = newAddon; - // Remember add-ons that were changed during startup - AddonManagerPrivate.addStartupChange(AddonManager.STARTUP_CHANGE_CHANGED, - newAddon.id); // If this was the active theme and it is now disabled then enable the // default theme @@ -2370,9 +2390,6 @@ var XPIProvider = { visibleAddons[aOldAddon.id] = aOldAddon; if (!aOldAddon.visible) { - // Remember add-ons that were changed during startup. - AddonManagerPrivate.addStartupChange(AddonManager.STARTUP_CHANGE_CHANGED, - aOldAddon.id); XPIDatabase.makeAddonVisible(aOldAddon); if (aOldAddon.bootstrap) { @@ -2420,6 +2437,10 @@ var XPIProvider = { let wasDisabled = isAddonDisabled(aOldAddon); let isDisabled = isAddonDisabled(newAddon); + // Remember add-ons that became appDisabled by the application change + if (aOldAddon.visible && newAddon.appDisabled && !aOldAddon.appDisabled) + XPIProvider.startupChanges.appDisabled.push(aOldAddon.id); + // If either property has changed update the database. if (newAddon.appDisabled != aOldAddon.appDisabled || newAddon.userDisabled != aOldAddon.userDisabled || @@ -2438,11 +2459,6 @@ var XPIProvider = { // If this is a visible add-on and it has changed disabled state then we // may need a restart or to update the bootstrap list. if (aOldAddon.visible && wasDisabled != isDisabled) { - // Remember add-ons that became disabled or enabled by the application - // change - let change = isDisabled ? AddonManager.STARTUP_CHANGE_DISABLED - : AddonManager.STARTUP_CHANGE_ENABLED; - AddonManagerPrivate.addStartupChange(change, aOldAddon.id); if (aOldAddon.bootstrap) { // Update the add-ons active state aOldAddon.active = !isDisabled; @@ -2479,19 +2495,8 @@ var XPIProvider = { // This add-on has disappeared LOG("Add-on " + aOldAddon.id + " removed from " + aInstallLocation.name); XPIDatabase.removeAddonMetadata(aOldAddon); - - // Remember add-ons that were uninstalled during startup - if (aOldAddon.visible) { - AddonManagerPrivate.addStartupChange(AddonManager.STARTUP_CHANGE_UNINSTALLED, - aOldAddon.id); - } - else if (AddonManager.getStartupChanges(AddonManager.STARTUP_CHANGE_INSTALLED) - .indexOf(aOldAddon.id) != -1) { - AddonManagerPrivate.addStartupChange(AddonManager.STARTUP_CHANGE_CHANGED, - aOldAddon.id); - } - if (aOldAddon.active) { + // Enable the default theme if the previously active theme has been // removed if (aOldAddon.type == "theme") @@ -2623,24 +2628,6 @@ var XPIProvider = { } if (newAddon.visible) { - // Remember add-ons that were installed during startup. If there was a - // cached manifest or migration data then this install is already - // expected - if (!aMigrateData && (!(aInstallLocation.name in aManifests) || - !(aId in aManifests[aInstallLocation.name]))) { - // If a copy from a higher priority location was removed then this - // add-on has changed - if (AddonManager.getStartupChanges(AddonManager.STARTUP_CHANGE_UNINSTALLED) - .indexOf(newAddon.id) != -1) { - AddonManagerPrivate.addStartupChange(AddonManager.STARTUP_CHANGE_CHANGED, - newAddon.id); - } - else { - AddonManagerPrivate.addStartupChange(AddonManager.STARTUP_CHANGE_INSTALLED, - newAddon.id); - } - } - // Note if any visible add-on is not in the application install location if (newAddon._installLocation.name != KEY_APP_GLOBAL) XPIProvider.allAppGlobal = false; @@ -2709,14 +2696,6 @@ var XPIProvider = { // Iterate through the add-ons installed the last time the application // ran addons.forEach(function(aOldAddon) { - // If a version of this add-on has been installed in an higher - // priority install location then count it as changed - if (AddonManager.getStartupChanges(AddonManager.STARTUP_CHANGE_INSTALLED) - .indexOf(aOldAddon.id) != -1) { - AddonManagerPrivate.addStartupChange(AddonManager.STARTUP_CHANGE_CHANGED, - aOldAddon.id); - } - // Check if the add-on is still installed if (aOldAddon.id in addonStates) { let addonState = addonStates[aOldAddon.id]; diff --git a/toolkit/mozapps/extensions/content/update.js b/toolkit/mozapps/extensions/content/update.js index 03892cc9ea16..b3bc8c225605 100644 --- a/toolkit/mozapps/extensions/content/update.js +++ b/toolkit/mozapps/extensions/content/update.js @@ -193,10 +193,6 @@ var gVersionInfoPage = { ///////////////////////////////////////////////////////////////////////////// // UpdateListener onUpdateFinished: function(aAddon, status) { - // If the add-on is now active then it won't have been disabled by startup - if (aAddon.active) - AddonManagerPrivate.removeStartupChange("disabled", aAddon.id); - if (status != AddonManager.UPDATE_STATUS_NO_ERROR) gUpdateWizard.errorItems.push(aAddon); @@ -435,9 +431,6 @@ var gInstallingPage = { }, onInstallEnded: function(aInstall) { - // Remember that this add-on was updated during startup - AddonManager.addStartupChange("updated", aInstall.id); - this.startNextInstall(); }, diff --git a/toolkit/mozapps/extensions/test/xpcshell/head_addons.js b/toolkit/mozapps/extensions/test/xpcshell/head_addons.js index d4057eb3db77..483daa6fdf4a 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/head_addons.js +++ b/toolkit/mozapps/extensions/test/xpcshell/head_addons.js @@ -430,20 +430,6 @@ function isExtensionInAddonsList(aDir, aId) { return isItemInAddonsList("extensions", aDir, aId); } -function check_startup_changes(aType, aIds) { - var ids = aIds.slice(0); - ids.sort(); - var changes = AddonManager.getStartupChanges(aType); - changes.sort(); - - // Remove the default theme if it is in the list - var pos = changes.indexOf("{972ce4c6-7e08-4474-a285-3208198ce6fd}"); - if (pos != -1) - changes.splice(pos, 1); - - do_check_eq(JSON.stringify(ids), JSON.stringify(changes)); -} - /** * Escapes any occurances of &, ", < or > with XML entities. * diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug542391.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug542391.js index 25be6eccf9f5..055b10d4ed78 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_bug542391.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug542391.js @@ -38,6 +38,7 @@ */ const URI_EXTENSION_UPDATE_DIALOG = "chrome://mozapps/content/extensions/update.xul"; +const PREF_EM_DISABLED_ADDONS_LIST = "extensions.disabledAddons"; const PREF_EM_SHOW_MISMATCH_UI = "extensions.showMismatchUI"; // The test extension uses an insecure update url. @@ -68,7 +69,6 @@ var WindowWatcher = { AddonManager.getAddonByID("bug542391_6@tests.mozilla.org", function(a6) { a6.findUpdates({ onUpdateFinished: function() { - AddonManagerPrivate.removeStartupChange("disabled", "bug542391_6@tests.mozilla.org"); updated = true; } }, AddonManager.UPDATE_WHEN_NEW_APP_INSTALLED); @@ -79,8 +79,6 @@ var WindowWatcher = { if (gInstallUpdate) { // Simulate installing an update while in the dialog installAllFiles([do_get_addon("test_bug542391_3_2")], function() { - AddonManagerPrivate.removeStartupChange("disabled", "bug542391_3@tests.mozilla.org"); - AddonManagerPrivate.addStartupChange("updated", "bug542391_3@tests.mozilla.org"); installed = true; }); } @@ -157,45 +155,6 @@ function check_state_v1([a1, a2, a3, a4, a5, a6]) { do_check_true(isExtensionInAddonsList(profileDir, a6.id)); } -function check_state_v1_2([a1, a2, a3, a4, a5, a6]) { - do_check_neq(a1, null); - do_check_false(a1.appDisabled); - do_check_false(a1.userDisabled); - do_check_true(a1.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a1.id)); - - do_check_neq(a2, null); - do_check_false(a2.appDisabled); - do_check_true(a2.userDisabled); - do_check_false(a2.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a2.id)); - - do_check_neq(a3, null); - do_check_true(a3.appDisabled); - do_check_false(a3.userDisabled); - do_check_false(a3.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a3.id)); - do_check_eq(a3.version, "2.0"); - - do_check_neq(a4, null); - do_check_false(a4.appDisabled); - do_check_true(a4.userDisabled); - do_check_false(a4.isActive); - do_check_false(isExtensionInAddonsList(profileDir, a4.id)); - - do_check_neq(a5, null); - do_check_false(a5.appDisabled); - do_check_false(a5.userDisabled); - do_check_true(a5.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a5.id)); - - do_check_neq(a6, null); - do_check_false(a6.appDisabled); - do_check_false(a6.userDisabled); - do_check_true(a6.isActive); - do_check_true(isExtensionInAddonsList(profileDir, a6.id)); -} - function check_state_v2([a1, a2, a3, a4, a5, a6]) { do_check_neq(a1, null); do_check_true(a1.appDisabled); @@ -352,11 +311,6 @@ function run_test() { do_get_addon("test_bug542391_6")], function() { restartManager(); - check_startup_changes("installed", []); - check_startup_changes("updated", []); - check_startup_changes("uninstalled", ["addon1@tests.mozilla.org"]); - check_startup_changes("disabled", []); - check_startup_changes("enabled", []); AddonManager.getAddonsByIDs(["bug542391_2@tests.mozilla.org", "bug542391_4@tests.mozilla.org"], @@ -364,11 +318,6 @@ function run_test() { a2.userDisabled = true; a4.userDisabled = true; restartManager(); - check_startup_changes("installed", []); - check_startup_changes("updated", []); - check_startup_changes("uninstalled", []); - check_startup_changes("disabled", []); - check_startup_changes("enabled", []); AddonManager.getAddonsByIDs(["bug542391_1@tests.mozilla.org", "bug542391_2@tests.mozilla.org", @@ -381,11 +330,6 @@ function run_test() { WindowWatcher.expected = true; restartManager("2"); - check_startup_changes("installed", []); - check_startup_changes("updated", []); - check_startup_changes("uninstalled", []); - check_startup_changes("disabled", ["bug542391_1@tests.mozilla.org"]); - check_startup_changes("enabled", []); do_check_false(WindowWatcher.expected); AddonManager.getAddonsByIDs(["bug542391_1@tests.mozilla.org", @@ -414,11 +358,6 @@ function run_test_1() { gCheckUpdates = true; WindowWatcher.expected = true; restartManager("3"); - check_startup_changes("installed", []); - check_startup_changes("updated", []); - check_startup_changes("uninstalled", []); - check_startup_changes("disabled", ["bug542391_3@tests.mozilla.org"]); - check_startup_changes("enabled", []); do_check_false(WindowWatcher.expected); gCheckUpdates = false; @@ -445,11 +384,6 @@ function run_test_1() { function run_test_2() { WindowWatcher.expected = true; restartManager("2"); - check_startup_changes("installed", []); - check_startup_changes("updated", []); - check_startup_changes("uninstalled", []); - check_startup_changes("disabled", []); - check_startup_changes("enabled", ["bug542391_3@tests.mozilla.org"]); do_check_false(WindowWatcher.expected); AddonManager.getAddonsByIDs(["bug542391_1@tests.mozilla.org", @@ -467,6 +401,59 @@ function run_test_2() { do_check_true(WindowWatcher.arguments.indexOf("bug542391_3@tests.mozilla.org") >= 0); do_check_true(WindowWatcher.arguments.indexOf("bug542391_4@tests.mozilla.org") >= 0); + run_test_3(); + }); +} + +// Upgrade to version 3 which will appDisable two more add-ons. +function run_test_3() { + Services.prefs.setBoolPref(PREF_EM_SHOW_MISMATCH_UI, false); + + restartManager("3"); + + AddonManager.getAddonsByIDs(["bug542391_1@tests.mozilla.org", + "bug542391_2@tests.mozilla.org", + "bug542391_3@tests.mozilla.org", + "bug542391_4@tests.mozilla.org", + "bug542391_5@tests.mozilla.org", + "bug542391_6@tests.mozilla.org"], + function(addons) { + check_state_v3(addons); + + var disabled = []; + try { + disabled = Services.prefs.getCharPref(PREF_EM_DISABLED_ADDONS_LIST).split(","); + } + catch (e) {} + do_check_eq(disabled.length, 2); + do_check_true(disabled.indexOf("bug542391_2@tests.mozilla.org") >= 0); + do_check_true(disabled.indexOf("bug542391_3@tests.mozilla.org") >= 0); + Services.prefs.clearUserPref(PREF_EM_DISABLED_ADDONS_LIST); + + run_test_4(); + }); +} + +// Downgrade to version 2 which will remove appDisable from two add-ons. +function run_test_4() { + restartManager("2"); + + AddonManager.getAddonsByIDs(["bug542391_1@tests.mozilla.org", + "bug542391_2@tests.mozilla.org", + "bug542391_3@tests.mozilla.org", + "bug542391_4@tests.mozilla.org", + "bug542391_5@tests.mozilla.org", + "bug542391_6@tests.mozilla.org"], + function(addons) { + check_state_v2(addons); + + var disabled = []; + try { + disabled = Services.prefs.getCharPref(PREF_EM_DISABLED_ADDONS_LIST).split(","); + } + catch (e) {} + do_check_eq(disabled.length, 0); + run_test_5(); }); } @@ -479,11 +466,6 @@ function run_test_5() { WindowWatcher.expected = true; restartManager("3"); - check_startup_changes("installed", []); - check_startup_changes("updated", ["bug542391_3@tests.mozilla.org"]); - check_startup_changes("uninstalled", []); - check_startup_changes("disabled", []); - check_startup_changes("enabled", []); do_check_false(WindowWatcher.expected); gInstallUpdate = false; @@ -501,30 +483,6 @@ function run_test_5() { do_check_true(WindowWatcher.arguments.indexOf("bug542391_2@tests.mozilla.org") >= 0); do_check_true(WindowWatcher.arguments.indexOf("bug542391_4@tests.mozilla.org") >= 0); - run_test_6(); - }); -} - -// Downgrade to version 1 which will appEnable all the add-ons -function run_test_6() { - WindowWatcher.expected = true; - restartManager("1"); - check_startup_changes("installed", []); - check_startup_changes("updated", []); - check_startup_changes("uninstalled", []); - check_startup_changes("disabled", ["bug542391_3@tests.mozilla.org"]); - check_startup_changes("enabled", ["bug542391_1@tests.mozilla.org"]); - do_check_false(WindowWatcher.expected); - - AddonManager.getAddonsByIDs(["bug542391_1@tests.mozilla.org", - "bug542391_2@tests.mozilla.org", - "bug542391_3@tests.mozilla.org", - "bug542391_4@tests.mozilla.org", - "bug542391_5@tests.mozilla.org", - "bug542391_6@tests.mozilla.org"], - function(addons) { - check_state_v1_2(addons); - finish_test(); }); } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_migrate1.js b/toolkit/mozapps/extensions/test/xpcshell/test_migrate1.js index 2769fb03e79f..f659c0f70f35 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_migrate1.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_migrate1.js @@ -129,11 +129,6 @@ function run_test() { Services.prefs.setCharPref("extensions.lastAppVersion", "1"); startupManager(); - check_startup_changes("installed", []); - check_startup_changes("updated", []); - check_startup_changes("uninstalled", []); - check_startup_changes("disabled", []); - check_startup_changes("enabled", []); do_check_false(oldCache.exists()); diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_migrate2.js b/toolkit/mozapps/extensions/test/xpcshell/test_migrate2.js index efeac14f3752..65c6fc662122 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_migrate2.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_migrate2.js @@ -139,12 +139,6 @@ function run_test() { db.close(); startupManager(); - check_startup_changes("installed", []); - check_startup_changes("updated", []); - check_startup_changes("uninstalled", []); - check_startup_changes("disabled", []); - check_startup_changes("enabled", []); - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", "addon2@tests.mozilla.org", "addon3@tests.mozilla.org", diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_migrate3.js b/toolkit/mozapps/extensions/test/xpcshell/test_migrate3.js index 25aae35aafda..728aa73145e6 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_migrate3.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_migrate3.js @@ -143,12 +143,6 @@ function run_test() { Services.prefs.setCharPref("general.skins.selectedSkin", "theme1/1.0"); startupManager(); - check_startup_changes("installed", []); - check_startup_changes("updated", []); - check_startup_changes("uninstalled", []); - check_startup_changes("disabled", []); - check_startup_changes("enabled", []); - AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", "addon2@tests.mozilla.org", "addon3@tests.mozilla.org", diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_startup.js b/toolkit/mozapps/extensions/test/xpcshell/test_startup.js index 856362b90e90..a9903ef2d99d 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_startup.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_startup.js @@ -126,11 +126,6 @@ function run_test() { }, "startupcache-invalidate", false); startupManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", "addon2@tests.mozilla.org", @@ -174,13 +169,6 @@ function run_test_1() { gCachePurged = false; restartManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, ["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org", - "addon3@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); do_check_true(gCachePurged); AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", @@ -274,11 +262,6 @@ function run_test_2() { gCachePurged = false; restartManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon2@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, ["addon3@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); do_check_true(gCachePurged); AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", @@ -335,12 +318,6 @@ function run_test_3() { gCachePurged = false; restartManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); do_check_true(gCachePurged); AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", @@ -394,11 +371,6 @@ function run_test_4() { gCachePurged = false; restartManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon2@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, ["addon1@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); do_check_true(gCachePurged); AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", @@ -433,11 +405,6 @@ function run_test_5() { gCachePurged = false; restartManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, ["addon1@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon2@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); do_check_true(gCachePurged); AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", @@ -478,11 +445,6 @@ function run_test_6() { gCachePurged = false; restartManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); do_check_true(gCachePurged); AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", @@ -527,12 +489,6 @@ function run_test_7() { gCachePurged = false; restartManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); do_check_true(gCachePurged); AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", @@ -582,11 +538,6 @@ function run_test_8() { gCachePurged = false; restartManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, ["addon2@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); do_check_true(gCachePurged); AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", @@ -630,11 +581,6 @@ function run_test_9() { gCachePurged = false; restartManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, ["addon2@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); do_check_true(gCachePurged); AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", @@ -687,11 +633,6 @@ function run_test_10() { gCachePurged = false; restartManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, ["addon1@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); do_check_true(gCachePurged); AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org", @@ -744,12 +685,6 @@ function run_test_11() { gCachePurged = false; restartManager(); - check_startup_changes(AddonManager.STARTUP_CHANGE_INSTALLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_CHANGED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_UNINSTALLED, ["addon1@tests.mozilla.org", - "addon2@tests.mozilla.org"]); - check_startup_changes(AddonManager.STARTUP_CHANGE_DISABLED, []); - check_startup_changes(AddonManager.STARTUP_CHANGE_ENABLED, []); do_check_true(gCachePurged); AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",