Bug 605965 - Fix test and add check for addons before adding them. r=mfinkle

This commit is contained in:
Wes Johnston 2011-05-03 11:34:55 -07:00
parent fe08e462c5
commit 77a4558c16
2 changed files with 38 additions and 54 deletions

View File

@ -59,11 +59,6 @@ XPCOMUtils.defineLazyGetter(this, "AddonRepository", function() {
return AddonRepository;
});
XPCOMUtils.defineLazyGetter(this, "AddonLogger", function() {
Cu.import("resource://gre/modules/AddonLogging.jsm");
return LogManager.getLogger("FennecExtensions");
});
var ExtensionsView = {
_strings: {},
_list: null,
@ -329,7 +324,9 @@ var ExtensionsView = {
let strings = Strings.browser;
let anyUpdateable = false;
for (let i = 0; i < items.length; i++) {
let listitem = self._createLocalAddon(items[i]);
let listitem = self.getElementForAddon(items[i].id)
if (!listitem)
listitem = self._createLocalAddon(items[i]);
if ((items[i].permissions & AddonManager.PERM_CAN_UPGRADE) > 0)
anyUpdateable = true;
@ -374,7 +371,6 @@ var ExtensionsView = {
},
addItem : function ev_addItem(aItem, aPosition) {
AddonLogger.log("Adding item: " + aItem.id);
if (aPosition == "repo")
return this._list.appendChild(aItem);
else if (aPosition == "local")
@ -453,7 +449,6 @@ var ExtensionsView = {
uninstall: function ev_uninstall(aItem) {
let opType;
if (aItem.getAttribute("type") == "search") {
AddonLogger.log("Removing search engine.");
// Make sure the engine isn't hidden before removing it, to make sure it's
// visible if the user later re-adds it (works around bug 341833)
aItem._engine.hidden = false;
@ -461,10 +456,7 @@ var ExtensionsView = {
// the search-engine-modified observer in browser.js will take care of
// updating the list
} else {
AddonLogger.log("Removing extension.");
if (!aItem.addon) {
AddonLogger.log("No addon object, early return.");
this._list.removeChild(aItem);
return;
}
@ -473,7 +465,6 @@ var ExtensionsView = {
opType = this._getOpTypeForOperations(aItem.addon.pendingOperations);
if (aItem.addon.pendingOperations & AddonManager.PENDING_UNINSTALL) {
AddonLogger.log("Add-on is not restartless. Keeping in list.");
this.showRestart();
// A disabled addon doesn't need a restart so it has no pending ops and
@ -483,7 +474,6 @@ var ExtensionsView = {
aItem.setAttribute("opType", opType);
} else {
AddonLogger.log("Add-on is restartless. Removed from list.");
this._list.removeChild(aItem);
}
}

View File

@ -360,54 +360,48 @@ function testPrompt(aTitle, aMessage, aButtons, aCallback) {
// Installs an addon via the urlbar.
function installFromURLBar(aAddon) {
return function() {
loadUrl(gTestURL, function() {
loadUrl(aAddon.sourceURL, null, false);
let elt = get_addon_element(aAddon.id);
ok(!elt, "Addon element is not present before installation");
if (elt)
info("unexpectedly found element in: " + elt.parentNode.id);
checkInstallAlert(true, function() {
checkDownloadNotification(function() {
checkInstallPopup(aAddon.name, function() {
checkInstallNotification(!aAddon.bootstrapped, function() {
open_manager(true, function() {
isRestartShown(!aAddon.bootstrapped, false, function() {
let elt = get_addon_element(aAddon.id);
info("elt.id is " + aAddon.id);
if (aAddon.bootstrapped) {
checkAddonListing(aAddon, elt, "local");
var button = document.getAnonymousElementByAttribute(elt, "anonid", "uninstall-button");
ok(!!button, "Extension has uninstall button");
AddonManager.addInstallListener({
onInstallEnded: function (install) {
AddonManager.removeInstallListener(this);
checkInstallNotification(!aAddon.bootstrapped, function() {
open_manager(true, function() {
isRestartShown(!aAddon.bootstrapped, false, function() {
let elt = get_addon_element(aAddon.id);
if (aAddon.bootstrapped) {
checkAddonListing(aAddon, elt, "local");
var button = document.getAnonymousElementByAttribute(elt, "anonid", "uninstall-button");
ok(!!button, "Extension has uninstall button");
var updateButton = document.getElementById("addons-update-all");
is(updateButton.disabled, false, "Update button is enabled");
var updateButton = document.getElementById("addons-update-all");
is(updateButton.disabled, false, "Update button is enabled");
ExtensionsView.uninstall(elt);
waitForAndContinue(function() {
let elt = get_addon_element(aAddon.id);
ok(!elt, "Addon element removed during uninstall");
Browser.closeTab(gCurrentTab);
close_manager(run_next_test);
}, function() {
let elt = get_addon_element(aAddon.id);
info("Looking for element with id " + aAddon.id + ": " + elt);
return !elt;
});
} else {
ok(!elt, "Extension not in list");
AddonManager.getAllInstalls(function(aInstalls) {
for(var i = 0; i < aInstalls.length; i++) {
aInstalls[i].cancel();
}
Browser.closeTab(gCurrentTab);
close_manager(run_next_test);
});
ExtensionsView.uninstall(elt);
elt = get_addon_element(aAddon.id);
ok(!elt, "Addon element removed during uninstall");
Browser.closeTab(gCurrentTab);
close_manager(run_next_test);
} else {
ok(!elt, "Extension not in list");
AddonManager.getAllInstalls(function(aInstalls) {
for(var i = 0; i < aInstalls.length; i++) {
aInstalls[i].cancel();
}
Browser.closeTab(gCurrentTab);
close_manager(run_next_test);
});
});
}
});
});
});
}
});
loadUrl(gTestURL, function() {
loadUrl(aAddon.sourceURL, null, false);
checkInstallAlert(true, function() {
checkDownloadNotification(function() {
checkInstallPopup(aAddon.name, function() { });
});
});
}, true);
};