michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/publicdomain/zero/1.0/ michael@0: */ michael@0: michael@0: // Bug 608316 - Test that cancelling an uninstall during the onUninstalling michael@0: // event doesn't confuse the UI michael@0: michael@0: var gProvider; michael@0: michael@0: function test() { michael@0: waitForExplicitFinish(); michael@0: michael@0: gProvider = new MockProvider(); michael@0: michael@0: gProvider.createAddons([{ michael@0: id: "addon1@tests.mozilla.org", michael@0: name: "addon 1", michael@0: version: "1.0" michael@0: }]); michael@0: michael@0: run_next_test(); michael@0: } michael@0: michael@0: michael@0: function end_test() { michael@0: finish(); michael@0: } michael@0: michael@0: michael@0: add_test(function() { michael@0: var sawUninstall = false; michael@0: var listener = { michael@0: onUninstalling: function(aAddon, aRestartRequired) { michael@0: if (aAddon.id != "addon1@tests.mozilla.org") michael@0: return; michael@0: sawUninstall = true; michael@0: aAddon.cancelUninstall(); michael@0: } michael@0: } michael@0: michael@0: // Important to add this before opening the UI so it gets its events first michael@0: AddonManager.addAddonListener(listener); michael@0: registerCleanupFunction(function() { michael@0: AddonManager.removeAddonListener(listener); michael@0: }); michael@0: michael@0: open_manager("addons://list/extension", function(aManager) { michael@0: var addon = get_addon_element(aManager, "addon1@tests.mozilla.org"); michael@0: isnot(addon, null, "Should see the add-on in the list"); michael@0: michael@0: var removeBtn = aManager.document.getAnonymousElementByAttribute(addon, "anonid", "remove-btn"); michael@0: EventUtils.synthesizeMouseAtCenter(removeBtn, { }, aManager); michael@0: michael@0: ok(sawUninstall, "Should have seen the uninstall event"); michael@0: sawUninstall = false; michael@0: michael@0: is(addon.getAttribute("pending"), "", "Add-on should not be uninstalling"); michael@0: michael@0: close_manager(aManager, function() { michael@0: ok(!sawUninstall, "Should not have seen another uninstall event"); michael@0: michael@0: run_next_test(); michael@0: }); michael@0: }); michael@0: });