Bug 553791: Add an onExternalInstall event to signal the start of installs with no associated AddonInstall. r=robstrong

This commit is contained in:
Dave Townsend 2010-04-28 11:46:00 -07:00
parent 785647175f
commit 4f74be5c8c
3 changed files with 17 additions and 8 deletions

View File

@ -516,8 +516,11 @@ function _setCurrentTheme(aData, aLocal) {
if (aData) {
let theme = LightweightThemeManager.getUsedTheme(aData.id);
// TODO detect if it is an install and act accordingly
if (!theme) {
var wrapper = new AddonWrapper(aData);
AddonManagerPrivate.callInstallListeners("onExternalInstall", null,
wrapper, null, false);
AddonManagerPrivate.callAddonListeners("onInstalling", wrapper, false);
}
let current = LightweightThemeManager.currentTheme;

View File

@ -321,7 +321,6 @@ const AddonListener = {
onEnabled: function(addon) {
let [event, expectedRestart] = getExpectedEvent(addon.id);
do_check_eq("onEnabled", event);
do_check_eq(requiresRestart, expectedRestart);
do_check_false(hasFlag(addon.permissions, AddonManager.PERM_CAN_ENABLE));
},
@ -359,21 +358,16 @@ const AddonListener = {
do_check_eq(requiresRestart, expectedRestart);
if (expectedRestart)
do_check_true(hasFlag(addon.pendingOperations, AddonManager.PENDING_UNINSTALL));
//do_check_false(hasFlag(addon.permissions, AddonManager.PERM_CAN_UNINSTALL));
},
onUninstalled: function(addon) {
let [event, expectedRestart] = getExpectedEvent(addon.id);
do_check_eq("onUninstalled", event);
do_check_eq(requiresRestart, expectedRestart);
do_check_false(hasFlag(addon.permissions, AddonManager.PERM_CAN_UNINSTALL));
},
onOperationCancelled: function(addon) {
let [event, expectedRestart] = getExpectedEvent(addon.id);
do_check_eq("onOperationCancelled", event);
do_check_eq(requiresRestart, expectedRestart);
do_check_eq(addon.pendingOperations, 0);
}
};
@ -418,6 +412,13 @@ const InstallListener = {
do_check_eq(install.state, AddonManager.STATE_INSTALL_FAILED);
do_check_eq("onInstallFailed", gExpectedInstalls.shift());
gNext(install);
},
onExternalInstall: function(addon, existingAddon, requiresRestart) {
do_check_eq("onExternalInstall", gExpectedInstalls.shift());
do_check_false(requiresRestart);
if (existingAddon)
do_check_eq(existingAddon.pendingUpgrade, addon);
}
};

View File

@ -52,6 +52,7 @@ function run_test() {
AddonManager.addAddonListener(AddonListener);
AddonManager.addInstallListener(InstallListener);
AddonManager.addAddonListener(AddonListener);
AddonManager.addInstallListener(InstallListener);
AddonManager.getAddons(["theme1@tests.mozilla.org", "theme2@tests.mozilla.org"], function([t1, t2]) {
do_check_neq(t1, null);
@ -182,7 +183,9 @@ function run_test_3() {
["onDisabling", false],
"onDisabled",
]
});
}, [
"onExternalInstall"
]);
LightweightThemeManager.currentTheme = {
id: "1",
@ -250,7 +253,9 @@ function run_test_4() {
["onEnabling", false],
"onEnabled"
]
});
}, [
"onExternalInstall"
]);
LightweightThemeManager.currentTheme = {
id: "2",