зеркало из https://github.com/mozilla/gecko-dev.git
Bug 666431: Track changes made to add-ons during early startup. r=robstrong
try: -b do -p linux,linuxqt,linux64,macosx64,win32,macosx -u xpcshell,mochitest-o -t none
This commit is contained in:
Родитель
86da6932d3
Коммит
48d3be6b3d
|
@ -39,6 +39,7 @@
|
||||||
|
|
||||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||||
Cu.import("resource://gre/modules/Services.jsm");
|
Cu.import("resource://gre/modules/Services.jsm");
|
||||||
|
Cu.import("resource://gre/modules/AddonManager.jsm");
|
||||||
|
|
||||||
[
|
[
|
||||||
["AllPagesList", "popup_autocomplete", "cmd_openLocation"],
|
["AllPagesList", "popup_autocomplete", "cmd_openLocation"],
|
||||||
|
@ -555,17 +556,14 @@ var BrowserUI = {
|
||||||
CharsetMenu.init();
|
CharsetMenu.init();
|
||||||
|
|
||||||
// If some add-ons were disabled during during an application update, alert user
|
// If some add-ons were disabled during during an application update, alert user
|
||||||
if (Services.prefs.prefHasUserValue("extensions.disabledAddons")) {
|
let addonIDs = AddonManager.getStartupChanges("disabled");
|
||||||
let addons = Services.prefs.getCharPref("extensions.disabledAddons").split(",");
|
if (addonIDs.length > 0) {
|
||||||
if (addons.length > 0) {
|
let disabledStrings = Strings.browser.GetStringFromName("alertAddonsDisabled");
|
||||||
let disabledStrings = Strings.browser.GetStringFromName("alertAddonsDisabled");
|
let label = PluralForm.get(addonIDs.length, disabledStrings).replace("#1", addonIDs.length);
|
||||||
let label = PluralForm.get(addons.length, disabledStrings).replace("#1", addons.length);
|
let image = "chrome://browser/skin/images/alert-addons-30.png";
|
||||||
let image = "chrome://browser/skin/images/alert-addons-30.png";
|
|
||||||
|
|
||||||
let alerts = Cc["@mozilla.org/toaster-alerts-service;1"].getService(Ci.nsIAlertsService);
|
let alerts = Cc["@mozilla.org/toaster-alerts-service;1"].getService(Ci.nsIAlertsService);
|
||||||
alerts.showAlertNotification(image, Strings.browser.GetStringFromName("alertAddons"), label, false, "", null);
|
alerts.showAlertNotification(image, Strings.browser.GetStringFromName("alertAddons"), label, false, "", null);
|
||||||
}
|
|
||||||
Services.prefs.clearUserPref("extensions.disabledAddons");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_UPDATER
|
#ifdef MOZ_UPDATER
|
||||||
|
|
|
@ -273,6 +273,7 @@ var AddonManagerInternal = {
|
||||||
typeListeners: [],
|
typeListeners: [],
|
||||||
providers: [],
|
providers: [],
|
||||||
types: {},
|
types: {},
|
||||||
|
startupChanges: {},
|
||||||
|
|
||||||
// A read-only wrapper around the types dictionary
|
// A read-only wrapper around the types dictionary
|
||||||
typesProxy: Proxy.create({
|
typesProxy: Proxy.create({
|
||||||
|
@ -385,6 +386,13 @@ var AddonManagerInternal = {
|
||||||
callProvider(provider, "startup", null, appChanged, oldAppVersion,
|
callProvider(provider, "startup", null, appChanged, oldAppVersion,
|
||||||
oldPlatformVersion);
|
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;
|
gStarted = true;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -467,7 +475,7 @@ var AddonManagerInternal = {
|
||||||
* Shuts down the addon manager and all registered providers, this must clean
|
* Shuts down the addon manager and all registered providers, this must clean
|
||||||
* up everything in order for automated tests to fake restarts.
|
* up everything in order for automated tests to fake restarts.
|
||||||
*/
|
*/
|
||||||
shutdown: function AM_shutdown() {
|
shutdown: function AMI_shutdown() {
|
||||||
this.providers.forEach(function(provider) {
|
this.providers.forEach(function(provider) {
|
||||||
callProvider(provider, "shutdown");
|
callProvider(provider, "shutdown");
|
||||||
});
|
});
|
||||||
|
@ -475,6 +483,8 @@ var AddonManagerInternal = {
|
||||||
this.installListeners.splice(0);
|
this.installListeners.splice(0);
|
||||||
this.addonListeners.splice(0);
|
this.addonListeners.splice(0);
|
||||||
this.typeListeners.splice(0);
|
this.typeListeners.splice(0);
|
||||||
|
for (let type in this.startupChanges)
|
||||||
|
delete this.startupChanges[type];
|
||||||
gStarted = false;
|
gStarted = false;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -538,6 +548,49 @@ 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
|
* Calls all registered InstallListeners with an event. Any parameters after
|
||||||
* the extraListeners parameter are passed to the listener.
|
* the extraListeners parameter are passed to the listener.
|
||||||
|
@ -1064,6 +1117,14 @@ var AddonManagerPrivate = {
|
||||||
AddonManagerInternal.backgroundUpdateCheck();
|
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) {
|
notifyAddonChanged: function AMP_notifyAddonChanged(aId, aType, aPendingRestart) {
|
||||||
AddonManagerInternal.notifyAddonChanged(aId, aType, aPendingRestart);
|
AddonManagerInternal.notifyAddonChanged(aId, aType, aPendingRestart);
|
||||||
},
|
},
|
||||||
|
@ -1220,6 +1281,26 @@ var AddonManager = {
|
||||||
// Options will be displayed in a new tab, if possible
|
// Options will be displayed in a new tab, if possible
|
||||||
OPTIONS_TYPE_TAB: 3,
|
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,
|
getInstallForURL: function AM_getInstallForURL(aUrl, aCallback, aMimetype,
|
||||||
aHash, aName, aIconURL,
|
aHash, aName, aIconURL,
|
||||||
aVersion, aLoadGroup) {
|
aVersion, aLoadGroup) {
|
||||||
|
@ -1231,6 +1312,19 @@ var AddonManager = {
|
||||||
AddonManagerInternal.getInstallForFile(aFile, aCallback, aMimetype);
|
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) {
|
getAddonByID: function AM_getAddonByID(aId, aCallback) {
|
||||||
AddonManagerInternal.getAddonByID(aId, aCallback);
|
AddonManagerInternal.getAddonByID(aId, aCallback);
|
||||||
},
|
},
|
||||||
|
|
|
@ -68,7 +68,6 @@ const PREF_EM_EXTENSION_FORMAT = "extensions.";
|
||||||
const PREF_EM_ENABLED_SCOPES = "extensions.enabledScopes";
|
const PREF_EM_ENABLED_SCOPES = "extensions.enabledScopes";
|
||||||
const PREF_EM_AUTO_DISABLED_SCOPES = "extensions.autoDisableScopes";
|
const PREF_EM_AUTO_DISABLED_SCOPES = "extensions.autoDisableScopes";
|
||||||
const PREF_EM_SHOW_MISMATCH_UI = "extensions.showMismatchUI";
|
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_ENABLED = "xpinstall.enabled";
|
||||||
const PREF_XPI_WHITELIST_REQUIRED = "xpinstall.whitelist.required";
|
const PREF_XPI_WHITELIST_REQUIRED = "xpinstall.whitelist.required";
|
||||||
const PREF_XPI_WHITELIST_PERMISSIONS = "xpinstall.whitelist.add";
|
const PREF_XPI_WHITELIST_PERMISSIONS = "xpinstall.whitelist.add";
|
||||||
|
@ -1456,14 +1455,6 @@ var XPIProvider = {
|
||||||
enabledAddons: null,
|
enabledAddons: null,
|
||||||
// An array of add-on IDs of add-ons that were inactive during startup
|
// An array of add-on IDs of add-ons that were inactive during startup
|
||||||
inactiveAddonIDs: [],
|
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.
|
* Starts the XPI provider initializes the install locations and prefs.
|
||||||
|
@ -1586,24 +1577,13 @@ var XPIProvider = {
|
||||||
// Changes to installed extensions may have changed which theme is selected
|
// Changes to installed extensions may have changed which theme is selected
|
||||||
this.applyThemeChange();
|
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
|
// If the application has been upgraded and there are add-ons outside the
|
||||||
// application directory then we may need to synchronize compatibility
|
// application directory then we may need to synchronize compatibility
|
||||||
// information
|
// information but only if the mismatch UI isn't disabled
|
||||||
if (aAppChanged && !this.allAppGlobal) {
|
if (aAppChanged && !this.allAppGlobal &&
|
||||||
// Should we show a UI or just pass the list via a pref?
|
Prefs.getBoolPref(PREF_EM_SHOW_MISMATCH_UI, true)) {
|
||||||
if (Prefs.getBoolPref(PREF_EM_SHOW_MISMATCH_UI, true)) {
|
this.showMismatchWindow();
|
||||||
this.showMismatchWindow();
|
flushCaches = true;
|
||||||
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) {
|
if (flushCaches) {
|
||||||
|
@ -1672,9 +1652,6 @@ var XPIProvider = {
|
||||||
this.enabledAddons = null;
|
this.enabledAddons = null;
|
||||||
this.allAppGlobal = true;
|
this.allAppGlobal = true;
|
||||||
|
|
||||||
for (let type in this.startupChanges)
|
|
||||||
this.startupChanges[type] = [];
|
|
||||||
|
|
||||||
this.inactiveAddonIDs = [];
|
this.inactiveAddonIDs = [];
|
||||||
|
|
||||||
// If there are pending operations then we must update the list of active
|
// If there are pending operations then we must update the list of active
|
||||||
|
@ -2306,6 +2283,9 @@ var XPIProvider = {
|
||||||
XPIDatabase.updateAddonMetadata(aOldAddon, newAddon, aAddonState.descriptor);
|
XPIDatabase.updateAddonMetadata(aOldAddon, newAddon, aAddonState.descriptor);
|
||||||
if (newAddon.visible) {
|
if (newAddon.visible) {
|
||||||
visibleAddons[newAddon.id] = newAddon;
|
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
|
// If this was the active theme and it is now disabled then enable the
|
||||||
// default theme
|
// default theme
|
||||||
|
@ -2390,6 +2370,9 @@ var XPIProvider = {
|
||||||
visibleAddons[aOldAddon.id] = aOldAddon;
|
visibleAddons[aOldAddon.id] = aOldAddon;
|
||||||
|
|
||||||
if (!aOldAddon.visible) {
|
if (!aOldAddon.visible) {
|
||||||
|
// Remember add-ons that were changed during startup.
|
||||||
|
AddonManagerPrivate.addStartupChange(AddonManager.STARTUP_CHANGE_CHANGED,
|
||||||
|
aOldAddon.id);
|
||||||
XPIDatabase.makeAddonVisible(aOldAddon);
|
XPIDatabase.makeAddonVisible(aOldAddon);
|
||||||
|
|
||||||
if (aOldAddon.bootstrap) {
|
if (aOldAddon.bootstrap) {
|
||||||
|
@ -2437,10 +2420,6 @@ var XPIProvider = {
|
||||||
let wasDisabled = isAddonDisabled(aOldAddon);
|
let wasDisabled = isAddonDisabled(aOldAddon);
|
||||||
let isDisabled = isAddonDisabled(newAddon);
|
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 either property has changed update the database.
|
||||||
if (newAddon.appDisabled != aOldAddon.appDisabled ||
|
if (newAddon.appDisabled != aOldAddon.appDisabled ||
|
||||||
newAddon.userDisabled != aOldAddon.userDisabled ||
|
newAddon.userDisabled != aOldAddon.userDisabled ||
|
||||||
|
@ -2459,6 +2438,11 @@ var XPIProvider = {
|
||||||
// If this is a visible add-on and it has changed disabled state then we
|
// 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.
|
// may need a restart or to update the bootstrap list.
|
||||||
if (aOldAddon.visible && wasDisabled != isDisabled) {
|
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) {
|
if (aOldAddon.bootstrap) {
|
||||||
// Update the add-ons active state
|
// Update the add-ons active state
|
||||||
aOldAddon.active = !isDisabled;
|
aOldAddon.active = !isDisabled;
|
||||||
|
@ -2495,8 +2479,19 @@ var XPIProvider = {
|
||||||
// This add-on has disappeared
|
// This add-on has disappeared
|
||||||
LOG("Add-on " + aOldAddon.id + " removed from " + aInstallLocation.name);
|
LOG("Add-on " + aOldAddon.id + " removed from " + aInstallLocation.name);
|
||||||
XPIDatabase.removeAddonMetadata(aOldAddon);
|
XPIDatabase.removeAddonMetadata(aOldAddon);
|
||||||
if (aOldAddon.active) {
|
|
||||||
|
|
||||||
|
// 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
|
// Enable the default theme if the previously active theme has been
|
||||||
// removed
|
// removed
|
||||||
if (aOldAddon.type == "theme")
|
if (aOldAddon.type == "theme")
|
||||||
|
@ -2628,6 +2623,24 @@ var XPIProvider = {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newAddon.visible) {
|
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
|
// Note if any visible add-on is not in the application install location
|
||||||
if (newAddon._installLocation.name != KEY_APP_GLOBAL)
|
if (newAddon._installLocation.name != KEY_APP_GLOBAL)
|
||||||
XPIProvider.allAppGlobal = false;
|
XPIProvider.allAppGlobal = false;
|
||||||
|
@ -2696,6 +2709,14 @@ var XPIProvider = {
|
||||||
// Iterate through the add-ons installed the last time the application
|
// Iterate through the add-ons installed the last time the application
|
||||||
// ran
|
// ran
|
||||||
addons.forEach(function(aOldAddon) {
|
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
|
// Check if the add-on is still installed
|
||||||
if (aOldAddon.id in addonStates) {
|
if (aOldAddon.id in addonStates) {
|
||||||
let addonState = addonStates[aOldAddon.id];
|
let addonState = addonStates[aOldAddon.id];
|
||||||
|
|
|
@ -193,6 +193,10 @@ var gVersionInfoPage = {
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
// UpdateListener
|
// UpdateListener
|
||||||
onUpdateFinished: function(aAddon, status) {
|
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)
|
if (status != AddonManager.UPDATE_STATUS_NO_ERROR)
|
||||||
gUpdateWizard.errorItems.push(aAddon);
|
gUpdateWizard.errorItems.push(aAddon);
|
||||||
|
|
||||||
|
@ -431,6 +435,10 @@ var gInstallingPage = {
|
||||||
},
|
},
|
||||||
|
|
||||||
onInstallEnded: function(aInstall) {
|
onInstallEnded: function(aInstall) {
|
||||||
|
// Remember that this add-on was updated during startup
|
||||||
|
AddonManagerPrivate.addStartupChange(AddonManager.STARTUP_CHANGE_CHANGED,
|
||||||
|
aInstall.id);
|
||||||
|
|
||||||
this.startNextInstall();
|
this.startNextInstall();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -430,6 +430,20 @@ function isExtensionInAddonsList(aDir, aId) {
|
||||||
return isItemInAddonsList("extensions", 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.
|
* Escapes any occurances of &, ", < or > with XML entities.
|
||||||
*
|
*
|
||||||
|
|
|
@ -38,7 +38,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const URI_EXTENSION_UPDATE_DIALOG = "chrome://mozapps/content/extensions/update.xul";
|
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";
|
const PREF_EM_SHOW_MISMATCH_UI = "extensions.showMismatchUI";
|
||||||
|
|
||||||
// The test extension uses an insecure update url.
|
// The test extension uses an insecure update url.
|
||||||
|
@ -69,6 +68,7 @@ var WindowWatcher = {
|
||||||
AddonManager.getAddonByID("bug542391_6@tests.mozilla.org", function(a6) {
|
AddonManager.getAddonByID("bug542391_6@tests.mozilla.org", function(a6) {
|
||||||
a6.findUpdates({
|
a6.findUpdates({
|
||||||
onUpdateFinished: function() {
|
onUpdateFinished: function() {
|
||||||
|
AddonManagerPrivate.removeStartupChange("disabled", "bug542391_6@tests.mozilla.org");
|
||||||
updated = true;
|
updated = true;
|
||||||
}
|
}
|
||||||
}, AddonManager.UPDATE_WHEN_NEW_APP_INSTALLED);
|
}, AddonManager.UPDATE_WHEN_NEW_APP_INSTALLED);
|
||||||
|
@ -79,6 +79,8 @@ var WindowWatcher = {
|
||||||
if (gInstallUpdate) {
|
if (gInstallUpdate) {
|
||||||
// Simulate installing an update while in the dialog
|
// Simulate installing an update while in the dialog
|
||||||
installAllFiles([do_get_addon("test_bug542391_3_2")], function() {
|
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;
|
installed = true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -155,6 +157,45 @@ function check_state_v1([a1, a2, a3, a4, a5, a6]) {
|
||||||
do_check_true(isExtensionInAddonsList(profileDir, a6.id));
|
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]) {
|
function check_state_v2([a1, a2, a3, a4, a5, a6]) {
|
||||||
do_check_neq(a1, null);
|
do_check_neq(a1, null);
|
||||||
do_check_true(a1.appDisabled);
|
do_check_true(a1.appDisabled);
|
||||||
|
@ -311,6 +352,11 @@ function run_test() {
|
||||||
do_get_addon("test_bug542391_6")], function() {
|
do_get_addon("test_bug542391_6")], function() {
|
||||||
|
|
||||||
restartManager();
|
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",
|
AddonManager.getAddonsByIDs(["bug542391_2@tests.mozilla.org",
|
||||||
"bug542391_4@tests.mozilla.org"],
|
"bug542391_4@tests.mozilla.org"],
|
||||||
|
@ -318,6 +364,11 @@ function run_test() {
|
||||||
a2.userDisabled = true;
|
a2.userDisabled = true;
|
||||||
a4.userDisabled = true;
|
a4.userDisabled = true;
|
||||||
restartManager();
|
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",
|
AddonManager.getAddonsByIDs(["bug542391_1@tests.mozilla.org",
|
||||||
"bug542391_2@tests.mozilla.org",
|
"bug542391_2@tests.mozilla.org",
|
||||||
|
@ -330,6 +381,11 @@ function run_test() {
|
||||||
|
|
||||||
WindowWatcher.expected = true;
|
WindowWatcher.expected = true;
|
||||||
restartManager("2");
|
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);
|
do_check_false(WindowWatcher.expected);
|
||||||
|
|
||||||
AddonManager.getAddonsByIDs(["bug542391_1@tests.mozilla.org",
|
AddonManager.getAddonsByIDs(["bug542391_1@tests.mozilla.org",
|
||||||
|
@ -358,6 +414,11 @@ function run_test_1() {
|
||||||
gCheckUpdates = true;
|
gCheckUpdates = true;
|
||||||
WindowWatcher.expected = true;
|
WindowWatcher.expected = true;
|
||||||
restartManager("3");
|
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);
|
do_check_false(WindowWatcher.expected);
|
||||||
gCheckUpdates = false;
|
gCheckUpdates = false;
|
||||||
|
|
||||||
|
@ -384,6 +445,11 @@ function run_test_1() {
|
||||||
function run_test_2() {
|
function run_test_2() {
|
||||||
WindowWatcher.expected = true;
|
WindowWatcher.expected = true;
|
||||||
restartManager("2");
|
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);
|
do_check_false(WindowWatcher.expected);
|
||||||
|
|
||||||
AddonManager.getAddonsByIDs(["bug542391_1@tests.mozilla.org",
|
AddonManager.getAddonsByIDs(["bug542391_1@tests.mozilla.org",
|
||||||
|
@ -401,59 +467,6 @@ function run_test_2() {
|
||||||
do_check_true(WindowWatcher.arguments.indexOf("bug542391_3@tests.mozilla.org") >= 0);
|
do_check_true(WindowWatcher.arguments.indexOf("bug542391_3@tests.mozilla.org") >= 0);
|
||||||
do_check_true(WindowWatcher.arguments.indexOf("bug542391_4@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();
|
run_test_5();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -466,6 +479,11 @@ function run_test_5() {
|
||||||
|
|
||||||
WindowWatcher.expected = true;
|
WindowWatcher.expected = true;
|
||||||
restartManager("3");
|
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);
|
do_check_false(WindowWatcher.expected);
|
||||||
gInstallUpdate = false;
|
gInstallUpdate = false;
|
||||||
|
|
||||||
|
@ -483,6 +501,30 @@ function run_test_5() {
|
||||||
do_check_true(WindowWatcher.arguments.indexOf("bug542391_2@tests.mozilla.org") >= 0);
|
do_check_true(WindowWatcher.arguments.indexOf("bug542391_2@tests.mozilla.org") >= 0);
|
||||||
do_check_true(WindowWatcher.arguments.indexOf("bug542391_4@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();
|
finish_test();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -129,6 +129,11 @@ function run_test() {
|
||||||
Services.prefs.setCharPref("extensions.lastAppVersion", "1");
|
Services.prefs.setCharPref("extensions.lastAppVersion", "1");
|
||||||
|
|
||||||
startupManager();
|
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());
|
do_check_false(oldCache.exists());
|
||||||
|
|
||||||
|
|
|
@ -139,6 +139,12 @@ function run_test() {
|
||||||
db.close();
|
db.close();
|
||||||
|
|
||||||
startupManager();
|
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",
|
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||||
"addon2@tests.mozilla.org",
|
"addon2@tests.mozilla.org",
|
||||||
"addon3@tests.mozilla.org",
|
"addon3@tests.mozilla.org",
|
||||||
|
|
|
@ -143,6 +143,12 @@ function run_test() {
|
||||||
Services.prefs.setCharPref("general.skins.selectedSkin", "theme1/1.0");
|
Services.prefs.setCharPref("general.skins.selectedSkin", "theme1/1.0");
|
||||||
|
|
||||||
startupManager();
|
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",
|
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||||
"addon2@tests.mozilla.org",
|
"addon2@tests.mozilla.org",
|
||||||
"addon3@tests.mozilla.org",
|
"addon3@tests.mozilla.org",
|
||||||
|
|
|
@ -126,6 +126,11 @@ function run_test() {
|
||||||
}, "startupcache-invalidate", false);
|
}, "startupcache-invalidate", false);
|
||||||
|
|
||||||
startupManager();
|
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",
|
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||||
"addon2@tests.mozilla.org",
|
"addon2@tests.mozilla.org",
|
||||||
|
@ -169,6 +174,13 @@ function run_test_1() {
|
||||||
|
|
||||||
gCachePurged = false;
|
gCachePurged = false;
|
||||||
restartManager();
|
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);
|
do_check_true(gCachePurged);
|
||||||
|
|
||||||
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||||
|
@ -262,6 +274,11 @@ function run_test_2() {
|
||||||
|
|
||||||
gCachePurged = false;
|
gCachePurged = false;
|
||||||
restartManager();
|
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);
|
do_check_true(gCachePurged);
|
||||||
|
|
||||||
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||||
|
@ -318,6 +335,12 @@ function run_test_3() {
|
||||||
|
|
||||||
gCachePurged = false;
|
gCachePurged = false;
|
||||||
restartManager();
|
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);
|
do_check_true(gCachePurged);
|
||||||
|
|
||||||
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||||
|
@ -371,6 +394,11 @@ function run_test_4() {
|
||||||
|
|
||||||
gCachePurged = false;
|
gCachePurged = false;
|
||||||
restartManager();
|
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);
|
do_check_true(gCachePurged);
|
||||||
|
|
||||||
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||||
|
@ -405,6 +433,11 @@ function run_test_5() {
|
||||||
|
|
||||||
gCachePurged = false;
|
gCachePurged = false;
|
||||||
restartManager();
|
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);
|
do_check_true(gCachePurged);
|
||||||
|
|
||||||
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||||
|
@ -445,6 +478,11 @@ function run_test_6() {
|
||||||
|
|
||||||
gCachePurged = false;
|
gCachePurged = false;
|
||||||
restartManager();
|
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);
|
do_check_true(gCachePurged);
|
||||||
|
|
||||||
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||||
|
@ -489,6 +527,12 @@ function run_test_7() {
|
||||||
|
|
||||||
gCachePurged = false;
|
gCachePurged = false;
|
||||||
restartManager();
|
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);
|
do_check_true(gCachePurged);
|
||||||
|
|
||||||
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||||
|
@ -538,6 +582,11 @@ function run_test_8() {
|
||||||
|
|
||||||
gCachePurged = false;
|
gCachePurged = false;
|
||||||
restartManager();
|
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);
|
do_check_true(gCachePurged);
|
||||||
|
|
||||||
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||||
|
@ -581,6 +630,11 @@ function run_test_9() {
|
||||||
|
|
||||||
gCachePurged = false;
|
gCachePurged = false;
|
||||||
restartManager();
|
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);
|
do_check_true(gCachePurged);
|
||||||
|
|
||||||
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||||
|
@ -633,6 +687,11 @@ function run_test_10() {
|
||||||
|
|
||||||
gCachePurged = false;
|
gCachePurged = false;
|
||||||
restartManager();
|
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);
|
do_check_true(gCachePurged);
|
||||||
|
|
||||||
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||||
|
@ -685,6 +744,12 @@ function run_test_11() {
|
||||||
|
|
||||||
gCachePurged = false;
|
gCachePurged = false;
|
||||||
restartManager();
|
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);
|
do_check_true(gCachePurged);
|
||||||
|
|
||||||
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
|
||||||
|
|
Загрузка…
Ссылка в новой задаче